summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoungbok Shin <youngb.shin@samsung.com>2016-08-22 11:23:44 +0900
committerYoungbok Shin <youngb.shin@samsung.com>2016-08-22 11:23:44 +0900
commite684182ac634596bace621b0e84dfc98d2bc82c5 (patch)
treee6ce432188d6fe2b0b4bee6ddad34e7977c26a44
parent087e8c5d58be057cb77192932cd7fa8f7aacf1a5 (diff)
downloadharfbuzz-e684182ac634596bace621b0e84dfc98d2bc82c5.tar.gz
harfbuzz-e684182ac634596bace621b0e84dfc98d2bc82c5.tar.bz2
harfbuzz-e684182ac634596bace621b0e84dfc98d2bc82c5.zip
Revert "Imported Upstream version 1.2.7"
This reverts commit 087e8c5d58be057cb77192932cd7fa8f7aacf1a5.
-rw-r--r--Android.mk6
-rw-r--r--BUILD.md33
-rw-r--r--ChangeLog9341
-rw-r--r--INSTALL4
-rw-r--r--Makefile.am4
-rw-r--r--Makefile.in16
-rw-r--r--NEWS319
-rw-r--r--README1
-rw-r--r--README.python8
-rw-r--r--TODO16
-rw-r--r--aclocal.m46
-rw-r--r--config.h.in15
-rwxr-xr-xconfig.sub13
-rwxr-xr-xconfigure2815
-rw-r--r--configure.ac101
-rw-r--r--docs/HarfBuzz.pngbin3419 -> 0 bytes
-rw-r--r--docs/Makefile.am121
-rw-r--r--docs/Makefile.in674
-rw-r--r--docs/harfbuzz-docs.xml184
-rw-r--r--docs/harfbuzz.types24
-rw-r--r--docs/html/HarfBuzz.pngbin3419 -> 0 bytes
-rw-r--r--docs/html/adding-text-to-the-buffer.html35
-rw-r--r--docs/html/annotation-glossary.html77
-rw-r--r--docs/html/api-index-0-9-10.html41
-rw-r--r--docs/html/api-index-0-9-11.html34
-rw-r--r--docs/html/api-index-0-9-2.html746
-rw-r--r--docs/html/api-index-0-9-20.html38
-rw-r--r--docs/html/api-index-0-9-22.html34
-rw-r--r--docs/html/api-index-0-9-28.html34
-rw-r--r--docs/html/api-index-0-9-30.html41
-rw-r--r--docs/html/api-index-0-9-31.html46
-rw-r--r--docs/html/api-index-0-9-38.html45
-rw-r--r--docs/html/api-index-0-9-39.html34
-rw-r--r--docs/html/api-index-0-9-41.html34
-rw-r--r--docs/html/api-index-0-9-42.html38
-rw-r--r--docs/html/api-index-0-9-5.html56
-rw-r--r--docs/html/api-index-0-9-7.html195
-rw-r--r--docs/html/api-index-0-9-8.html34
-rw-r--r--docs/html/api-index-1-0-5.html42
-rw-r--r--docs/html/api-index-1-1-2.html38
-rw-r--r--docs/html/api-index-1-1-3.html49
-rw-r--r--docs/html/buffers-language-script-and-direction.html87
-rw-r--r--docs/html/building.html80
-rw-r--r--docs/html/customizing-unicode-functions.html31
-rw-r--r--docs/html/fonts-and-faces.html40
-rw-r--r--docs/html/harfbuzz-Buffers.html2722
-rw-r--r--docs/html/harfbuzz-Shaping.html347
-rw-r--r--docs/html/harfbuzz-hb-gobject.html651
-rw-r--r--docs/html/harfbuzz-hb-ot-font.html70
-rw-r--r--docs/html/harfbuzz-hb-ot-shape.html74
-rw-r--r--docs/html/harfbuzz.devhelp2771
-rw-r--r--docs/html/hello-harfbuzz.html181
-rw-r--r--docs/html/index.html190
-rw-r--r--docs/html/install-harfbuzz.html59
-rw-r--r--docs/html/plans-and-caching.html31
-rw-r--r--docs/html/pt01.html75
-rw-r--r--docs/html/pt02.html138
-rw-r--r--docs/html/setting-buffer-properties.html31
-rw-r--r--docs/html/shaping-and-shape-plans.html39
-rw-r--r--docs/html/using-harfbuzzs-native-opentype-implementation.html31
-rw-r--r--docs/html/using-your-own-font-functions.html31
-rw-r--r--docs/html/what-about-the-other-scripts.html31
-rw-r--r--docs/html/what-is-harfbuzz.html124
-rw-r--r--docs/html/why-is-it-called-harfbuzz.html38
-rw-r--r--docs/reference/Makefile.am111
-rw-r--r--docs/reference/Makefile.in852
-rw-r--r--docs/reference/harfbuzz-docs.xml65
-rw-r--r--docs/reference/harfbuzz-overrides.txt (renamed from docs/harfbuzz-overrides.txt)0
-rw-r--r--docs/reference/harfbuzz-sections.txt (renamed from docs/harfbuzz-sections.txt)148
-rw-r--r--docs/reference/harfbuzz.types0
-rw-r--r--docs/reference/html/annotation-glossary.html78
-rw-r--r--docs/reference/html/api-index-full.html (renamed from docs/html/api-index-full.html)447
-rw-r--r--docs/reference/html/ch01.html (renamed from docs/html/ch07.html)33
-rw-r--r--docs/reference/html/deprecated-api-index.html (renamed from docs/html/deprecated-api-index.html)30
-rw-r--r--docs/reference/html/harfbuzz-hb-blob.html (renamed from docs/html/harfbuzz-hb-blob.html)125
-rw-r--r--docs/reference/html/harfbuzz-hb-buffer.html1780
-rw-r--r--docs/reference/html/harfbuzz-hb-common.html (renamed from docs/html/harfbuzz-hb-common.html)983
-rw-r--r--docs/reference/html/harfbuzz-hb-coretext.html (renamed from docs/html/harfbuzz-hb-coretext.html)29
-rw-r--r--docs/reference/html/harfbuzz-hb-deprecated.html (renamed from docs/html/harfbuzz-hb-deprecated.html)24
-rw-r--r--docs/reference/html/harfbuzz-hb-face.html (renamed from docs/html/harfbuzz-hb-face.html)132
-rw-r--r--docs/reference/html/harfbuzz-hb-font.html (renamed from docs/html/harfbuzz-hb-font.html)739
-rw-r--r--docs/reference/html/harfbuzz-hb-ft.html (renamed from docs/html/harfbuzz-hb-ft.html)110
-rw-r--r--docs/reference/html/harfbuzz-hb-glib.html (renamed from docs/html/harfbuzz-hb-glib.html)48
-rw-r--r--docs/reference/html/harfbuzz-hb-gobject.html50
-rw-r--r--docs/reference/html/harfbuzz-hb-graphite2.html (renamed from docs/html/harfbuzz-hb-graphite2.html)31
-rw-r--r--docs/reference/html/harfbuzz-hb-icu.html (renamed from docs/html/harfbuzz-hb-icu.html)35
-rw-r--r--docs/reference/html/harfbuzz-hb-ot-layout.html (renamed from docs/html/harfbuzz-hb-ot-layout.html)219
-rw-r--r--docs/reference/html/harfbuzz-hb-ot-tag.html (renamed from docs/html/harfbuzz-hb-ot-tag.html)53
-rw-r--r--docs/reference/html/harfbuzz-hb-ot.html (renamed from docs/html/harfbuzz-hb-ot.html)18
-rw-r--r--docs/reference/html/harfbuzz-hb-set.html (renamed from docs/html/harfbuzz-hb-set.html)199
-rw-r--r--docs/reference/html/harfbuzz-hb-shape-plan.html (renamed from docs/html/harfbuzz-hb-shape-plan.html)120
-rw-r--r--docs/reference/html/harfbuzz-hb-shape.html286
-rw-r--r--docs/reference/html/harfbuzz-hb-unicode.html (renamed from docs/html/harfbuzz-hb-unicode.html)702
-rw-r--r--docs/reference/html/harfbuzz-hb-uniscribe.html (renamed from docs/html/harfbuzz-hb-uniscribe.html)29
-rw-r--r--docs/reference/html/harfbuzz-hb-version.html (renamed from docs/html/harfbuzz-hb-version.html)75
-rw-r--r--docs/reference/html/harfbuzz-hb.html (renamed from docs/html/harfbuzz-hb.html)22
-rw-r--r--docs/reference/html/harfbuzz.devhelp2378
-rw-r--r--docs/reference/html/home.png (renamed from docs/html/home.png)bin256 -> 256 bytes
-rw-r--r--docs/reference/html/index.html105
-rw-r--r--docs/reference/html/index.sgml496
-rw-r--r--docs/reference/html/left-insensitive.png (renamed from docs/html/left-insensitive.png)bin395 -> 395 bytes
-rw-r--r--docs/reference/html/left.png (renamed from docs/html/left.png)bin262 -> 262 bytes
-rw-r--r--docs/reference/html/object-tree.html (renamed from docs/html/object-tree.html)41
-rw-r--r--docs/reference/html/right-insensitive.png (renamed from docs/html/right-insensitive.png)bin373 -> 373 bytes
-rw-r--r--docs/reference/html/right.png (renamed from docs/html/right.png)bin261 -> 261 bytes
-rw-r--r--docs/reference/html/style.css (renamed from docs/html/style.css)15
-rw-r--r--docs/reference/html/up-insensitive.png (renamed from docs/html/up-insensitive.png)bin374 -> 374 bytes
-rw-r--r--docs/reference/html/up.png (renamed from docs/html/up.png)bin260 -> 260 bytes
-rw-r--r--docs/reference/version.xml1
-rw-r--r--docs/reference/version.xml.in (renamed from docs/version.xml.in)0
-rw-r--r--docs/usermanual-buffers-language-script-and-direction.xml77
-rw-r--r--docs/usermanual-clusters.xml304
-rw-r--r--docs/usermanual-fonts-and-faces.xml18
-rw-r--r--docs/usermanual-glyph-information.xml8
-rw-r--r--docs/usermanual-hello-harfbuzz.xml183
-rw-r--r--docs/usermanual-install-harfbuzz.xml70
-rw-r--r--docs/usermanual-opentype-features.xml13
-rw-r--r--docs/usermanual-what-is-harfbuzz.xml115
-rw-r--r--docs/version.xml1
-rw-r--r--ltmain.sh5195
-rw-r--r--m4/libtool.m41950
-rw-r--r--m4/ltoptions.m472
-rw-r--r--m4/ltsugar.m47
-rw-r--r--m4/ltversion.m412
-rw-r--r--m4/lt~obsolete.m47
-rwxr-xr-xmissing4
-rw-r--r--src/Makefile.am249
-rw-r--r--src/Makefile.in1150
-rw-r--r--src/Makefile.sources151
-rwxr-xr-xsrc/check-header-guards.sh5
-rwxr-xr-xsrc/check-libstdc++.sh6
-rwxr-xr-xsrc/gen-indic-table.py1
-rwxr-xr-xsrc/gen-use-table.py476
-rw-r--r--src/harfbuzz.pc.in2
-rw-r--r--src/hb-atomic-private.hh110
-rw-r--r--src/hb-blob.cc25
-rw-r--r--src/hb-blob.h24
-rw-r--r--src/hb-buffer-deserialize-text.hh4
-rw-r--r--src/hb-buffer-deserialize-text.rl4
-rw-r--r--src/hb-buffer-private.hh128
-rw-r--r--src/hb-buffer-serialize.cc111
-rw-r--r--src/hb-buffer.cc698
-rw-r--r--src/hb-buffer.h272
-rw-r--r--src/hb-common.cc98
-rw-r--r--src/hb-common.h47
-rw-r--r--src/hb-coretext.cc236
-rw-r--r--src/hb-coretext.h6
-rw-r--r--src/hb-deprecated.h10
-rw-r--r--src/hb-directwrite.cc970
-rw-r--r--src/hb-directwrite.h34
-rw-r--r--src/hb-face.cc40
-rw-r--r--src/hb-face.h34
-rw-r--r--src/hb-fallback-shape.cc4
-rw-r--r--src/hb-font-private.hh207
-rw-r--r--src/hb-font.cc678
-rw-r--r--src/hb-font.h272
-rw-r--r--src/hb-ft.cc324
-rw-r--r--src/hb-ft.h25
-rw-r--r--src/hb-glib.cc5
-rw-r--r--src/hb-glib.h8
-rw-r--r--src/hb-gobject-enums.h.tmpl2
-rw-r--r--src/hb-gobject-structs.cc72
-rw-r--r--src/hb-gobject-structs.h52
-rw-r--r--src/hb-graphite2.cc107
-rw-r--r--src/hb-graphite2.h4
-rw-r--r--src/hb-icu.cc1
-rw-r--r--src/hb-icu.h6
-rw-r--r--src/hb-mutex-private.hh10
-rw-r--r--src/hb-object-private.hh34
-rw-r--r--src/hb-open-file-private.hh24
-rw-r--r--src/hb-open-type-private.hh151
-rw-r--r--src/hb-ot-cmap-table.hh181
-rw-r--r--src/hb-ot-font.cc433
-rw-r--r--src/hb-ot-font.h6
-rw-r--r--src/hb-ot-glyf-table.hh104
-rw-r--r--src/hb-ot-head-table.hh11
-rw-r--r--src/hb-ot-hhea-table.hh4
-rw-r--r--src/hb-ot-hmtx-table.hh8
-rw-r--r--src/hb-ot-layout-common-private.hh158
-rw-r--r--src/hb-ot-layout-gdef-table.hh46
-rw-r--r--src/hb-ot-layout-gpos-table.hh435
-rw-r--r--src/hb-ot-layout-gsub-table.hh343
-rw-r--r--src/hb-ot-layout-gsubgpos-private.hh325
-rw-r--r--src/hb-ot-layout-jstf-table.hh37
-rw-r--r--src/hb-ot-layout-private.hh240
-rw-r--r--src/hb-ot-layout.cc256
-rw-r--r--src/hb-ot-layout.h56
-rw-r--r--src/hb-ot-map-private.hh26
-rw-r--r--src/hb-ot-map.cc17
-rw-r--r--src/hb-ot-maxp-table.hh7
-rw-r--r--src/hb-ot-name-table.hh14
-rw-r--r--src/hb-ot-os2-table.hh105
-rw-r--r--src/hb-ot-post-table.hh119
-rw-r--r--src/hb-ot-shape-complex-arabic-fallback.hh6
-rw-r--r--src/hb-ot-shape-complex-arabic-private.hh50
-rw-r--r--src/hb-ot-shape-complex-arabic-table.hh26
-rw-r--r--src/hb-ot-shape-complex-arabic-win1256.hh4
-rw-r--r--src/hb-ot-shape-complex-arabic.cc285
-rw-r--r--src/hb-ot-shape-complex-default.cc3
-rw-r--r--src/hb-ot-shape-complex-hangul.cc22
-rw-r--r--src/hb-ot-shape-complex-hebrew.cc3
-rw-r--r--src/hb-ot-shape-complex-indic-private.hh42
-rw-r--r--src/hb-ot-shape-complex-indic-table.cc372
-rw-r--r--src/hb-ot-shape-complex-indic.cc213
-rw-r--r--src/hb-ot-shape-complex-myanmar.cc87
-rw-r--r--src/hb-ot-shape-complex-private.hh160
-rw-r--r--src/hb-ot-shape-complex-sea-machine.hh224
-rw-r--r--src/hb-ot-shape-complex-sea-machine.rl102
-rw-r--r--src/hb-ot-shape-complex-sea.cc380
-rw-r--r--src/hb-ot-shape-complex-thai.cc10
-rw-r--r--src/hb-ot-shape-complex-tibetan.cc3
-rw-r--r--src/hb-ot-shape-complex-use-machine.hh548
-rw-r--r--src/hb-ot-shape-complex-use-machine.rl180
-rw-r--r--src/hb-ot-shape-complex-use-private.hh97
-rw-r--r--src/hb-ot-shape-complex-use-table.cc696
-rw-r--r--src/hb-ot-shape-complex-use.cc588
-rw-r--r--src/hb-ot-shape-fallback-private.hh4
-rw-r--r--src/hb-ot-shape-fallback.cc76
-rw-r--r--src/hb-ot-shape-normalize.cc127
-rw-r--r--src/hb-ot-shape.cc375
-rw-r--r--src/hb-ot-shape.h4
-rw-r--r--src/hb-ot-tag.cc206
-rw-r--r--src/hb-ot-tag.h8
-rw-r--r--src/hb-private.hh167
-rw-r--r--src/hb-set-private.hh11
-rw-r--r--src/hb-set.cc52
-rw-r--r--src/hb-set.h55
-rw-r--r--src/hb-shape-plan.cc36
-rw-r--r--src/hb-shape-plan.h18
-rw-r--r--src/hb-shape.cc87
-rw-r--r--src/hb-shape.h13
-rw-r--r--src/hb-shaper-list.hh3
-rw-r--r--src/hb-shaper.cc2
-rw-r--r--src/hb-ucdn.cc6
-rw-r--r--src/hb-ucdn/Makefile.am6
-rw-r--r--src/hb-ucdn/Makefile.in22
-rw-r--r--src/hb-ucdn/Makefile.sources4
-rw-r--r--src/hb-ucdn/ucdn.h6
-rw-r--r--src/hb-ucdn/unicodedata_db.h2167
-rw-r--r--src/hb-unicode-private.hh59
-rw-r--r--src/hb-unicode.cc33
-rw-r--r--src/hb-unicode.h109
-rw-r--r--src/hb-uniscribe.cc31
-rw-r--r--src/hb-uniscribe.h4
-rw-r--r--src/hb-utf-private.hh46
-rw-r--r--src/hb-version.h14
-rw-r--r--src/hb-version.h.in6
-rw-r--r--src/hb-warning.cc24
-rw-r--r--src/hb.h4
-rw-r--r--src/test.cc2
-rwxr-xr-xtest-driver20
-rw-r--r--test/Makefile.am6
-rw-r--r--test/Makefile.in15
-rw-r--r--test/api/Makefile.am6
-rw-r--r--test/api/Makefile.in19
-rw-r--r--test/api/test-font.c58
-rw-r--r--test/api/test-object.c38
-rw-r--r--test/api/test-ot-tag.c7
-rw-r--r--test/api/test-shape.c45
-rw-r--r--test/fuzzing/Makefile.am52
-rw-r--r--test/fuzzing/Makefile.in696
-rw-r--r--test/fuzzing/README21
-rw-r--r--test/fuzzing/hb-fuzzer.cc61
-rw-r--r--test/shaping/Makefile.am17
-rw-r--r--test/shaping/Makefile.in37
-rw-r--r--test/shaping/README.md40
-rw-r--r--test/shaping/fonts/sha1sum/0509e80afb379d16560e9e47bdd7d888bebdebc6.ttfbin61 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/051d92f8bc6ff724511b296c27623f824de256e9.ttfbin2028 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/07f054357ff8638bac3711b422a1e31180bba863.ttfbin848 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/191826b9643e3f124d865d617ae609db6a2ce203.ttfbin2140 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/1a6f1687b7a221f9f2c834b0b360d3c8463b6daf.ttfbin64 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/1c04a16f32a39c26c851b7fc014d2e8d298ba2b8.ttfbin820 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttfbin316 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttfbin4064 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/205edd09bd3d141cc9580f650109556cc28b22cb.ttfbin1966 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/298c9e1d955f10f6f72c6915c3c6ff9bf9695cec.ttfbin2520 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/3511ff5c1647150595846ac414c595cccac34f18.ttfbin1483 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/375d6ae32a3cbe52fbf81a4e5777e3377675d5a3.ttfbin1024 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/43979b90b2dd929723cf4fe1715990bcb9c9a56b.ttfbin1804 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/43ef465752be9af900745f72fe29cb853a1401a5.ttfbin4272 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/45855bc8d46332b39c4ab9e2ee1a26b1f896da6b.ttfbin1088 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/49c9f7485c1392fa09a1b801bc2ffea79275f22e.ttfbin1496 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/56cfd0e18d07f41c38e9598545a6d369127fc6f9.ttfbin1412 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/5a5daf5eb5a4db77a2baa3ad9c7a6ed6e0655fa8.ttfbin61 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/641bd9db850193064d17575053ae2bf8ec149ddc.ttfbin305 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/6466d38c62e73a39202435a4f73bf5d6acbb73c0.ttfbin824 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/706c5d7b625f207bc0d874c67237aad6f1e9cd6f.ttfbin3868 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/7a37dc4d5bf018456aea291cee06daf004c0221c.ttfbin1080 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/7ef276fc886ea502a03b9b0e5c8b547d5dc2b61c.ttfbin784 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/8099955657a54e9ee38a6ba1d6f950ce58e3cc25.ttfbin1024 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/8240789f6d12d4cfc4b5e8e6f246c3701bcf861f.ttfbin633 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/MANIFEST19
-rw-r--r--test/shaping/fonts/sha1sum/a34a7b00f22ffb5fd7eef6933b81c7e71bc2cdfb.ttfbin3700 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/a98e908e2ed21b22228ea59ebcc0f05034c86f2e.ttfbin1016 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/b9e2aaa0d75fcef6971ec3a96d806ba4a6b31fe2.ttfbin1804 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/bb0c53752e85c3d28973ebc913287b8987d3dfe8.ttfbin976 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/c4e48b0886ef460f532fb49f00047ec92c432ec0.ttfbin2512 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/cc5f3d2d717fb6bd4dfae1c16d48a2cb8e12233b.ttfbin1448 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/f22416c692720a7d46fadf4af99f4c9e094f00b9.ttfbin16736 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/f518eb6f6b5eec2946c9fbbbde44e45d46f5e2ac.ttfbin1356 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/fab39d60d758cb586db5a504f218442cd1395725.ttfbin1894 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/fbb6c84c9e1fe0c39e152fbe845e51fd81f6748e.ttfbin2616 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/fcdcffbdf1c4c97c05308d7600e4c283eb47dbca.ttfbin1344 -> 0 bytes
-rw-r--r--test/shaping/fonts/sha1sum/ffa0f5d2d9025486d8469d8b1fdd983e7632499b.ttfbin1448 -> 0 bytes
-rwxr-xr-xtest/shaping/hb-diff2
-rwxr-xr-xtest/shaping/hb-diff-colorize2
-rwxr-xr-xtest/shaping/hb-diff-filter-failures2
-rwxr-xr-xtest/shaping/hb-diff-ngrams2
-rwxr-xr-xtest/shaping/hb-diff-stat2
-rwxr-xr-xtest/shaping/hb-manifest-read2
-rwxr-xr-xtest/shaping/hb-manifest-update2
-rwxr-xr-xtest/shaping/hb-unicode-decode2
-rwxr-xr-xtest/shaping/hb-unicode-encode2
-rwxr-xr-xtest/shaping/hb-unicode-prettyname2
-rw-r--r--test/shaping/hb_test_tools.py48
-rwxr-xr-xtest/shaping/record-test.sh59
-rwxr-xr-xtest/shaping/run-tests.sh32
-rw-r--r--test/shaping/tests/arabic-fallback-shaping.tests2
-rw-r--r--test/shaping/tests/arabic-feature-order.tests6
-rw-r--r--test/shaping/tests/cluster.tests2
-rw-r--r--test/shaping/tests/context-matching.tests6
-rw-r--r--test/shaping/tests/cursive-positioning.tests4
-rw-r--r--test/shaping/tests/default-ignorables.tests1
-rw-r--r--test/shaping/tests/fallback-positioning.tests2
-rw-r--r--test/shaping/tests/fuzzed.tests11
-rw-r--r--test/shaping/tests/hangul-jamo.tests4
-rw-r--r--test/shaping/tests/hyphens.tests2
-rw-r--r--test/shaping/tests/indic-joiner-candrabindu.tests4
-rw-r--r--test/shaping/tests/indic-old-spec.tests4
-rw-r--r--test/shaping/tests/indic-pref-blocking.tests4
-rw-r--r--test/shaping/tests/ligature-id.tests35
-rw-r--r--test/shaping/tests/mark-filtering-sets.tests5
-rw-r--r--test/shaping/tests/mongolian-variation-selector.tests7
-rw-r--r--test/shaping/tests/simple.tests2
-rw-r--r--test/shaping/tests/spaces.tests17
-rw-r--r--test/shaping/tests/use.tests3
-rw-r--r--test/shaping/tests/vertical.tests1
-rw-r--r--test/shaping/tests/zero-width-marks.tests13
-rw-r--r--test/shaping/texts/in-tree/MANIFEST9
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/MANIFEST6
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-arabic/MANIFEST3
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-arabic/language-persian/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-arabic/language-urdu/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-arabic/language-urdu/crulp/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-arabic/language-urdu/crulp/ligatures/MANIFEST7
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-arabic/misc/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-arabic/misc/diacritics/MANIFEST7
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-mandaic/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-mandaic/misc/MANIFEST0
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-mongolian/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-mongolian/misc/MANIFEST4
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-nko/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-nko/misc/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-phags-pa/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-phags-pa/misc/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-syriac/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-syriac/misc/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-arabic/script-syriac/misc/abbreviation-mark.txt11
-rw-r--r--test/shaping/texts/in-tree/shaper-default/MANIFEST5
-rw-r--r--test/shaping/texts/in-tree/shaper-default/script-ethiopic/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-default/script-ethiopic/misc/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-default/script-han/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-default/script-han/misc/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-default/script-hiragana/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-default/script-hiragana/misc/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-default/script-linear-b/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-default/script-linear-b/misc/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-default/script-tifinagh/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-default/script-tifinagh/misc/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-hangul/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-hangul/script-hangul/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-hangul/script-hangul/misc/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-hebrew/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-hebrew/script-hebrew/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-hebrew/script-hebrew/misc/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/MANIFEST11
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/misc/MANIFEST0
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/utrrs/MANIFEST3
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/utrrs/codepoint/MANIFEST7
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/utrrs/gpos/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/utrrs/gsub/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/misc/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/utrrs/MANIFEST3
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/utrrs/codepoint/MANIFEST7
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/utrrs/gpos/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/utrrs/gsub/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/misc/MANIFEST6
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/utrrs/MANIFEST3
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/utrrs/codepoint/MANIFEST9
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/utrrs/gpos/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/utrrs/gsub/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/misc/MANIFEST0
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/utrrs/MANIFEST3
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/utrrs/codepoint/MANIFEST7
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/utrrs/gpos/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/utrrs/gsub/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/misc/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/utrrs/MANIFEST3
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/MANIFEST7
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/utrrs/gpos/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/utrrs/gsub/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/misc/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/utrrs/MANIFEST3
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/utrrs/codepoint/MANIFEST8
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/utrrs/gpos/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/utrrs/gsub/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/misc/MANIFEST3
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/utrrs/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/utrrs/codepoint/MANIFEST7
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/utrrs/gsub/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/misc/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/utrrs/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/utrrs/codepoint/MANIFEST9
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/utrrs/gsub/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/misc/MANIFEST4
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/utrrs/MANIFEST3
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/utrrs/codepoint/MANIFEST5
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/utrrs/gpos/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/utrrs/gsub/MANIFEST7
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/misc/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/utrrs/MANIFEST3
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/utrrs/codepoint/MANIFEST10
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/utrrs/gpos/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/utrrs/gsub/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/misc/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/utrrs/MANIFEST3
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/utrrs/codepoint/MANIFEST7
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/utrrs/gpos/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/utrrs/gsub/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/south-east-asian/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/south-east-asian/script-khmer/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-indic/south-east-asian/script-khmer/misc/MANIFEST3
-rw-r--r--test/shaping/texts/in-tree/shaper-myanmar/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-myanmar/script-myanmar/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-myanmar/script-myanmar/misc/MANIFEST3
-rw-r--r--test/shaping/texts/in-tree/shaper-sea/MANIFEST3
-rw-r--r--test/shaping/texts/in-tree/shaper-sea/script-cham/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-sea/script-cham/misc/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-sea/script-cham/misc/misc.txt (renamed from test/shaping/texts/in-tree/shaper-use/script-cham/misc.txt)0
-rw-r--r--test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/misc/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/misc/misc.txt1
-rw-r--r--test/shaping/texts/in-tree/shaper-sea/script-tai-tham/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-sea/script-tai-tham/misc/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-sea/script-tai-tham/misc/misc.txt (renamed from test/shaping/texts/in-tree/shaper-use/script-tai-tham/misc.txt)0
-rw-r--r--test/shaping/texts/in-tree/shaper-sea/script-tai-tham/misc/torture.txt (renamed from test/shaping/texts/in-tree/shaper-use/script-tai-tham/torture.txt)0
-rw-r--r--test/shaping/texts/in-tree/shaper-thai/MANIFEST2
-rw-r--r--test/shaping/texts/in-tree/shaper-thai/script-lao/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-thai/script-lao/misc/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-thai/script-thai/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-thai/script-thai/misc/MANIFEST4
-rw-r--r--test/shaping/texts/in-tree/shaper-tibetan/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-tibetan/script-tibetan/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-tibetan/script-tibetan/misc/MANIFEST1
-rw-r--r--test/shaping/texts/in-tree/shaper-tibetan/script-tibetan/misc/contractions.txt612
-rw-r--r--test/shaping/texts/in-tree/shaper-use/script-batak/misc.txt9
-rw-r--r--test/shaping/texts/in-tree/shaper-use/script-buginese/misc.txt70
-rw-r--r--test/shaping/texts/in-tree/shaper-use/script-kaithi/misc.txt6
-rw-r--r--test/shaping/texts/in-tree/shaper-use/script-kharoshti/misc.txt36
-rw-r--r--util/Makefile.am49
-rw-r--r--util/Makefile.in120
-rw-r--r--util/Makefile.sources32
-rw-r--r--util/ansi-print.cc42
-rw-r--r--util/hb-shape.cc2
-rw-r--r--util/helper-cairo.cc64
-rw-r--r--util/helper-cairo.hh6
-rw-r--r--util/main-font-text.hh40
-rw-r--r--util/options.cc71
-rw-r--r--util/options.hh78
-rw-r--r--util/view-cairo.cc93
-rw-r--r--util/view-cairo.hh2
-rw-r--r--win32/Makefile.am16
-rw-r--r--win32/Makefile.in501
-rw-r--r--win32/Makefile.vc52
-rw-r--r--win32/README.txt79
-rw-r--r--win32/build-rules-msvc.mak140
-rw-r--r--win32/config-msvc.mak198
-rw-r--r--win32/config.h.win32158
-rw-r--r--win32/config.h.win32.in158
-rw-r--r--win32/create-lists-msvc.mak151
-rw-r--r--win32/create-lists.bat42
-rw-r--r--win32/detectenv-msvc.mak136
-rw-r--r--win32/generate-msvc.mak26
-rw-r--r--win32/hb-introspection-msvc.mak42
-rw-r--r--win32/info-msvc.mak137
-rw-r--r--win32/install.mak29
-rw-r--r--win32/introspection-msvc.mak73
499 files changed, 19220 insertions, 41423 deletions
diff --git a/Android.mk b/Android.mk
index 654f0e0..0552507 100644
--- a/Android.mk
+++ b/Android.mk
@@ -75,10 +75,9 @@ HARFBUZZ_SRC_FILES = \
src/hb-ot-shape-complex-indic.cc \
src/hb-ot-shape-complex-indic-table.cc \
src/hb-ot-shape-complex-myanmar.cc \
+ src/hb-ot-shape-complex-sea.cc \
src/hb-ot-shape-complex-thai.cc \
src/hb-ot-shape-complex-tibetan.cc \
- src/hb-ot-shape-complex-use.cc \
- src/hb-ot-shape-complex-use-table.cc \
src/hb-ot-shape-normalize.cc \
src/hb-ot-shape-fallback.cc \
$(NULL)
@@ -101,7 +100,6 @@ LOCAL_SHARED_LIBRARIES := \
liblog
LOCAL_C_INCLUDES += \
$(LOCAL_PATH)/src
-LOCAL_CFLAGS += -DHB_NO_MT -DHAVE_OT -DHAVE_ICU -DHAVE_ICU_BUILTIN \
- -Wno-unused-parameter -Wno-missing-field-initializers
+LOCAL_CFLAGS += -DHB_NO_MT -DHAVE_OT -DHAVE_ICU -DHAVE_ICU_BUILTIN
LOCAL_MODULE:= libharfbuzz_ng
include $(BUILD_SHARED_LIBRARY)
diff --git a/BUILD.md b/BUILD.md
deleted file mode 100644
index 86285c6..0000000
--- a/BUILD.md
+++ /dev/null
@@ -1,33 +0,0 @@
-On Linux, install the development packages for
-[FreeType](http://www.freedesktop.org/wiki/Software/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
-
-whereas on Fedora, RHEL, CentOS, and other Red Hat based systems you would do:
-* sudo yum install gcc gcc-c++ freetype-devel glib2-devel cairo-devel
-
-on the Mac, using MacPorts:
-* sudo port install freetype glib2 cairo
-
-or using Homebrew:
-* brew install freetype glib cairo
-
-If you are using a tarball, you can now proceed to running configure and make
-as with any other standard package. That should leave you with a shared
-library in src/, and a few utility programs including hb-view and hb-shape
-under util/. From the tarball, NMake Makefiles are also provided in win32/,
-which supports building HarfBuzz using Visual Studio, with a README.txt that
-gives instructions on building using NMake.
-If you are bootstraping from git, you need a few more tools before you can
-run autogen.sh for the first time. Namely, pkg-config and ragel. Again,
-on Ubuntu / Debian:
-* sudo apt-get install autoconf automake libtool pkg-config ragel gtk-doc-tools
-
-and on Fedora, RHEL, CentOS:
-* sudo yum install autoconf automake libtool pkgconfig ragel gtk-doc
-
-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
diff --git a/ChangeLog b/ChangeLog
index 33749c7..2ef17b2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7224 +1,6 @@
-commit 9879fc1db3cad684f412c2f3d6b49e0435697d0e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon May 2 10:29:12 2016 +0200
-
- [ot-font] Remove unused 'post' table include for now
-
- To make a release...
-
- src/hb-ot-font.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit f8061ae7972462ad800c23be7cd7b3d7ab94b93b
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon May 2 10:28:24 2016 +0200
-
- [tests] Fix test
-
- test/shaping/Makefile.am |
- 2 +-
- .../tests/{fallback-positioning.test => fallback-positioning.tests}
- | 0
- 2 files changed, 1 insertion(+), 1 deletion(-)
-
-commit f00ab2a33ab34ba64f38cbbe65830c770a3e071e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon May 2 10:24:00 2016 +0200
-
- [hb-ot-font] Make 'glyf' table loading lazy
-
- Apparently some clients have reference-table callbacks that copy
- the table.
- As such, avoid loading 'glyf' table which is only needed if fallback
- positioning
- happens.
-
- src/hb-ot-font.cc | 45
- ++++++++++++++++++++-
- test/shaping/Makefile.am | 1 +
- .../7ef276fc886ea502a03b9b0e5c8b547d5dc2b61c.ttf | Bin 0 -> 784 bytes
- 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
-
- [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/hb-ot-post-table.hh | 119
- ++++++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 132 insertions(+), 1 deletion(-)
-
-commit 9abaaac409b8e3a0a9182b67dc384133013f7878
-Merge: 2f560ee 264b7a7
-Author: Behdad Esfahbod <behdad@behdad.org>
-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
-
- [tibetan] Reorder marks to better match Uniscribe
-
- Fixes https://github.com/behdad/harfbuzz/issues/237
-
- Note that Uniscribe enforces a certain syllable order. We don't.
- But with this change, I get all of the tibetan contractions pass
- with Microsoft Himalaya font.
-
- src/hb-unicode-private.hh | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-commit f68390f196216718c22c434e1d8921118e646824
-Author: Behdad Esfahbod <behdad@behdad.org>
-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
- +++++++++++++++++++++
- 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
-
- Merge pull request #247 from khaledhosny/update-opentype-language-tags
-
- Update opentype language tags
-
-commit adafdcddced076da4bfa3114a00e15a387aaf1f7
-Author: Arthur Reutenauer <arthur.reutenauer@normalesup.org>
-Date: Sat Nov 7 23:37:21 2015 +0000
-
- Mass-added “difficult” tags – to be curated.
-
- src/hb-ot-tag.cc | 69
- +++++++++++++++++++++++++++++---------------------------
- 1 file changed, 36 insertions(+), 33 deletions(-)
-
-commit 3d6a2c0d7d9f6c5b3097f78c1123f9e59dcc76e2
-Author: Arthur Reutenauer <arthur.reutenauer@normalesup.org>
-Date: Sat Nov 7 22:59:13 2015 +0000
-
- Initial import of missing OpenType 1.7 language tags.
-
- src/hb-ot-tag.cc | 67
- +++++++++++++++++++++++++++++++++++++++++++++++++++-----
- 1 file changed, 61 insertions(+), 6 deletions(-)
-
-commit 7e2da035f68e46ce8f4759b67b4ed3a1b211d793
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Apr 26 16:42:25 2016 -0700
-
- Undo accidental change
-
- src/hb-ot-shape-complex-arabic.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit b20305022a8235b19e6b640bc62651854e1336f1
-Author: Behdad Esfahbod <behdad@behdad.org>
-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-shape-complex-arabic.cc | 2 +-
- .../a34a7b00f22ffb5fd7eef6933b81c7e71bc2cdfb.ttf | Bin 0 -> 3700 bytes
- .../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
-
- Move ZWJ/ZWNJ bits to top byte of unicode_props()
-
- To make room to remember Mongolian Free Variation Selectors.
- Part of fixing https://github.com/behdad/harfbuzz/issues/234
-
- src/hb-ot-layout-private.hh | 40 ++++++++++++++++++++++------------------
- 1 file changed, 22 insertions(+), 18 deletions(-)
-
-commit de508516cb06ddb064d75bd7be8e843a5ebcf70d
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Apr 26 11:28:37 2016 -0700
-
- [util] Print out --debug buffer to stderr
-
- util/main-font-text.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 29393884b9f045460fb65d6ad10a94461ba93430
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Apr 26 10:35:23 2016 -0700
-
- Annotate blacklisted fonts with their sha1sum
-
- src/hb-ot-layout.cc | 18 ++++++++++++------
- 1 file changed, 12 insertions(+), 6 deletions(-)
-
-commit 14bb4a56971fd45063cd6c1288d911627088abb2
-Merge: 1c625df 5069062
-Author: Sascha Brawer <sascha@brawer.ch>
-Date: Tue Apr 26 11:38:16 2016 +0200
-
- Merge pull request #245 from KonstantinRitt/fixes/ce
-
- Unbreak build on Windows CE
-
-commit 5069062d0a9342bb716eebf3ddc1efad91924caa
-Author: Konstantin Ritt <ritt.ks@gmail.com>
-Date: Tue Apr 26 12:02:26 2016 +0400
-
- Unbreak build on Windows CE
-
- 0475ef2f97e3035a2eea9a0f96031331e07e8e29 broke the build by using
- vsnprintf(), which is not defined on Windows CE
-
- src/hb-private.hh | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 1c625dff2269c54ff429ca45be88893ff1fa6c34
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Apr 9 12:53:23 2016 -0700
-
- Minor
-
- src/hb-ot-layout.cc | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-commit 851b0db36d1b724fc1e0db506445119c78186285
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Apr 8 23:46:55 2016 -0700
-
- Minor. We should never get to this branch, but fix it anyway.
-
- src/hb-ot-layout-common-private.hh | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-commit 00ea66f35754a1e6e4d3b7b139d611a9a623a9d1
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Apr 8 13:51:01 2016 -0700
-
- 1.2.6
-
- 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
-
- Blacklist another set of timesi.ttf and timesbi.ttf
-
- src/hb-ot-layout.cc | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit ef476be80d773332e0c768a3465d99381d76edd9
-Merge: a0331b5 d3134a6
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Apr 8 13:16:33 2016 -0700
-
- Merge pull request #239 from ebraminio/dwfix
-
- Improve DirectWrite backend
-
-commit d3134a66ad551ded726db9528d3c25459088f105
-Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Tue Apr 5 21:01:05 2016 +0000
-
- Fix when no feature is given
-
- src/hb-directwrite.cc | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-commit a0331b55f7b45437980e1fc323251f4091bf2c4e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Apr 4 16:25:32 2016 -0700
-
- 1.2.5
-
- 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
-
- Add test for 6dd80faf0dcb3e8a8915c3a25da44e2a67cb0cd8
-
- test/shaping/Makefile.am | 1 +
- .../f22416c692720a7d46fadf4af99f4c9e094f00b9.ttf | Bin 0 ->
- 16736 bytes
- 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
-
- [coretext] Clarify comment
-
- src/hb-coretext.cc | 8 +++-----
- 1 file changed, 3 insertions(+), 5 deletions(-)
-
-commit 6dd80faf0dcb3e8a8915c3a25da44e2a67cb0cd8
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Apr 4 14:34:25 2016 -0700
-
- Fix FixedVersion::to_int()
-
- Ouch. Had broken it in 9a13ed453ef96822a47d6e6f58332b87f38d5c59
-
- Fixes https://github.com/behdad/harfbuzz/issues/238
- Will add test soon.
-
- src/hb-open-type-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 4a104021697439fd21390a1f4cdc9310348882fa
-Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Sat Apr 2 13:47:59 2016 +0000
-
- Hide justification behind HB_DIRECTWRITE_EXPERIMENTAL_JUSTIFICATION
-
- src/hb-directwrite.cc | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-commit 63ee9ca5d81b53eb035972754ed95572821c393c
-Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Fri Apr 1 15:47:07 2016 +0000
-
- Use standard types instead Windows favourites ones
-
- src/hb-directwrite.cc | 100
- +++++++++++++++++++++++++-------------------------
- 1 file changed, 50 insertions(+), 50 deletions(-)
-
-commit adf20ba0d18d1506e633dcd9b4827a6c93abcadd
-Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Fri Apr 1 15:36:40 2016 +0000
-
- Limit GetJustifiedGlyphs only to scripts with custom justification
- character
-
- src/hb-directwrite.cc | 98
- +++++++++++++++++++++++++++++++--------------------
- 1 file changed, 60 insertions(+), 38 deletions(-)
-
-commit 32ae9d1b3ffbe7e26e654437a56a26a95fe9f5a6
-Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Fri Apr 1 06:39:57 2016 +0000
-
- Add justification support
-
- src/hb-directwrite.cc | 321
- ++++++++++++++++++++++++++++++++------------------
- 1 file changed, 205 insertions(+), 116 deletions(-)
-
-commit 10c3d9e41520595c88dd2a8321590e03ce8fcf47
-Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Thu Mar 31 18:19:44 2016 +0000
-
- Basic opentype features support
-
- src/hb-directwrite.cc | 62
- ++++++++++++++++++++++++++++++++++-----------------
- 1 file changed, 42 insertions(+), 20 deletions(-)
-
-commit d129897120d3ad414220d603557c15a60aa69fa6
-Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Thu Mar 31 13:45:37 2016 +0000
-
- Refactor and remove dupe getglyphs call
-
- src/hb-directwrite.cc | 106
- ++++++++++++++++++++++++--------------------------
- 1 file changed, 51 insertions(+), 55 deletions(-)
-
-commit 5f1a8961008b93f72acc47336109af3a64e248d0
-Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Thu Mar 31 12:26:16 2016 +0000
-
- Better glyph offset support
-
- src/hb-directwrite.cc | 44 ++++++++++++++++++++++++--------------------
- 1 file changed, 24 insertions(+), 20 deletions(-)
-
-commit d691ba3f405738c6857450752b8cc0911dfcdb01
-Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Wed Mar 30 20:21:40 2016 +0000
-
- Don't fail when language is not set
-
- src/hb-directwrite.cc | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-commit 1c00a46c7a608ebc0b03c5abfcfe7f2b9881d0df
-Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Wed Mar 30 20:15:09 2016 +0000
-
- Make DirectWrite backend to work with different font sizes
-
- Actually copyedited same logic from Uniscribe to make it just work
-
- src/hb-directwrite.cc | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-commit 0251b0cc5c39272d2299d4b2ab802faaafe96837
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Mar 17 14:37:11 2016 -0700
-
- 1.2.4
-
- 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
-
- Synthesize GDEF glyph class for any glyph that does not have one
- in GDEF
-
- Previously we only synthesized GDEF glyph classes if the glyphClassDef
- array in GDEF was null. This worked well enough, and is indeed what
- OpenType requires: "If the font does not include a GlyphClassDef
- table,
- the client must define and maintain this information when using the
- GSUB and GPOS tables." That sentence does not quite make sense since
- one needs Unicode properties as well, but is close enough.
-
- However, looks like Arial Unicode as shipped on WinXP, does have GDEF
- glyph class array, but defines no classes for Hebrew. This results
- in Hebrew marks not getting their widths zeroed. So, with this
- change,
- we synthesize glyph class for any glyph that is not specified in the
- GDEF glyph class table. Since, from our point of view, a glyph not
- being listed in that table is a font bug, any unwanted consequence of
- this change is a font bug :).
-
- Note that we still don't get the same rendering as Uniscribe, since
- Uniscribe seems to do fallback positioning as well, even though the
- font does have a GPOS table (which does NOT cover Hebrew!). We are
- not going to try to match that though.
-
- Test string for Arial Unicode:
-
- U+05E9,U+05B8,U+05C1,U+05DC
-
- Before: [gid1166=3+991|gid1142=0+737|gid5798=0+1434]
- After: [gid1166=3+991|gid1142=0+0|gid5798=0+1434]
- Uniscribe: [gid1166=3+991|gid1142=0@348,0+0|gid5798=0+1434]
-
- Note that our new output matches what we were generating until July
- 2014, because the Hebrew shaper used to zero mark advances based on
- Unicode, NOT GDEF. That's 9e834e29e0b657f0555df1ab9cea79ff7abcf08d.
-
- Reported by Greg Douglas.
-
- src/hb-ot-layout-gsub-table.hh | 22 ++++++++++++++++++++--
- src/hb-ot-shape.cc | 29 -----------------------------
- 2 files changed, 20 insertions(+), 31 deletions(-)
-
-commit fef5dd9a72f326c160a7194f558749d24bac7283
-Merge: 01ea9ea 5f995db
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Mar 12 19:15:15 2016 -0800
-
- Merge pull request #232 from c0nk/wip-icu
-
- Add --with-icu=builtin option; fix compile error
-
-commit 01ea9eaac373d9f3de6e56c1ca26cdcd259ecc8e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Mar 11 18:50:02 2016 -0800
-
- [build] Use tar-ustar instead of tar-pax
-
- The default tar-v7 is not good enough for us (99 char filename
- limit), so I have had bumped to tar-pax. We got one complaint
- that someone's tar couldn't handle tar-pax. Set to tar-ustar
- which is ~13 years earlier than tar-pax and is good enough for us.
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 3e10460a1dd41de32752e308771aa30d23565cc0
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Mar 11 18:45:19 2016 -0800
-
- Minor comment
-
- src/hb-unicode-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit d14fea4bdcc1423fe9a585af3abdefa9605d17e6
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Mar 8 12:16:41 2016 -0800
-
- Remove default clause in minor switch statements
-
- Bending to clang warnings...
- https://bugs.chromium.org/p/chromium/issues/detail?id=593057
-
- src/hb-ot-shape-complex-indic.cc | 4 ----
- src/hb-ot-shape-complex-thai.cc | 1 -
- 2 files changed, 5 deletions(-)
-
-commit ce8ae9970102f83b67bb1e8e8b2bf894a0e26c07
-Merge: 731a430 71248a8
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Mar 4 17:20:35 2016 -0800
-
- Merge pull request #231 from KonstantinRitt/post123buildfix
-
- Fix build with HB_DISABLE_DEPRECATED
-
-commit 731a430cd36caabcef04e099b21ebc6daedd536f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Mar 2 13:32:42 2016 -0800
-
- Fix requiredFeature stage handling logic
-
- Originally the way Jonathan had written this was correct in
- "continue"ing:
-
- https://github.com/jfkthame/harfbuzz/commit/35e28c7a733eaffcd9f062b18d7db9fbb3d990fc#diff-ead86a33a5cc9ad7f6e6381031a0baddR199
-
- When I rewrote his patch, I messed it up:
-
- https://github.com/behdad/harfbuzz/commit/da132937989acb4d8ca9bd41c79f98750e7dda30#diff-ead86a33a5cc9ad7f6e6381031a0baddR209
-
- the intended behavior was NOT to set found=TRUE and NOT to continue.
- This was resulting in feature_index[table_index] being left unset.
- Oops!
-
- src/hb-ot-map.cc | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-commit 68b6296d3333fd38bd5442d2ba087ced481603bc
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Mar 1 16:41:53 2016 +0900
-
- Add F2DOT14 type
-
- src/hb-open-type-private.hh | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-commit 082b79fe9f06607998178dcdcbe817af28b017de
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Mar 1 16:41:26 2016 +0900
-
- Use FWORD and UFWORD when it makes sense
-
- I had forgotten about those types.
-
- src/hb-ot-glyf-table.hh | 8 ++++----
- src/hb-ot-hmtx-table.hh | 6 +++---
- 2 files changed, 7 insertions(+), 7 deletions(-)
-
-commit 5f995db10381172ec63fd7ffbb0acf2c6b3dae5e
-Author: Kal Conley <kcconley@gmail.com>
-Date: Fri Feb 26 00:36:17 2016 +0100
-
- Fix missing ICU #include
-
- Fix compile error in hb-icu.cc when ICU configured with
- U_NO_DEFAULT_INCLUDE_UTF_HEADERS=1
-
- src/hb-icu.cc | 1 +
- 1 file changed, 1 insertion(+)
-
-commit b424b6c372dfe4c0ed75a49761eb34a416819446
-Author: Kal Conley <kcconley@gmail.com>
-Date: Fri Feb 26 00:35:15 2016 +0100
-
- Add --with-icu=builtin configure option
-
- configure.ac | 33 +++++++++++++++++++--------------
- src/Makefile.am | 7 +++++++
- 2 files changed, 26 insertions(+), 14 deletions(-)
-
-commit 71248a843f976c86022eb5bb8c6e8880b2499937
-Author: Konstantin Ritt <ritt.ks@gmail.com>
-Date: Thu Feb 25 18:55:28 2016 +0400
-
- Fix build with HB_DISABLE_DEPRECATED
-
- When HB_DISABLE_DEPRECATED is defined, no code from hb-deprecated.h
- should be used, even from within HB itself.
-
- src/hb-font.cc | 4 ++++
- 1 file changed, 4 insertions(+)
-
-commit 0c7fb7419c20d04b803412945565562c32b42929
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 25 14:40:09 2016 +0900
-
- Speed up buffer variable allocation sanity check
-
- This makes defining HB_NDEBUG much less relevant, to the
- point of irrelevance. Sorry about all the fuss in previous
- release!
-
- src/hb-buffer-private.hh | 67
- ++++++++++++++++++++++++++++-----------------
- src/hb-buffer.cc | 70
- ------------------------------------------------
- 2 files changed, 43 insertions(+), 94 deletions(-)
-
-commit 91dd11565221bdb108c138662ea013aac14bb968
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 25 13:56:47 2016 +0900
-
- Add HB_NDEBUG
-
- API changes:
- - If NDEBUG is defined, define HB_NDEBUG
- - Disable costlier sanity checks if HB_NDEBUG is defined.
-
- In 1.2.3 introduced some code to disable costly sanity checks if
- NDEBUG is defined. NDEBUG, however, disables all assert()s as
- well. With HB_NDEBUG, one can disable costlier checks but keep
- assert()s.
-
- I'll probably add a way to define HB_NDEBUG automatically in
- release tarballs. But for now, production systems that do NOT
- define NDEBUG, are encouraged to define HB_NDEBUG for our build.
-
- src/Makefile.am | 2 +-
- src/hb-buffer-private.hh | 4 ++--
- src/hb-buffer.cc | 4 ++--
- src/hb-private.hh | 9 +++++++++
- 4 files changed, 14 insertions(+), 5 deletions(-)
-
-commit 75568b0a7f811ea18e23037735ec8541a7431f88
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 25 12:26:26 2016 +0900
-
- 1.2.3
-
- NEWS | 42 ++++++++++++++++++++++++++++++++++++++++++
- configure.ac | 2 +-
- 2 files changed, 43 insertions(+), 1 deletion(-)
-
-commit 988165021f8d48dc7120b071d056491256569f4f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 25 12:23:02 2016 +0900
-
- Disable internal buffer variable bookkeeping in NDEBUG builds
-
- Saves some sweet time and binary size!
-
- src/Makefile.am | 1 +
- src/hb-buffer-private.hh | 30 ++++++++++++++++++++----------
- src/hb-buffer.cc | 6 ++++--
- 3 files changed, 25 insertions(+), 12 deletions(-)
-
-commit 94dd0bb7e78125994cb7c833a5b03110f1ffc822
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 25 11:31:03 2016 +0900
-
- Add blacklist signature for Times New Roman (Bold) Italic on OS X
-
- src/hb-ot-layout.cc | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit dd8598c1c7f29fc92253b0cd4e856c1941b1d0c0
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 25 11:20:05 2016 +0900
-
- [test] Pass closure to hb_font_set_glyph_func()
-
- Exercises fix in c335fd7986fe360ab8e1c032c9b988d0d30511eb
-
- test/api/test-shape.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit e23cf902e91142a10229e3514be4ceee69efde04
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 25 11:11:15 2016 +0900
-
- Blacklist GDEF table of timesi.ttf and timesbi.ttf on Win 7
-
- See discussion:
- https://lists.freedesktop.org/archives/harfbuzz/2016-February/005489.html
-
- src/hb-ot-layout.cc | 25 +++++++++++++++++++++++++
- 1 file changed, 25 insertions(+)
-
-commit c335fd7986fe360ab8e1c032c9b988d0d30511eb
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 25 09:16:05 2016 +0900
-
- In trampoline implementation of get_glyph(), don't destroy user
- data twice!
-
- src/hb-font.cc | 41 +++++++++++++++++++++++++++--------------
- 1 file changed, 27 insertions(+), 14 deletions(-)
-
-commit 23335deaad9d4d9824ff41343264514d3f9f7e37
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 24 20:27:13 2016 +0900
-
- [ot-font] Accelerate cmap format4 get_glyph
-
- src/hb-ot-cmap-table.hh | 111
- ++++++++++++++++++++++++++++--------------------
- src/hb-ot-font.cc | 14 +++++-
- 2 files changed, 77 insertions(+), 48 deletions(-)
-
-commit e0f16a715bc3e621ff21a8be88102e9672630574
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 24 19:52:36 2016 +0900
-
- [ot-font] Towards accelerating get_glyph()
-
- src/hb-ot-font.cc | 23 ++++++++++++++++++++---
- 1 file changed, 20 insertions(+), 3 deletions(-)
-
-commit 5473ebfb84c7b6059ac16e04676b363acc51aa00
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 24 19:32:43 2016 +0900
-
- [ot-font] Remove level of indirection in get_glyph_variant
-
- src/hb-ot-cmap-table.hh | 14 ++------------
- src/hb-ot-font.cc | 13 +++++++++----
- 2 files changed, 11 insertions(+), 16 deletions(-)
-
-commit 49fe6ecf19522413e79a11a29aa0ffc5bdfcd2f8
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 24 19:10:06 2016 +0900
-
- [TODO] Update
-
- This file is rather obsolete. Still, give it a refresh.
-
- TODO | 16 ++--------------
- 1 file changed, 2 insertions(+), 14 deletions(-)
-
-commit 8b5bc141cd3a6bfcea3c91a882a630426876ceb3
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 24 19:05:23 2016 +0900
-
- Add get_nominal_glyph() and get_variation_glyph() instead of
- get_glyph()
-
- New API:
- - hb_font_get_nominal_glyph_func_t
- - hb_font_get_variation_glyph_func_t
- - hb_font_funcs_set_nominal_glyph_func()
- - hb_font_funcs_set_variation_glyph_func()
- - hb_font_get_nominal_glyph()
- - hb_font_get_variation_glyph()
-
- Deprecated API:
- - hb_font_get_glyph_func_t
- - hb_font_funcs_set_glyph_func()
-
- Clients that implement their own font-funcs are encouraged to replace
- their get_glyph() implementation with a get_nominal_glyph() and
- get_variation_glyph() pair. The variation version can assume that
- variation_selector argument is not zero.
-
- src/hb-deprecated.h | 10 ++
- src/hb-fallback-shape.cc | 4 +-
- src/hb-font-private.hh | 26 +++--
- src/hb-font.cc | 203
- ++++++++++++++++++++++++++++++++++---
- src/hb-font.h | 55 +++++++---
- src/hb-ft.cc | 38 ++++---
- src/hb-ot-font.cc | 57 +++++++----
- src/hb-ot-shape-complex-indic.cc | 8 +-
- src/hb-ot-shape-complex-myanmar.cc | 2 +-
- src/hb-ot-shape-complex-use.cc | 2 +-
- src/hb-ot-shape-fallback.cc | 6 +-
- src/hb-ot-shape-normalize.cc | 18 ++--
- src/hb-ot-shape.cc | 6 +-
- 13 files changed, 344 insertions(+), 91 deletions(-)
-
-commit b30a971bf792b9c683c345e1be25c5a5869a113c
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 24 17:32:22 2016 +0900
-
- 1.2.2
-
- NEWS | 14 +++++++++++++-
- configure.ac | 2 +-
- 2 files changed, 14 insertions(+), 2 deletions(-)
-
-commit af48e3d27c01c538f46f1dc376d994a0c24a8170
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 24 16:06:40 2016 +0900
-
- Fix recent test
-
- Not sure why the FT functions were returning advance 1024. This
- caused failure on drone.io. Switch to hb-ot-font and disable
- glyph names.
-
- test/shaping/tests/cursive-positioning.tests | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 17c831701756bb46300c412fd64b19d67f299c18
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 24 16:06:23 2016 +0900
-
- [tests] Fix for multiple options in test runner scripts
-
- test/shaping/run-tests.sh | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-commit ebd7431f824c718db6ce5b85e94f2b3911127af4
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 24 15:53:40 2016 +0900
-
- Partially revert 86c68c7a2c971efe8e35b1f1bd99401dc8b688d2
-
- That commit moved the advance adjustment for mark positioning to
- be applied immediately, instead of doing late before. This breaks
- if mark advances are zeroed late, like in Arabic. Also, easier to
- hit it in RTL scripts since a single mark with non-zero advance is
- enough to hit the bug, whereas in LTR, at least two marks are needed.
-
- This reopens https://github.com/behdad/harfbuzz/issues/211
- The cursive+mark interaction is broken again. To be fixed in a
- different way.
-
- src/hb-ot-layout-gpos-table.hh | 28
- ++++++++++++----------------
- test/shaping/tests/cursive-positioning.tests | 2 +-
- 2 files changed, 13 insertions(+), 17 deletions(-)
-
-commit 284481b3120963353f5f34ed094f07ffc13480ef
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 24 15:52:37 2016 +0900
-
- Add test for mark positioning in rtl with non-zero mark advance
-
- Apparently I broke this 86c68c7a2c971efe8e35b1f1bd99401dc8b688d2.
- Fix coming.
-
- .../sha1sum/07f054357ff8638bac3711b422a1e31180bba863.ttf | Bin 0 ->
- 848 bytes
- test/shaping/tests/cursive-positioning.tests | 1 +
- 2 files changed, 1 insertion(+)
-
-commit 56a84e8dd18c63782b8db3a86e94651dae5bb01b
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 24 15:50:33 2016 +0900
-
- [tests] Allow commenting out tests to be skipped
-
- test/shaping/run-tests.sh | 4 ++++
- 1 file changed, 4 insertions(+)
-
-commit 7cfd6cc486f2751d7f78c5008a636d677af4e12f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 24 12:30:57 2016 +0900
-
- [Android.mk] Update with warning flags
-
- Android.mk | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit dabf32a5ad706726412ba5c64e1ea614a707b928
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Feb 23 15:38:43 2016 +0900
-
- 1.2.1
-
- NEWS | 13 +++++++++++++
- configure.ac | 2 +-
- 2 files changed, 14 insertions(+), 1 deletion(-)
-
-commit 525cc7d28cbe4e8149ddba677224f134dc0a3274
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Feb 23 15:19:27 2016 +0900
-
- Add note re only adding tests with Free Software fonts
-
- test/shaping/README.md | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-commit 6a09d7e34b949f9929f616ee53278b2edfd9b7ea
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Feb 23 13:47:16 2016 +0900
-
- [test] Add README about how to add shaping tests
-
- test/shaping/Makefile.am | 1 +
- test/shaping/README.md | 37 +++++++++++++++++++++++++++++++++++++
- 2 files changed, 38 insertions(+)
-
-commit f8ee7906d0454d950081c621f2b04a6d08e1b92f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Feb 23 13:45:38 2016 +0900
-
- Remove MANIFEST files
-
- They are unused currently. We can add later if we hook them up
- to anything useful.
-
- test/shaping/fonts/sha1sum/MANIFEST | 52
- ----------------------
- test/shaping/tests/MANIFEST | 19 --------
- test/shaping/texts/MANIFEST | 1 -
- test/shaping/texts/in-tree/MANIFEST | 9 ----
- test/shaping/texts/in-tree/shaper-arabic/MANIFEST | 6 ---
- .../in-tree/shaper-arabic/script-arabic/MANIFEST | 3 --
- .../script-arabic/language-persian/MANIFEST | 1 -
- .../script-arabic/language-urdu/MANIFEST | 1 -
- .../script-arabic/language-urdu/crulp/MANIFEST | 1 -
- .../language-urdu/crulp/ligatures/MANIFEST | 7 ---
- .../shaper-arabic/script-arabic/misc/MANIFEST | 1 -
- .../script-arabic/misc/diacritics/MANIFEST | 7 ---
- .../in-tree/shaper-arabic/script-mandaic/MANIFEST | 1 -
- .../shaper-arabic/script-mandaic/misc/MANIFEST | 0
- .../shaper-arabic/script-mongolian/MANIFEST | 1 -
- .../shaper-arabic/script-mongolian/misc/MANIFEST | 4 --
- .../in-tree/shaper-arabic/script-nko/MANIFEST | 1 -
- .../in-tree/shaper-arabic/script-nko/misc/MANIFEST | 1 -
- .../in-tree/shaper-arabic/script-phags-pa/MANIFEST | 1 -
- .../shaper-arabic/script-phags-pa/misc/MANIFEST | 1 -
- .../in-tree/shaper-arabic/script-syriac/MANIFEST | 1 -
- .../shaper-arabic/script-syriac/misc/MANIFEST | 2 -
- test/shaping/texts/in-tree/shaper-default/MANIFEST | 5 ---
- .../shaper-default/script-ethiopic/MANIFEST | 1 -
- .../shaper-default/script-ethiopic/misc/MANIFEST | 1 -
- .../in-tree/shaper-default/script-han/MANIFEST | 1 -
- .../shaper-default/script-han/misc/MANIFEST | 1 -
- .../shaper-default/script-hiragana/MANIFEST | 1 -
- .../shaper-default/script-hiragana/misc/MANIFEST | 2 -
- .../shaper-default/script-linear-b/MANIFEST | 1 -
- .../shaper-default/script-linear-b/misc/MANIFEST | 1 -
- .../shaper-default/script-tifinagh/MANIFEST | 1 -
- .../shaper-default/script-tifinagh/misc/MANIFEST | 1 -
- test/shaping/texts/in-tree/shaper-hangul/MANIFEST | 1 -
- .../in-tree/shaper-hangul/script-hangul/MANIFEST | 1 -
- .../shaper-hangul/script-hangul/misc/MANIFEST | 1 -
- test/shaping/texts/in-tree/shaper-hebrew/MANIFEST | 1 -
- .../in-tree/shaper-hebrew/script-hebrew/MANIFEST | 1 -
- .../shaper-hebrew/script-hebrew/misc/MANIFEST | 1 -
- test/shaping/texts/in-tree/shaper-indic/MANIFEST | 2 -
- .../texts/in-tree/shaper-indic/indic/MANIFEST | 11 -----
- .../shaper-indic/indic/script-assamese/MANIFEST | 2 -
- .../indic/script-assamese/misc/MANIFEST | 0
- .../indic/script-assamese/utrrs/MANIFEST | 3 --
- .../indic/script-assamese/utrrs/codepoint/MANIFEST | 7 ---
- .../indic/script-assamese/utrrs/gpos/MANIFEST | 2 -
- .../indic/script-assamese/utrrs/gsub/MANIFEST | 1 -
- .../shaper-indic/indic/script-bengali/MANIFEST | 2 -
- .../indic/script-bengali/misc/MANIFEST | 2 -
- .../indic/script-bengali/utrrs/MANIFEST | 3 --
- .../indic/script-bengali/utrrs/codepoint/MANIFEST | 7 ---
- .../indic/script-bengali/utrrs/gpos/MANIFEST | 2 -
- .../indic/script-bengali/utrrs/gsub/MANIFEST | 1 -
- .../shaper-indic/indic/script-devanagari/MANIFEST | 2 -
- .../indic/script-devanagari/misc/MANIFEST | 6 ---
- .../indic/script-devanagari/utrrs/MANIFEST | 3 --
- .../script-devanagari/utrrs/codepoint/MANIFEST | 9 ----
- .../indic/script-devanagari/utrrs/gpos/MANIFEST | 2 -
- .../indic/script-devanagari/utrrs/gsub/MANIFEST | 1 -
- .../shaper-indic/indic/script-gujarati/MANIFEST | 2 -
- .../indic/script-gujarati/misc/MANIFEST | 0
- .../indic/script-gujarati/utrrs/MANIFEST | 3 --
- .../indic/script-gujarati/utrrs/codepoint/MANIFEST | 7 ---
- .../indic/script-gujarati/utrrs/gpos/MANIFEST | 2 -
- .../indic/script-gujarati/utrrs/gsub/MANIFEST | 1 -
- .../shaper-indic/indic/script-gurmukhi/MANIFEST | 2 -
- .../indic/script-gurmukhi/misc/MANIFEST | 1 -
- .../indic/script-gurmukhi/utrrs/MANIFEST | 3 --
- .../indic/script-gurmukhi/utrrs/codepoint/MANIFEST | 7 ---
- .../indic/script-gurmukhi/utrrs/gpos/MANIFEST | 2 -
- .../indic/script-gurmukhi/utrrs/gsub/MANIFEST | 1 -
- .../shaper-indic/indic/script-kannada/MANIFEST | 2 -
- .../indic/script-kannada/misc/MANIFEST | 2 -
- .../indic/script-kannada/utrrs/MANIFEST | 3 --
- .../indic/script-kannada/utrrs/codepoint/MANIFEST | 8 ----
- .../indic/script-kannada/utrrs/gpos/MANIFEST | 1 -
- .../indic/script-kannada/utrrs/gsub/MANIFEST | 1 -
- .../shaper-indic/indic/script-malayalam/MANIFEST | 2 -
- .../indic/script-malayalam/misc/MANIFEST | 3 --
- .../indic/script-malayalam/utrrs/MANIFEST | 2 -
- .../script-malayalam/utrrs/codepoint/MANIFEST | 7 ---
- .../indic/script-malayalam/utrrs/gsub/MANIFEST | 1 -
- .../shaper-indic/indic/script-oriya/MANIFEST | 2 -
- .../shaper-indic/indic/script-oriya/misc/MANIFEST | 2 -
- .../shaper-indic/indic/script-oriya/utrrs/MANIFEST | 2 -
- .../indic/script-oriya/utrrs/codepoint/MANIFEST | 9 ----
- .../indic/script-oriya/utrrs/gsub/MANIFEST | 1 -
- .../shaper-indic/indic/script-sinhala/MANIFEST | 2 -
- .../indic/script-sinhala/misc/MANIFEST | 4 --
- .../indic/script-sinhala/utrrs/MANIFEST | 3 --
- .../indic/script-sinhala/utrrs/codepoint/MANIFEST | 5 ---
- .../indic/script-sinhala/utrrs/gpos/MANIFEST | 1 -
- .../indic/script-sinhala/utrrs/gsub/MANIFEST | 7 ---
- .../shaper-indic/indic/script-tamil/MANIFEST | 2 -
- .../shaper-indic/indic/script-tamil/misc/MANIFEST | 1 -
- .../shaper-indic/indic/script-tamil/utrrs/MANIFEST | 3 --
- .../indic/script-tamil/utrrs/codepoint/MANIFEST | 10 -----
- .../indic/script-tamil/utrrs/gpos/MANIFEST | 2 -
- .../indic/script-tamil/utrrs/gsub/MANIFEST | 1 -
- .../shaper-indic/indic/script-telugu/MANIFEST | 2 -
- .../shaper-indic/indic/script-telugu/misc/MANIFEST | 1 -
- .../indic/script-telugu/utrrs/MANIFEST | 3 --
- .../indic/script-telugu/utrrs/codepoint/MANIFEST | 7 ---
- .../indic/script-telugu/utrrs/gpos/MANIFEST | 1 -
- .../indic/script-telugu/utrrs/gsub/MANIFEST | 1 -
- .../in-tree/shaper-indic/south-east-asian/MANIFEST | 1 -
- .../south-east-asian/script-khmer/MANIFEST | 1 -
- .../south-east-asian/script-khmer/misc/MANIFEST | 3 --
- test/shaping/texts/in-tree/shaper-myanmar/MANIFEST | 1 -
- .../in-tree/shaper-myanmar/script-myanmar/MANIFEST | 1 -
- .../shaper-myanmar/script-myanmar/misc/MANIFEST | 3 --
- test/shaping/texts/in-tree/shaper-thai/MANIFEST | 2 -
- .../texts/in-tree/shaper-thai/script-lao/MANIFEST | 1 -
- .../in-tree/shaper-thai/script-lao/misc/MANIFEST | 1 -
- .../texts/in-tree/shaper-thai/script-thai/MANIFEST | 1 -
- .../in-tree/shaper-thai/script-thai/misc/MANIFEST | 4 --
- test/shaping/texts/in-tree/shaper-tibetan/MANIFEST | 1 -
- .../in-tree/shaper-tibetan/script-tibetan/MANIFEST | 1 -
- .../shaper-tibetan/script-tibetan/misc/MANIFEST | 1 -
- test/shaping/texts/in-tree/shaper-use/MANIFEST | 6 ---
- .../texts/in-tree/shaper-use/script-batak/MANIFEST | 1 -
- .../in-tree/shaper-use/script-buginese/MANIFEST | 1 -
- .../texts/in-tree/shaper-use/script-cham/MANIFEST | 1 -
- .../in-tree/shaper-use/script-kaithi/MANIFEST | 1 -
- .../in-tree/shaper-use/script-kharoshti/MANIFEST | 1 -
- .../in-tree/shaper-use/script-tai-tham/MANIFEST | 2 -
- 126 files changed, 381 deletions(-)
-
-commit 815bdd7700155efcffa9a4c3ca5bfc31833d0586
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Feb 22 18:22:44 2016 +0900
-
- In cluster-level=0, group ZWJ/ZWNJ with previous cluster
-
- This better emulates Unicode grapheme clusters.
-
- Note that Uniscribe does NOT do this, but should be harmless with
- most clients,
- and improve fallback with clients that use HarfBuzz cluster as unit
- of fallback.
-
- Fixes https://github.com/behdad/harfbuzz/issues/217
-
- src/hb-ot-layout-private.hh | 6 ++++++
- src/hb-ot-shape.cc | 3 ++-
- test/shaping/tests/indic-joiner-candrabindu.tests | 2 +-
- test/shaping/tests/mongolian-variation-selector.tests | 2 +-
- 4 files changed, 10 insertions(+), 3 deletions(-)
-
-commit 89137e325a19d62fb00979e1e8ab2ca59a2c1147
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Feb 22 16:00:59 2016 +0900
-
- Minor
-
- src/hb-coretext.cc | 2 +-
- src/hb-ot-shape.cc | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 15063b12f7619d4f44981248e28f38c172d12e1f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Feb 22 15:56:29 2016 +0900
-
- [coretext] Move CTFont construction to face_data
-
- src/hb-coretext.cc | 66
- +++++++++++++++++++++++++-----------------------------
- 1 file changed, 30 insertions(+), 36 deletions(-)
-
-commit ba3d49d9a56932d341bf1916a30f322be665e3a6
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Feb 22 15:50:12 2016 +0900
-
- [coretext] Move code around
-
- src/hb-coretext.cc | 70
- +++++++++++++++++++++++++++++++-----------------------
- 1 file changed, 40 insertions(+), 30 deletions(-)
-
-commit 90194efb8480d58c55b7a19962624c7aadbdca63
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Feb 22 15:42:53 2016 +0900
-
- [coretext] Move code around
-
- src/hb-coretext.cc | 46 ++++++++++++++++++++++++++--------------------
- 1 file changed, 26 insertions(+), 20 deletions(-)
-
-commit ca539e37a4b71e585a267a288db1a3975cbb99fc
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Feb 22 15:37:18 2016 +0900
-
- [build] git.mk fix for m4/gtk-doc.m4
-
- Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 54788cb1ecc5a5ffd63d07cd1f0b07b2afa9a8ca
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Feb 22 15:32:52 2016 +0900
-
- [win32] Install git.mk
-
- win32/Makefile.am | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit 9a13ed453ef96822a47d6e6f58332b87f38d5c59
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Feb 22 11:44:45 2016 +0900
-
- Make FixedVersion a template
-
- src/hb-open-file-private.hh | 4 ++--
- src/hb-open-type-private.hh | 9 +++++----
- src/hb-ot-head-table.hh | 4 ++--
- src/hb-ot-hhea-table.hh | 2 +-
- src/hb-ot-layout-gdef-table.hh | 2 +-
- src/hb-ot-layout-gsubgpos-private.hh | 2 +-
- src/hb-ot-layout-jstf-table.hh | 2 +-
- src/hb-ot-maxp-table.hh | 2 +-
- 8 files changed, 14 insertions(+), 13 deletions(-)
-
-commit 238b943e850ea1ab0093e12c74d2cd7c686f318e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Feb 22 15:31:22 2016 +0900
-
- [coretext] Fix leak!
-
- src/hb-coretext.cc | 1 +
- 1 file changed, 1 insertion(+)
-
-commit e561122856a50ed405d71cb1629317e7ae63f316
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Feb 22 15:28:37 2016 +0900
-
- [coretext] Move code around
-
- src/hb-coretext.cc | 109
- ++++++++++++++++++++++++++++++-----------------------
- 1 file changed, 62 insertions(+), 47 deletions(-)
-
-commit 04c64431530a4a6d9ebd33674c4665a8e6d25bdd
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Feb 22 15:12:27 2016 +0900
-
- [coretext] Ignore PPEM in font size selection
-
- src/hb-coretext.cc | 14 ++++----------
- 1 file changed, 4 insertions(+), 10 deletions(-)
-
-commit 62c2711121fe78f373c15c0f53090b62b52d11c1
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Feb 22 15:07:20 2016 +0900
-
- [coretext] Limit grapheme-cluster forming to cluster-level=0
-
- src/hb-coretext.cc | 1 +
- src/hb-ot-shape.cc | 2 +-
- 2 files changed, 2 insertions(+), 1 deletion(-)
-
-commit 061105ec443eb7350ffe217305f9d8902c179e2f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Feb 22 14:59:39 2016 +0900
-
- [coretext] Fix shaping with varying font size
-
- Fixes https://github.com/libass/libass/issues/212
-
- src/hb-coretext.cc | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-commit 27847cab1264b4ce8342603f4626b4e0645979e4
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Feb 19 15:56:50 2016 +0700
-
- 1.2.0
-
- NEWS | 20 ++++++++++++++++++++
- configure.ac | 2 +-
- 2 files changed, 21 insertions(+), 1 deletion(-)
-
-commit c3731559042e1730e85d19574321ad850010f7de
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Feb 19 15:13:07 2016 +0700
-
- [fuzzing] Add test for recent fix
-
- Test from https://github.com/behdad/harfbuzz/issues/223
-
- I forgot that we do run hb-fuzzer on tests in
- shaping/tests/fuzzed.tests.
-
- .../sha1sum/205edd09bd3d141cc9580f650109556cc28b22cb.ttf | Bin 0 ->
- 1966 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 1 +
- test/shaping/tests/fuzzed.tests | 1 +
- 3 files changed, 2 insertions(+)
-
-commit aa33cb72ab29c31e87f0cca9a0e72fe3a68247b7
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Feb 19 15:12:24 2016 +0700
-
- [fuzzing] Make test runner actually work
-
- test/fuzzing/Makefile.am | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-commit 2735555c6b0c95db7dfc2b391f92a1a5c06084c4
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Feb 19 15:12:16 2016 +0700
-
- [fuzzing] Add TODO item
-
- test/fuzzing/hb-fuzzer.cc | 1 +
- 1 file changed, 1 insertion(+)
-
-commit b87e36f6f119fac80b8fd55f3abae563c2c5b798
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Feb 19 14:52:31 2016 +0700
-
- Avoid buffer->move_to() in case of buffer error
-
- Fixes https://github.com/behdad/harfbuzz/issues/223
-
- Right now we cannot test this because it has to be tested using
- hb-fuzzer.
- We should move all fuzzing tests from test/shaping/tests/fuzzed.tests
- to
- test/fuzzing/ and have its own test runner. At that point, should add
- test from this issue as well.
-
- src/hb-buffer.cc | 2 ++
- src/hb-ot-layout-gsubgpos-private.hh | 2 +-
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
-commit 7e76bbabbaa56af314abff8ddba8866c634919cd
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Feb 19 14:43:39 2016 +0700
-
- [fuzzing] Make "make hb-fuzzer" build lib dependency
-
- Not going to do with util/, but is convenient here.
-
- test/fuzzing/Makefile.am | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit 568a0c60e8695a6ad8a93ec60d55b137c48890cb
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 18 19:31:51 2016 +0700
-
- Remove pointless overflow check in pointer math
-
- Fixes https://github.com/behdad/harfbuzz/issues/227
-
- src/hb-blob.cc | 1 -
- 1 file changed, 1 deletion(-)
-
-commit aae2847099cbf05bf0668fbe526fc58736837c1b
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 18 17:06:25 2016 +0700
-
- Emoji skin tone modifiers need to be treated as combining marks
-
- Fixes https://github.com/behdad/harfbuzz/issues/169
-
- src/hb-ot-layout-private.hh | 15 ++++++++++++++-
- src/hb-unicode-private.hh | 5 +++--
- 2 files changed, 17 insertions(+), 3 deletions(-)
-
-commit da41e48f0a1a6af6d44ef25185d2421a29bd4166
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Feb 16 17:16:33 2016 +0700
-
- [USE] Zero mark advances by GDEF early
-
- This is what Microsoft's implementation does. Marks that need advance
- need to add it back using 'dist' or other feature in GPOS.
- Update tests to
- match.
-
- src/hb-ot-shape-complex-use.cc | 2 +-
- test/shaping/fonts/sha1sum/MANIFEST | 1 +
- .../sha1sum/f518eb6f6b5eec2946c9fbbbde44e45d46f5e2ac.ttf | Bin 0 ->
- 1356 bytes
- test/shaping/tests/context-matching.tests | 2 +-
- test/shaping/tests/use.tests | 2 ++
- 5 files changed, 5 insertions(+), 2 deletions(-)
-
-commit 86c68c7a2c971efe8e35b1f1bd99401dc8b688d2
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Feb 16 16:07:20 2016 +0700
-
- [GPOS] Fix interaction of mark attachments and cursive chaining
-
- Fixes https://github.com/behdad/harfbuzz/issues/211
-
- What happens in that bug is that a mark is attached to base first,
- then a second mark is cursive-chained to the first mark. This only
- "works" because it's in the Indic shaper where mark advances are
- not zeroed.
-
- Before, we didn't allow cursive to run on marks at all. Fix that.
- We also where updating mark major offsets at the end of GPOS, such
- that changes in advance of base will not change the mark attachment
- position. That was superior to the alternative (which is what
- Uniscribe
- does BTW), but made it hard to apply cursive to the mark after it
- was positioned. We could track major-direction offset changes and
- apply that to cursive in the post process, but that's a much trickier
- thing to do than the fix here, which is to immediately apply the
- major-direction advance-width offsets... Ie.:
-
- https://github.com/behdad/harfbuzz/issues/211#issuecomment-183194739
-
- If this breaks any fonts, the font should be fixed to do mark
- attachment
- after all the advances are set up first (kerning, etc).
-
- Finally, this, still doesn't make us match Uniscribe, for I explained
- in that bug. Looks like Uniscribe applies minor-direction cursive
- adjustment immediate as well. We don't, and we like it our way, at
- least for now. Eg. the sequence in the test case does this:
-
- - The first subscript attaches with mark-to-base, moving in x only,
- - The second subscript attaches with cursive attachment to first
- subscript
- moving in x only,
- - A final context rule moves the first subscript up by 104 units.
-
- The way we do, the final shift-up, also shifts up the second subscript
- mark because it's cursively-attached. Uniscribe doesn't. We get:
-
- [ttaorya=0+1307|casubscriptorya=0@-242,104+-231|casubscriptnarroworya=0@20,104+507]
-
- while Uniscribe gets:
-
- [ttaorya=0+1307|casubscriptorya=0@-242,104+-211|casubscriptnarroworya=0+487]
-
- note the different y-offset of the last glyph. In our view,
- after cursive,
- things move together, period.
-
- src/hb-ot-layout-gpos-table.hh | 31
- +++++++++++----------
- .../706c5d7b625f207bc0d874c67237aad6f1e9cd6f.ttf | Bin 0 -> 3868 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 1 +
- test/shaping/tests/cursive-positioning.tests | 1 +
- 4 files changed, 18 insertions(+), 15 deletions(-)
-
-commit 80c8855cfeffa028d74a25df884d0e5577c95c6c
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Feb 12 12:50:17 2016 +0700
-
- Minor
-
- src/hb-common.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 6ab920224c32e38072a0bec5e84d4b0d58b74167
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 11 16:57:52 2016 +0700
-
- [GPOS] Minor
-
- No effect.
-
- src/hb-ot-layout-gpos-table.hh | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-commit cbc3a76c5a38ab24f72e80357377711bd3f54d56
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 11 16:48:13 2016 +0700
-
- [GPOS] Merge fixing of offsets for cursive and mark attachments
-
- Part of fixing https://github.com/behdad/harfbuzz/issues/211
-
- src/hb-buffer-private.hh | 3 +-
- src/hb-ot-layout-gpos-table.hh | 73
- ++++++++++++++++++------------------------
- 2 files changed, 33 insertions(+), 43 deletions(-)
-
-commit 7d8d58ac81fe267e29ea68cdc6f4a4fa8c22d40f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 11 16:34:28 2016 +0700
-
- [GPOS] Divide position_finish() into two phases, for advances
- and offsets
-
- Right now the position_finish_advances() is empty. To be used for
- spacing attachments proposal later.
-
- src/hb-ot-layout-gpos-table.hh | 11 +++++++++--
- src/hb-ot-layout-gsub-table.hh | 6 ------
- src/hb-ot-layout-private.hh | 19 +++++++++----------
- src/hb-ot-layout.cc | 16 ++++++++--------
- src/hb-ot-shape.cc | 7 +++----
- 5 files changed, 29 insertions(+), 30 deletions(-)
-
-commit 8474231567a08873cc5e0aa08fea60316a04c27e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 11 16:27:41 2016 +0700
-
- [ot] Minor shuffling code around
-
- src/hb-ot-layout-gpos-table.hh | 2 --
- src/hb-ot-shape.cc | 13 ++++++++-----
- 2 files changed, 8 insertions(+), 7 deletions(-)
-
-commit b0b11614e9fb9ecd1faae28b0ed71ac6bf5c1266
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 11 15:28:55 2016 +0700
-
- [GPOS] Add harmless recursion in fix_mark_attachment()
-
- Will do nothing. Just useful for merging two functions.
-
- src/hb-ot-layout-gpos-table.hh | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit 686567baab5a32ffea843538643e01de2885fa4f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 11 15:25:28 2016 +0700
-
- [GPOS] Merge attach_chain() and cursive_chain()
-
- Differentiate, using new attach_type().
-
- src/hb-ot-layout-gpos-table.hh | 50
- +++++++++++++++++++++++++++---------------
- 1 file changed, 32 insertions(+), 18 deletions(-)
-
-commit 806ad8dc65931ab7893bff7d5592a67a9bd237ca
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 11 14:53:11 2016 +0700
-
- [GPOS] Minor shuffling
-
- src/hb-ot-layout-gpos-table.hh | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-commit 0f6278d1fbb75856132f1fa2d29648979f033316
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 11 14:49:10 2016 +0700
-
- [GPOS] Negate sign of attach_lookback(), and rename it to
- attach_chain()
-
- No behavior change. Preparing to unify how cursive and mark
- attachments
- work.
-
- src/hb-ot-layout-gpos-table.hh | 17 +++++++++--------
- 1 file changed, 9 insertions(+), 8 deletions(-)
-
-commit 5b5dc2c0406d8180e72d97a54334c722fda325b1
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 11 12:15:38 2016 +0700
-
- [tests] Add test for advance zeroing of an ASCII letter marked as
- mark in GDEF
-
- test/shaping/fonts/sha1sum/MANIFEST | 1 +
- .../sha1sum/a98e908e2ed21b22228ea59ebcc0f05034c86f2e.ttf | Bin 0 ->
- 1016 bytes
- test/shaping/tests/zero-width-marks.tests | 1 +
- 3 files changed, 2 insertions(+)
-
-commit 660c9d3fc21172e8dc340b017122c084dac6334c
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 11 12:14:27 2016 +0700
-
- Remove font-dependent ASCII-only perf hack
-
- Is confusing. I already hit it myself. Remove. We can optimize
- ASCII based on Unicode properties. But should not do based on
- assumptions on the font.
-
- src/hb-ot-shape.cc | 4 ----
- 1 file changed, 4 deletions(-)
-
-commit 3fe0cf10401875f1e9b8b5fbaf59826e64ea61d2
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 10 18:43:43 2016 +0700
-
- Fix previous commit!
-
- test/shaping/fonts/sha1sum/MANIFEST | 6 +++---
- test/shaping/tests/zero-width-marks.tests | 6 +++---
- 2 files changed, 6 insertions(+), 6 deletions(-)
-
-commit 293a210eee0a53b59f4b33298f42ec6e59d785e0
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 10 18:39:59 2016 +0700
-
- [tests] Fix fonts in cc4a78bf22c4a735b84c89b04be3bb531f42135e
-
- They had an invalid LookupFlag (32).
-
- .../sha1sum/0dd3a51c3ea50997cb1f72515d1060408f8b4b59.ttf | Bin 1412 ->
- 0 bytes
- .../sha1sum/56cfd0e18d07f41c38e9598545a6d369127fc6f9.ttf | Bin 0 ->
- 1412 bytes
- .../sha1sum/828114d00931885bc25abf7cdb878b2914a2e743.ttf | Bin 1448 ->
- 0 bytes
- .../sha1sum/894e96a367f00c196d82e6243673a1d4414f4f6a.ttf | Bin 1448 ->
- 0 bytes
- .../sha1sum/cc5f3d2d717fb6bd4dfae1c16d48a2cb8e12233b.ttf | Bin 0 ->
- 1448 bytes
- .../sha1sum/ffa0f5d2d9025486d8469d8b1fdd983e7632499b.ttf | Bin 0 ->
- 1448 bytes
- 6 files changed, 0 insertions(+), 0 deletions(-)
-
-commit eaadcbbc53e02838c847e53ef214a55d6915d677
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 10 18:29:54 2016 +0700
-
- Remove now-unused mark zeroing BY_UNICODE
-
- src/hb-ot-shape-complex-private.hh | 2 --
- src/hb-ot-shape.cc | 29 -----------------------------
- 2 files changed, 31 deletions(-)
-
-commit cc4a78bf22c4a735b84c89b04be3bb531f42135e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 10 18:24:08 2016 +0700
-
- [tests] Add tests for Latin mark zeroing
-
- .../sha1sum/0dd3a51c3ea50997cb1f72515d1060408f8b4b59.ttf | Bin 0 ->
- 1412 bytes
- .../sha1sum/828114d00931885bc25abf7cdb878b2914a2e743.ttf | Bin 0 ->
- 1448 bytes
- .../sha1sum/894e96a367f00c196d82e6243673a1d4414f4f6a.ttf | Bin 0 ->
- 1448 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 4 ++++
- .../sha1sum/fcdcffbdf1c4c97c05308d7600e4c283eb47dbca.ttf | Bin 0 ->
- 1344 bytes
- test/shaping/tests/zero-width-marks.tests | 4 ++++
- 6 files changed, 8 insertions(+)
-
-commit 55ff34b9c157a839d026465af8f30424ce7f891b
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 10 18:20:02 2016 +0700
-
- [tests] Add tests for Thai mark zeroing
-
- .../sha1sum/45855bc8d46332b39c4ab9e2ee1a26b1f896da6b.ttf | Bin 0 ->
- 1088 bytes
- .../sha1sum/7a37dc4d5bf018456aea291cee06daf004c0221c.ttf | Bin 0 ->
- 1080 bytes
- .../sha1sum/8099955657a54e9ee38a6ba1d6f950ce58e3cc25.ttf | Bin 0 ->
- 1024 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 4 ++++
- .../sha1sum/bb0c53752e85c3d28973ebc913287b8987d3dfe8.ttf | Bin 0 ->
- 976 bytes
- test/shaping/tests/zero-width-marks.tests | 4 ++++
- 6 files changed, 8 insertions(+)
-
-commit b3582a8ee82942a931130a83b2867b239f8ca71a
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 10 18:10:15 2016 +0700
-
- Change default mark advance zeroing behavior from Unicode to GDEF
-
- See thread at:
- https://lists.freedesktop.org/archives/harfbuzz/2016-February/005462.html
-
- src/hb-ot-shape-complex-default.cc | 2 +-
- src/hb-ot-shape-complex-thai.cc | 2 +-
- src/hb-ot-shape-complex-tibetan.cc | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-commit 43bb2b8fb00705c3334730a58ade7984181018b2
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 10 14:11:43 2016 +0700
-
- Minor
-
- test/shaping/hb_test_tools.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit bdaa784bb610ec65626d63cc068a0958ff5005fc
-Merge: a168db4 f6ffba6
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 10 11:11:36 2016 +0700
-
- Merge pull request #164 from fanc999/msvc.build
-
- Enable Build of HarfBuzz under Visual Studio using NMake Makefiles
-
-commit a168db4739148459bc33c7dae88e73efa0153d72
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 10 11:10:08 2016 +0700
-
- [README] Add ABI Tracker link
-
- README | 1 +
- 1 file changed, 1 insertion(+)
-
-commit f6ffba634bb33d6d4b051abce9c23fcae280c3fe
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date: Wed Dec 9 14:57:15 2015 +0800
-
- MSVC builds: Add support to build DirectWrite shaping backend
-
- Add into the NMake Makefiles to build the DirectWrite shaping backend,
- but as PR #134 mentions, this is considered to be in an experimental
- state,
- so don't include this in the build by default for now. This is
- most probably
- going to replace the Uniscribe backend eventually, since DirectWrite
- is meant
- to be Uniscribe's replacement, and is needed for Windows Store apps
- if a
- system shaping API is to be used.
-
- win32/README.txt | 4 ++++
- win32/config-msvc.mak | 10 ++++++++++
- win32/config.h.win32.in | 3 +++
- win32/info-msvc.mak | 7 +++++++
- 4 files changed, 24 insertions(+)
-
-commit c6792854557ca104948e8f0b142c9384105b0d05
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date: Wed Feb 3 18:31:23 2016 +0800
-
- build: Build the DirectWrite sources if requested
-
- This adds to the autotools build system so that the (experimental)
- DirectWrite support for HarfBuzz is built (and dist'ed).
-
- configure.ac | 25 +++++++++++++++++++++++++
- src/Makefile.am | 7 +++++++
- src/Makefile.sources | 3 +++
- 3 files changed, 35 insertions(+)
-
-commit d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462e
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date: Tue Nov 3 19:00:42 2015 +0800
-
- build: Support Visual Studio builds using NMake
-
- This adds a set of NMake Makefiles that can be used to build
- HarfBuzz, from
- the standard basic build building the minimal HarfBuzz DLL (consisting
- of OpenType, fallback and Uniscribe support only), to a full
- fledged build
- consisting of GLib and FreeType support, as well as building the
- utilities,
- the test programs in src/ and test/api, and HarfBuzz-ICU and
- HarfBuzz-GObject, and up to building the introspection files.
- This means a
- flexible build mechanism is supported here, so anything that is
- supported
- for a Windows build (code-wise), should all be supported by this build
- system.
-
- As in an earlier commit, the source listings are shared with the
- autotools
- builds with the various Makefile.sources in src/, src/hb-ucdn and
- util/, and
- this set of NMake Makefiles will transform these lists into the
- form they
- want.
-
- In the current form, all the test programs in test/api pass, and
- this has
- been checked successfully with 'make -j8 distcheck'.
-
- BUILD.md | 4 +-
- Makefile.am | 2 +-
- configure.ac | 2 +
- win32/Makefile.am | 14 +++
- win32/Makefile.vc | 52 +++++++++++
- win32/README.txt | 75 ++++++++++++++++
- win32/build-rules-msvc.mak | 140 ++++++++++++++++++++++++++++++
- win32/config-msvc.mak | 188
- ++++++++++++++++++++++++++++++++++++++++
- win32/create-lists-msvc.mak | 151 ++++++++++++++++++++++++++++++++
- win32/create-lists.bat | 42 +++++++++
- win32/detectenv-msvc.mak | 136 +++++++++++++++++++++++++++++
- win32/generate-msvc.mak | 26 ++++++
- win32/hb-introspection-msvc.mak | 42 +++++++++
- win32/info-msvc.mak | 130 +++++++++++++++++++++++++++
- win32/install.mak | 29 +++++++
- win32/introspection-msvc.mak | 73 ++++++++++++++++
- 16 files changed, 1104 insertions(+), 2 deletions(-)
-
-commit 5c3e7260bcb4999b8b7cb9afb26e6eaff867634b
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date: Tue Nov 3 18:52:46 2015 +0800
-
- MSVC builds: Add a pre-configured config.h(.win32) template
-
- This adds a pre-configured config.h template that can be used
- for Visual
- Studio builds, where autotools is not normally available. This has
- the
- configs that are suitable for Visual Studio builds, as well as all the
- features used for Windows builds enabled (HAVE_OT, HAVE_FALLBACK and
- HAVE_UNISCRIBE).
-
- Note that the optional features are not enabled here, they are
- enabled by
- /D's (or -D's) in the NMake Makefiles as requested.
-
- win32/config.h.win32.in | 155
- ++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 155 insertions(+)
-
-commit 35ded3af74a5bc4b038a07308354d5f7501ae3c7
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date: Tue Nov 3 16:56:27 2015 +0800
-
- build: Move source listings into separate Makefile snippets
-
- This moves all the source listings in src/Makefile.am,
- src/hb-ucdn/Makefile.am and util/Makefile.am into separate Makefile
- snippets, so that they may be shared between different Makefile-based
- build systems, such as NMake for Visual Studio.
-
- src/Makefile.am | 165
- +++++++++----------------------------------
- src/Makefile.sources | 147 ++++++++++++++++++++++++++++++++++++++
- src/hb-ucdn/Makefile.am | 6 +-
- src/hb-ucdn/Makefile.sources | 4 ++
- util/Makefile.am | 34 ++-------
- util/Makefile.sources | 32 +++++++++
- 6 files changed, 223 insertions(+), 165 deletions(-)
-
-commit b894a85ad1e7c3ecfb6d3732a7c9779f5462fe70
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Feb 2 16:39:19 2016 +0800
-
- Fix more hangs in case of buffer allocation errors
-
- Hopefully
- fixes https://github.com/behdad/harfbuzz/issues/214
-
- src/hb-ot-shape-complex-indic.cc | 2 +-
- src/hb-ot-shape-complex-myanmar.cc | 2 +-
- src/hb-ot-shape-complex-use.cc | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-commit b693992ea160b66541f678dc9be29b513c77a30b
-Merge: 9a6a33c 498574e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Feb 2 12:33:32 2016 +0800
-
- Merge pull request #222 from n8willis/master
-
- Add usermanual chapter on cluster levels
-
-commit 498574e6c1a83bbd2768925af6e39806fe1ea8bb
-Author: n8willis <nwillis@glyphography.com>
-Date: Thu Jan 28 12:21:32 2016 -0600
-
- Update Makefile.am
-
- docs/Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-commit e12fc666994573dbabb6928a8b2e8698667088ce
-Author: n8willis <nwillis@glyphography.com>
-Date: Thu Jan 28 12:14:12 2016 -0600
-
- Added initial usermanual chapter on cluster levels.
-
- docs/harfbuzz-docs.xml | 1 +
- docs/usermanual-clusters.xml | 304
- +++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 305 insertions(+)
-
-commit 9a6a33ccbea8a2e23e779bd955958fa41974c1c7
-Merge: d05b783 146fe25
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jan 18 12:47:18 2016 +0100
-
- Merge pull request #216 from mhosken/master
-
- Refactor graphite2 to make ovleraps into negative width spaces
-
-commit 146fe252c3ebd0253344ce20981554e40926497b
-Author: Martin Hosken <martin_hosken@sil.org>
-Date: Sat Jan 16 17:24:00 2016 -0600
-
- Refactor graphite2 to make ovleraps into negative width spaces
-
- src/hb-graphite2.cc | 71
- ++++++++++++++++++++++++++++++++---------------------
- 1 file changed, 43 insertions(+), 28 deletions(-)
-
-commit d05b783322d90208b2ddf06a5ebffc7c301be3d7
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jan 12 16:17:21 2016 +0000
-
- Fix compiler warning
-
- Fixes https://github.com/behdad/harfbuzz/issues/212
-
- src/hb-ot-tag.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit d163dc18e66c9e2f404d09310482464245cae704
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jan 12 13:05:01 2016 +0000
-
- Minor
-
- src/hb-ot-layout-common-private.hh | 30 +++++++++++++++---------------
- 1 file changed, 15 insertions(+), 15 deletions(-)
-
-commit 505b7d4732c6a8c423f43c0de46e05dc583e82c0
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jan 11 18:31:04 2016 +0000
-
- [fuzzing] Fuzz input text
-
- Very rudimentary right now, but will get kcc's bot going.
-
- From
- https://github.com/behdad/harfbuzz/issues/139#issuecomment-163580783
-
- test/fuzzing/hb-fuzzer.cc | 25 +++++++++++++++++++------
- 1 file changed, 19 insertions(+), 6 deletions(-)
-
-commit 3e704521f67e021fb51cda7319925fd39eba4f97
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jan 11 17:38:41 2016 +0000
-
- [OT] Get list of lookup subtables once and loop through them
-
- This speeds up shaping the Amiri font by over 15%.
-
- This was primarily needed for my work on OpenType GX, since
- we will be collecting only sublookups that are "active" for
- current font instance; but it's a nice boost in general as
- well.
-
- We might, in the future, collect subtables in the lookup_accel.
- That would also allow us to do a per-subtbale set-digest, which
- should speed things up some more, specially for ContextChainFormat3
- lookups... Amiri, for example, contains one lookup with 53
- subtables!
-
- src/hb-ot-layout.cc | 120
- +++++++++++++++++++++++++++++++++++-----------------
- 1 file changed, 81 insertions(+), 39 deletions(-)
-
-commit 11441291bbf4326dca9b14ec3e9cad3d4d229303
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jan 11 13:16:35 2016 +0000
-
- 1.1.3
-
- NEWS | 29 +++++++++++++++++++++++++++++
- configure.ac | 2 +-
- 2 files changed, 30 insertions(+), 1 deletion(-)
-
-commit 97624d9244de0fdb9c03f60e03fe242028efa8a1
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jan 11 12:58:45 2016 +0000
-
- [docs] Minor fixes.
-
- src/hb-buffer.h | 26 +++++++++++++-------------
- 1 file changed, 13 insertions(+), 13 deletions(-)
-
-commit a39ff95fce39226e80850ff251cb34a7aad12bd7
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jan 11 12:28:37 2016 +0000
-
- [coretext] Speed up CoreText font fallback
-
- Fixes https://code.google.com/p/chromium/issues/detail?id=547912
-
- src/hb-coretext.cc | 45 ++++++++++++++++++++++++++++++++++++++++-----
- 1 file changed, 40 insertions(+), 5 deletions(-)
-
-commit 5afebbdcb2dab0e9a42d580df629d8e60b50d2f9
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jan 7 22:53:59 2016 +0000
-
- Add Homebrew build instructions
-
- BUILD.md | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-commit e8a27d79476a5d7a83cf2287d92ca291257546f4
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jan 7 22:52:16 2016 +0000
-
- Don't build hb-fuzzer in "make", only "make check"
-
- test/fuzzing/Makefile.am | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-commit 25671466d245449187f8ab17e1a233f1d087d5ed
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jan 7 19:11:41 2016 +0000
-
- Add 9 reserved entries to hb_font_extents_t
-
- Might add italic-angle, underline/strikethrough-position/thickness
- in the future. Do this before new struct goes into a release.
-
- src/hb-font.h | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-commit e6d5e4c3106180cb22253c2c278b40f7c4c98f2f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jan 6 12:29:50 2016 +0000
-
- [uniscribe] Fix negative advance
-
- This happens with at least one test font I have.
-
- src/hb-uniscribe.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 99d34955762d0fff4b66a30e6fbe65fd1cf9976b
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jan 6 12:20:47 2016 +0000
-
- [test] Add test text for Kaithi
-
- test/shaping/texts/in-tree/shaper-hangul/MANIFEST | 1 +
- test/shaping/texts/in-tree/shaper-hebrew/MANIFEST | 1 +
- test/shaping/texts/in-tree/shaper-tibetan/MANIFEST | 1 +
- test/shaping/texts/in-tree/shaper-use/MANIFEST | 1 +
- test/shaping/texts/in-tree/shaper-use/script-kaithi/MANIFEST | 1 +
- test/shaping/texts/in-tree/shaper-use/script-kaithi/misc.txt | 6 ++++++
- 6 files changed, 11 insertions(+)
-
-commit 53c47c85827a7e3ca82000e3baa9aa87c5770ce9
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jan 5 13:26:20 2016 +0000
-
- Increase sanitize edit count from 8 to 32
-
- See previous commit.
-
- src/hb-open-type-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit da2fcfdc51a2cc0d0a782efa6c91b733f7aa84ba
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jan 5 13:23:45 2016 +0000
-
- Don't count fixing-up FeatureParams offset as error
-
- The font Garamond Premier Pro Caption (and possibly many other
- Adobe fonts), have many FeatureParamsSize tables with the old
- wrong offset. We handle fixing those up, but they were still
- contributing to edit_count, and when I reduced HB_SANITIZE_MAX_EDIT
- from 100 to 8 in 14c2de321826c36037adde859ccca3e2011325a9, these
- fonts were now getting GPOS dropped and hence kerning disabled.
-
- Fix, by not counting edits made towareds offset fix-up. I'll
- also increase edit count again, in the next commit.
-
- src/hb-ot-layout-common-private.hh | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit d0adc80965506810820f9ec165b8df80cc8907e3
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Jan 2 13:25:18 2016 +0000
-
- Check magicNumber in head table during sanitize
-
- src/hb-ot-head-table.hh | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-commit 3a48c776701a919e11b067129586e40372d90d54
-Merge: 9230911 4b4948d
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Jan 2 00:59:14 2016 +0000
-
- Merge pull request #208 from khaledhosny/travis-trusty
-
- [travis] Try building on Trusty
-
-commit 4b4948d360a2141e0ffda2994aa308645dc32f59
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Sat Jan 2 00:36:19 2016 +0400
-
- [travis] Try building on Trusty
-
- Trusty has gtk-doc 1.20 which has better markdown support which should
- fix some of the brokenness in the newly added documentation. The build
- seems to be as fast as the current container-based build on Precise.
-
- .travis.yml | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-commit 9230911facf90c06626e54023ca4d99f5e05f1a4
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Jan 1 19:06:43 2016 +0000
-
- [travis] Only run coveralls if testing behdad/harfbuzz
-
- Fixes failures in others' forks, like:
- https://travis-ci.org/khaledhosny/harfbuzz/jobs/99719710#L3912
-
- .travis.yml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 6f66f05757d3d5738571b3d4ee40afffb8f26ff9
-Merge: bfdf684 9ab9f97
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Jan 1 16:44:01 2016 +0000
-
- Merge pull request #207 from khaledhosny/docs-4
-
- [docs] More buffers documentation
-
-commit 9ab9f974d42e0001966e243a23a64e6aefbd4764
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Fri Jan 1 20:38:21 2016 +0400
-
- [docs] More buffers documentation
-
- docs/harfbuzz-sections.txt | 4 +-
- src/hb-buffer-serialize.cc | 85
- ++++++++++++++++++++++++++++++-------------
- src/hb-buffer.cc | 91
- +++++++++++++++++++++++++++++++++++-----------
- src/hb-buffer.h | 78 +++++++++++++++++++++++++--------------
- src/hb-shape.cc | 10 +++--
- 5 files changed, 187 insertions(+), 81 deletions(-)
-
-commit bfdf684f7957645dd016fbf76700c5911c4bee2d
-Merge: d7ed6f5 85c2443
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Dec 30 22:20:14 2015 +0100
-
- Merge pull request #205 from khaledhosny/more-docs
-
- More docs
-
-commit d7ed6f50b4ff13a94701131913d931f13a4d1266
-Merge: b758e5e a7f0e25
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Dec 30 22:20:00 2015 +0100
-
- Merge pull request #206 from nico/patch-3
-
- Remove unused HB_SHAPER_DATA_ENSURE_DECLARE lines.
-
-commit a7f0e25dafa90bd21b01c38cb0782ade54b75cdc
-Author: Nico Weber <nicolasweber@gmx.de>
-Date: Wed Dec 30 16:05:52 2015 -0500
-
- Remove unused HB_SHAPER_DATA_ENSURE_DECLARE lines.
-
- The coretext_aat shaper delegates to the regular coretext_..._ensure()
- functions, so coretext_aat_..._ensure() functions defined by these
- macros are unused. The compiler warns about them, which in turn can
- confuse people to think that the coretext_aat_..._ensure() functions
- weren't called by accident.
-
- src/hb-coretext.cc | 4 ----
- 1 file changed, 4 deletions(-)
-
-commit 85c2443b737335b77c7e9bb6fd6741912f70fcef
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Wed Dec 30 22:57:04 2015 +0400
-
- [docs] Reduce gtkdoc-check errors
-
- Now it is just reporting one error about “503 undocumented or
- incomplete
- symbols”, that will be the easy part I guess.
-
- docs/harfbuzz-docs.xml | 74
- ++++++++++++++++++++++++++++++++++++++++++++++
- docs/harfbuzz-sections.txt | 40 +++++++++++++++++++++++++
- 2 files changed, 114 insertions(+)
-
-commit 9cffe329f15b3a74a3af4e68c1884f1dbda49666
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Wed Dec 30 22:50:08 2015 +0400
-
- [docs] Typo
-
- src/hb-buffer.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit b758e5ea223eced0fde9a3e62d0fdf04c04914a1
-Merge: 266bfa3 8b1224f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Dec 30 16:44:19 2015 +0100
-
- Merge pull request #203 from nico/patch-1
-
- Remove unused `retry:` label.
-
-commit 266bfa3772e75fedcd93db22bf8672a13ad7a7d9
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Dec 30 16:25:48 2015 +0100
-
- [docs] Minor
-
- .ci/deploy-docs.sh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit d08035f8f15b7ddd89a318ea34bc386a9e33a8ea
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Dec 30 16:15:36 2015 +0100
-
- [docs] Fix up build, really
-
- .ci/deploy-docs.sh | 9 ++++-----
- .travis.yml | 2 +-
- 2 files changed, 5 insertions(+), 6 deletions(-)
-
-commit 0d45c3cf63692151166ca7071f755dfaa8922a67
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Dec 30 16:09:39 2015 +0100
-
- [docs] Turn bash tracing on
-
- .ci/deploy-docs.sh | 4 ++++
- 1 file changed, 4 insertions(+)
-
-commit 33b2d981a0b12ea165ef9282204a73f4a1ce0477
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Dec 30 15:56:56 2015 +0100
-
- [docs] Another try, not sure why the bot isn't building
-
- .ci/deploy-docs.sh | 13 ++++---------
- 1 file changed, 4 insertions(+), 9 deletions(-)
-
-commit f3a051149b3b565b5ad4e489bf730c5203c3549e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Dec 30 15:45:43 2015 +0100
-
- [docs] Shuffling code around in deploy-docs.sh
-
- Temporarily makes it rebuild docs on every change again.
-
- .ci/deploy-docs.sh | 46 +++++++++++++++++++++++++++-------------------
- 1 file changed, 27 insertions(+), 19 deletions(-)
-
-commit 8f31d0a94b27bb658aabe600472fc10bc47885f6
-Merge: 9d280cf fb192c2
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Dec 30 15:13:37 2015 +0100
-
- Merge pull request #202 from khaledhosny/doc-fixes
-
- Doc fixes
-
-commit fb192c263e17081c87f4cc971274d9be42f19513
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Wed Dec 30 15:05:50 2015 +0400
-
- [docs] A bit more buffers documentation
-
- docs/harfbuzz-sections.txt | 2 ++
- src/hb-buffer.cc | 7 +++---
- src/hb-buffer.h | 56
- ++++++++++++++++++++++++++++++++++++++++++++--
- 3 files changed, 60 insertions(+), 5 deletions(-)
-
-commit 8ab797c5b86c33eab6ee024471fd3c147325d26a
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Tue Dec 29 17:42:16 2015 +0400
-
- [docs] A bit more buffers documentation
-
- docs/harfbuzz-sections.txt | 60 +++++++++++++++---------------
- src/hb-buffer.cc | 93
- +++++++++++++++++++++++++++++++---------------
- src/hb-buffer.h | 7 +++-
- src/hb-common.cc | 43 +++++++++++++--------
- src/hb-common.h | 15 +++++---
- 5 files changed, 135 insertions(+), 83 deletions(-)
-
-commit f18d2226b62f20d29e6299c01ae8467c725ea971
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Tue Dec 29 15:21:20 2015 +0400
-
- [docs] Some documentation on buffers
-
- Some of it (create, reference, destroy) are adapted from Cairo docs.
-
- docs/harfbuzz-sections.txt | 55 +++++++-------
- src/hb-buffer.cc | 174
- +++++++++++++++++++++++++++------------------
- 2 files changed, 132 insertions(+), 97 deletions(-)
-
-commit d7bf9d05c519a369a7b3a02e9ed5ecc05a20cd3e
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Tue Dec 29 02:23:24 2015 +0400
-
- [docs] Fix comment syntax
-
- To lower the number of gtk-doc warnings.
-
- .travis.yml | 2 +-
- src/hb-directwrite.cc | 4 ++--
- src/hb-ot-layout.cc | 14 ++++++++++++++
- src/hb-unicode.h | 16 ++++++++++++++++
- 4 files changed, 33 insertions(+), 3 deletions(-)
-
-commit 8b1224f0eece7a5b6846e206333e57ac4653a705
-Author: Nico Weber <nicolasweber@gmx.de>
-Date: Mon Dec 28 21:31:28 2015 -0500
-
- Remove unused `retry:` label.
-
- Fixes a -Wunused-label warning when building harfbuzz with clang
- -Wall.
-
- src/hb-coretext.cc | 1 -
- 1 file changed, 1 deletion(-)
-
-commit 1f5559293f9bb1b4e911f4bdecf276ff1f6ae01c
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Tue Dec 29 02:15:21 2015 +0400
-
- [docs] Ignore the new HB_EXTERN decoration
-
- Otherwise, almost all API functions are not extracted.
-
- docs/Makefile.am | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit 9d280cf49f25181f64c978752f926b79e7c3746a
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Sat Dec 26 06:45:51 2015 +0400
-
- Fix previous commit
-
- .ci/deploy-docs.sh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit b789199f107912cfce5e4a95d6152f9a1a7993f2
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Sat Dec 26 06:35:08 2015 +0400
-
- [travis] Build docs only on tagged revisions
-
- Lets see if it works…
-
- .ci/deploy-docs.sh | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-commit e5b90c08a4c1f475560209a5e47628f695606d89
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Dec 25 18:41:41 2015 +0100
-
- [travis] Remove secure var
-
- I've set up a secure var for behdad/harfbuzz through Travis web
- interface, no need
- to set the var here.
-
- .ci/deploy-docs.sh | 2 +-
- .travis.yml | 1 -
- 2 files changed, 1 insertion(+), 2 deletions(-)
-
-commit e75c1ffdf548185ce1f1df7937f0d028e5e40efe
-Merge: 6173c2a d25317f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Dec 25 18:21:08 2015 +0100
-
- Merge pull request #199 from behdad/travis-docs
-
- Deploy docs to gh-pages branch from Travis builds
-
-commit 6173c2a6fc6ea0bf812f7f398770b5342974f9bf
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Dec 25 18:18:23 2015 +0100
-
- Fix flaky test
-
- This test font had a upem of 769, which results in rounding-related
- errors with
- the FreeType font funcs. Change the upem to 1024 to fix that.
-
- Fixes https://github.com/behdad/harfbuzz/issues/201
-
- ...> 1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf} | Bin 4064 ->
- 4064 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 2 +-
- test/shaping/tests/ligature-id.tests | 70
- ++++++++++-----------
- 3 files changed, 36 insertions(+), 36 deletions(-)
-
-commit 3fcae6d82da389c9944386a8ab41eb1c13b99330
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Dec 25 18:18:02 2015 +0100
-
- [tests] Add --reference, for re-recording tests
-
- test/shaping/run-tests.sh | 18 ++++++++++++++----
- 1 file changed, 14 insertions(+), 4 deletions(-)
-
-commit d25317f67f3c5c77f9059961935b0f35cbaa9ac4
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Wed Dec 23 01:29:48 2015 +0400
-
- Move more docs from FreeDesktop page
-
- docs/Makefile.am | 1 +
- docs/harfbuzz-docs.xml | 15 ++++----
- docs/usermanual-install-harfbuzz.xml | 70
- ++++++++++++++++++++++++++++++++++++
- 3 files changed, 80 insertions(+), 6 deletions(-)
-
-commit 493a92220844c8996be67c8a7a2c5447942fe2c1
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Wed Dec 23 00:33:41 2015 +0400
-
- Rename user manual files
-
- Use chapter ids instead of numbers, so that we can reorder them,
- introduce new ones etc. without the numbers becoming out of date.
-
- docs/Makefile.am | 12
- ++++++------
- docs/harfbuzz-docs.xml | 12
- ++++++------
- ... => usermanual-buffers-language-script-and-direction.xml} | 0
- docs/{usermanual-ch04.xml => usermanual-fonts-and-faces.xml} | 0
- ...{usermanual-ch06.xml => usermanual-glyph-information.xml} | 0
- docs/{usermanual-ch02.xml => usermanual-hello-harfbuzz.xml} | 0
- ...{usermanual-ch05.xml => usermanual-opentype-features.xml} | 0
- .../{usermanual-ch01.xml => usermanual-what-is-harfbuzz.xml} | 0
- 8 files changed, 12 insertions(+), 12 deletions(-)
-
-commit 4dc2265918089ee08c6d82eed0cfd41e02d7d231
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Wed Dec 23 00:26:20 2015 +0400
-
- Intro from freedesktop.org/wiki/Software/HarfBuzz/
-
- docs/HarfBuzz.png | Bin 0 -> 3419 bytes
- docs/Makefile.am | 3 ++-
- docs/harfbuzz-docs.xml | 31 ++++++++++++++++++++++++++++++-
- 3 files changed, 32 insertions(+), 2 deletions(-)
-
-commit 22b07782ced6503a0bf33f2fe157b70540238f6d
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Mon Dec 14 23:33:51 2015 +0400
-
- Deploy docs to gh-pages branch from Travis builds
-
- Build docs in Travis and push them to the gh-pages branch, which makes
- them available at http://behdad.github.io/harfbuzz/
-
- .ci/deploy-docs.sh | 25 +++++++++++++++++++++++++
- .travis.yml | 4 ++++
- 2 files changed, 29 insertions(+)
-
-commit fc38e6034c76d5450f5398d667184bc3696efcc4
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Dec 23 14:50:53 2015 +0100
-
- [layout] Collect coverage glyphs in PairPos
-
- Apparently class=0 is used for ClassDef1. See:
- https://github.com/adobe-type-tools/afdko/issues/90
-
- src/hb-ot-layout-gpos-table.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 8718dae818b22c3933c33bdfc8a7413ef4c3110a
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Dec 18 19:53:40 2015 +0000
-
- [python] Hook up sample debugger
-
- src/sample.py | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-commit 0475ef2f97e3035a2eea9a0f96031331e07e8e29
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Dec 18 18:17:07 2015 +0000
-
- [buffer] Add debugging, aka, message, API
-
- Currently just announces lookup applications. Message-API *will*
- change.
- hb-shape / hb-view are updated to print-out messages to stder
- if --debug
- is specified.
-
- src/hb-buffer-private.hh | 18 ++++++++++++++++++
- src/hb-buffer.cc | 44
- ++++++++++++++++++++++++++++++++++++++++++++
- src/hb-buffer.h | 15 +++++++++++++++
- src/hb-ot-layout.cc | 12 ++----------
- util/main-font-text.hh | 18 ++++++++++++++++++
- 5 files changed, 97 insertions(+), 10 deletions(-)
-
-commit 9ea0aa43ac5cf243b698aae0ec80241b5efd7488
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Dec 18 17:30:18 2015 +0000
-
- Don't deserialize positions if buffer has no positions
-
- src/hb-buffer-serialize.cc | 3 +++
- src/hb-ot-layout.cc | 2 --
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-commit 862b1644e9469a7e70555141f53729409d50d0d2
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Dec 18 13:54:06 2015 +0000
-
- [use] Only set syllable-based topographical features if not
- Arabic-joining
-
- src/hb-ot-shape-complex-use.cc | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit 45b7ec365225109eb0854e6c417f48860b5f24af
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Dec 18 13:47:16 2015 +0000
-
- [indic] Followup fix for Malayalam context matching
-
- We regeressed Malayalam in 508cc3d3cfcfb0383df0fe795cc28db4e0fd5729
- This brings down the failures to 198 (from 750).
-
- BENGALI: 353725 out of 354188 tests passed. 463 failed (0.130722%)
- DEVANAGARI: 707307 out of 707394 tests passed. 87 failed (0.0122987%)
- GUJARATI: 366349 out of 366457 tests passed. 108 failed (0.0294714%)
- GURMUKHI: 60732 out of 60747 tests passed. 15 failed (0.0246926%)
- KANNADA: 951190 out of 951913 tests passed. 723 failed (0.0759523%)
- KHMER: 299070 out of 299124 tests passed. 54 failed (0.0180527%)
- MALAYALAM: 1048136 out of 1048334 tests passed. 198 failed
- (0.0188871%)
- ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%)
- SINHALA: 271662 out of 271847 tests passed. 185 failed (0.068053%)
- TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%)
- TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%)
- MYANMAR: 1123865 out of 1123883 tests passed. 18 failed (0.00160159%)
-
- src/hb-ot-shape-complex-indic.cc | 19 +++++++++++++++++++
- 1 file changed, 19 insertions(+)
-
-commit 2813e3049a69d64e5395f68c52c4690e1d256d55
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Dec 18 11:05:11 2015 +0000
-
- [indic] Update data tables to Unicode 8.0
-
- Test stats remain unchanged, except for Malayalam, which we
- investigate:
-
- BENGALI: 353725 out of 354188 tests passed. 463 failed (0.130722%)
- DEVANAGARI: 707307 out of 707394 tests passed. 87 failed (0.0122987%)
- GUJARATI: 366349 out of 366457 tests passed. 108 failed (0.0294714%)
- GURMUKHI: 60732 out of 60747 tests passed. 15 failed (0.0246926%)
- KANNADA: 951190 out of 951913 tests passed. 723 failed (0.0759523%)
- KHMER: 299070 out of 299124 tests passed. 54 failed (0.0180527%)
- MALAYALAM: 1047584 out of 1048334 tests passed. 750 failed
- (0.0715421%)
- ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%)
- SINHALA: 271662 out of 271847 tests passed. 185 failed (0.068053%)
- TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%)
- TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%)
-
- Myanmar, compared to Windows 10 mmrtext.ttf:
-
- MYANMAR: 1123865 out of 1123883 tests passed. 18 failed (0.00160159%)
-
- src/gen-indic-table.py | 1 +
- src/hb-ot-shape-complex-indic-private.hh | 40 ++--
- src/hb-ot-shape-complex-indic-table.cc | 372
- ++++++++++++++++++-------------
- src/hb-ot-shape-complex-indic.cc | 23 +-
- src/hb-ot-shape-complex-myanmar.cc | 4 +
- 5 files changed, 244 insertions(+), 196 deletions(-)
-
-commit fc06cff40f136440f6402d0a5e735e2a4a3c062a
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Dec 17 17:47:35 2015 +0000
-
- Remove HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT
-
- The DEFAULT naming wasn't helpful, so just remove it.
-
- src/hb-ot-shape-complex-default.cc | 2 +-
- src/hb-ot-shape-complex-private.hh | 4 +---
- src/hb-ot-shape-complex-thai.cc | 2 +-
- src/hb-ot-shape-complex-tibetan.cc | 2 +-
- 4 files changed, 4 insertions(+), 6 deletions(-)
-
-commit 508cc3d3cfcfb0383df0fe795cc28db4e0fd5729
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Dec 17 17:31:17 2015 +0000
-
- [indic] Allow context when matching for Malayalam new-spec
-
- Test sequence:
- U+0995,U+09CD,U+09B0
-
- With Nirmala shipped on Windows 10, this failed to form the below
- form.
- Works now.
-
- Reported by Sairus.
-
- src/hb-ot-shape-complex-indic.cc | 11 +++++++++--
- 1 file changed, 9 insertions(+), 2 deletions(-)
-
-commit eaf1e93ef1ee19a3e72d781e8abbd7f1165c1618
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Dec 17 16:57:47 2015 +0000
-
- [uniscribe] Handle E_NOT_SUFFICIENT_BUFFER as well as E_OUTOFMEMORY
-
- On Windows 10 we are seeing that other error message...
-
- Test sequence: U+0995,U+-9CD,U+09B0
- With Nirmala shipped on Windows 10, this failed to form the below
- form.
- Works now.
-
- Reported by Sairus.
-
- src/hb-uniscribe.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 21e5d7edc4f28157254ef29a8ac247f3a572f6a6
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Dec 17 16:28:38 2015 +0000
-
- [util] Use O_BINARY instead of _O_BINARY
-
- The latter doesn't seem to be available in Cygwin. I'm surprised it
- compiled before...
-
- util/options.cc | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 100fbeaf196515774c985ee839d0fa0695f9a6fa
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Dec 17 15:23:09 2015 +0000
-
- Fix ligature component of a mark happening after a ligature within
- a ligature!
-
- Say, if we are ligating "A B_C m D", then previously 'm' was being
- attached to 'B' in the combined A_B_C_D ligature. Now we attach it
- to 'C'. No test for this though :(.
-
- src/hb-ot-layout-gsubgpos-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 2f02fc79a5018e3348fccf366c470803554e1e58
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Dec 17 15:21:14 2015 +0000
-
- Improve ligature-component handling
-
- We use three bits for lig_id these days, so we finally got a report of
- two separate ligatures with the same lig_id happening adjacent to each
- other, and then the component-handling code was breaking things.
- Protect against that by ignoring same-lig-id but lig-comp=0 glyphs
- after
- a new ligature.
-
- Fixes https://github.com/behdad/harfbuzz/issues/198
-
- src/hb-ot-layout-gsubgpos-private.hh | 12 +++++--
- test/shaping/Makefile.am | 1 +
- test/shaping/fonts/sha1sum/MANIFEST | 1 +
- .../c78d1f25ea1df1210414f2fe2e0e1e53082bba76.ttf | Bin 0 -> 4064 bytes
- test/shaping/tests/MANIFEST | 1 +
- test/shaping/tests/ligature-id.tests | 35
- +++++++++++++++++++++
- 6 files changed, 47 insertions(+), 3 deletions(-)
-
-commit 2ab0de9fbd03231b647345b01e31b136e2e00978
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Dec 17 11:59:15 2015 +0000
-
- [use] Fix halant detection
-
- Before, we were just checking the use_category(). This detects as
- halant a ligature that had the halant as first glyph (as seen in
- NotoSansBalinese.) Change that to use the is_ligated() glyph prop
- bit. The font is forming this ligature in ccmp, which is before
- the rphf / pref tests. So we need to make sure the "ligated" bit
- survives those tests. Since those only check the "substituted" bit,
- we now only clear that bit for them and "ligated" survives.
-
- Fixes https://github.com/behdad/harfbuzz/issues/180
-
- src/hb-ot-layout-private.hh | 6 ++----
- src/hb-ot-shape-complex-use.cc | 19
- ++++++++++++-------
- test/shaping/Makefile.am | 1 +
- test/shaping/fonts/sha1sum/MANIFEST | 1 +
- .../fbb6c84c9e1fe0c39e152fbe845e51fd81f6748e.ttf | Bin 0 ->
- 2616 bytes
- test/shaping/tests/MANIFEST | 1 +
- test/shaping/tests/use.tests | 1 +
- 7 files changed, 18 insertions(+), 11 deletions(-)
-
-commit 86bcbd65b0d98357fb3d67a2f4f2a704ace55e10
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Dec 17 11:04:33 2015 +0000
-
- [arabic] Use glyph advance width in apply_stch() instead of extents
-
- That seems to be what Windows is doing, and makes more sense.
-
- src/hb-ot-shape-complex-arabic.cc | 24 +++++++-----------------
- 1 file changed, 7 insertions(+), 17 deletions(-)
-
-commit f11c11a1f123ef245e59ba892230db14170a8e5a
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Dec 16 17:08:36 2015 +0100
-
- Fix Since: tags for new API
-
- https://github.com/behdad/harfbuzz/commit/e1d4d0f1dbd8518b5672245c05d73f22a9ed03ea#commitcomment-15006653
-
- src/hb-font.cc | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit 15f2c055c17c54b0a6ae6eef50dcda13c58cda75
-Merge: 49e7263 a13b023
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Dec 14 14:19:03 2015 +0100
-
- Merge pull request #196 from srl295/aix
-
- AIX fixes
-
-commit a13b023dbfd0532e8cd74c356fbbd4453d0ffaa0
-Author: Steven R. Loomis <srloomis@us.ibm.com>
-Date: Fri Dec 11 10:21:27 2015 -0800
-
- AIX fixes
-
- - use '-w' instead of '\<...\>' for check-header-guards
- grep manpage says these are the same
-
- - put '-q' first in the grep options
-
- - move VAR into hb-private.hh
-
- - hb-font-private.hh - use [VAR] instead of [] for variable array
-
- src/check-header-guards.sh | 5 ++---
- src/hb-font-private.hh | 2 +-
- src/hb-open-type-private.hh | 3 ---
- src/hb-private.hh | 2 ++
- 4 files changed, 5 insertions(+), 7 deletions(-)
-
-commit 49e72634af74a9fbad01f42f48e104218413acc0
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Dec 10 17:44:19 2015 +0100
-
- Limit use of AIX intrinsics to IBM's compiler
-
- src/hb-atomic-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit e1d4d0f1dbd8518b5672245c05d73f22a9ed03ea
-Merge: 70b33ed 808d3fc
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Dec 10 16:56:07 2015 +0100
-
- Merge branch 'font-extents'
-
- Fixes https://github.com/behdad/harfbuzz/pull/165
-
-commit 808d3fc0eadd379909f2a0308fd3db474f1efde8
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Dec 10 16:55:16 2015 +0100
-
- [util] Port hb-view to use font metrics from HarfBuzz instead of cairo
-
- util/helper-cairo.cc | 4 +++-
- util/view-cairo.cc | 24 ++++++++++++------------
- 2 files changed, 15 insertions(+), 13 deletions(-)
-
-commit 31fa3892947138c7950303ea3719bb5ceb813625
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Dec 10 16:38:29 2015 +0100
-
- [ft] Use ftface->size->metrics for font extent info
-
- src/hb-ft.cc | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit 3ad16048fdd841f31f1cb98d7ff9ea1871841146
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Dec 10 16:37:49 2015 +0100
-
- [ot-font] Respect OS/2 fsSelection USE_TYPO_METRICS bit
-
- src/hb-ot-font.cc | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
-
-commit 70b33edae7c8b9c031b83c95f00cb383789f1041
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Dec 10 15:54:42 2015 +0100
-
- Add atomic ops for AIX
-
- Patch from Volker Simonis.
-
- src/hb-atomic-private.hh | 25 +++++++++++++++++++++++++
- 1 file changed, 25 insertions(+)
-
-commit 98460779bae19e4d64d29461ff154b3527bf8420
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Dec 7 21:38:47 2015 +0100
-
- Remove final pause from Arabic shaper
-
- Back in the old days, we used to apply 'calt' and 'cswh' in Arabic
- shaper,
- with a pause in between. Then we disabled the 'cswh' because
- Microsoft
- disabled it, but forgot to remove the unnecessary pause. Do that now.
-
- This has the benefit that it fixes shaping with monbaiti from
- Windows 10.
- In that version of that font, the lookups from 'calt' are duplicated
- in
- 'rclt', and Mongolian was changed to go through Universal Shaping
- Engine.
- We still use the Arabic shaper for Mongolian. With a pause after
- 'calt',
- we were applying the duplicate lookups from 'calt' and 'rclt' twice.
- It
- happened to be the case that these lookups were NOT idempotent. So we
- were getting wrong shaping. See thread "Windows 10 monbaiti.ttf
- upgrade
- (5.01 -> 5.51) caused loss of diacritical marks when shaped with
- harfbuz"
- on the mailing list. This fixes that.
-
- src/hb-ot-shape-complex-arabic.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit dee0fbf9e2eac8b61730efc4978bc10c552b5227
-Merge: 255df68 a7ffe35
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Dec 7 10:44:08 2015 +0100
-
- Merge pull request #192 from behdad/jfkthame-stch
-
- [issue 191] Make apply_stch() give a more precise fit
-
-commit 255df6801201fb22402420f7b7b7ea8b042df8ba
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Dec 7 10:34:47 2015 +0100
-
- Fix undefined behavior in cmp function
-
- Fixes https://bugs.freedesktop.org/show_bug.cgi?id=93274
-
- src/hb-ot-map-private.hh | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit fcf9e61bad13c828b5482f26491c82db65d91c96
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Dec 7 10:30:43 2015 +0100
-
- Fix sorting order of ot_languages array
-
- Looks like the original sort was wrongly done.
- Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=93275
-
- src/hb-ot-tag.cc | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-commit 70952ddb5a29c5bcbb4b6c3a05a428496033234a
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Dec 7 10:28:46 2015 +0100
-
- Add test to make sure ot-languages array is sorted
-
- Currently fails. Part of
- https://bugs.freedesktop.org/show_bug.cgi?id=93275
-
- src/Makefile.am | 9 ++++++++-
- src/hb-ot-tag.cc | 23 +++++++++++++++++++++++
- 2 files changed, 31 insertions(+), 1 deletion(-)
-
-commit 8c37556f730d7e961394075cd863f624af4c53c4
-Merge: 8e5f902 f35b3e9
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Dec 7 09:34:58 2015 +0100
-
- Merge pull request #134 from ebraminio/dwrite
-
- Add working but less prefect DirectWrite backend
-
-commit a7ffe3535836032dba5559080dffeec79473197b
-Author: jfkthame <jfkthame@gmail.com>
-Date: Sat Dec 5 17:47:37 2015 +0000
-
- Make apply_stch() give a more precise fit
-
- This aims to make Syriac Abbr Mark sizing more accurate when repeating
- segments are used, by adding an extra repeat and tightening up the
- spacing slightly rather than leaving a shortfall corresponding to
- a partial repeat-width.
-
- src/hb-ot-shape-complex-arabic.cc | 15 ++++++++++++++-
- 1 file changed, 14 insertions(+), 1 deletion(-)
-
-commit 8e5f902656d2882d24c30e8b26ddbd3963baa55c
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Nov 30 16:53:21 2015 -0800
-
- src/test.cc: wrong field printed
-
- Fixes https://github.com/behdad/harfbuzz/issues/188
- Fixes https://bugs.freedesktop.org/show_bug.cgi?id=93182
-
- src/test.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 6f2e6de1fae0ab2269b472a750788817de6c2a6e
-Author: Simon Cozens <simon@simon-cozens.org>
-Date: Mon Oct 26 16:23:22 2015 +0900
-
- Get font ascender and descender metrics from OS/2 table.
-
- src/hb-font-private.hh | 39 ++++++++++++++++++-
- src/hb-font.cc | 102
- ++++++++++++++++++++++++++++++++++++++++++++++++-
- src/hb-font.h | 62 ++++++++++++++++++++++++++++--
- src/hb-ft.cc | 21 ++++++++++
- src/hb-ot-font.cc | 58 ++++++++++++++++++++++++++--
- 5 files changed, 274 insertions(+), 8 deletions(-)
-
-commit 097c998a0c7b250924801bb69f5fa0c529edd183
-Author: Simon Cozens <simon@simon-cozens.org>
-Date: Mon Oct 26 16:22:38 2015 +0900
-
- Parse the OS/2 table.
-
- src/Makefile.am | 1 +
- src/hb-ot-os2-table.hh | 105
- +++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 106 insertions(+)
-
-commit d44d52bd0da033865641dfd39d94852119fd4fd7
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 26 19:35:43 2015 -0500
-
- 1.1.2
-
- NEWS | 15 +++++++++++++++
- configure.ac | 2 +-
- 2 files changed, 16 insertions(+), 1 deletion(-)
-
-commit 35d18585fc57750d817f57bfffe569069f9803b5
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 26 19:30:37 2015 -0500
-
- Fix a few docs blocks
-
- src/hb-buffer.cc | 4 ++++
- src/hb-glib.cc | 2 ++
- src/hb-ot-font.cc | 2 ++
- src/hb-ot-layout.cc | 6 ++++++
- src/hb-ot-shape.cc | 4 ++++
- 5 files changed, 18 insertions(+)
-
-commit 0e38c918b66df31978d8fd3d8271a9b781384545
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 26 19:26:26 2015 -0500
-
- [introspection] Make scanner happy with HB_EXTERN
-
- src/Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-commit ea512f71084296be3bd893f78650def894066de0
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 26 19:22:22 2015 -0500
-
- Use C-style casts instead of compare to 0, to convert hb_bool_t
- to bool
-
- src/hb-common.cc | 2 +-
- src/hb-fallback-shape.cc | 2 +-
- src/hb-font-private.hh | 2 +-
- src/hb-ot-layout.cc | 2 +-
- src/hb-ot-map.cc | 2 +-
- src/hb-ot-shape-complex-hangul.cc | 2 +-
- src/hb-ot-shape-complex-hebrew.cc | 2 +-
- src/hb-ot-shape-complex-indic.cc | 4 ++--
- src/hb-ot-shape-normalize.cc | 6 +++---
- src/hb-ot-shape.cc | 2 +-
- 10 files changed, 13 insertions(+), 13 deletions(-)
-
-commit 67a36a725e2a61a096ba0324f359d17f9b02d312
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 26 18:48:42 2015 -0500
-
- Fix vertical GPOS
-
- This was brorken earlier, though, it's really hard to notice it.
- Unlike the glyph_h_origin(), an unset glyph_v_origin() does NOT
- mean that the vertical origin is at 0,0.
-
- Related to https://github.com/behdad/harfbuzz/issues/187
-
- src/hb-ot-shape.cc | 13 ++++++++-----
- 1 file changed, 8 insertions(+), 5 deletions(-)
-
-commit 1c6a057dd1a52511474630896a597bf8e5215214
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 26 18:48:30 2015 -0500
-
- Add tests for previous commit
-
- test/shaping/Makefile.am | 1 +
- .../sha1sum/49c9f7485c1392fa09a1b801bc2ffea79275f22e.ttf | Bin 0 ->
- 1496 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 1 +
- test/shaping/tests/MANIFEST | 1 +
- test/shaping/tests/simple.tests | 2 ++
- 5 files changed, 5 insertions(+)
-
-commit c41c145c7386ebe72b1cfb0475d836a689fecc5e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 26 18:43:15 2015 -0500
-
- Make nil glyph_h_origin() function return true
-
- Fixes https://github.com/behdad/harfbuzz/issues/187
-
- Funcs implementations that have a non-zero horizontal origin must
- implement the glyph_h_origin() callback, nothing new here.
-
- Other implementations (all I know of!) can simply not set
- glyph_h_origin() now. I did that for hb-ot and hb-ft in
- 44f82750807475aa5b16099ccccd917d488df703, though that broke the
- fallback shaper because the default was returning false...
-
- src/hb-font.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 766963adba6770dcd45de4417481ed8eda60a716
-Merge: b344af8 f798b8e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Nov 24 15:38:43 2015 -0600
-
- Merge pull request #114 from ThePhD/vc++-fixes
-
- Fix all VC++ warnings and errors
-
-commit b344af80ca95b9eddfd6017aa6ae103388d6b5f8
-Merge: 662acd2 835bbdc
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Nov 24 15:30:27 2015 -0600
-
- Merge pull request #177 from fanc999/exporting
-
- Enable use of compiler directives to export symbols
-
-commit 662acd26d10c38e96a9afcdaab2cb2979794966f
-Merge: b24e93e 1979f6f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Nov 24 15:29:44 2015 -0600
-
- Merge pull request #181 from mhosken/master
-
- Fix y_scale problems in hb-gr
-
-commit b24e93e3a4d98111c4684fa08e9080b471881d5c
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Nov 24 13:18:20 2015 -0600
-
- 1.1.1
-
- NEWS | 7 +++++++
- configure.ac | 2 +-
- 2 files changed, 8 insertions(+), 1 deletion(-)
-
-commit 233944ac91bb81250c0e63150eecfedfaf09f590
-Merge: 5a24b1d d538201
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Tue Nov 24 18:37:35 2015 +0400
-
- Merge pull request #185 from khaledhosny/travis-osx
-
- [travis] Enable Mac OS X support
-
-commit d538201918e6932ef7645f8d5b2c3491954936f8
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Tue Nov 24 12:46:35 2015 +0400
-
- [travis] Enable Mac OS X support
-
- Fixes https://github.com/behdad/harfbuzz/issues/182
-
- .travis.yml | 22 ++++++++++++++++------
- 1 file changed, 16 insertions(+), 6 deletions(-)
-
-commit 5a24b1d25c59865e298bf105f54503e79587265c
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Nov 23 16:46:14 2015 -0600
-
- [travis] Remove coverity scan
-
- I never could get it to work, and it's a proprietary platform.
-
- .travis.yml | 11 -----------
- README | 1 -
- 2 files changed, 12 deletions(-)
-
-commit 1979f6fedca82fa1e4f65491de491db1aa6dc645
-Author: Martin Hosken <martin_hosken@sil.org>
-Date: Mon Nov 23 10:03:56 2015 +0700
-
- Fix y_scale problems in hb-gr
-
- src/hb-graphite2.cc | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-commit 835bbdc7c92bd774ff92c42a9277ded72066d29d
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date: Thu Nov 19 18:34:12 2015 +0800
-
- Public headers: Decorate public symbols with HB_EXTERN
-
- This prepares the headers for exporting symbols using visibility
- attributes or __declspec(dllexport), so that we do not need to
- maintain
- symbols listing files, as this is what was and is done in GLib
- and GTK+.
-
- src/hb-blob.h | 24 +++++-----
- src/hb-buffer.h | 100 +++++++++++++++++++-------------------
- src/hb-common.h | 22 ++++-----
- src/hb-coretext.h | 6 +--
- src/hb-face.h | 34 ++++++-------
- src/hb-font.h | 114
- ++++++++++++++++++++++----------------------
- src/hb-ft.h | 18 +++----
- src/hb-glib.h | 8 ++--
- src/hb-gobject-enums.h.tmpl | 2 +-
- src/hb-gobject-structs.h | 26 +++++-----
- src/hb-graphite2.h | 4 +-
- src/hb-icu.h | 6 +--
- src/hb-ot-font.h | 2 +-
- src/hb-ot-layout.h | 56 +++++++++++-----------
- src/hb-ot-shape.h | 4 +-
- src/hb-ot-tag.h | 8 ++--
- src/hb-set.h | 52 ++++++++++----------
- src/hb-shape-plan.h | 18 +++----
- src/hb-shape.h | 10 ++--
- src/hb-unicode.h | 52 ++++++++++----------
- src/hb-uniscribe.h | 4 +-
- src/hb-version.h.in | 6 +--
- src/hb.h | 4 ++
- 23 files changed, 292 insertions(+), 288 deletions(-)
-
-commit f798b8e2d683a1b89b6905b1a8615375b847b468
-Author: ThePhD <phdofthehouse@gmail.com>
-Date: Sat Nov 21 16:57:26 2015 -0500
-
- c-style cast
-
- src/hb-ot-shape-complex-use.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit a6991813659376a6a11c00a9f67d85b4f7ba9b5d
-Merge: 1dc32ea f19c6db
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Nov 20 13:28:42 2015 -0800
-
- Merge pull request #176 from behdad/missing-braces
-
- Add braces for subobject initializer in _hb_font_funcs_nil
-
-commit 1dc32ea4d2f294f9d1ae1c8fd19fb75f9278223b
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Nov 20 13:24:19 2015 -0800
-
- Whitespace
-
- src/hb-private.hh | 20 ++++++++++----------
- 1 file changed, 10 insertions(+), 10 deletions(-)
-
-commit f94c0ecbb1488138d3ec3b9d6d9fb78113dfee4f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Nov 20 13:21:29 2015 -0800
-
- Define HB_MARK_AS_FLAG_T as a macro instead of using templates
-
- The generic template operator overloading was causing more problems
- than it
- solved. Eg:
-
- https://github.com/behdad/harfbuzz/pull/163
- https://github.com/behdad/harfbuzz/issues/175
-
- So, just use macros.
-
- Fixes https://github.com/behdad/harfbuzz/issues/175
- Fixes https://github.com/behdad/harfbuzz/pull/178
-
- src/hb-private.hh | 27 +++++++++++----------------
- 1 file changed, 11 insertions(+), 16 deletions(-)
-
-commit f19c6db18e2e2dd0e9a406fc7e8533049fab48b0
-Author: jfkthame <jfkthame@gmail.com>
-Date: Fri Nov 20 08:43:49 2015 +0000
-
- Add braces for subobject initializer in _hb_font_funcs_nil
-
- To avoid triggering -Wmissing-braces; see
- https://bugzilla.mozilla.org/show_bug.cgi?id=1226175#c8
-
- src/hb-font.cc | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-commit 9cc1ed4fa68075b3b142a2737438109772dd0002
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 19 12:39:09 2015 -0800
-
- Do not allow recursiving to same position and same lookup
-
- This is just to make it harder to be extremely slow. There definitely
- are ways still, just harder. Oh well... how do we tame this problem
- without solving halting problem?!
-
- Fixes https://github.com/behdad/harfbuzz/issues/174
-
- src/hb-ot-layout-gsubgpos-private.hh | 5 +++++
- test/shaping/fonts/sha1sum/MANIFEST | 1 +
- .../sha1sum/fab39d60d758cb586db5a504f218442cd1395725.ttf | Bin 0 ->
- 1894 bytes
- test/shaping/tests/fuzzed.tests | 1 +
- 4 files changed, 7 insertions(+)
-
-commit 7d75eee799bbb5ee7eef2651cf7b7d3aee6f09b0
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 19 12:03:04 2015 -0800
-
- [fuzzing] Run fuzzing tests using hb-fuzzer as well
-
- test/fuzzing/Makefile.am | 4 ++++
- 1 file changed, 4 insertions(+)
-
-commit 13188cba7f0eaacd587beeb1c2258526ae24c438
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 19 11:59:03 2015 -0800
-
- Revert "Fix hang in OOM situations"
-
- This reverts commit f0599db761d7fc2d585d86e757a797f75ebc7499.
-
- Commit abadc1717d997b69f987fdf1be9e12156d2d13d6 provides a better
- fix for this.
-
- src/hb-buffer-private.hh | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
-
-commit 18e1c6b6ef7c85a1b02e3dae86280d8ed6b65118
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 19 11:50:58 2015 -0800
-
- Revert "Make sure we make progress in OOM situations"
-
- This reverts commit 68b507a3c3c62c28c38e13fee733702bb703b6ca.
-
- Commit abadc1717d997b69f987fdf1be9e12156d2d13d6 provides a better
- fix for this.
-
- src/hb-buffer-private.hh | 7 +++++--
- src/hb-buffer.cc | 31 ++++++++-----------------------
- 2 files changed, 13 insertions(+), 25 deletions(-)
-
-commit e1118aeac3b5556df0ce502732df8ac92bdac45a
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 18 23:40:47 2015 -0800
-
- 1.1.0
-
- NEWS | 22 ++++++++++++++++++++++
- configure.ac | 2 +-
- 2 files changed, 23 insertions(+), 1 deletion(-)
-
-commit 63fe05c8b1cd4f08b525028409e1299f34750810
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 18 23:52:34 2015 -0800
-
- Fix make distcheck
-
- src/Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 9b087dec7753ad96d256ce1b9ae347bd8d697c75
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 18 23:23:35 2015 -0800
-
- [travis] Only coverity-scan the coverity_scan branch
-
- This essentially disables coverity-scan right now, until we find
- a pattern to continuously submit branches there.
-
- For background reasoning, see:
- Fixes https://github.com/behdad/harfbuzz/issues/171
-
- .travis.yml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 85062e3b4655ec6d5c3cf5344ce22cd88c21a2aa
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 18 23:09:13 2015 -0800
-
- Add tests for previous two commits
-
- To fully test what these are supposed to test, they should be run
- against libharfbuzz-fuzzing.la instead of libharfbuzz.la, but for
- now just record the files.
-
- .../sha1sum/43979b90b2dd929723cf4fe1715990bcb9c9a56b.ttf | Bin 0 ->
- 1804 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 2 ++
- .../sha1sum/b9e2aaa0d75fcef6971ec3a96d806ba4a6b31fe2.ttf | Bin 0 ->
- 1804 bytes
- test/shaping/tests/fuzzed.tests | 2 ++
- 4 files changed, 4 insertions(+)
-
-commit 37b40cd8a18e25d3324f829acec197f016f4a524
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 18 23:04:45 2015 -0800
-
- Fix another move_to assertion failure
-
- If buf->idx is at end, don't set end past it...
-
- Fixes https://github.com/behdad/harfbuzz/issues/173
-
- src/hb-ot-layout-gsubgpos-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit abadc1717d997b69f987fdf1be9e12156d2d13d6
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 18 17:52:08 2015 -0800
-
- Try to better handle OOM situations
-
- Fixes assert fail in https://github.com/behdad/harfbuzz/issues/161
- with libharfbuzz-fuzzing.
-
- src/hb-ot-layout-gsubgpos-private.hh | 2 +-
- src/hb-ot-layout.cc | 2 +-
- src/hb-ot-shape-complex-hangul.cc | 2 +-
- src/hb-ot-shape-complex-indic.cc | 2 +-
- src/hb-ot-shape-complex-thai.cc | 2 +-
- src/hb-ot-shape-complex-use.cc | 8 +-------
- src/hb-ot-shape-normalize.cc | 10 +++++-----
- src/hb-ot-shape.cc | 2 +-
- 8 files changed, 12 insertions(+), 18 deletions(-)
-
-commit ec625f7dfb5f6df19d35d81af6605d05e08321f2
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 18 16:37:59 2015 -0800
-
- Try to fix gnome-continuous build fail
-
- test/fuzzing/Makefile.am | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit ff16ef3379e06afe44b5e78b8893aeae0cee2b5b
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 18 16:27:32 2015 -0800
-
- Enable building a bounded version of the library for fuzzing
-
- test/fuzzing/hb-fuzzer links against libharfbuzz-fuzzing.so now.
-
- src/Makefile.am | 16 ++++++++++++++++
- test/fuzzing/Makefile.am | 9 ++-------
- test/fuzzing/README | 6 ++----
- 3 files changed, 20 insertions(+), 11 deletions(-)
-
-commit e0082ae60dbd87d433f3b2b9d2bfa64b9a4c3663
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Nov 17 18:42:13 2015 -0800
-
- Move things around
-
- src/hb-private.hh | 22 +++++++++++-----------
- 1 file changed, 11 insertions(+), 11 deletions(-)
-
-commit dde8cc87bd880bd35baf764820f4c85bd0a58696
-Merge: e97835a 167c327
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Nov 17 18:40:10 2015 -0800
-
- Merge pull request #163 from fanc999/msvc.src
-
- Update the sources so they will compile under Visual Studio
-
-commit 167c3271778cd1a8c4433b9d2230901ce17c099e
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date: Mon Nov 9 17:17:56 2015 +0800
-
- Fix build on MSVC >= 2012
-
- Use the DEFINE_ENUM_FLAG_OPERATORS macro in winnt.h on Visual Studio,
- which defines the bitwise operators for the enumerations that we
- want to
- mark as hb_mark_as_flags_t, which will take care of the situation
- on newer
- Visual Studio (>= 2012), where the build breaks with C2057 errors
- as the
- underlying types of the enumerations is not clear to the compiler
- when we
- do a bitwise op within the declaration of the enumerations themselves.
-
- Also disable the C4200 (nonstandard extension used : zero-sized
- array in
- struct/union) and C4800 ('type' : forcing value to bool 'true' or
- 'false'
- (performance warning)) warnings as the C4200 is the intended
- scenario and
- C4800 is harmless but is so far an unavoidable side effect of using
- DEFINE_ENUM_FLAG_OPERATORS.
-
- src/hb-buffer-private.hh | 6 +++---
- src/hb-ot-layout-common-private.hh | 2 +-
- src/hb-ot-layout-private.hh | 4 ++--
- src/hb-ot-map-private.hh | 2 +-
- src/hb-private.hh | 11 +++++++++++
- 5 files changed, 18 insertions(+), 7 deletions(-)
-
-commit 4d27bb87468a1b84387e7ce084e3d92c0fc8f065
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date: Fri Nov 6 14:28:30 2015 +0800
-
- hb-ot-shape-complex-arabic.cc: Fix build on Visual Studio
-
- Visual Studio does not like declaring a enum variable within a for
- statement, so fix the build by declaring the enum before doing the for
- loop.
-
- src/hb-ot-shape-complex-arabic.cc | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit a49e7b7e40127beba25f39ef3c10d7a77e2bb0f0
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date: Tue Nov 3 18:49:34 2015 +0800
-
- MSVC builds: Add fallback implementation for pre-2013 MSVC
-
- Pre-2013 MSVC does not have scalbn() and scalbnf(), which are used
- in the
- utility programs. Add fallback implementations for these, which
- can be
- used when necessary.
-
- util/options.hh | 17 +++++++++++++++++
- 1 file changed, 17 insertions(+)
-
-commit 998e8dda938cfef0146f1bfc4e8973a0e12d7d35
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date: Mon Nov 2 16:55:29 2015 +0800
-
- util: Fix build on Visual Studio
-
- Use the fallback implementation for lround() only on pre-2013 Visual
- Studio, and ensure we are clear about the types of the parameters for
- lround() and scalbnf(), since Visual Studio can be quite picky on
- ambiguous parameter types. Also, use g_ascii_strcasecmp() rather than
- strcasecmp() as we are already using GLib for this code and we are
- assured that g_ascii_strcasemp() is available.
-
- For scalbnf() on pre-2013 Visaul Studio, a fallback implementation is
- needed, but use another forced-included header for those compilers,
- which
- will be added later.
-
- Also use (char)27 on Visual Studio builds as '\e' is not a recognized
- escape sequence, which will do the same thing.
-
- util/ansi-print.cc | 16 +++++++++-------
- util/helper-cairo.cc | 20 ++++++++++----------
- util/options.cc | 2 +-
- 3 files changed, 20 insertions(+), 18 deletions(-)
-
-commit e97835ad43f5c68e8cb29599246cae0f4461d663
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Nov 10 11:37:01 2015 -0800
-
- [util] Fix crash when --output-file is specified but not
- --output-format
-
- util/options.hh | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit d5f0d7c9fb14255388ab616f56e178cb7ca10ec2
-Merge: 04ff23e 529a933
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Nov 7 07:50:58 2015 -0800
-
- Merge pull request #167 from KonstantinRitt/unicode_cp_opt
-
- Micro optimizations to UTF-16 and UTF-32 codecs
-
-commit 04ff23e73d847ab3a5da0e9fac4fbca19aefd284
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Nov 6 16:29:44 2015 -0800
-
- [arabic] Improve stretch length calculation
-
- Err on the side of being too short, than too wide. Reduces chance
- of overlaps with neighboring glyphs.
-
- src/hb-ot-shape-complex-arabic.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 59821ab8b413df3a444c38b80582a5137e364a70
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Nov 6 16:27:44 2015 -0800
-
- [arabic] Don't stretch over cased letters
-
- Addresses
- https://github.com/behdad/harfbuzz/commit/6e6f82b6f3dde0fc6c3c7d991d9ec6cfff57823d#commitcomment-14248516
-
- src/hb-ot-shape-complex-arabic.cc | 24
- +++++++++++++++++++++-
- src/hb-unicode-private.hh | 20
- ------------------
- .../script-syriac/misc/abbreviation-mark.txt | 4 ++--
- 3 files changed, 25 insertions(+), 23 deletions(-)
-
-commit 5337db29af39084d677a63154f404eca0c20cfeb
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Nov 6 16:18:09 2015 -0800
-
- Revert "Don't process lookups if buffer is in error"
-
- This reverts commit f92bd86cc8c11d262d1830c631cb7c63fc9d4bc8.
-
- We don't want to be like cairo, where as soon as there's an error,
- nothing works anymore. So, lets process lookups as long as there's
- no new memory needed. That's also a model that hides fewer bugs.
-
- src/hb-ot-layout.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 529a93312815dff3c2f37f880bf6ccb428bd3da0
-Author: Konstantin Ritt <ritt.ks@gmail.com>
-Date: Sat Nov 7 02:00:04 2015 +0400
-
- Micro optimization to hb_utf16_t and hb_utf32_t ::prev()
-
- Implement reverse lookup instead of re-using next()
-
- src/hb-utf-private.hh | 29 +++++++++++++++++++----------
- 1 file changed, 19 insertions(+), 10 deletions(-)
-
-commit 44ae9be7a29eebd6003cad2fdb90b40512a9c8eb
-Author: Konstantin Ritt <ritt.ks@gmail.com>
-Date: Sat Nov 7 01:58:38 2015 +0400
-
- Nano optimization to hb_utf16_t and hb_utf32_t ::next()
-
- src/hb-utf-private.hh | 17 ++++++-----------
- 1 file changed, 6 insertions(+), 11 deletions(-)
-
-commit a6d7668a954a763a053f8af8edbff4731aa43729
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Nov 6 09:46:54 2015 -0800
-
- [fuzzing] Cap max buffer len at 128
-
- test/fuzzing/Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-commit f1c4adbcd3f6275e81e118ddadc9396f82daeccf
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Nov 6 09:46:05 2015 -0800
-
- Fix typo
-
- src/hb-buffer-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 68b507a3c3c62c28c38e13fee733702bb703b6ca
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Nov 6 00:09:26 2015 -0800
-
- Make sure we make progress in OOM situations
-
- src/hb-buffer-private.hh | 7 ++-----
- src/hb-buffer.cc | 31 +++++++++++++++++++++++--------
- 2 files changed, 25 insertions(+), 13 deletions(-)
-
-commit 5a7eb5d4d862f402136044c19ead87ad098bd78f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Nov 6 00:01:24 2015 -0800
-
- [fuzzing] Add test case for OOM
-
- From https://github.com/behdad/harfbuzz/issues/161
-
- .../sha1sum/3511ff5c1647150595846ac414c595cccac34f18.ttf | Bin 0 ->
- 1483 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 2 +-
- test/shaping/tests/fuzzed.tests | 1 +
- 3 files changed, 2 insertions(+), 1 deletion(-)
-
-commit f0599db761d7fc2d585d86e757a797f75ebc7499
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 5 23:52:41 2015 -0800
-
- Fix hang in OOM situations
-
- Fixes https://github.com/behdad/harfbuzz/issues/161
-
- src/hb-buffer-private.hh | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-commit f92bd86cc8c11d262d1830c631cb7c63fc9d4bc8
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 5 23:52:29 2015 -0800
-
- Don't process lookups if buffer is in error
-
- src/hb-ot-layout.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 4301703bddb63a01651a0d58474bb15ac0ebbcf6
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 5 23:44:59 2015 -0800
-
- Limit buffer max size growth
-
- https://github.com/behdad/harfbuzz/issues/161
-
- src/hb-buffer-private.hh | 11 +++++++++++
- src/hb-buffer.cc | 8 ++++++++
- src/hb-ot-shape.cc | 6 ++++++
- test/fuzzing/Makefile.am | 2 ++
- 4 files changed, 27 insertions(+)
-
-commit 19300183a6f0bac0d23f7a994b40a51e9c90d6e1
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 5 23:08:50 2015 -0800
-
- [fuzzing] Add build system
-
- configure.ac | 1 +
- test/Makefile.am | 2 +-
- test/fuzzing/Makefile.am | 44
- ++++++++++++++++++++++++++++++++++++++++++++
- test/fuzzing/README | 2 ++
- test/fuzzing/hb-fuzzer.cc | 4 ++--
- 5 files changed, 50 insertions(+), 3 deletions(-)
-
-commit 9c9ad214af43685b00f6d8493b7807d6607d4e2d
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 5 22:50:52 2015 -0800
-
- [fuzzer] Add README
-
- https://github.com/behdad/harfbuzz/issues/139#issuecomment-154202645
-
- test/fuzzing/README | 21 +++++++++++++++++++++
- 1 file changed, 21 insertions(+)
-
-commit 6e6f82b6f3dde0fc6c3c7d991d9ec6cfff57823d
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 5 17:29:03 2015 -0800
-
- Implement SYRIAC ABBREVIATION MARK with 'stch' feature
-
- The feature is enabled for any character in the Arabic shaper.
- We should experiment with using it for Arabic subtending marks.
- Though, that has a directionality problem as well, since those
- are used with digits...
-
- Fixes https://github.com/behdad/harfbuzz/issues/141
-
- src/hb-ot-shape-complex-arabic.cc | 219
- ++++++++++++++++++++-
- src/hb-unicode-private.hh | 19 ++
- .../shaper-arabic/script-syriac/misc/MANIFEST | 1 +
- .../script-syriac/misc/abbreviation-mark.txt | 11 ++
- 4 files changed, 244 insertions(+), 6 deletions(-)
-
-commit c743ec5886a1f6d57de26da33a770a8706be83d6
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 5 17:33:57 2015 -0800
-
- [ft] Fix extents with negative scales
-
- Fixes https://github.com/behdad/harfbuzz/issues/162
-
- src/hb-ft.cc | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-commit 73fec3992acb492829bde1d885f1ebeed8dcc133
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 5 15:22:18 2015 -0800
-
- Reserve a few scratch-flags bits for complex shapers
-
- src/hb-buffer-private.hh | 5 +++++
- 1 file changed, 5 insertions(+)
-
-commit 136863371c1402769426d892aef1b92f9ca1a25e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 5 13:24:15 2015 -0800
-
- Add new shaper method postprocess_glyphs()
-
- Unused currently. To be used for Syriac stretch implementation.
-
- https://github.com/behdad/harfbuzz/issues/141
-
- src/hb-ot-shape-complex-arabic.cc | 3 ++-
- src/hb-ot-shape-complex-default.cc | 1 +
- src/hb-ot-shape-complex-hangul.cc | 7 ++++---
- src/hb-ot-shape-complex-hebrew.cc | 1 +
- src/hb-ot-shape-complex-indic.cc | 1 +
- src/hb-ot-shape-complex-myanmar.cc | 2 ++
- src/hb-ot-shape-complex-private.hh | 9 +++++++++
- src/hb-ot-shape-complex-thai.cc | 1 +
- src/hb-ot-shape-complex-tibetan.cc | 1 +
- src/hb-ot-shape-complex-use.cc | 1 +
- src/hb-ot-shape.cc | 9 ++++++---
- 11 files changed, 29 insertions(+), 7 deletions(-)
-
-commit 6c0ebd02c99e7536975ba7194832a1f33abd7faf
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Nov 5 11:37:48 2015 -0800
-
- [util] If font has color, generate PNG with color
-
- util/helper-cairo.cc | 33 ++++++++++++++++++++++++++-------
- util/helper-cairo.hh | 6 +++++-
- util/view-cairo.cc | 7 ++++++-
- 3 files changed, 37 insertions(+), 9 deletions(-)
-
-commit e95eb23a4ee920eab1e2f4eec9cf490bb431452c
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 22:55:11 2015 -0800
-
- Don't try zeroing marks by GDEF if there are no non-ASCII
-
- This one is a hack, but should be ok.
-
- src/hb-ot-shape.cc | 4 ++++
- 1 file changed, 4 insertions(+)
-
-commit 7fa54ed75aa30ae1d6ee9136ccb83b630c24fb65
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 22:54:49 2015 -0800
-
- Don't try zeroing mark attachments by Unicode if there's no non-ASCII
-
- src/hb-ot-shape.cc | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit 550bd14d2b21ec2a2b509ff42f4df4341dbf2d46
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 22:58:58 2015 -0800
-
- Actually commit changes for previous commit
-
- src/hb-buffer-private.hh | 2 ++
- src/hb-ot-layout-gpos-table.hh | 15 ++++++++-------
- 2 files changed, 10 insertions(+), 7 deletions(-)
-
-commit ff31b3c1b8a2a21b57dba37eb5bb5db0579e0640
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 22:42:41 2015 -0800
-
- Skip GPOS cursive / attachment adjustmnent if none happened
-
- I'm starting to really like how free these new scratch_flags are.
-
- src/hb-ot-layout-gpos-table.hh | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit 0f407325f6923db11d332585e8250e3646cb74d6
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 22:28:44 2015 -0800
-
- Minor
-
- src/hb-ot-shape.cc | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-commit 497a6c2071cd0638e4c6af07621d01335fd963a9
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 22:24:19 2015 -0800
-
- Skip forming clusters if text is all ASCII
-
- src/hb-ot-shape.cc | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit 28de104f15b80df4b678267c4488b7d09a42720c
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 22:00:25 2015 -0800
-
- Move variable-sized struct member to end
-
- Hopefully makes clang build happy
-
- src/hb-font-private.hh | 21 ++++++++++-----------
- src/hb-font.cc | 20 ++++++++++++++++++++
- 2 files changed, 30 insertions(+), 11 deletions(-)
-
-commit 5bc28b5f688ee90d103d052e98bc15d6e0e7e0b1
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 21:53:16 2015 -0800
-
- Optimize positioning for when h_origin is nil
-
- src/hb-ot-shape.cc | 38 ++++++++++++++++++++------------------
- 1 file changed, 20 insertions(+), 18 deletions(-)
-
-commit 762770c964f9f0591bf4c44427f73ea3e1c51733
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 21:42:55 2015 -0800
-
- Add font->has_...() to check for individual nil font funcs
-
- Hopefully this wouldn't break any compiler. There was some magic
- moments to getting this to compile...
-
- src/hb-font-private.hh | 19 +++++++++++++++++--
- src/hb-font.cc | 7 +++++++
- 2 files changed, 24 insertions(+), 2 deletions(-)
-
-commit 88e9a9bcae61421d9dd65715d25e5f20b2847c03
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 21:16:26 2015 -0800
-
- Minor reshaping of hb_font_funcs_t implementation
-
- In anticipation of further changes. No functional changes.
-
- src/hb-font-private.hh | 80
- ++++++++++++++++++++++++++------------------------
- src/hb-font.cc | 4 +--
- 2 files changed, 43 insertions(+), 41 deletions(-)
-
-commit a6a7715bac8b0c8f5473b84bc649c315ad4d2d51
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 20:51:21 2015 -0800
-
- Comments
-
- src/hb-font-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 6c48ec830ffac00a920d047ed77acd1b05549074
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 20:47:42 2015 -0800
-
- [ot] Remove font funcs that do nothing
-
- src/hb-ot-font.cc | 95
- ++++---------------------------------------------------
- 1 file changed, 7 insertions(+), 88 deletions(-)
-
-commit 75ea2daa1d9bbe235cd4a8570efb1913d58c3c62
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 20:43:59 2015 -0800
-
- [ot] Port ot font funcs to allocated object
-
- src/hb-ot-font.cc | 47 ++++++++++++++++++++++++++++++++++++++---------
- 1 file changed, 38 insertions(+), 9 deletions(-)
-
-commit 44f82750807475aa5b16099ccccd917d488df703
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 20:40:05 2015 -0800
-
- [ft] Remove font funcs that do nothing
-
- src/hb-ft.cc | 29 ++++-------------------------
- 1 file changed, 4 insertions(+), 25 deletions(-)
-
-commit 7918c261efd283e0428ce7836e9e42768a6aa05c
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 20:37:49 2015 -0800
-
- [ft] Port ft font funcs to allocated object
-
- src/hb-ft.cc | 45 ++++++++++++++++++++++++++++++++++++---------
- 1 file changed, 36 insertions(+), 9 deletions(-)
-
-commit da29b43794cfa3f9a602c34b33c5d8a9c36f87b5
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 20:22:44 2015 -0800
-
- Separate nil font-funcs from parent-peeking font-funcs
-
- API change: all fonts created with hb_font_create() now inherit from
- (ie have parent) hb_font_get_empty().
-
- src/hb-font.cc | 211
- +++++++++++++++++++++++++++++++++++----------------
- test/api/test-font.c | 2 +-
- 2 files changed, 145 insertions(+), 68 deletions(-)
-
-commit bee901b38ef3c26a04f69c299c8d5e028a0090e9
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 19:28:17 2015 -0800
-
- Optimize positioning direction calculations
-
- It makes the binary smaller AND faster. Yumm!
-
- src/hb-font-private.hh | 40 +++++++++++++++++++++++++++++++++++++++
- src/hb-ot-shape.cc | 51
- +++++++++++++++++++++++++++-----------------------
- 2 files changed, 68 insertions(+), 23 deletions(-)
-
-commit e3e4bb011ae1a2f1ba05e7ea450595b185304bec
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 18:58:02 2015 -0800
-
- Don't do fractions if buffer is ASCII-only
-
- src/hb-buffer-private.hh | 5 +++--
- src/hb-ot-layout-private.hh | 1 +
- src/hb-ot-shape.cc | 3 ++-
- 3 files changed, 6 insertions(+), 3 deletions(-)
-
-commit 6986208ba3b395534f4c7bcfa51df6bf9038f717
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 18:46:22 2015 -0800
-
- Optimize runs without Default_Ignorable's
-
- Now that we have a buffer-wide scratch flags facility, use it to
- optimize away a few passes.
-
- src/hb-buffer-private.hh | 3 ++-
- src/hb-ot-layout-private.hh | 4 +++-
- src/hb-ot-shape-normalize.cc | 4 ++--
- src/hb-ot-shape.cc | 10 ++++++----
- src/hb-private.hh | 3 +++
- 5 files changed, 16 insertions(+), 8 deletions(-)
-
-commit 14c2de321826c36037adde859ccca3e2011325a9
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 18:00:57 2015 -0800
-
- Limit max edits during sanitize to 8
-
- Used to be 100. If a tabe needs more than one or two edits, it's
- probably completely bogus...
-
- Might help with speeding up fuzzing for
- https://github.com/behdad/harfbuzz/issues/157
-
- src/hb-open-type-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 9cbc39aef962a95b0eba32c24ff9c415d1316d56
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 18:00:53 2015 -0800
-
- Minor
-
- src/hb-ot-shape-normalize.cc | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit 52e6c4e15893ed1cb0997795912a07b3e446b65a
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 17:45:06 2015 -0800
-
- If font doesn't support U+2011, fall back to U+2010
-
- Test passes now.
-
- src/hb-ot-shape-normalize.cc | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-commit 75483aafa6ad02d6391712d082d093823edcd758
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 17:43:36 2015 -0800
-
- Untangle if/else waterfall
-
- src/hb-ot-shape-normalize.cc | 40
- +++++++++++++++++++++++++++-------------
- 1 file changed, 27 insertions(+), 13 deletions(-)
-
-commit 04fd8517f85ae9aa05b44f25578d2b19abfef7cb
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 17:38:22 2015 -0800
-
- Add tests for hyphen fallback
-
- U+2011 is <noBreak> equivaent of U+2010, so we should do the fallback
- for it. Currently fails.
-
- test/shaping/Makefile.am | 1 +
- .../sha1sum/1c04a16f32a39c26c851b7fc014d2e8d298ba2b8.ttf | Bin 0 ->
- 820 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 2 ++
- test/shaping/tests/MANIFEST | 1 +
- test/shaping/tests/hyphens.tests | 2 ++
- 5 files changed, 6 insertions(+)
-
-commit 550417117da7e14457a11f49a20145311f58587b
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 17:37:30 2015 -0800
-
- [test] Drop hintings when subsetting fonts to record
-
- test/shaping/record-test.sh | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 49ef630936325b2e56a870fcef9aa8473a8f8526
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 17:27:07 2015 -0800
-
- Adjust the width of various spaces if font does not cover them
-
- See discussion here:
- https://github.com/behdad/harfbuzz/commit/81ef4f407d9c7bd98cf62cef951dc538b13442eb
-
- There's no way to disable this fallback, but I don't think it would
- be needed. Let's hope for the best!
-
- Fixes https://github.com/behdad/harfbuzz/issues/153
-
- src/hb-buffer-private.hh | 7 ++++
- src/hb-buffer.cc | 2 ++
- src/hb-ot-shape-fallback-private.hh | 4 +++
- src/hb-ot-shape-fallback.cc | 67
- +++++++++++++++++++++++++++++++++++++
- src/hb-ot-shape-normalize.cc | 1 +
- src/hb-ot-shape.cc | 3 ++
- src/hb-unicode-private.hh | 56 +++++++++++++++++--------------
- test/shaping/tests/spaces.tests | 24 ++++++-------
- 8 files changed, 126 insertions(+), 38 deletions(-)
-
-commit aa7044de0ceacd71cab19212d266c3a66c03b41e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 16:25:57 2015 -0800
-
- Generalize flags types
-
- src/hb-buffer-private.hh | 3 +++
- src/hb-ot-layout-common-private.hh | 5 +++++
- src/hb-ot-layout-private.hh | 8 +++++---
- src/hb-ot-map-private.hh | 16 +---------------
- src/hb-ot-shape.cc | 2 +-
- src/hb-private.hh | 14 ++++++++++++++
- 6 files changed, 29 insertions(+), 19 deletions(-)
-
-commit 7793aad946e09b53523b30d57de85abd1d15f8b6
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 14:48:46 2015 -0800
-
- Normalize various spaces to space if font doesn't support
-
- This resurrects the space fallback feature, after I disabled
- the compatibility decomposition. Now I can release HarfBuzz
- again without breaking Pango!
-
- It also remembers which space character it was, such that later
- on we can approximate the width of this particular space
- character. That part is not implemented yet.
-
- We normalize all GC=Zs chars except for U+1680 OGHA SPACE MARK,
- which is better left alone.
-
- src/hb-ot-layout-private.hh | 47
- +++------------------
- src/hb-ot-shape-normalize.cc | 12 +++++-
- src/hb-unicode-private.hh | 40
- ++++++++++++++++++
- test/shaping/Makefile.am | 1 +
- .../1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf | Bin 0 -> 316 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 1 +
- test/shaping/tests/MANIFEST | 1 +
- test/shaping/tests/spaces.tests | 17 ++++++++
- 8 files changed, 76 insertions(+), 43 deletions(-)
-
-commit 8b3c7f9ede77052225cff8495d660860bf9c7629
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 15:30:48 2015 -0800
-
- [test] Support recording multiple lines of text in record-test.sh
-
- test/shaping/record-test.sh | 15 +++++++++++++--
- 1 file changed, 13 insertions(+), 2 deletions(-)
-
-commit 85658394809fe0593ab5dfb30fd96118765c7dc5
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 14:46:52 2015 -0800
-
- Protect against possible invalid-memory access after OOM
-
- src/hb-buffer-private.hh | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 4cc80bed25450af3d84a30ea417fa9275b15e014
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 14:46:10 2015 -0800
-
- Fix typo!
-
- Ouch! Fortunately that function was unused.
-
- src/hb-buffer-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 9ac4b9656dd78ffd129bc3d560a92e2692bc3058
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 14:18:39 2015 -0800
-
- Add Unicode space category
-
- Unused so far.
-
- src/hb-ot-layout-private.hh | 78
- +++++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 76 insertions(+), 2 deletions(-)
-
-commit 8249ec3f86510fd24462ce71ed64a6978f0ade17
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 13:26:17 2015 -0800
-
- Make top-byte of unicode_props available to be used differently per-GC
-
- src/hb-ot-layout-private.hh | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-commit cc5d3a33882b52f906ee4346707700f5e846d2ac
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 13:21:25 2015 -0800
-
- Towards using top-byte of unicode-props for more things
-
- src/hb-ot-layout-gsubgpos-private.hh | 1 -
- src/hb-ot-layout-private.hh | 3 ++-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 2f38dde5a1ea5459789fabaee661cae9235d204e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Nov 4 13:17:33 2015 -0800
-
- Add _hb_glyph_info_is_unicode_mark()
-
- Unused right now.
-
- src/hb-ot-layout-private.hh | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-commit 90d75f93bb85aeb627c4e6bb9e4cbd75895c99f7
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Nov 3 12:58:12 2015 -0800
-
- Tighten ccc-setting a bit and document it
-
- src/hb-ot-layout-private.hh | 12 +++++++++++-
- src/hb-unicode-private.hh | 5 +++++
- 2 files changed, 16 insertions(+), 1 deletion(-)
-
-commit 2f0dfd43cdc2259e6117704f8077ab6951c761e5
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Nov 3 12:28:34 2015 -0800
-
- Fix test expectation
-
- test/shaping/tests/fuzzed.tests | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit df698f3299d92867e3305715f675b2621c316acd
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Nov 3 12:15:12 2015 -0800
-
- [ot-font] Fix hmtx table length checking, *again*
-
- Exactly the same problem that I fixed in
- 63ef0b41dc48d6112d1918c1b1de9de8ea90adb5
-
- I rewrote the table checking yesterday in
- 67f8821fb25d9bd55719f5e29a582ae1af4b02b3
- and introduced the exact same issue again. :(
- Good thing we have ongoing fuzzing going now. Was discovered
- immediately by libFuzzer. Thanks kcc!
-
- https://github.com/behdad/harfbuzz/issues/139#issuecomment-153449473
- Fixes https://github.com/behdad/harfbuzz/issues/156
-
- src/hb-ot-font.cc | 4 ++--
- .../sha1sum/8240789f6d12d4cfc4b5e8e6f246c3701bcf861f.ttf | Bin 0 ->
- 633 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 1 +
- test/shaping/tests/fuzzed.tests | 1 +
- 4 files changed, 4 insertions(+), 2 deletions(-)
-
-commit 3530cc2d7c3b7102902cb0e38b0bf9f46188078d
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Nov 3 11:34:47 2015 -0800
-
- [util] Fix option-parsing leaks
-
- util/helper-cairo.cc | 7 +++++--
- util/main-font-text.hh | 22 ++++++++++++++++++---
- util/options.cc | 21 ++++++++++----------
- util/options.hh | 53
- +++++++++++++++++++++++++++++++++-----------------
- 4 files changed, 70 insertions(+), 33 deletions(-)
-
-commit 642135f3b2d6d6eb800153c76c4718239733c0e6
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Nov 3 11:26:34 2015 -0800
-
- [util] In --debug mode, duplicate font data
-
- This has the effect that the font data will end up in a memory
- section malloc()ed exactly to its size. This gives us better
- valgrind detection of out-of-bounds access.
-
- Previously, the font data was placed in a mmap()ed section or
- GString-allocated area, which didn't have proper protections
- at the end when running under valgrind.
-
- util/options.cc | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit ed2024ef93ac3af214082016e5aa8c14db9d7515
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Nov 2 17:58:12 2015 -0800
-
- [perf] Micro-optimize
-
- src/hb-ot-layout-private.hh | 23 ++++++++++++++---------
- 1 file changed, 14 insertions(+), 9 deletions(-)
-
-commit 76a5310a830c7ae12037b768c5043bef0ff733a0
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Nov 2 17:52:45 2015 -0800
-
- Remove irrelevant comment
-
- I tried moving the is_default_ignorable() function to an INTERNAL
- function. That made the binary size grow by 5k AND things got a
- tad bit slower!
-
- src/hb-ot-layout-private.hh | 1 -
- 1 file changed, 1 deletion(-)
-
-commit 8259669fbd1b070fc02287325894caf1bc4d590e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Nov 2 17:44:05 2015 -0800
-
- Minor
-
- src/hb-ot-layout-gsubgpos-private.hh | 2 +-
- src/hb-ot-shape-complex-thai.cc | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 9382c471eabce8d36d3a73c97499ab60af422716
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Nov 2 17:36:51 2015 -0800
-
- Combine unicode_props0/1 into a uint16
-
- Slightly faster. In prep for more changes.
-
- src/hb-ot-layout-private.hh | 55
- ++++++++++++++++++++++++---------------------
- 1 file changed, 29 insertions(+), 26 deletions(-)
-
-commit 71277185454482cff9b0c10b85c416eb4d6e0ed9
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Nov 2 17:27:48 2015 -0800
-
- [perf] Only call combining_class() for marks
-
- Saves some time. Also preparing for reusing the ccc byte for
- other stuff.
-
- src/hb-ot-layout-private.hh | 14 ++++++++------
- 1 file changed, 8 insertions(+), 6 deletions(-)
-
-commit 5ba450407b9d9856453e63a815499da8721ff6a7
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Nov 2 15:43:08 2015 -0800
-
- Make max context-length and max nesting level configurable
-
- ...at compile time.
-
- src/hb-ot-layout-common-private.hh | 10 ++++++++--
- src/hb-ot-layout-gsub-table.hh | 4 ++--
- src/hb-ot-layout-gsubgpos-private.hh | 20 ++++++++++----------
- 3 files changed, 20 insertions(+), 14 deletions(-)
-
-commit 67f8821fb25d9bd55719f5e29a582ae1af4b02b3
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Nov 2 15:37:29 2015 -0800
-
- [ot] Make bad-hmtx handling match FreeType
-
- Also route fuzzing-related tests through hb-ot-font, to reduce
- dependency
- on FreeType behavior for badly-broken fonts. Fixes failing test with
- FreeType master.
-
- src/hb-ot-font.cc | 24 ++++++++++++++----------
- test/shaping/tests/fuzzed.tests | 10 +++++-----
- 2 files changed, 19 insertions(+), 15 deletions(-)
-
-commit 672ca3b4e65a75fb3a418ec5d117ad242a98acbb
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Oct 26 14:05:05 2015 -0700
-
- Use templates for making sure expression is constant
-
- src/hb-private.hh | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit 5c8174eda32c08187bc2ed40eefa1017f5b40668
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Oct 21 18:51:40 2015 -0200
-
- Update comments for removal of compat decompositions
-
- src/hb-ot-shape-normalize.cc | 16 ++--------------
- 1 file changed, 2 insertions(+), 14 deletions(-)
-
-commit f6799700404c49ae0a6018fd51be19551c76768a
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Oct 21 17:20:55 2015 -0200
-
- Disable compatibility decomposition usage during normalization
-
- Fixes https://github.com/behdad/harfbuzz/issues/152
-
- src/hb-ot-shape-normalize.cc | 24 ------------------------
- 1 file changed, 24 deletions(-)
-
-commit ce889189c1f8ef5b400a17f623dcb8b935d1102b
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Oct 21 11:23:12 2015 -0200
-
- Fix two more -Wshadow warnings
-
- https://bugzilla.mozilla.org/show_bug.cgi?id=1215894
-
- src/hb-open-type-private.hh | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-commit 4a6b1eedbb0044b57505eea65a329d2dc4f9f917
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Oct 21 11:20:55 2015 -0200
-
- Fix one more -Wshadow warning
-
- https://bugzilla.mozilla.org/show_bug.cgi?id=1215894
-
- src/hb-ot-layout-gsubgpos-private.hh | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit 6f932bc8f9045b224613a617af2b4f3450c79467
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Oct 21 11:16:49 2015 -0200
-
- Fix a few more -Wshadow-local warnings
-
- https://bugzilla.mozilla.org/show_bug.cgi?id=1215894
-
- src/hb-ot-shape-complex-indic.cc | 10 +++++-----
- src/hb-ot-shape-complex-myanmar.cc | 10 +++++-----
- src/hb-ot-shape-complex-use.cc | 10 +++++-----
- 3 files changed, 15 insertions(+), 15 deletions(-)
-
-commit b90cb366d7723c28758c6b75a0770613fbb5456e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Oct 21 11:13:21 2015 -0200
-
- Fix one -Wshadow-compatible-local warning
-
- From https://bugzilla.mozilla.org/show_bug.cgi?id=1215894
-
- src/hb-ot-shape-complex-indic.cc | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 50e5750bd8670b4cf4463471a2348d4c99c9d054
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Oct 21 11:10:10 2015 -0200
-
- Avoid unnecessary cast to 64-bit
-
- Fixes https://github.com/behdad/harfbuzz/issues/146
-
- Or I think it should.
-
- src/hb-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 305d2fbf5a2db51447c8ed894a48a88896930673
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Oct 21 11:04:28 2015 -0200
-
- Add HB_FALLTHROUGH
-
- Borrowed from https://bugzilla.mozilla.org/show_bug.cgi?id=1215411
-
- src/hb-ot-shape-complex-indic.cc | 2 +-
- src/hb-ot-shape-complex-thai.cc | 2 +-
- src/hb-ot-shape-fallback.cc | 4 +++-
- src/hb-private.hh | 30 ++++++++++++++++++++++++++++++
- 4 files changed, 35 insertions(+), 3 deletions(-)
-
-commit f35b3e931ddacd075c5d0810e9b17de07b232ee2
-Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Fri Sep 11 09:48:12 2015 +0430
-
- Add a prototype of DirectWrite as a shaping backend
-
- src/hb-directwrite.cc | 827
- ++++++++++++++++++++++++++++++++++++++++++++++++++
- src/hb-directwrite.h | 34 +++
- src/hb-shaper-list.hh | 3 +
- 3 files changed, 864 insertions(+)
-
-commit 6486e3755482563ecd89aeb3f8348ed190945e26
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Oct 20 16:39:41 2015 -0200
-
- Fix typo
-
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 753ea7b90904c951c199861409458bea182abb37
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Oct 20 15:21:18 2015 -0200
-
- Add BUILD.md to dist
-
- Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 5d7a30fde09320c2c62c7c73570ce3f2e298eba6
-Merge: 904b0dc 2fb95a0
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Oct 20 15:19:41 2015 -0200
-
- Merge pull request #148 from ebraminio/inst
-
- Add BUILD.md based on harfbuzz.org docs
-
-commit 904b0dc3811464cf61dc9457664de95ee4f61a86
-Merge: 86cadc2 ba096bc
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Oct 19 16:59:43 2015 -0200
-
- Merge pull request #147 from ebraminio/dockerci
-
- [ci] change to docker infrastructure
-
-commit ba096bcc28ca80e2096e0a15191848fcd175e395
-Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Mon Oct 19 21:41:01 2015 +0330
-
- [ci] change to docker infrastructure
-
- .travis.yml | 24 ++++++++++++++++--------
- 1 file changed, 16 insertions(+), 8 deletions(-)
-
-commit 2fb95a0c9d2cb8b03b7c158706d6b0e41283a6df
-Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Mon Oct 19 22:02:12 2015 +0330
-
- Add BUILD.md based on harfbuzz.org docs
-
- BUILD.md | 25 +++++++++++++++++++++++++
- 1 file changed, 25 insertions(+)
-
-commit 86cadc2cd4171050e9d74306b76c42f6ec74b861
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Oct 15 20:25:29 2015 -0300
-
- 1.0.6
-
- NEWS | 13 +++++++++++++
- configure.ac | 2 +-
- 2 files changed, 14 insertions(+), 1 deletion(-)
-
-commit ca97ea7aa2cb7186f432aaba76f4f151aa90c1d0
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Oct 15 20:20:22 2015 -0300
-
- [ft] Revert change-of-behavior of hb_ft_font_create() introduced
- in 1.0.5
-
- The default FreeType load flags where changed from FT_LOAD_NO_HINTING
- to FT_LOAD_DEFAULT in 2a9627c5641cd000e2adff0e42a0dc687b53ec70.
- This is crashing HarfBuzz-enabled FreeType as I suppose it causes
- infinite recursion between HB and FT autohinter...
-
- Revert the behavior change.
-
- Fixes https://github.com/behdad/harfbuzz/issues/143
-
- src/hb-ft.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 338ffec9e4a5819f2be21c3a320a567378c977b1
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Oct 15 12:55:57 2015 -0300
-
- Add tests for a couple of fixed issues found by libFuzzer
-
- From:
- https://github.com/behdad/harfbuzz/issues/139#issuecomment-147616887
- https://github.com/behdad/harfbuzz/issues/139#issuecomment-148289957
-
- .../sha1sum/375d6ae32a3cbe52fbf81a4e5777e3377675d5a3.ttf | Bin 0 ->
- 1024 bytes
- .../sha1sum/641bd9db850193064d17575053ae2bf8ec149ddc.ttf | Bin 0 ->
- 305 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 2 ++
- test/shaping/tests/fuzzed.tests | 2 ++
- 4 files changed, 4 insertions(+)
-
-commit 63ef0b41dc48d6112d1918c1b1de9de8ea90adb5
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Oct 15 12:47:22 2015 -0300
-
- [ot-font] Fix hmtx wrong table length check
-
- Discovered by libFuzzer. Ouch!
-
- https://github.com/behdad/harfbuzz/issues/139#issuecomment-148289957
-
- src/hb-ot-font.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 613e630617074eb9b62b794cc37c9b42a7fb079b
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Oct 13 23:33:28 2015 -0300
-
- Reduce max nesting level from 8 to 6
-
- We probably should implement better system to catch cyclic lookups.
- But for now, this speeds up worst case behavior with broken fonts
- considerably without compromising legitimate usecases.
-
- https://github.com/behdad/harfbuzz/issues/139#issuecomment-147788447
-
- src/hb-ot-layout-common-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit ab170529246ad80830bef2b3c8b48e9a8d2b7483
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Oct 13 10:55:33 2015 -0300
-
- 1.0.5
-
- NEWS | 24 ++++++++++++++++++++++++
- configure.ac | 2 +-
- 2 files changed, 25 insertions(+), 1 deletion(-)
-
-commit ed13e2ce509408f849255be1d3cc3dbd7dbb3ba2
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Oct 13 10:32:56 2015 -0300
-
- [ot-font] Fix leak
-
- https://github.com/behdad/harfbuzz/issues/139#issuecomment-147616887
-
- src/hb-ot-font.cc | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 55db94be2b754ba9b9121f09abcf8496c798affc
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Oct 13 00:33:59 2015 -0400
-
- Add test for previous commit
-
- .../sha1sum/0509e80afb379d16560e9e47bdd7d888bebdebc6.ttf | Bin 0 ->
- 61 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 1 +
- test/shaping/tests/fuzzed.tests | 1 +
- 3 files changed, 2 insertions(+)
-
-commit f96664974774bfeb237a7274f512f64aaafb201e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Oct 13 00:30:50 2015 -0400
-
- Fix another memory access issue discovered by libFuzzer
-
- Fixes
- https://github.com/behdad/harfbuzz/issues/139#issuecomment-146984679
-
- src/hb-ot-layout-gpos-table.hh | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-commit c1a5dc46c2231f7b62421e06b9766ccfebaf3ef5
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Oct 12 17:39:52 2015 -0400
-
- [fuzz] Add fuzzing script from kcc@
-
- https://github.com/behdad/harfbuzz/issues/139
-
- test/fuzzing/hb-fuzzer.cc | 47
- +++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 47 insertions(+)
-
-commit cc6ea308d4c99b9dd6d625fa3a9b0ef62fa2614f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Oct 12 17:21:52 2015 -0400
-
- Extern "C" custom-allocator declerations
-
- src/hb-private.hh | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-commit 98c6fccc00062ead7a86892dd059aa13d266b981
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sun Oct 11 21:41:04 2015 -0400
-
- Add test for ee9b0b6cb5fdb08671ab064f26c299135f828260
-
- .../sha1sum/5a5daf5eb5a4db77a2baa3ad9c7a6ed6e0655fa8.ttf | Bin 0 ->
- 61 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 1 +
- test/shaping/tests/fuzzed.tests | 1 +
- 3 files changed, 2 insertions(+)
-
-commit 50f489a0a013fc589626bb532a9f64f50bb41f58
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sun Oct 11 20:59:29 2015 -0400
-
- Typo
-
- src/hb-font-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit ee9b0b6cb5fdb08671ab064f26c299135f828260
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Oct 9 14:23:15 2015 -0400
-
- Fix another sanitize bug
-
- Also discovered by "libFuzzer".
-
- src/hb-open-type-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 34379b49e6922b86c15ee62f7fe3bf016cdc2514
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Oct 9 12:34:02 2015 -0400
-
- Add test for previous fix
-
- test/shaping/Makefile.am | 1 +
- .../sha1sum/1a6f1687b7a221f9f2c834b0b360d3c8463b6daf.ttf | Bin 0 ->
- 64 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 1 +
- test/shaping/tests/MANIFEST | 1 +
- test/shaping/tests/fuzzed.tests | 1 +
- 5 files changed, 4 insertions(+)
-
-commit f396fbb000dc1c8acddbf6a16e193b328c5e551e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Oct 9 12:25:55 2015 -0400
-
- Fix return value of sanitize when subformat is not readable
-
- This is a fix on top of the previous issue fixed in
- c917965b9e6fe2b21ed6c51559673288fa3af4b7.
-
- This was caught by "libFuzzer" testing.
-
- src/hb-open-type-private.hh | 2 ++
- src/hb-ot-layout-gpos-table.hh | 15 +++++++--------
- src/hb-ot-layout-gsub-table.hh | 13 ++++++-------
- src/hb-ot-layout-gsubgpos-private.hh | 8 ++++----
- 4 files changed, 19 insertions(+), 19 deletions(-)
-
-commit 77a1a2bc18e7b04d4e352a8777ccce345b2f8659
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Oct 9 12:20:58 2015 -0400
-
- Add hb_dispatch_context_t
-
- src/hb-open-type-private.hh | 26 ++++++++++++++++++++++----
- src/hb-ot-layout-gsubgpos-private.hh | 36
- ++++++++++++------------------------
- src/hb-ot-layout.cc | 8 +++-----
- 3 files changed, 37 insertions(+), 33 deletions(-)
-
-commit 3e905e396bcd745bda88e751998a76556c5cb8c6
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Oct 8 12:51:02 2015 -0400
-
- Add hb_font_set_parent()
-
- No reason to not have it. Makes life easier later.
- We (hb-ft, hb-ot-font, etc) can use this API to inject new
- parent into a font...
-
- src/hb-font.cc | 26 ++++++++++++++++++++++++++
- src/hb-font.h | 4 ++++
- test/api/test-font.c | 12 ++++++++++++
- 3 files changed, 42 insertions(+)
-
-commit edeb3dabf4a589d67c3f1da7ba43a74e4d3a9afd
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Oct 8 12:47:15 2015 -0400
-
- [ft] Add version for new API
-
- src/hb-ft.cc | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
-commit 2a9627c5641cd000e2adff0e42a0dc687b53ec70
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Oct 7 17:33:20 2015 -0400
-
- [ft] API: Add hb_font_[sg]et_load_flags() API
-
- This changes the default load_flags of fonts created using
- hb_ft_font_create() from NO_HINTING to DEFAULT. Hope that doesn't
- break too much client code.
-
- Code calling hb_ft_font_set_funcs() is unaffected.
-
- src/hb-ft.cc | 163
- +++++++++++++++++++++++++++++++++++++++--------------------
- src/hb-ft.h | 13 +++--
- 2 files changed, 118 insertions(+), 58 deletions(-)
-
-commit 3224a594dcf2164b5585b4ccba34f244af3f61b9
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Oct 7 17:33:02 2015 -0400
-
- Minor
-
- src/hb-ot-font.cc | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-commit 52b418555b62a3b25399f202c1fa72ab7288c224
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Oct 3 13:20:55 2015 +0100
-
- Allow compiling with custom allocators
-
- User can define hb_malloc_impl, etc, to name of custom allocator
- functions
- that have the same signature as malloc.
-
- src/hb-private.hh | 17 +++++++++++++++++
- 1 file changed, 17 insertions(+)
-
-commit 88da7bba9fa4665b33f5bfcd45add7443097eaf3
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Oct 2 14:38:20 2015 +0100
-
- Default font scale to face upem
-
- Makes for a better default and avoids nasty inheritance issues.
- See mailing list thread "Default hb_font_t scale".
-
- src/hb-font.cc | 2 ++
- test/api/test-font.c | 13 ++++++++-----
- 2 files changed, 10 insertions(+), 5 deletions(-)
-
-commit 1866e17114b41d565eb066e7d9393c2ff3e0a12b
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Oct 2 14:21:29 2015 +0100
-
- Make hb_font_create_sub_font() NOT make parent immutable
-
- We don't rely on that. However, whenever hb_font_make_immutable()
- is called, it makes its parenting chain immutable.
-
- src/hb-font.cc | 4 +++-
- test/api/test-font.c | 21 +++++++++++++++------
- 2 files changed, 18 insertions(+), 7 deletions(-)
-
-commit 980e25cad2e58c31f5361862b9223d94ec47fc7a
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Oct 2 08:21:12 2015 +0100
-
- Fix hb-ot-shape-normalize with empty buffer
-
- Part of https://github.com/behdad/harfbuzz/issues/136
-
- src/hb-ot-shape-normalize.cc | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit a5efaac4ff61b587f228830b265b39fe8e5e4e47
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Oct 2 08:02:29 2015 +0100
-
- Replace a couple of malloc()s with calloc()
-
- src/hb-face.cc | 2 +-
- src/hb-shape-plan.cc | 2 +-
- src/hb-shaper.cc | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-commit 26ba4d1e1fb8949632fe08e6a7600badfba4f142
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Oct 2 07:25:52 2015 +0100
-
- Fix segfault with empty buffer in hb_shape_plan_execute()
-
- Move the empty-buffer check from hb_shape_full() to
- hb_shape_plan_execute().
-
- Reported by Simon Cozens.
-
- src/hb-shape-plan.cc | 9 +++++++--
- src/hb-shape.cc | 5 -----
- 2 files changed, 7 insertions(+), 7 deletions(-)
-
-commit 432ffc47a46d41bea17d839d0d3980e654c6e638
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Sep 30 22:51:16 2015 +0100
-
- 1.0.4
-
- NEWS | 7 +++++++
- configure.ac | 2 +-
- 2 files changed, 8 insertions(+), 1 deletion(-)
-
-commit b47159011ca518c3b94d782ed16a91ffe9dd2ab2
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Sep 29 14:57:02 2015 +0100
-
- Define return_trace()
-
- Not functional change (expected!).
-
- src/hb-open-file-private.hh | 20 +--
- src/hb-open-type-private.hh | 62 +++----
- src/hb-ot-cmap-table.hh | 56 +++----
- src/hb-ot-glyf-table.hh | 4 +-
- src/hb-ot-head-table.hh | 2 +-
- src/hb-ot-hhea-table.hh | 2 +-
- src/hb-ot-hmtx-table.hh | 2 +-
- src/hb-ot-layout-common-private.hh | 108 ++++++-------
- src/hb-ot-layout-gdef-table.hh | 44 ++---
- src/hb-ot-layout-gpos-table.hh | 252 +++++++++++++++--------------
- src/hb-ot-layout-gsub-table.hh | 304
- ++++++++++++++++++-----------------
- src/hb-ot-layout-gsubgpos-private.hh | 205 +++++++++++------------
- src/hb-ot-layout-jstf-table.hh | 35 ++--
- src/hb-ot-maxp-table.hh | 5 +-
- src/hb-ot-name-table.hh | 14 +-
- src/hb-private.hh | 6 +-
- 16 files changed, 575 insertions(+), 546 deletions(-)
-
-commit c917965b9e6fe2b21ed6c51559673288fa3af4b7
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Sep 29 14:45:35 2015 +0100
-
- Add missing returns
-
- Fixes possible invalid read of two bytes.
-
- Reported by Behzad Najjarpour Jabbari, Secunia Research.
-
- src/hb-ot-layout-gpos-table.hh | 14 +++++++-------
- src/hb-ot-layout-gsub-table.hh | 12 ++++++------
- src/hb-ot-layout-gsubgpos-private.hh | 8 ++++----
- 3 files changed, 17 insertions(+), 17 deletions(-)
-
-commit f3159ba5141c2ab0e430e64742972df140f91c43
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Sep 29 14:34:56 2015 +0100
-
- Micro-optimize hb_language_from_string()
-
- As measured / improved by Benson Limketkai.
-
- src/hb-common.cc | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-commit f2ad935e19338a29113492150f0c5a5fd5befd75
-Author: Sascha Brawer <sascha@brawer.ch>
-Date: Sun Jun 28 03:29:47 2015 +0200
-
- Handle language tags that indicate phonetic IPA transcription
-
- The BCP-47 registry defines a variant subtag "fonipa" that can be used
- in combination with arbitrary other language tags. For example,
- "rm-CH-fonipa-sursilv" indicates the Sursilvan dialect of Romansh
- as used in Switzerland, transcribed used the International Phonetic
- Alphabet.
-
- http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
-
- src/hb-ot-tag.cc | 15 ++++++++++++++-
- test/api/test-ot-tag.c | 7 +++++++
- 2 files changed, 21 insertions(+), 1 deletion(-)
-
-commit b8811429b6810c4f13be087b593a862c17d9d987
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Sep 3 15:53:22 2015 +0430
-
- Fix Since tags
-
- Fixes https://github.com/behdad/harfbuzz/issues/103
-
- src/hb-blob.cc | 24 +++++++++----------
- src/hb-buffer-serialize.cc | 10 ++++----
- src/hb-buffer.cc | 58
- +++++++++++++++++++++++-----------------------
- src/hb-buffer.h | 9 +++++++
- src/hb-common.cc | 24 +++++++++----------
- src/hb-common.h | 3 +++
- src/hb-coretext.cc | 3 +++
- src/hb-font.h | 18 +++++++-------
- src/hb-ft.cc | 6 ++---
- src/hb-graphite2.cc | 6 +++++
- src/hb-ot-layout.cc | 2 +-
- src/hb-ot-tag.cc | 2 +-
- src/hb-set.h | 3 +++
- src/hb-shape.cc | 2 +-
- src/hb-unicode.cc | 18 +++++++-------
- src/hb-unicode.h | 10 ++++----
- 16 files changed, 111 insertions(+), 87 deletions(-)
-
-commit 5d74ff02ab01df67808b416af8bb9cefb06f841e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Sep 3 14:55:59 2015 +0430
-
- Fix Since: version tags on font and face APIs
-
- A while back we marked every API as version:1.0. We should fix
- them all
- to reflect real version they were introduced. This is a start.
-
- Patch from Nikolay Sivov.
-
- src/hb-face.cc | 22 ++++++++---------
- src/hb-font.cc | 76
- +++++++++++++++++++++++++++++-----------------------------
- 2 files changed, 49 insertions(+), 49 deletions(-)
-
-commit 7f5405397406a24c5a001b5ef43dcf4d6926415e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Sep 1 17:03:50 2015 +0100
-
- 1.0.3
-
- NEWS | 11 +++++++++++
- configure.ac | 2 +-
- 2 files changed, 12 insertions(+), 1 deletion(-)
-
-commit 5828c45d7a816ccd0a7f10a665ea3cf8cfd63b05
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Sep 1 16:26:35 2015 +0100
-
- [indic] Add comments to merge_clusters calls
-
- src/hb-ot-shape-complex-indic.cc | 21 ++++++++++++++++-----
- 1 file changed, 16 insertions(+), 5 deletions(-)
-
-commit bdc8215949a7add742cc800b4fdea6acaa37d152
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Sep 1 16:24:54 2015 +0100
-
- [thai] Respect cluster-level > 0
-
- src/hb-ot-shape-complex-thai.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 5b31fe383ead726ec77062501ed3bb24c02842b3
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Sep 1 16:24:34 2015 +0100
-
- [use] Merge /before/ reordering
-
- src/hb-ot-shape-complex-use.cc | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 0d438f89bd9422c66838c776eb4aa867de0a2ad8
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Sep 1 16:24:13 2015 +0100
-
- [hangul] Merge /before/ reordering
-
- src/hb-ot-shape-complex-hangul.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit f883de664fc4bfe01e30c89e07e31dc113f906d9
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Sep 1 16:23:40 2015 +0100
-
- [OT] Merge /before/ reordering
-
- src/hb-ot-shape.cc | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-commit c403d6320074455a5e8e48902c0ac4ee9685e33d
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Sep 1 16:15:25 2015 +0100
-
- [myanmar] Use buffer->sort() to sort cluster
-
- This can possibly produce more granular clusters.
-
- src/hb-ot-shape-complex-myanmar.cc | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-commit e995d33c10a4bd9404699d01bddb2b69d811e9ed
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Sep 1 16:13:32 2015 +0100
-
- [OT] Merge clusters when reordering marks for normalization
-
- Fixes https://bugzilla.gnome.org/show_bug.cgi?id=541608
- and cluster test.
-
- src/hb-buffer-private.hh | 2 ++
- src/hb-buffer.cc | 21 +++++++++++++++++++++
- src/hb-ot-shape-normalize.cc | 2 +-
- 3 files changed, 24 insertions(+), 1 deletion(-)
-
-commit b6d7d161a87b5dde710924e5c557d39c302f5630
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Sep 1 16:12:44 2015 +0100
-
- [tests] Add Hebrew test for normalization under cluster-level=1
-
- Currently fails.
- https://bugzilla.gnome.org/show_bug.cgi?id=541608
-
- .../sha1sum/43ef465752be9af900745f72fe29cb853a1401a5.ttf | Bin 0 ->
- 4272 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 1 +
- test/shaping/tests/cluster.tests | 1 +
- 3 files changed, 2 insertions(+)
-
-commit 93099748e39740a3f6f003c83d9dec1d21660ce8
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Sep 1 16:11:27 2015 +0100
-
- Minor
-
- src/hb-private.hh | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-commit 85846b3de7491b6a07fed6a2c0c6c1b09943b249
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Sep 1 15:07:52 2015 +0100
-
- Use insertion-sort instead of bubble-sort
-
- Needed for upcoming merge-clusters fix.
-
- src/hb-buffer.cc | 4 +--
- src/hb-ot-shape-complex-arabic-fallback.hh | 6 ++--
- src/hb-ot-shape-complex-indic.cc | 2 +-
- src/hb-ot-shape-complex-myanmar.cc | 2 +-
- src/hb-ot-shape-normalize.cc | 6 ++--
- src/hb-private.hh | 56
- +++++++++++++-----------------
- 6 files changed, 34 insertions(+), 42 deletions(-)
-
-commit fad2674874591b4a1df822603144c8864f5364c1
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Sep 1 14:45:46 2015 +0100
-
- Minor
-
- test/Makefile.am | 4 ++++
- test/api/Makefile.am | 4 ++++
- test/shaping/Makefile.am | 4 ++++
- 3 files changed, 12 insertions(+)
-
-commit 23e4fac6de913201f263a73e13d3c1fab31d1bdd
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Aug 31 19:41:01 2015 +0100
-
- Update git.mk from upstream
-
- git.mk | 17 ++++++++++++++++-
- 1 file changed, 16 insertions(+), 1 deletion(-)
-
-commit 5783e05f81bbf6debf2618c8994d6852630d9847
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Aug 31 19:18:10 2015 +0100
-
- [docs] Move docs/reference/ contents into docs/
-
- configure.ac | 3 +-
- docs/Makefile.am | 117
- ++++++++++++++++++++++++++-
- docs/{reference => }/harfbuzz-docs.xml | 0
- docs/{reference => }/harfbuzz-overrides.txt | 0
- docs/{reference => }/harfbuzz-sections.txt | 0
- docs/reference/Makefile.am | 118
- ----------------------------
- docs/{reference => }/usermanual-ch01.xml | 0
- docs/{reference => }/usermanual-ch02.xml | 0
- docs/{reference => }/usermanual-ch03.xml | 0
- docs/{reference => }/usermanual-ch04.xml | 0
- docs/{reference => }/usermanual-ch05.xml | 0
- docs/{reference => }/usermanual-ch06.xml | 0
- docs/{reference => }/version.xml.in | 0
- 13 files changed, 117 insertions(+), 121 deletions(-)
-
-commit cd5e3a13a6e0b6606d3a421f8cd44cdfb8314907
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Aug 31 19:16:41 2015 +0100
-
- [docs] Fix out-of-tree build
-
- docs/reference/Makefile.am | 9 ++++++++-
- docs/reference/harfbuzz-docs.xml | 12 ++++++------
- docs/{ => reference}/usermanual-ch01.xml | 0
- docs/{ => reference}/usermanual-ch02.xml | 0
- docs/{ => reference}/usermanual-ch03.xml | 0
- docs/{ => reference}/usermanual-ch04.xml | 0
- docs/{ => reference}/usermanual-ch05.xml | 0
- docs/{ => reference}/usermanual-ch06.xml | 0
- 8 files changed, 14 insertions(+), 7 deletions(-)
-
-commit 3899795fa3c3e058e3885ec7a6638f0597a752cc
-Merge: d205965 01e16e8
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Aug 31 10:46:01 2015 +0100
-
- Merge pull request #131 from simoncozens/docs
-
- Use gtk-doc to build user's manual as well as reference
-
-commit 01e16e88f50b65b82dcb84773f532f18a351319f
-Author: Simon Cozens <simon@simon-cozens.org>
-Date: Mon Aug 31 10:40:17 2015 +0100
-
- Combine user / reference information into gtk-doc generated manual.
-
- docs/reference/harfbuzz-docs.xml | 91
- +++++++++++++++++++++++-----------------
- 1 file changed, 52 insertions(+), 39 deletions(-)
-
-commit 11a07c4729174e1d4af028103ecb0a351e4c2707
-Author: Simon Cozens <simon@simon-cozens.org>
-Date: Mon Aug 31 10:39:10 2015 +0100
-
- Correct tag hierarchy, to allow for table-of-contents entries.
-
- docs/usermanual-ch01.xml | 12 ++++++------
- docs/usermanual-ch02.xml | 8 ++++----
- docs/usermanual-ch03.xml | 24 ++++++++++++------------
- docs/usermanual-ch04.xml | 16 ++++++++--------
- docs/usermanual-ch05.xml | 12 ++++++------
- 5 files changed, 36 insertions(+), 36 deletions(-)
-
-commit 387d6af428ddd5d4f211fe5748412011013a3826
-Author: Simon Cozens <simon@simon-cozens.org>
-Date: Mon Aug 31 10:31:09 2015 +0100
-
- Missing tag (oops).
-
- docs/usermanual-ch02.xml | 1 +
- 1 file changed, 1 insertion(+)
-
-commit d205965286798af4b7ad07e1eafa58288bee4bdb
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Aug 31 10:12:05 2015 +0100
-
- [docs] Fix typo
-
- docs/usermanual-ch03.xml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit c424b41705b50055c7f92b268cf78a2680af73af
-Merge: 31594b9 5470e74
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Aug 31 09:53:16 2015 +0100
-
- Merge pull request #129 from simoncozens/docs
-
- First two chapters. More to follow.
-
-commit 31594b98af0c9181982c77d8d3803753007f8fd4
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sun Aug 30 17:33:04 2015 +0100
-
- [test] Fix test-object
-
- See previous commit.
-
- test/api/test-object.c | 4 ----
- 1 file changed, 4 deletions(-)
-
-commit 326b5ebf5748f547e4eb7388d66b79fe23130e2a
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sun Aug 30 17:29:21 2015 +0100
-
- Poison freed objects such that double-free is detected
-
- Previously we were setting refcount of freed objects to the inert
- value, which
- was harmful because it caused further destroy()s of the freed object
- to NOT
- call free() and hence hide the bug. Indeed, after eb0bf3ae6688b7
- test-object
- was double-free'ing objects and this was never caught on Linux.
- It only was
- caught as crashing on Mac.
-
- Now we poison refcount upon freeing and check that it's valid
- whenever reading
- it. Makes test-object fail now.
-
- src/hb-object-private.hh | 21 ++++++++++++++++-----
- 1 file changed, 16 insertions(+), 5 deletions(-)
-
-commit 5470e744dd264c2dc33437a68d20bcf7c5ffb905
-Author: Simon Cozens <simon@simon-cozens.org>
-Date: Sat Aug 29 08:21:18 2015 +0100
-
- Current state and skeleton outline
-
- docs/usermanual-ch03.xml | 77
- ++++++++++++++++++++++++++++++++++++++++++++++++
- docs/usermanual-ch04.xml | 18 +++++++++++
- docs/usermanual-ch05.xml | 13 ++++++++
- docs/usermanual-ch06.xml | 8 +++++
- 4 files changed, 116 insertions(+)
-
-commit 6578575cc8aeb05341f2053039acfcd735707674
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Aug 25 20:24:59 2015 +0100
-
- [GPOS] Fix cursive connection with mix of RTL and non-RTL lookups
-
- See thread "Issue with cursive attachment" started by Khaled.
- Turned out fixing this wasn't as bad as I had assumed. I like the
- new code better; we now have a theoretical model of cursive
- connections that is easier to reason about.
-
- src/hb-ot-layout-gpos-table.hh | 34 ++++++++++++++++++++++++++++++++++
- 1 file changed, 34 insertions(+)
-
-commit 7368da67244ea53195cd9b95a5c57485df695732
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Aug 25 20:28:39 2015 +0100
-
- [test] Add test for cursive-positioning with mixed directions
-
- Fails now. Fix coming. See thread "Issue with cursive attachment"
- started by Khaled. Test fonts were made by modifying test font
- from Khaled to add more anchors.
-
- test/shaping/Makefile.am | 1 +
- .../sha1sum/298c9e1d955f10f6f72c6915c3c6ff9bf9695cec.ttf | Bin 0 ->
- 2520 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 2 ++
- .../sha1sum/c4e48b0886ef460f532fb49f00047ec92c432ec0.ttf | Bin 0 ->
- 2512 bytes
- test/shaping/tests/MANIFEST | 1 +
- test/shaping/tests/cursive-positioning.tests | 2 ++
- 6 files changed, 6 insertions(+)
-
-commit f0807654da160bd7ceb9aff5b8338ec0b643171c
-Author: Simon Cozens <simon@simon-cozens.org>
-Date: Tue Aug 25 19:57:15 2015 +0100
-
- First two chapters. More to follow.
-
- docs/usermanual-ch01.xml | 115 ++++++++++++++++++++++++++++++
- docs/usermanual-ch02.xml | 182
- +++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 297 insertions(+)
-
-commit 58f2a73fb95af42e264a91cdef7bb5a89e965601
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Aug 25 18:55:34 2015 +0100
-
- [GPOS] Rewrite cursive attachment slightly differently
-
- In anticipation for upcoming fix for bug reported by
- Khaled in thread "Issue with cursive attachment".
-
- src/hb-ot-layout-gpos-table.hh | 36 ++++++++++++++++++++++++------------
- 1 file changed, 24 insertions(+), 12 deletions(-)
-
-commit fdd1770e006ca2d2973c049177ceda87a575e07f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Aug 24 13:49:55 2015 +0100
-
- Add API/cmdline to show glyph extents when serializing buffer
-
- New API: HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS
-
- hb-shape now accepts --show-extents.
-
- Patch from Simon Cozens.
-
- src/hb-buffer-serialize.cc | 17 +++++++++++++++++
- src/hb-buffer.h | 3 ++-
- util/hb-shape.cc | 2 ++
- util/options.cc | 1 +
- util/options.hh | 2 ++
- 5 files changed, 24 insertions(+), 1 deletion(-)
-
-commit 2cee5b68a07b99214ef9428fe5d03e7b378a558f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Aug 24 13:45:12 2015 +0100
-
- [ot-font] Fix short-offset calculation
-
- src/hb-ot-font.cc | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit b50fcfa82994f93568a54dd1eb7fd327f6db5586
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sun Aug 23 14:42:20 2015 +0100
-
- [ot-font] Implement glyph_extents() for TrueType fonts
-
- This brings ot-fonts into almost-complete shape and mostly in par with
- ft font.
-
- src/Makefile.am | 1 +
- src/hb-font.h | 9 +++--
- src/hb-ot-font.cc | 90 +++++++++++++++++++++++++++++++++++++++--
- src/hb-ot-glyf-table.hh | 104
- ++++++++++++++++++++++++++++++++++++++++++++++++
- src/hb-ot-head-table.hh | 3 +-
- 5 files changed, 198 insertions(+), 9 deletions(-)
-
-commit 0299b45000b5047c0b9bf0fe51f3b8b68a7982f8
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Aug 21 12:44:36 2015 +0100
-
- Make BYTE a real type
-
- src/hb-open-type-private.hh | 16 +++++++++++++++-
- 1 file changed, 15 insertions(+), 1 deletion(-)
-
-commit ed6962c795ae7c54aaee9ed5667fa65ccf7412bf
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Aug 20 15:39:53 2015 +0100
-
- [coretext] Use i32 instead of u32 as well
-
- Shouldn't cause *any* functional changes, but is more correct.
-
- src/hb-coretext.cc | 20 ++++++++++----------
- 1 file changed, 10 insertions(+), 10 deletions(-)
-
-commit 163c435f1807c138da9f74f09d29d913eb9e29e9
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Aug 20 15:39:06 2015 +0100
-
- [uniscribe] Fix negative offsets
-
- Ouch!
-
- src/hb-uniscribe.cc | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-commit 789b89ef7130ffe5f22c571fc3cb4e6d35456654
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Aug 19 13:39:57 2015 +0100
-
- 1.0.2
-
- NEWS | 13 +++++++++++++
- configure.ac | 2 +-
- 2 files changed, 14 insertions(+), 1 deletion(-)
-
-commit 958c268fa3a520666436e77a2111a3b564a36d96
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Aug 19 13:22:12 2015 +0100
-
- [coretext] Add TODO item
-
- src/hb-coretext.cc | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 7c5bee09d9c7c25672c7c77572ebae0b731892d0
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Aug 19 13:20:31 2015 +0100
-
- [uniscribe] Fix font scale handling
-
- By default shape at upem (or ppem), and scale results.
- Similar to work done in CoreText backend, but using upem as default.
-
- src/hb-uniscribe.cc | 25 +++++++++++++++++++------
- 1 file changed, 19 insertions(+), 6 deletions(-)
-
-commit 902e74a098dad8c3b487856284f9fdf99b04f9f1
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Aug 18 18:55:03 2015 +0100
-
- Commented-out code to print buffer before each lookup
-
- To be turned into a useful HB_DEBUG_SHAPE infrastructure...
-
- src/hb-ot-layout.cc | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-commit 75504a50488a6aac0b9789f728fb5b87e641d4c3
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Aug 18 18:47:02 2015 +0100
-
- Allow serializing buffer with output-buffer being used
-
- Ie, don't call get_positions() if positions are not
- requested for serialization.
-
- src/hb-buffer-serialize.cc | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-commit e47b772a56af44a9a4f9ec907ee2091b725b94c1
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Aug 18 18:42:47 2015 +0100
-
- [ot] Change buffer content type right after we map to glyphs
-
- Needed for upcoming debug output changes.
-
- src/hb-ot-shape.cc | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit d104415e4c1e0f9140f794cd8d09c6460c63e966
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Aug 18 17:33:34 2015 +0100
-
- [Android.mk] Update for SEA removal and USE addition
-
- Android.mk | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit ddd6bf12f1cabaa298feed820313483b9893528c
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Aug 18 15:55:09 2015 +0100
-
- Don't declare dependency on freetype in harfbuzz.pc
-
- See comments.
-
- src/Makefile.am | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-commit 2c8b3b2e5312c9858584f568b1528c57e5bb8a10
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Aug 18 14:36:43 2015 +0100
-
- [debug] Print lookup index in debug-apply output
-
- src/hb-ot-layout-gpos-table.hh | 5 ++++-
- src/hb-ot-layout-gsub-table.hh | 5 ++++-
- src/hb-ot-layout-gsubgpos-private.hh | 7 +++++--
- src/hb-ot-layout.cc | 3 ++-
- 4 files changed, 15 insertions(+), 5 deletions(-)
-
-commit 50ad7788eeb7160caef4ec78e65c7c630e601b06
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Aug 18 10:22:16 2015 +0100
-
- [coretext] Remove assert that kicks in on Mac OS 10.6
-
- http://crbug.com/419769
-
- src/hb-coretext.cc | 18 ++++++++++++++----
- 1 file changed, 14 insertions(+), 4 deletions(-)
-
-commit 2b646fa07f5f9d4d10d563a91d22a2750b5fc771
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Aug 17 16:03:28 2015 +0200
-
- Remove unused function
-
- src/hb-ot-shape-complex-use.cc | 8 --------
- 1 file changed, 8 deletions(-)
-
-commit 23237b0279a04407addf33f599c45faa60f002ca
-Author: ThePhD <phdofthehouse@gmail.com>
-Date: Fri Aug 14 01:19:08 2015 -0400
-
- Last apparent boolean fix!
-
- src/hb-ot-shape-complex-use.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 5c99cf93d6242803bddcac2ca8300fdec7e0f8a7
-Merge: 8ad89f0 539a610
-Author: ThePhD <phdofthehouse@gmail.com>
-Date: Fri Aug 14 01:02:00 2015 -0400
-
- Merge branch 'master' into vc++-fixes
-
-commit 539a610e2e72375e598ab29fd390ed9ec93816d5
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Aug 11 12:58:49 2015 +0200
-
- Add Libs.private and Requires.private to harfbuzz.pc
-
- Fixes https://bugs.freedesktop.org/show_bug.cgi?id=64501
-
- configure.ac | 12 +++++++++---
- src/Makefile.am | 15 ++++++++++++---
- src/harfbuzz.pc.in | 2 ++
- 3 files changed, 23 insertions(+), 6 deletions(-)
-
-commit c7dfe316f8c0fc04b7976fca5e58eb46d91b4821
-Author: jfkthame <jfkthame@gmail.com>
-Date: Fri Aug 7 17:55:03 2015 +0100
-
- Don't rely on .cluster in _hb_ot_shape_normalize()
-
- Fixes https://github.com/behdad/harfbuzz/pull/124
-
- src/hb-ot-shape-normalize.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 9099e48e29fe5cfdf8566c8f1ba6ddc8c0799e7e
-Author: jfkthame <jfkthame@gmail.com>
-Date: Fri Aug 7 17:51:28 2015 +0100
-
- Don't rely on .cluster field in fallback_position
-
- Fixes tests/cluster.
-
- Fixes https://github.com/behdad/harfbuzz/pull/123
-
- src/hb-ot-shape-fallback.cc | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-commit f3792342f670978cdc3f8512fb5e80314ca0678d
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Aug 8 18:02:18 2015 +0200
-
- [tests] Add test for fallback positioning with cluster_level > 0
-
- For https://github.com/behdad/harfbuzz/pull/123
- Currently fails. Fix coming.
-
- test/shaping/Makefile.am | 1 +
- .../sha1sum/6466d38c62e73a39202435a4f73bf5d6acbb73c0.ttf | Bin 0 ->
- 824 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 1 +
- test/shaping/tests/MANIFEST | 1 +
- test/shaping/tests/cluster.tests | 1 +
- 5 files changed, 4 insertions(+)
-
-commit bd22a5cfae24b3b9253bccaeb139e698e74cd0c3
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Aug 7 11:13:27 2015 +0200
-
- Bug 91559 - HarfBuzz 1.0.1: Inconsistent DLL files
- specified/created...
-
- Fixes https://bugs.freedesktop.org/show_bug.cgi?id=91559
-
- src/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 02d6439f420d959183dd446abd0b0118ee1ee061
-Merge: 9002c27 160f635
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Aug 3 22:47:18 2015 +0300
-
- Merge pull request #122 from RomainNaour/static-fix
-
- fix static linking with icu-uc
-
-commit 160f635523d596f61e292776f638d4eb09673463
-Author: Romain Naour <romain.naour@openwide.fr>
-Date: Wed Jul 22 23:26:23 2015 +0200
-
- fix static linking with icu-uc
-
- When linking test-unicode statically it needs $(ICU_LIBS)
- which contains all required flags.
- Especially -lstdc++.
-
- Fixes:
- http://autobuild.buildroot.net/results/210/2107f9dfb39eeb6559fb4271c7af8b39aef521ca/
-
- Signed-off-by: Romain Naour <romain.naour@openwide.fr>
-
- test/api/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 9002c27b2f54bb5135db92045c0d770b47317577
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jul 27 12:17:54 2015 +0200
-
- 1.0.1
-
- NEWS | 9 ++++++++-
- configure.ac | 2 +-
- 2 files changed, 9 insertions(+), 2 deletions(-)
-
-commit f1c20e1ba5bf218df7dc3e198bdcf1f449fc9387
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jul 27 12:16:02 2015 +0200
-
- [USE] Fix out-of-bounds static array access
-
- src/hb-ot-shape-complex-use.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 260442346a5756c3538ee8fcbf157d1cddcf6f36
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sun Jul 26 23:39:10 2015 +0200
-
- 1.0.0
-
- NEWS | 10 ++++++++++
- configure.ac | 4 ++--
- src/Makefile.am | 2 +-
- 3 files changed, 13 insertions(+), 3 deletions(-)
-
-commit df6cb84449a473d540821e41fb5007b59644780f
-Merge: 2ed6be6 786ba45
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sun Jul 26 19:40:55 2015 +0200
-
- Merge branch 'use'
-
-commit 2ed6be66703e6cc67f3a3746e197001dad3d9b74
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sun Jul 26 19:29:53 2015 +0200
-
- 0.9.42
-
- NEWS | 12 ++++++++++++
- configure.ac | 2 +-
- 2 files changed, 13 insertions(+), 1 deletion(-)
-
-commit 23e56e088a721863cfdef4f027fb66eecbd77457
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Jul 25 17:36:46 2015 +0200
-
- Fix broken sentence
-
- src/hb-set-private.hh | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-commit 91a2e5d2878a8c0b4d4500e3d52d4fbaaf1ac0d7
-Author: Grigori Goronzy <greg@chown.ath.cx>
-Date: Wed Jul 8 23:28:11 2015 +0200
-
- Update UCDN to upstream commit 8af93f30
-
- This adds support for Unicode 8.0 and fixes a bug with wrong
- properties
- for ranges of codepoints.
-
- src/hb-ucdn.cc | 6 +
- src/hb-ucdn/ucdn.h | 6 +
- src/hb-ucdn/unicodedata_db.h | 2167
- +++++++++++++++++++++---------------------
- 3 files changed, 1118 insertions(+), 1061 deletions(-)
-
-commit 786ba45847127b9cd4d9c0c01ae0e6c61f3a8e06
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jul 23 13:04:34 2015 +0100
-
- [test] Encode Kharoshti text
-
- Ouch!
-
- .../in-tree/shaper-use/script-kharoshti/misc.txt | 72
- +++++++++++-----------
- 1 file changed, 36 insertions(+), 36 deletions(-)
-
-commit b4231255032e243153a6f32cf8c93c158cb0bf6a
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jul 23 13:01:55 2015 +0100
-
- [test] Add Batak and Buginese test texts
-
- test/shaping/texts/in-tree/shaper-use/MANIFEST | 2 +
- .../texts/in-tree/shaper-use/script-batak/MANIFEST | 1 +
- .../texts/in-tree/shaper-use/script-batak/misc.txt | 9 +++
- .../in-tree/shaper-use/script-buginese/MANIFEST | 1 +
- .../in-tree/shaper-use/script-buginese/misc.txt | 70
- ++++++++++++++++++++++
- 5 files changed, 83 insertions(+)
-
-commit b8c159ffccad090974a2b97be0a0140fa09af132
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jul 23 12:59:17 2015 +0100
-
- [test] Remove shaper-sea texts under shaper-use
-
- test/shaping/texts/in-tree/MANIFEST |
- 1 -
- test/shaping/texts/in-tree/shaper-sea/MANIFEST |
- 2 --
- test/shaping/texts/in-tree/shaper-sea/script-cham/MANIFEST |
- 1 -
- test/shaping/texts/in-tree/shaper-sea/script-tai-tham/MANIFEST |
- 1 -
- test/shaping/texts/in-tree/shaper-use/MANIFEST |
- 2 ++
- .../{shaper-sea/script-cham/misc => shaper-use/script-cham}/MANIFEST
- | 0
- .../{shaper-sea/script-cham/misc => shaper-use/script-cham}/misc.txt
- | 0
- .../script-tai-tham/misc => shaper-use/script-tai-tham}/MANIFEST
- | 0
- .../script-tai-tham/misc => shaper-use/script-tai-tham}/misc.txt
- | 0
- .../script-tai-tham/misc => shaper-use/script-tai-tham}/torture.txt
- | 0
- 10 files changed, 2 insertions(+), 5 deletions(-)
-
-commit 67ba7320cc5545baeacfcff64cea338223b9bd6d
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jul 23 12:58:21 2015 +0100
-
- [test] Remove New Tai Lue texts
-
- New Tai Lue changed encoding to visual, boring, model.
-
- test/shaping/texts/in-tree/shaper-sea/MANIFEST |
- 1 -
- test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/MANIFEST |
- 1 -
- test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/misc/MANIFEST |
- 1 -
- test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/misc/misc.txt |
- 1 -
- 4 files changed, 4 deletions(-)
-
-commit c81d957a264539dfe3252f9a94ee066c4a44edf4
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jul 23 12:50:48 2015 +0100
-
- [test] Add tests for improved 'vert' feature
-
- test/shaping/Makefile.am | 1 +
- .../sha1sum/191826b9643e3f124d865d617ae609db6a2ce203.ttf | Bin 0 ->
- 2140 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 1 +
- test/shaping/tests/MANIFEST | 1 +
- test/shaping/tests/vertical.tests | 1 +
- 5 files changed, 4 insertions(+)
-
-commit 8a6a16dbcb1808c7ed50f9ba320384565bbf405a
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jul 23 12:49:09 2015 +0100
-
- [test] Add recently added test
-
- Ouch.
-
- test/shaping/Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 895fb31c7f0201f13df5a6866b367476bc4aab2e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jul 23 12:14:03 2015 +0100
-
- [test] Support additional options to hb-shape in micro-test suite
-
- test/shaping/record-test.sh | 47
- ++++++++++++++++++----
- test/shaping/run-tests.sh | 9 ++++-
- test/shaping/tests/arabic-fallback-shaping.tests | 2 +-
- test/shaping/tests/arabic-feature-order.tests | 6 +--
- test/shaping/tests/context-matching.tests | 6 +--
- test/shaping/tests/default-ignorables.tests | 2 +-
- test/shaping/tests/hangul-jamo.tests | 4 +-
- test/shaping/tests/indic-joiner-candrabindu.tests | 4 +-
- test/shaping/tests/indic-old-spec.tests | 4 +-
- test/shaping/tests/indic-pref-blocking.tests | 4 +-
- .../tests/mongolian-variation-selector.tests | 6 +--
- test/shaping/tests/zero-width-marks.tests | 4 +-
- 12 files changed, 67 insertions(+), 31 deletions(-)
-
-commit 0f98fe88f42471eb8fb28d08d45eca9cd8303f7a
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jul 23 11:52:11 2015 +0100
-
- [ot] Search globally for 'vert' feature if not found in specified
- script/lang
-
- Fixes https://github.com/behdad/harfbuzz/issues/63
-
- src/hb-ot-layout-private.hh | 9 +++++++++
- src/hb-ot-layout.cc | 22 ++++++++++++++++++++++
- src/hb-ot-map-private.hh | 7 ++++---
- src/hb-ot-map.cc | 10 ++++++++++
- src/hb-ot-shape.cc | 6 +++++-
- 5 files changed, 50 insertions(+), 4 deletions(-)
-
-commit f327aacfa107bbef0c823ef9c3b7dfc91316040c
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jul 23 11:32:59 2015 +0100
-
- [ot] Minor
-
- src/hb-ot-shape.cc | 11 +++--------
- 1 file changed, 3 insertions(+), 8 deletions(-)
-
-commit d78463c8016ff1852233479a1ebde30c3bb6de6e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jul 23 10:11:35 2015 +0100
-
- Minor debug output fix
-
- src/hb-ot-layout.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit d99f50bde0e8be0866385ca6886938d2023dbd4f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jul 23 10:08:48 2015 +0100
-
- Add missing TRACE_RETURN
-
- src/hb-ot-layout-gsubgpos-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 2dc8e3f470d7c0b579f867605b8bf40688bc5722
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jul 23 10:07:21 2015 +0100
-
- [ot] Add missing return!
-
- src/hb-ot-layout-gsubgpos-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 582069172c39326c7f94373793c656439a4c2b59
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 22 18:44:59 2015 +0100
-
- Add test case for deleting default ignorables with positioning
-
- .../sha1sum/051d92f8bc6ff724511b296c27623f824de256e9.ttf | Bin 0 ->
- 2028 bytes
- test/shaping/fonts/sha1sum/MANIFEST | 1 +
- test/shaping/tests/MANIFEST | 1 +
- test/shaping/tests/default-ignorables.tests | 1 +
- 4 files changed, 3 insertions(+)
-
-commit 8cfbc304ee563ec96e402beed34b10b6c0950a6a
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 22 18:41:10 2015 +0100
-
- Fix hide-default-ignorables after
- f0010dfd01ef4a927b0bdc175dd4e343a8637174
-
- We can't delete things before hb_ot_layout_position_finish(). So,
- just zero the advance before it, and remove later.
-
- src/hb-ot-shape.cc | 25 +++++++++++++++++++------
- 1 file changed, 19 insertions(+), 6 deletions(-)
-
-commit 2dbd3d29d6548bd96fd976606ed689fac8ad8817
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 22 18:28:39 2015 +0100
-
- Fix hide-ignorables if font doesn't have space glyph
-
- Was broken by 82b521aeb7cc73879b44ca4278d6fa8b4347527f, as we have
- positioning data by then and can't use the output buffer. Ouch!
-
- src/hb-buffer-private.hh | 18 ------------------
- src/hb-ot-shape.cc | 44
- +++++++++++++++++++++++++++++++++++---------
- 2 files changed, 35 insertions(+), 27 deletions(-)
-
-commit 4ba796b26ee62de0d2830a550f3aa3b4aecf6f59
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 22 17:41:31 2015 +0100
-
- Refactor _hb_glyph_info_is_default_ignorable()
-
- src/hb-ot-layout-gsubgpos-private.hh | 3 +--
- src/hb-ot-layout-private.hh | 4 +++-
- src/hb-ot-shape.cc | 9 +++------
- 3 files changed, 7 insertions(+), 9 deletions(-)
-
-commit f0010dfd01ef4a927b0bdc175dd4e343a8637174
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 22 17:36:23 2015 +0100
-
- [ot] Hide default-ignorables before finishing off positioning
-
- For example, fixes the following sequence with Arial XP:
- 628 25cc 651 25cc 64e 3a 20 628 651 34f 64e
- 628 25cc 64e 25cc 651 3a 20 628 64e 34f 651
-
- Discovered as part of:
- https://bugs.freedesktop.org/show_bug.cgi?id=85873
-
- src/hb-ot-shape.cc | 125
- +++++++++++++++++++++++++++--------------------------
- 1 file changed, 63 insertions(+), 62 deletions(-)
-
-commit 376d587f36b4ff10342ee6ca3bacd73532ea44c8
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 22 16:51:12 2015 +0100
-
- Implement more granular cluster-merging
-
- TODO: Documentation.
-
- Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=71445
-
- NEWS | 8 +++++++
- src/hb-buffer-private.hh | 1 +
- src/hb-buffer.cc | 46
- ++++++++++++++++++++++++++++++++++-----
- src/hb-buffer.h | 12 ++++++++++
- src/hb-ot-shape-complex-hangul.cc | 13 +++++------
- src/hb-ot-shape.cc | 7 ++++++
- util/options.cc | 1 +
- util/options.hh | 3 +++
- 8 files changed, 77 insertions(+), 14 deletions(-)
-
-commit a60e2cfa395718cde48eb81f43adc27b4a92e117
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 22 15:49:08 2015 +0100
-
- [ot] Don't rely on cluster numbers for ensure_native_direction()
-
- src/hb-ot-shape.cc | 19 ++++++++++++++++++-
- 1 file changed, 18 insertions(+), 1 deletion(-)
-
-commit 701112dad9f6e690b253f1e64f4e7e549f5ae65f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 22 15:42:20 2015 +0100
-
- [ot] Simplify form_clusters()
-
- src/hb-buffer-private.hh | 9 ++++++++-
- src/hb-buffer.cc | 7 ++-----
- src/hb-ot-shape.cc | 11 +++++++++--
- 3 files changed, 19 insertions(+), 8 deletions(-)
-
-commit 7b8b63adc5e0389fc4cf2720ef7e5804ab6c29cc
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 22 15:24:26 2015 +0100
-
- [ot] Don't mirror character if font doesn't support mirrored
- character!
-
- src/hb-ot-shape.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 97d7c3a100e2673279f066540229d229aaf0df78
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 22 14:28:25 2015 +0100
-
- [graphite2] Fix bunch of stuff
-
- Based on patch from Martin Hosken, with review from Jonathan and I.
-
- src/hb-graphite2.cc | 82
- +++++++++++++++++++++++++++++++++++------------------
- 1 file changed, 54 insertions(+), 28 deletions(-)
-
-commit ea7f8414e34d4b5efc7b98974637c08f75440f0e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 22 13:53:45 2015 +0100
-
- [graphite2] Enlarge buffer for output glyphs!
-
- src/hb-graphite2.cc | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 9cd59db1af47ff511edf251949d58b82673cf704
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 22 13:27:06 2015 +0100
-
- [USE] Implement topographical features for non-Arabic-joining scripts
-
- This works per-syllable as per the spec, but we think it should be per
- spacing/base/??? glyph instead.
-
- src/hb-ot-shape-complex-use.cc | 87
- ++++++++++++++++++++++++++++++++++++++----
- 1 file changed, 80 insertions(+), 7 deletions(-)
-
-commit ecb0b24ef3f8177e7c789f45a2e858bd67e31be3
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 22 12:02:09 2015 +0100
-
- Use foreach_cluster in Indic shaper
-
- src/hb-ot-shape-complex-indic.cc | 90
- +++++++++-------------------------------
- 1 file changed, 19 insertions(+), 71 deletions(-)
-
-commit 56f71ff98890fc4fd13e8d9743dc34c4b9407309
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 22 11:58:11 2015 +0100
-
- Use foreach_syllable in Myanmar shaper
-
- src/hb-ot-shape-complex-myanmar.cc | 62
- ++++++++------------------------------
- 1 file changed, 12 insertions(+), 50 deletions(-)
-
-commit ac596511a8c9eeaeb455ca16b5b9c5f1b9923b3a
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 22 11:54:02 2015 +0100
-
- Add foreach_syllable
-
- Use it in USE.
-
- src/hb-ot-layout-private.hh | 24 ++++++++
- src/hb-ot-shape-complex-use.cc | 129
- +++++++++++++----------------------------
- 2 files changed, 64 insertions(+), 89 deletions(-)
-
-commit 8ba9e689680f7685c04cfe7c6019222bdf0c52b0
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 22 11:16:01 2015 +0100
-
- [USE] Do Arabic-like shaping
-
- src/hb-ot-shape-complex-use.cc | 77
- ++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 75 insertions(+), 2 deletions(-)
-
-commit 9daf2dfb6bd5683fd951bdf166c8b87938257e52
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 22 10:32:30 2015 +0100
-
- Add hb-ot-shape-complex-arabic-private.hh
-
- src/Makefile.am | 1 +
- src/hb-ot-shape-complex-arabic-private.hh | 50
- +++++++++++++++++++++++++++++++
- src/hb-ot-shape-complex-arabic.cc | 37 +++++++++++++----------
- 3 files changed, 73 insertions(+), 15 deletions(-)
-
-commit a51a661fe1dcfdd3a274a6be6ad741c68d430c8c
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 18:24:21 2015 +0100
-
- [USE] Only reorder the first component of a split left mark
-
- src/hb-ot-shape-complex-use.cc | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-commit a08a278b15c7e57a1d0a783f2bc877471b9d8229
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 18:09:40 2015 +0100
-
- [USE] Don't compose split matras
-
- Same logic as in Indic shaper.
-
- src/hb-ot-shape-complex-use.cc | 15 ++++++++++++++-
- 1 file changed, 14 insertions(+), 1 deletion(-)
-
-commit 21cb08a417f1203523191192d6a342e8cd0ea14c
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 17:47:06 2015 +0100
-
- Remove unused SEA shaper
-
- src/Makefile.am | 4 -
- src/hb-ot-shape-complex-sea-machine.rl | 102 ---------
- src/hb-ot-shape-complex-sea.cc | 380
- ---------------------------------
- 3 files changed, 486 deletions(-)
-
-commit db1e9cdd41ff7c97c29b4d9b64b2351ed0ef0403
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 17:46:06 2015 +0100
-
- Retire SEA shaper in favor of USE
-
- src/hb-ot-shape-complex-private.hh | 25 +++----------------------
- 1 file changed, 3 insertions(+), 22 deletions(-)
-
-commit 87dde9c64753dea4017f11a7734e7528b8eecac0
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 17:31:43 2015 +0100
-
- [USE] Only use USE shaper if script system is not DFLT
-
- Same logic as Indic and SEA.
-
- src/hb-ot-shape-complex-private.hh | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
-commit 29832d797ff2f3a96721dd44f2f03a83fb2e8dda
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 17:24:18 2015 +0100
-
- Route misc untested scripts through USE shaper instead of Indic
-
- These were never tested with Indic shaper, and indeed wouldn't
- work there
- because they didn't have their viramas and other config defined.
- They are
- all also supported by MS through USE, so route them there.
-
- src/hb-ot-shape-complex-private.hh | 91
- +++++---------------------------------
- 1 file changed, 11 insertions(+), 80 deletions(-)
-
-commit 40c4a991c7ea18017273ff8993eecc3953869e69
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 17:14:54 2015 +0100
-
- [USE] Implement dotted-circle
-
- This makes USE feature-complete as far as the Indic-like features
- are concerned.
-
- src/hb-ot-shape-complex-use-machine.rl | 10 ++++++++++
- src/hb-ot-shape-complex-use.cc | 18 +++++++++++++++---
- 2 files changed, 25 insertions(+), 3 deletions(-)
-
-commit 7ce03ebe7c525919ce22d9094480847ff1b3c2b2
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 16:55:26 2015 +0100
-
- [USE] Move pref
-
- src/hb-ot-shape-complex-use-machine.rl | 9 +++++----
- src/hb-ot-shape-complex-use-private.hh | 9 +++++----
- src/hb-ot-shape-complex-use.cc | 24 ++++++++++++++++++++++--
- 3 files changed, 32 insertions(+), 10 deletions(-)
-
-commit 2d4b62ead931b13f95f5dc0e5b740d997a8d1a8e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 16:46:37 2015 +0100
-
- [USE] Fix-up variation selectors and word joiner in table
-
- src/gen-use-table.py | 7 ++++++-
- src/hb-ot-shape-complex-use-table.cc | 34
- +++++++++++++++++++++++-----------
- 2 files changed, 29 insertions(+), 12 deletions(-)
-
-commit ad7178227f16abc17456f122deac1508031cbbc3
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 16:43:27 2015 +0100
-
- [USE] Use a couple warnings
-
- src/gen-use-table.py | 20 ++++-----
- src/hb-ot-shape-complex-use-table.cc | 82
- ++++++++++++++++++------------------
- 2 files changed, 51 insertions(+), 51 deletions(-)
-
-commit a85c4da9b1750c2f994f9f85226a3e755fafe50b
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 16:07:10 2015 +0100
-
- [USE] Move rphf
-
- src/hb-ot-shape-complex-use.cc | 105
- ++++++++++++++---------------------------
- 1 file changed, 35 insertions(+), 70 deletions(-)
-
-commit 5b5617e0664e59770910d04d15175f643a5ffb73
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 15:52:15 2015 +0100
-
- Add FLAG_UNSAFE()
-
- Unused right now.
-
- src/hb-private.hh | 1 +
- 1 file changed, 1 insertion(+)
-
-commit f8160a495966c790b79134a9f9382b6545f8c733
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 15:50:02 2015 +0100
-
- Add FLAG_SAFE() for values known to be small-enough
-
- And add check to FLAG()
-
- src/hb-ot-shape-complex-arabic.cc | 2 +-
- src/hb-ot-shape-complex-indic.cc | 12 ++++++------
- src/hb-ot-shape-complex-myanmar.cc | 2 +-
- src/hb-private.hh | 5 +++--
- src/hb-unicode-private.hh | 2 +-
- 5 files changed, 12 insertions(+), 11 deletions(-)
-
-commit 366aeaad006b230481a3c08ab4d239fb6b64fef8
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 15:45:48 2015 +0100
-
- Add note re ASSERT_STATIC_EXPR_ZERO()
-
- src/hb-private.hh | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit d6adca9fbbbd6fc7c8906121b50c3930fbe2de8e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 15:17:27 2015 +0100
-
- Remove unused macro ASSERT_STATIC_EXPR()
-
- src/hb-ot-shape-complex-arabic-win1256.hh | 4 ++--
- src/hb-ot-shape-complex-indic-private.hh | 2 --
- src/hb-private.hh | 1 -
- 3 files changed, 2 insertions(+), 5 deletions(-)
-
-commit 1025e1a9e7785ac67cc90d05b02862e38b3e6026
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 15:05:35 2015 +0100
-
- Use unsigned in FLAG()
-
- src/hb-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit cf59c7589c2b4064f4b9f4936115f830089a8ee7
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 14:51:45 2015 +0100
-
- [USE] Use use_category() for rphf/pref memory
-
- src/hb-ot-shape-complex-use.cc | 63
- +++++++++++++++---------------------------
- 1 file changed, 22 insertions(+), 41 deletions(-)
-
-commit 595936ec25e9c0924851bd1aa1af5eed3723b54f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 14:15:35 2015 +0100
-
- [USE] Hook of rphf and pref custom processing
-
- Still no reordering.
-
- src/hb-ot-layout-private.hh | 8 ++
- src/hb-ot-shape-complex-use.cc | 181
- +++++++++++++++++++++++++++++++++++++++--
- 2 files changed, 181 insertions(+), 8 deletions(-)
-
-commit ba72801325e4bd58f7597938d4409762c9fa530c
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 11:57:23 2015 +0100
-
- [USE] Add CGJ to table
-
- src/gen-use-table.py | 13 ++++++++++---
- src/hb-ot-shape-complex-use-table.cc | 1 +
- 2 files changed, 11 insertions(+), 3 deletions(-)
-
-commit 4febed61edc5367543e5a206ae01d3393841b612
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 10:24:32 2015 +0100
-
- [USE] Set up features
-
- src/hb-ot-shape-complex-use.cc | 68
- +++++++++++++++++++++++-------------------
- 1 file changed, 38 insertions(+), 30 deletions(-)
-
-commit 52a957795697085a5d379921ddd8aa6cf2f1a99d
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 10:02:04 2015 +0100
-
- [USE] Hook up new scripts to USE shaper
-
- Don't reroute scripts that we were routing to other shapers
- before (just yet).
-
- src/hb-ot-shape-complex-private.hh | 71
- ++++++++++++++++++++++++++++++++++++++
- 1 file changed, 71 insertions(+)
-
-commit b4c0829bc18b696f140a260fa2e1089d10164519
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Jul 21 09:31:19 2015 +0100
-
- [USE] Remove unused Unicode data enums from USE C++ side
-
- src/hb-ot-shape-complex-use-private.hh | 66
- +---------------------------------
- src/hb-ot-shape-complex-use.cc | 14 ++------
- 2 files changed, 3 insertions(+), 77 deletions(-)
-
-commit 44910cef626e6d03baa4d89d8fbe2c088971902d
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jul 20 18:01:10 2015 +0100
-
- [USE] Finish converting Unicode positional categories to USE
-
- Even compiles.
-
- src/gen-use-table.py | 114 +++++-
- src/hb-ot-shape-complex-use-table.cc | 702
- ++++++++++++++++++-----------------
- 2 files changed, 467 insertions(+), 349 deletions(-)
-
-commit ad725552521273a1f571f04bc96a04221c3e067a
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jul 20 17:00:06 2015 +0100
-
- [USE] Map from Unicode data to USE syllabic categories
-
- Positional sub-categories not applied yet.
-
- src/gen-use-table.py | 128 ++--
- src/hb-ot-shape-complex-use-table.cc | 1062
- ++++++++++++----------------------
- 2 files changed, 409 insertions(+), 781 deletions(-)
-
-commit 20e246e674155d5fb6527722fc3ef3accf2413df
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jul 20 15:56:19 2015 +0100
-
- [USE] Start moving Unicode-to-USE mapping into Python code
-
- src/Makefile.am | 2 +-
- src/gen-use-table.py | 176
- +++++++++++++++++++++++++++++++++--
- src/hb-ot-shape-complex-use-table.cc | 3 +-
- 3 files changed, 169 insertions(+), 12 deletions(-)
-
-commit eb74535cc2c0d0de41e54e75bdc71825ec969523
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jul 20 15:33:25 2015 +0100
-
- [USE] Fix Number clusters
-
- The spec wrongly has "H" where "HN" is meant.
-
- src/hb-ot-shape-complex-use-machine.rl | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit a9663958fe861950b6f389b389f146232b2cd909
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jul 20 14:24:55 2015 +0100
-
- [USE] Start putting together the shaper body
-
- src/hb-ot-shape-complex-use-private.hh | 2 +-
- src/hb-ot-shape-complex-use.cc | 339
- +++++++++++++++++++++++++++++++++
- 2 files changed, 340 insertions(+), 1 deletion(-)
-
-commit e0eabd7f67462ac34fbfc749d897be478fbd1224
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jul 20 13:30:51 2015 +0100
-
- [USE] Put a Ragel machine together
-
- Grammar from the spec!
-
- src/hb-ot-shape-complex-use-machine.rl | 169
- +++++++++++++++++++++++++++++++++
- src/hb-ot-shape-complex-use-private.hh | 160
- +++++++++++++++++++++++++++++++
- 2 files changed, 329 insertions(+)
-
-commit fd74b939b176f47d34d34b3d33e2a09d255c2d9e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jul 20 13:30:45 2015 +0100
-
- Minor
-
- src/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 5e5c8560cca3cb9c6be90c7c18ecb77d5cca0c0f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jul 20 12:01:20 2015 +0100
-
- [USE] Minor optimization of USE table
-
- src/gen-use-table.py | 2 +-
- src/hb-ot-shape-complex-use-table.cc | 30 ++++++++++++------------------
- 2 files changed, 13 insertions(+), 19 deletions(-)
-
-commit 14b12f92a9ef7db57c5252ef0442239319ce4bca
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jul 20 11:57:44 2015 +0100
-
- [USE] Add Kharoshti test data from Unicode proposal
-
- test/shaping/texts/in-tree/MANIFEST | 1 +
- test/shaping/texts/in-tree/shaper-use/MANIFEST | 1 +
- .../in-tree/shaper-use/script-kharoshti/MANIFEST | 1 +
- .../in-tree/shaper-use/script-kharoshti/misc.txt | 36
- ++++++++++++++++++++++
- 4 files changed, 39 insertions(+)
-
-commit c48ff288522f33dc6c78520de0a0a74306630895
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jul 20 11:46:17 2015 +0100
-
- [USE] Build Universal Shaping Engine data table from Unicode 8 files
-
- src/gen-use-table.py | 35 +-
- src/hb-ot-shape-complex-use-table.cc | 1016
- ++++++++++++++++++++++++++++++++++
- 2 files changed, 1032 insertions(+), 19 deletions(-)
-
-commit e2c95116e1423f83a692d6170553d0cc95733d24
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jul 20 11:32:48 2015 +0100
-
- [USE] Add Universal Shaping Engine to Makefile
-
- src/Makefile.am | 23 +++-
- src/gen-use-table.py | 237
- +++++++++++++++++++++++++++++++++
- src/hb-ot-shape-complex-use-machine.rl | 0
- src/hb-ot-shape-complex-use-private.hh | 0
- src/hb-ot-shape-complex-use-table.cc | 0
- src/hb-ot-shape-complex-use.cc | 0
- 6 files changed, 254 insertions(+), 6 deletions(-)
-
-commit 41a29af8053782e3a9c6a96a394bd76ef6d42099
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 15 01:39:57 2015 +0100
-
- Update Arabic shaping table for Unicode 8.0
-
- src/hb-ot-shape-complex-arabic-table.hh | 26 +++++++++++++-------------
- 1 file changed, 13 insertions(+), 13 deletions(-)
-
-commit 64a2726e2c6efce4379a7609024ec21eb4b5e4dc
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jul 15 01:36:39 2015 +0100
-
- Add Unicode 8.0 scripts
-
- Based on https://bugzilla.mozilla.org/show_bug.cgi?id=1183209
-
- src/hb-common.cc | 3 +++
- src/hb-common.h | 7 +++++++
- 2 files changed, 10 insertions(+)
-
-commit 9ae156b76820d9079bae062e7e38c34a386d9bd2
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sun Jul 5 22:43:17 2015 +0100
-
- Fix pragma usage
-
- https://bugs.freedesktop.org/show_bug.cgi?id=91228
-
- Commit cdcdfe61b97a0a48ccf834b6d924d187da9609be changed two `#pragma
- message` to `#pragma error` in hb-unicode.cc, however MSVC uses
- #error,
- just like the #else branch. `#pragma error` is an unknown pragma so
- MSVC does not fail the build because of it, which I believe was the
- intention of that commit.
-
- If it's meant to be an #error, then the #ifdef for _MSC_VER can be
- removed entirely.
-
- src/hb-unicode.cc | 5 -----
- src/hb-warning.cc | 10 ----------
- 2 files changed, 15 deletions(-)
-
-commit 8ad89f057d737ccbc6f411e9ebcf11b8130a50bb
-Author: ThePhD <phdofthehouse@gmail.com>
-Date: Tue Jun 23 09:09:24 2015 -0400
-
- Spelling words is not my strong point.
-
- src/hb-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit e0a828ecbd708757d67977f7e92a6f4c1b0b92fd
-Author: ThePhD <phdofthehouse@gmail.com>
-Date: Tue Jun 23 09:07:17 2015 -0400
-
- Back to using regular `strdup`, with an `hb-private.hh` fix that
- special-cases VC++'s
- definition and usage of the words
-
- src/hb-common.cc | 2 +-
- src/hb-private.hh | 3 +++
- 2 files changed, 4 insertions(+), 1 deletion(-)
-
-commit 8e545d59610211261e684c10158b9e5df6fae24d
-Author: ThePhD <phdofthehouse@gmail.com>
-Date: Mon Jun 22 22:29:04 2015 -0400
-
- Fix all VC++ warnings and errors in the current commit's builds.
-
- src/hb-common.cc | 4 ++--
- src/hb-fallback-shape.cc | 2 +-
- src/hb-ot-layout.cc | 2 +-
- src/hb-ot-map.cc | 2 +-
- src/hb-ot-shape-complex-hangul.cc | 2 +-
- src/hb-ot-shape-complex-hebrew.cc | 2 +-
- src/hb-ot-shape-complex-indic.cc | 4 ++--
- src/hb-ot-shape-normalize.cc | 6 +++---
- src/hb-ot-shape.cc | 2 +-
- 9 files changed, 13 insertions(+), 13 deletions(-)
-
-commit 5f13bbd9d4b0970851626e2ce3cf4ecb3cfde801
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Jun 19 13:31:49 2015 -0700
-
- When removing default-ignorables, merge clusters
-
- Fixes test-shape, and:
- https://code.google.com/p/chromium/issues/detail?id=497578
-
- src/hb-buffer-private.hh | 2 ++
- src/hb-buffer.cc | 36 ++++++++++++++++++++++++++++++++++--
- src/hb-ot-shape.cc | 2 +-
- 3 files changed, 37 insertions(+), 3 deletions(-)
-
-commit 82b521aeb7cc73879b44ca4278d6fa8b4347527f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Jun 19 11:57:57 2015 -0700
-
- Rewrite hide_default_ignorables
-
- Separate the loops for the two cases of replacing with space
- and deleting. For deleting, use the out-buffer machinery.
-
- Needed for upcoming cluster merge fix.
-
- src/hb-buffer-private.hh | 18 ++++++++++++++
- src/hb-ot-shape.cc | 65
- +++++++++++++++++++++++++++++-------------------
- 2 files changed, 57 insertions(+), 26 deletions(-)
-
-commit b3a2f6afbac1956b65f29a17b9dc896e86135329
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jun 18 17:15:33 2015 -0700
-
- [test] Add test for cluster merging
-
- Based on test from
- https://code.google.com/p/chromium/issues/detail?id=497578
-
- Currently fails. Basically, if there's a default_ignorable at the
- start of text, and font has no space glyph, we remove the
- default_ignorable,
- and that makes the first char in text to correspond to no cluster.
-
- Fix coming.
-
- test/api/test-shape.c | 43 +++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 43 insertions(+)
-
-commit a6446d44e6d04e1eeea994682e29f9cb6265f7f6
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jun 18 11:14:56 2015 -0700
-
- 0.9.41
-
- NEWS | 10 ++++++++++
- configure.ac | 2 +-
- 2 files changed, 11 insertions(+), 1 deletion(-)
-
-commit cd042fc8c4a3984c3647cd22a27c34f00636f6e8
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jun 18 10:55:13 2015 -0700
-
- [util] Disable hb-fc-list for now
-
- Until I figure out what to do about the API, and finalize
- the tool.
-
- util/Makefile.am | 28 ++++++++++++++--------------
- 1 file changed, 14 insertions(+), 14 deletions(-)
-
-commit 351f68f4e01a107f62e4eb3458d7c7ae379939fb
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Jun 12 17:46:06 2015 -0700
-
- [bindings] Fix hb_language_get_default() and hb_ot_tag_to_language()
-
- Part of https://github.com/behdad/harfbuzz/issues/91
-
- src/hb-common.cc | 2 +-
- src/hb-ot-tag.cc | 9 +++++++++
- 2 files changed, 10 insertions(+), 1 deletion(-)
-
-commit f0c80060763475aa34a18ecbef600b6811855cb6
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Jun 12 17:37:41 2015 -0700
-
- [TravisCI] Hook up Coverity
-
- First try...
-
- .travis.yml | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-commit 8ac446908ca75bea989414a0f551a6da8885bf52
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Jun 12 17:29:05 2015 -0700
-
- Add Coverity Scan badge
-
- README | 1 +
- 1 file changed, 1 insertion(+)
-
-commit a5e4f6d6088f6ed37fb1d68d3682b8eb4c9b46fe
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jun 10 10:57:46 2015 -0700
-
- Fix warnings: "member call on null pointer of type"
-
- https://bugzilla.mozilla.org/show_bug.cgi?id=1167119
-
- src/hb-private.hh | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 16dac7eccf04bb357e95a8e4c18c8418dcfb4030
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jun 3 12:07:46 2015 -0700
-
- Fix build
-
- util/options.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 8dacb7f8b46c70f22b70c78e0a8efc3309137650
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jun 3 11:53:42 2015 -0700
-
- Add include check to hb-ot-font.h
-
- src/hb-ot-font.h | 4 ++++
- 1 file changed, 4 insertions(+)
-
-commit 37c8daf724add4a41a06385e571277d137dc2a2f
-Merge: f1b4430 01c3a88
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Jun 1 13:27:37 2015 -0700
-
- Merge pull request #111 from brawer/since
-
- Fix "Since:" tags
-
-commit 01c3a88543850c87483fd8671044df53b368c520
-Author: Sascha Brawer <sascha@brawer.ch>
-Date: Mon Jun 1 13:22:01 2015 +0200
-
- Fix "Since:" tags
-
- Based on data from http://upstream-tracker.org/versions/harfbuzz.html
- Resolves #103
-
- src/hb-buffer.cc | 32 +++++++++++++++++------------
- src/hb-common.cc | 4 ++--
- src/hb-face.cc | 12 +++++------
- src/hb-font.cc | 14 ++++++-------
- src/hb-font.h | 4 ++--
- src/hb-ft.cc | 4 ++--
- src/hb-glib.cc | 3 +++
- src/hb-gobject-structs.h | 18 +++++++++++++++++
- src/hb-ot-font.cc | 3 +++
- src/hb-ot-layout.cc | 30 ++++++++++++++++++++++++++++
- src/hb-ot-shape.cc | 6 ++++++
- src/hb-set.cc | 52
- ++++++++++++++++++++++++------------------------
- src/hb-shape-plan.cc | 18 ++++++++---------
- src/hb-shape.cc | 8 ++++----
- src/hb-unicode.cc | 6 +++---
- src/hb-unicode.h | 31 ++++++++++++++++++++++++++---
- 16 files changed, 168 insertions(+), 77 deletions(-)
-
-commit f1b44303df0712b433e35e1e1e75115c353b279e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu May 21 14:00:15 2015 -0700
-
- Fix unary minus operator applied to unsigned int
-
- Applying unary minus operator to unsigned int causes the following
- warning on MSVS:
-
- warning C4146: unary minus operator applied to unsigned type,
- result still unsigned
-
- Based on patch from Koji Ishi.
-
- Fixes https://github.com/behdad/harfbuzz/pull/110
-
- src/hb-ot-font.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 1ae6cdb365c15405500d4f50ec98016dde23a26b
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue May 19 17:42:30 2015 -0700
-
- [gobject] Remove hb_language_t workarounds for g-i shortcomings
-
- Using latest gobject-introspection, I don't seem to be having this
- problem anymore:
-
- https://bugzilla.gnome.org/show_bug.cgi?id=707656
-
- Removing that kludge makes language_t behave more like the way I
- expect it
- in Python.
-
- Also fixes:
- https://github.com/behdad/harfbuzz/issues/91
-
- src/hb-gobject-structs.cc | 1 -
- src/hb-gobject-structs.h | 8 --------
- 2 files changed, 9 deletions(-)
-
-commit ece434fa0fec6754e5164d881c1e967376729eca
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue May 19 17:20:58 2015 -0700
-
- [gobject] Macroize value types
-
- Fixes user_data_t
-
- src/hb-gobject-structs.cc | 73
- +++++++++++------------------------------------
- 1 file changed, 17 insertions(+), 56 deletions(-)
-
-commit 9df099b4837df722e738675af318efcc9ac39a78
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon May 18 18:37:06 2015 -0700
-
- [ft] Don't set *glyph in get_glyph() if glyph not found
-
- src/hb-ft.cc | 16 ++++++++++------
- 1 file changed, 10 insertions(+), 6 deletions(-)
-
-commit ff0f210519bcb0e44d4b986f7eef2004383cd344
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon May 18 14:16:28 2015 -0700
-
- [util] Minor
-
- util/ansi-print.cc | 26 +++++++++++++-------------
- 1 file changed, 13 insertions(+), 13 deletions(-)
-
-commit fbecde3d5c5c6d5af315140e4966dc850388ad63
-Merge: 5801521 74139f9
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu May 7 10:46:42 2015 -0700
-
- Merge pull request #105 from ebraminio/master
-
- Fix Travis CI config to pass again
-
-commit 74139f9839f69ea3e7a1d17627f52fea6c06d58a
-Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Thu May 7 13:09:32 2015 +0000
-
- Fix Travis CI config to pass again
-
- .travis.yml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 58015215321a76d68df8e0d51039904a67291108
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed May 6 00:40:31 2015 -0700
-
- Add note re OpenType 1.7 language tags
-
- src/hb-ot-tag.cc | 15 ++++++++++-----
- 1 file changed, 10 insertions(+), 5 deletions(-)
-
-commit f6266ad291d7686d5e110255ace5f2ff9e70bf38
-Author: Roozbeh Pournader <roozbeh@google.com>
-Date: Tue May 5 22:31:19 2015 -0700
-
- [minor] Remove comment about Navajo OpenType code.
-
- Apparently the code is already standardized:
- https://www.microsoft.com/typography/otspec/languagetags.htm
-
- src/hb-ot-tag.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 42b00118eae46a5183e885e89e0856f41361f57e
-Merge: c60f3c8 cfeb056
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue May 5 14:49:47 2015 -0700
-
- Merge pull request #102 from roozbehp/master
-
- Add OpenType language tag 'NAV ' for Navajo.
-
-commit c60f3c8e1156fe7328d42851013cca97333c3bf7
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon May 4 23:10:32 2015 -0700
-
- [README.python] Add package name for gobject-introspection on Ubuntu
-
- README.python | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-commit 82010a4bdb32248deb1337a3357dfae5b203c48d
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon May 4 23:09:51 2015 -0700
-
- [travis] Comment out gobject-introspection again
-
- Apparently the version on Travis is 1.32.0, while we require 1.34.0.
-
- .travis.yml | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 8a254bdd29a99eb91b37e9e540179a1a01f77605
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon May 4 19:22:11 2015 -0700
-
- [travis] Build with introspection enabled
-
- .travis.yml | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit be66ec5373634234f221ace9cfed45d76b87f20e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Apr 30 18:27:13 2015 -0400
-
- Use TRUE/FALSE instead of true/false in docs
-
- src/hb-shape.cc | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit d055e1fc781c123f38d321846937965ef794257e
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Wed Jan 8 02:28:55 2014 +0200
-
- Some attempt into initial hb-shape documentation
-
- Very anaemic, needs to descripe the format understood by
- hb_feature_from_string() etc., but it is just start.
-
- src/hb-shape.cc | 70
- ++++++++++++++++++++++++++++++++++++++-------------------
- src/hb-shape.h | 3 ---
- 2 files changed, 47 insertions(+), 26 deletions(-)
-
-commit 81bedda58cfc15f1987aa1952290cf9d87b4d074
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Apr 30 13:04:16 2015 -0400
-
- New API: hb_buffer_reverse_range()
-
- src/hb-buffer.cc | 17 +++++++++++++++++
- src/hb-buffer.h | 4 ++++
- 2 files changed, 21 insertions(+)
-
-commit cfeb0562ebd8804dad731625153549eafeb78213
-Author: Roozbeh Pournader <roozbeh@google.com>
-Date: Wed Apr 29 09:32:42 2015 -0700
-
- Add OpenType language tag 'NAV ' for Navajo.
-
- The code is not standardized yet, but is used in some Google fonts.
-
- src/hb-ot-tag.cc | 1 +
- 1 file changed, 1 insertion(+)
-
-commit f724cc351640ee075a9867ef42df32cf5e0ef3b7
-Author: Jonathan Kew <jfkthame@gmail.com>
-Date: Thu Apr 23 12:45:02 2015 +0100
-
- Don't apply Arabic shaping to vertical text.
-
- src/hb-ot-shape-complex-private.hh | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-commit 97942420bbee1bc6953d5f805621066301fa17ca
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Apr 23 18:56:24 2015 -0700
-
- Update check-libstdc++ for clang
-
- src/check-libstdc++.sh | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit 8f0a4d67143ccdef0b5a6ac99fb9b680c3a2f69c
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Apr 23 14:32:33 2015 -0700
-
- [test] Ignor 'n' and 'i' in hb-unicode-encode
-
- Allows accepting uniXXXX format.
-
- test/shaping/hb_test_tools.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 39851ce84efd30f6d0570324ff8f3808a01b813b
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Apr 21 19:23:27 2015 -0700
-
- [coretext] Oops; fix issue number for previous commit
-
- src/hb-coretext.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 24f17afeafd40ff77177ed42c9007a0f34fcbb78
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Apr 21 19:21:32 2015 -0700
-
- [coretext] Fix positioning with trailing whitespace
-
- Fixes https://code.google.com/p/chromium/issues/detail?id=476913
-
- src/hb-coretext.cc | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-commit dba482fc4458776ffebdeb2d34b970b4223fa8fd
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Apr 17 13:08:08 2015 -0700
-
- [ot-font] Accept MS Symbol cmap if nothing else found
-
- src/hb-ot-font.cc | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 3029e8b59d1667dc6a53355be89a2b55d7089b88
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Apr 14 13:32:22 2015 -0700
-
- Revert "Add MSVC pragma for UTF-8 source code"
-
- This reverts commit 89cbd4d9533011fb5487caa99a0cd58923e7cf59.
-
- See discussion:
- https://bugzilla.gnome.org/show_bug.cgi?id=747772
-
- src/hb-private.hh | 1 -
- 1 file changed, 1 deletion(-)
-
-commit 820505a186ff60e4bae9d717fe4d7ab2390e6fef
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Apr 13 23:51:45 2015 -0700
-
- Whitespace
-
- util/options.cc | 18 +++++++++++-------
- 1 file changed, 11 insertions(+), 7 deletions(-)
-
-commit 76d57331117be8e0c2d4a2aee8341969b62b6888
-Merge: 89cbd4d 9ee176e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Apr 13 23:40:35 2015 -0700
-
- Merge pull request #86 from cpfair/hb-shape-output-help-improvement
-
- Improve hb-shape/hb-view's help text w.r.t. output options
-
-commit 89cbd4d9533011fb5487caa99a0cd58923e7cf59
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Apr 13 12:27:08 2015 -0700
-
- Add MSVC pragma for UTF-8 source code
-
- Not sure we have any right now; motivated by this:
- https://bugzilla.gnome.org/show_bug.cgi?id=747772
-
- src/hb-private.hh | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 713f99ff6138b4149d9fd382f9af3ace01ee0da5
-Merge: 1086f21 22524a5
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Apr 10 14:34:05 2015 -0700
-
- Merge pull request #99 from khaledhosny/introspection-fixes2
-
- More ntrospection fixes
-
-commit 22524a514f6609a2bc009b6035f6b5b932c719c7
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Fri Apr 10 18:14:45 2015 +0200
-
- [bindings] Fix hb_buffer_get_segment_properties
-
- Annotate the output parameter.
-
- src/hb-buffer.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 1086f21e546e2435d9da6024fd6afa7a36ba3707
-Merge: 125cb08 fe97b65
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Apr 10 12:21:04 2015 -0700
-
- Merge branch 'hb-fc'
-
-commit 125cb08345a7f27e565329d37093b1a60a41a403
-Merge: e8fd839 855a5d7
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Apr 10 12:19:57 2015 -0700
-
- Merge pull request #98 from KonstantinRitt/WEC2013
-
- Fix build on WEC2013
-
-commit 04f89e8f7dfdb882e8c98afb613cba3f1d02ed7d
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Fri Apr 10 17:49:01 2015 +0200
-
- [bindings] Fix ownership of returned hb_language_t
-
- It should not be freed by the caller.
-
- src/hb-buffer.cc | 2 +-
- src/hb-common.cc | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 855a5d7cb8f585bf66dd18cb480b8c3feef62480
-Author: Konstantin Ritt <ritt.ks@gmail.com>
-Date: Fri Apr 10 17:18:01 2015 +0400
-
- Fix build on WEC2013
-
- Based on patch from Björn Breitmeyer
-
- src/hb-private.hh | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-commit fe97b65a54a416229e28b1c931e5e01ca19f31d3
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Aug 6 16:49:51 2014 -0400
-
- [utils] Add hb-fc-list
-
- This is a tool that lists all fonts that can render a given string.
- It uses hb_shape() to do so, and as such is aware of HarfBuzz's
- normalizer.
-
- configure.ac | 19 +++++
- util/Makefile.am | 15 ++++
- util/hb-fc-list.c | 222
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++
- util/hb-fc.cc | 149 ++++++++++++++++++++++++++++++++++++
- util/hb-fc.h | 46 +++++++++++
- 5 files changed, 451 insertions(+)
-
-commit eb0bf3ae6688b7e98a706df2ad2714c071d77e22
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Aug 6 15:36:41 2014 -0400
-
- Relax inert checks
-
- Previously, when creating an object from inert inputs (eg:
- "hb_font_create(hb_face_get_empty())") we returned the inert
- empty object. This is not helpful as there are legitimate
- usecases to do that.
-
- We now never return the inert object unless allocation failed.
-
- Tests are revised to reflect.
-
- src/hb-face.cc | 4 ++--
- src/hb-font.cc | 4 +---
- src/hb-shape-plan.cc | 7 +++++--
- test/api/test-font.c | 10 +++++-----
- test/api/test-object.c | 34 +++++++++++++++++-----------------
- 5 files changed, 30 insertions(+), 29 deletions(-)
-
-commit e8fd83932a75cfbaa4638a757868915ebfac3c1f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Apr 9 15:52:26 2015 -0700
-
- [util/hb-view] Fix rendering with all combinations of negative scales
-
- util/view-cairo.cc | 90
- ++++++++++++++++++++++++++++--------------------------
- util/view-cairo.hh | 2 --
- 2 files changed, 47 insertions(+), 45 deletions(-)
-
-commit 69d5af93169ea2d87276b65d43c889a359d5d81e
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Apr 9 15:17:16 2015 -0700
-
- [util] Minor
-
- util/view-cairo.cc | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-commit a664810e38b479e05ea32cac263cb5730629f9d8
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Apr 9 15:04:42 2015 -0700
-
- [util] Accept comma as well as space when separating components
- of args
-
- Applies to --font-size and --margin.
-
- Hopefully the scanf usage here doesn't have compatibility issues
- (star being counted in the return value, etc).
-
- util/options.cc | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 9c974360febcfd67247107352425fe8590d9d452
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Apr 9 12:04:14 2015 -0700
-
- Minor rename
-
- src/hb-atomic-private.hh | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-commit f3b170bdd970e31e9dbfed94c07c3cda41269aed
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Apr 8 16:26:24 2015 -0700
-
- Minor
-
- src/hb-common.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 2958f2c147fc6327175b51a4eaca694263e34ac9
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Apr 8 16:26:16 2015 -0700
-
- Fixup
-
- src/hb-atomic-private.hh | 1 +
- 1 file changed, 1 insertion(+)
-
-commit b931e0b0ceeab0e4819d9c4b838c1a1eb87b52e4
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Apr 8 14:39:00 2015 -0700
-
- Fix warnings
-
- Part of https://github.com/behdad/harfbuzz/pull/68
-
- src/hb-ot-font.cc | 4 ++--
- src/hb-ot-layout-gsubgpos-private.hh | 22 +++++++++++-----------
- 2 files changed, 13 insertions(+), 13 deletions(-)
-
-commit cdcdfe61b97a0a48ccf834b6d924d187da9609be
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Apr 8 13:25:04 2015 -0700
-
- Err, instead of warn, if mutex / atomic / unicode funcs are missing
-
- Hopefully this results in fewer badly built HarfBuzz integrations.
-
- src/hb-unicode.cc | 8 ++++----
- src/hb-warning.cc | 22 ++++++++--------------
- 2 files changed, 12 insertions(+), 18 deletions(-)
-
-commit fc3c59a1d746c5280f6216a94fdc1be3e826051f
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Apr 8 13:03:27 2015 -0700
-
- Fix unused var warnings
-
- src/hb-ot-layout-gpos-table.hh | 1 -
- src/hb-ot-layout-gsub-table.hh | 1 -
- 2 files changed, 2 deletions(-)
-
-commit 3f174cd020b7762fae96f20ce14fc9e9abec748f
-Author: Konstantin Ritt <ritt.ks@gmail.com>
-Date: Sat Mar 28 00:49:33 2015 +0400
-
- Minor refactoring to the atomics implementation
-
- s/atomic_int/atomic_int_impl/ and s/atomic_ptr/atomic_ptr_impl/
- to bring it in par with hb_mutex_impl_t, then re-introduce
- hb_atomic_int_t as a wrapper around hb_atomic_int_impl_t.
-
- In hb_reference_count_t, make it clear the non-atomic get and set
- are intentional due to nature of the cases they are used in
- (comparison to -1 and the debug output/tracing).
-
- src/hb-atomic-private.hh | 86
- +++++++++++++++++++++++++++++++-----------------
- src/hb-mutex-private.hh | 4 ++-
- src/hb-object-private.hh | 21 ++++++------
- 3 files changed, 69 insertions(+), 42 deletions(-)
-
-commit 24930d544ee9e247e4cf6a5f6d5207ba9d7a3ddc
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Apr 8 12:52:06 2015 -0700
-
- Minor
-
- src/hb-mutex-private.hh | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit 45a8b46f478d4aa63ae5df74b6bb28ebdd7521ac
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Apr 8 12:49:38 2015 -0700
-
- Allow implementing atomic and mutex ops in config
-
- Motivated by
- https://github.com/behdad/harfbuzz/pull/92
-
- src/hb-atomic-private.hh | 6 +++++-
- src/hb-mutex-private.hh | 7 ++++++-
- 2 files changed, 11 insertions(+), 2 deletions(-)
-
-commit 3fe4e92bc5ff09d84c6763cedf06ce80d15a5fb2
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Apr 8 12:49:23 2015 -0700
-
- Minor
-
- src/hb-set-private.hh | 1 -
- 1 file changed, 1 deletion(-)
-
-commit 9868749abe468130d89c80a2501847a83acb4579
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Apr 6 14:51:31 2015 -0700
-
- [test] Use /usr/bin/env python instead of /usr/bin/python
-
- Bug 76494 - #!/usr/bin/python in testsuite
-
- https://bugs.freedesktop.org/show_bug.cgi?id=76494
-
- test/shaping/hb-diff | 2 +-
- test/shaping/hb-diff-colorize | 2 +-
- test/shaping/hb-diff-filter-failures | 2 +-
- test/shaping/hb-diff-ngrams | 2 +-
- test/shaping/hb-diff-stat | 2 +-
- test/shaping/hb-manifest-read | 2 +-
- test/shaping/hb-manifest-update | 2 +-
- test/shaping/hb-unicode-decode | 2 +-
- test/shaping/hb-unicode-encode | 2 +-
- test/shaping/hb-unicode-prettyname | 2 +-
- test/shaping/hb_test_tools.py | 2 +-
- 11 files changed, 11 insertions(+), 11 deletions(-)
-
-commit bfcddd32a674dd19fca1bf521e95466a0eec5179
-Merge: ce01ad7 363ceec
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Apr 6 14:41:32 2015 -0700
-
- Merge pull request #93 from ebraminio/archpy3
-
- Make hb_test_tools.py compatible with python 3
-
-commit ce01ad7c2f5a259030f4dbec746f85522aa9c3f9
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Apr 1 11:05:59 2015 -0700
-
- MSVC 2015 supports snprintf and not _snprintf
-
- src/hb-private.hh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 560718862f0bd994b62361652d6fd558c4182e2a
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Apr 1 11:04:33 2015 -0700
-
- Move WinCE define to better place
-
- src/hb-private.hh | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-commit 363ceec3fb0c9566db5a59da31e508f69dea1e92
-Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Mon Mar 30 03:27:14 2015 +0430
-
- Make hb_test_tools.py compatible with python 3
-
- On ArchLinux, /usr/bin/python is linked to python 3 so
- HarfBuzz `make check` is broken there.
-
- This makes hb_test_tools.py compatible with python 3 while
- no breaking it on python 2.
-
- test/shaping/hb_test_tools.py | 44
- ++++++++++++++++++++++++-------------------
- 1 file changed, 25 insertions(+), 19 deletions(-)
-
-commit aee685086c8fde6f6c4590e483a177c19f222540
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Mar 26 14:13:53 2015 -0400
-
- Fix VC++ /analyze warnings
-
- out\debug\hb-buffer-deserialize-text.rl(47) : warning C6001: Using
- uninitialized memory 'pos'.
-
- src/hb-buffer-deserialize-text.rl | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 8886ab430ca68539cb318e175647e9f6973718b0
-Merge: e3671b8 a394bb6
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sun Mar 22 16:18:57 2015 -0400
-
- Merge pull request #90 from khaledhosny/introspection-fixes
-
- [bindings] Fix *_from_string functions
-
-commit a394bb66707184c995fe2d08c80e98220e6ec0b0
-Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Sun Mar 22 20:29:10 2015 +0200
-
- [bindings] Fix *_from_string functions
-
- Without the element-type they will be getting garbage, at least with
- Python.
-
- src/hb-common.cc | 8 ++++----
- src/hb-font.cc | 2 +-
- src/hb-shape.cc | 2 +-
- 3 files changed, 6 insertions(+), 6 deletions(-)
-
-commit e3671b8f8bb339e8a563a9da9cd5069073200fec
-Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Mar 20 18:03:02 2015 -0400
-
- 0.9.40
-
- NEWS | 8 ++++++++
- configure.ac | 2 +-
- 2 files changed, 9 insertions(+), 1 deletion(-)
-
commit 9e401f6890f2bea1d11914bca436c2230f8d0f1b
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Mar 20 16:08:38 2015 -0400
+Date: Fri Mar 20 16:08:38 2015 -0400
Fix reverse_range() for empty range
@@ -7231,7 +13,7 @@ Date: Fri Mar 20 16:08:38 2015 -0400
commit 7481bd49d56d4e814ab1f85fc2df8bf934d520f4
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Mar 4 15:47:25 2015 -0800
+Date: Wed Mar 4 15:47:25 2015 -0800
Fix previous commit
@@ -7242,7 +24,7 @@ Date: Wed Mar 4 15:47:25 2015 -0800
commit 6763e21afb77b250ad4416ff921d46c63ea12443
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Mar 4 15:43:05 2015 -0800
+Date: Wed Mar 4 15:43:05 2015 -0800
Accept glibtoolize as libtoolize
@@ -7255,17 +37,17 @@ Date: Wed Mar 4 15:43:05 2015 -0800
commit 02a04e6afb1a76894f3723a467716607970d95d3
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Mar 4 12:32:03 2015 -0800
+Date: Wed Mar 4 12:32:03 2015 -0800
0.9.39
- NEWS | 10 ++++++++++
+ NEWS | 10 ++++++++++
configure.ac | 2 +-
2 files changed, 11 insertions(+), 1 deletion(-)
commit 98e3ea8e34c798ce003e946c9a150bb41be9d09b
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Mar 4 12:03:39 2015 -0800
+Date: Wed Mar 4 12:03:39 2015 -0800
Fix hb-uniscribe build
@@ -7274,7 +56,7 @@ Date: Wed Mar 4 12:03:39 2015 -0800
commit 8ac345e5c0ed0aad6547592ea0839aabfb4ba980
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Mar 2 16:06:55 2015 -0800
+Date: Mon Mar 2 16:06:55 2015 -0800
Fix reverse_range() to only reverse alt array if positions are used
@@ -7287,7 +69,7 @@ Date: Mon Mar 2 16:06:55 2015 -0800
commit 1e03d7ac83f3e17aafed1e37390d9ff8394e36da
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 26 13:58:32 2015 -0800
+Date: Thu Feb 26 13:58:32 2015 -0800
Better error message if libtool is not installed
@@ -7298,7 +80,7 @@ Date: Thu Feb 26 13:58:32 2015 -0800
commit 6c918e2997fb82e89485f2b50bee2bf4fcd70592
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 26 13:55:34 2015 -0800
+Date: Thu Feb 26 13:55:34 2015 -0800
Clean up gtk-doc.make
@@ -7307,7 +89,7 @@ Date: Thu Feb 26 13:55:34 2015 -0800
commit 5ec5875acb12cf07447c9ebfb03212601368dfc4
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 26 13:53:05 2015 -0800
+Date: Thu Feb 26 13:53:05 2015 -0800
Install git.mk in docs/
@@ -7316,7 +98,7 @@ Date: Thu Feb 26 13:53:05 2015 -0800
commit d146678d103425b3da7ef393bc6d66f6ba4c5593
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 26 13:52:50 2015 -0800
+Date: Thu Feb 26 13:52:50 2015 -0800
Update git.mk from upstream
@@ -7325,7 +107,7 @@ Date: Thu Feb 26 13:52:50 2015 -0800
commit 5f541f8f7be82f29b77b481827deb212e12d53e4
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Feb 21 16:51:17 2015 +0300
+Date: Sat Feb 21 16:51:17 2015 +0300
Minor refactoring
@@ -7334,7 +116,7 @@ Date: Sat Feb 21 16:51:17 2015 +0300
commit ef79bdf73bbfde1bfaa222834809d105ab7755b3
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Feb 21 16:49:15 2015 +0300
+Date: Sat Feb 21 16:49:15 2015 +0300
Minor
@@ -7343,7 +125,7 @@ Date: Sat Feb 21 16:49:15 2015 +0300
commit 68e04afbb1e1073c47474f7a4d6d2cacf7057f6f
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Feb 21 16:30:28 2015 +0300
+Date: Sat Feb 21 16:30:28 2015 +0300
Typo
@@ -7352,7 +134,7 @@ Date: Sat Feb 21 16:30:28 2015 +0300
commit 55553699b38d6481fbfacd0a32fc266e55553b34
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Feb 21 16:29:08 2015 +0300
+Date: Sat Feb 21 16:29:08 2015 +0300
Minor
@@ -7361,7 +143,7 @@ Date: Sat Feb 21 16:29:08 2015 +0300
commit 5175300fbaf4ff19b7d38c14c86331bb614b0390
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Feb 21 12:50:01 2015 +0300
+Date: Sat Feb 21 12:50:01 2015 +0300
[layout] Fix comparison of GlyphID and hb_codepoint_t
@@ -7376,7 +158,7 @@ Date: Sat Feb 21 12:50:01 2015 +0300
commit 7cce809cb11e0ce65dbdab899779ece3dc337763
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Feb 21 12:41:08 2015 +0300
+Date: Sat Feb 21 12:41:08 2015 +0300
Remove unused (and wrong as of a few commits ago) cmp() function
@@ -7385,7 +167,7 @@ Date: Sat Feb 21 12:41:08 2015 +0300
commit 8e3d4bae033bdec649676da26cfc3eb7610832a8
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Feb 21 12:31:59 2015 +0300
+Date: Sat Feb 21 12:31:59 2015 +0300
Minor
@@ -7394,7 +176,7 @@ Date: Sat Feb 21 12:31:59 2015 +0300
commit f47cf1f12dd1fa3cd3aa84502139caca9d469af8
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Feb 21 11:45:22 2015 +0300
+Date: Sat Feb 21 11:45:22 2015 +0300
Minor
@@ -7403,7 +185,7 @@ Date: Sat Feb 21 11:45:22 2015 +0300
commit 640b66c6348653bfd7cf88ea9caa2133c0eb949f
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 19 17:30:05 2015 +0300
+Date: Thu Feb 19 17:30:05 2015 +0300
[layout] If lookup has only one subtable, move the forward loop down
to subtable
@@ -7416,7 +198,7 @@ Date: Thu Feb 19 17:30:05 2015 +0300
commit e2f50f2a7ebf9882ea89dc3f0c740e7fce964e37
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 19 17:15:05 2015 +0300
+Date: Thu Feb 19 17:15:05 2015 +0300
[layout] Add apply_forward / apply_backward
@@ -7426,7 +208,7 @@ Date: Thu Feb 19 17:15:05 2015 +0300
commit 1d4a328472f094c0d75a062f6e176c6b1875cfdc
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 19 11:33:30 2015 +0300
+Date: Thu Feb 19 11:33:30 2015 +0300
[layout] Remove unneeded return value from apply()
@@ -7435,7 +217,7 @@ Date: Thu Feb 19 11:33:30 2015 +0300
commit bbdd6fd21cc2e079defff7cb17c3eb8eff3f9e09
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 19 17:03:02 2015 +0300
+Date: Thu Feb 19 17:03:02 2015 +0300
Minor simpilfy BEInt
@@ -7444,7 +226,7 @@ Date: Thu Feb 19 17:03:02 2015 +0300
commit 88a399acdc0fcb060803da0e7db56de2866981e3
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 19 16:57:12 2015 +0300
+Date: Thu Feb 19 16:57:12 2015 +0300
Optimize IntType comparison to avoid branches for 16bit numbers
@@ -7453,7 +235,7 @@ Date: Thu Feb 19 16:57:12 2015 +0300
commit 37de2d533126245774417234e3536fcfb24f3a6b
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 19 16:55:51 2015 +0300
+Date: Thu Feb 19 16:55:51 2015 +0300
Minor simplify IntType
@@ -7462,18 +244,18 @@ Date: Thu Feb 19 16:55:51 2015 +0300
commit bd047d3b7f04d551c0a26bc0ce9b9d61481e34e1
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 19 10:47:18 2015 +0300
+Date: Thu Feb 19 10:47:18 2015 +0300
[layout] Minor
src/hb-ot-layout-gpos-table.hh | 6 ++++++
src/hb-ot-layout-gsub-table.hh | 6 ++++++
- src/hb-ot-layout.cc | 4 ++--
+ src/hb-ot-layout.cc | 4 ++--
3 files changed, 14 insertions(+), 2 deletions(-)
commit b9d3f60520c022dc952e65a66eb138d1f7cae2e1
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 19 10:42:41 2015 +0300
+Date: Thu Feb 19 10:42:41 2015 +0300
[layout] Minor
@@ -7482,7 +264,7 @@ Date: Thu Feb 19 10:42:41 2015 +0300
commit 1a2322134a5d7bba990da28baf893b35879a5a7a
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 19 10:40:23 2015 +0300
+Date: Thu Feb 19 10:40:23 2015 +0300
[layout] Don't check glyph props against lookup flags when recursing
@@ -7495,14 +277,14 @@ Date: Thu Feb 19 10:40:23 2015 +0300
commit 095a1257cc3cc56b044b4cd842a92f0d0f933a50
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Feb 19 10:29:41 2015 +0300
+Date: Thu Feb 19 10:29:41 2015 +0300
[layout] Port sanitize() to use dispatch()
Needed some rework of Extension table. Hopefully I got it right, and
the new template usage doesn't break any compilers...
- src/hb-open-type-private.hh | 5 ++-
+ src/hb-open-type-private.hh | 5 ++-
src/hb-ot-layout-gpos-table.hh | 82
+----------------------------------
src/hb-ot-layout-gsub-table.hh | 72 ++-----------------------------
@@ -7512,7 +294,7 @@ Date: Thu Feb 19 10:29:41 2015 +0300
commit 758fb20630f84c3d373cda37974b88f16c02995e
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 18 13:45:03 2015 +0300
+Date: Wed Feb 18 13:45:03 2015 +0300
Remove unused macro
@@ -7521,7 +303,7 @@ Date: Wed Feb 18 13:45:03 2015 +0300
commit 40c58923cbf689c465f9b65334c455a9b7f71ab0
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 18 13:18:46 2015 +0300
+Date: Wed Feb 18 13:18:46 2015 +0300
[layout] Refactor Lookup::dispatch()
@@ -7533,7 +315,7 @@ Date: Wed Feb 18 13:18:46 2015 +0300
commit 70366f5d19df2e654f0933474fecf1aa16e27812
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 18 13:09:54 2015 +0300
+Date: Wed Feb 18 13:09:54 2015 +0300
[layout] Refactor get_subtable()
@@ -7544,7 +326,7 @@ Date: Wed Feb 18 13:09:54 2015 +0300
commit f72f326aea6d1e93f63040730f7aecd401676c1c
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Feb 17 19:18:07 2015 +0300
+Date: Tue Feb 17 19:18:07 2015 +0300
Minor
@@ -7553,7 +335,7 @@ Date: Tue Feb 17 19:18:07 2015 +0300
commit 8e36ccfd4f076888076ca176c055c18104af03b6
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Feb 17 19:15:34 2015 +0300
+Date: Tue Feb 17 19:15:34 2015 +0300
[layout] Use dispatch() for add_coverage()
@@ -7564,7 +346,7 @@ Date: Tue Feb 17 19:15:34 2015 +0300
commit 50b8dc79daffc7ef671dd5eedfea47f8d5e946f4
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Feb 17 18:14:17 2015 +0300
+Date: Tue Feb 17 18:14:17 2015 +0300
[layout] Add may_dispatch()
@@ -7577,7 +359,7 @@ Date: Tue Feb 17 18:14:17 2015 +0300
commit de2118ed7a998a1df9b28fd1be96b4af89ed82c3
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Feb 17 17:27:44 2015 +0300
+Date: Tue Feb 17 17:27:44 2015 +0300
Make sanitize() a const method
@@ -7586,12 +368,12 @@ Date: Tue Feb 17 17:27:44 2015 +0300
place, after making sure it's safe to do so. So, do a const_cast<> in
that one place...
- src/hb-open-file-private.hh | 15 +++--
- src/hb-open-type-private.hh | 51 +++++++++++------
- src/hb-ot-cmap-table.hh | 35 ++++++++----
- src/hb-ot-head-table.hh | 6 +-
- src/hb-ot-hhea-table.hh | 3 +-
- src/hb-ot-hmtx-table.hh | 3 +-
+ src/hb-open-file-private.hh | 15 +++--
+ src/hb-open-type-private.hh | 51 +++++++++++------
+ src/hb-ot-cmap-table.hh | 35 ++++++++----
+ src/hb-ot-head-table.hh | 6 +-
+ src/hb-ot-hhea-table.hh | 3 +-
+ src/hb-ot-hmtx-table.hh | 3 +-
src/hb-ot-layout-common-private.hh | 58 ++++++++++++-------
src/hb-ot-layout-gdef-table.hh | 30 ++++++----
src/hb-ot-layout-gpos-table.hh | 108
@@ -7599,13 +381,13 @@ Date: Tue Feb 17 17:27:44 2015 +0300
src/hb-ot-layout-gsub-table.hh | 58 ++++++++++++-------
src/hb-ot-layout-gsubgpos-private.hh | 65 +++++++++++++--------
src/hb-ot-layout-jstf-table.hh | 12 ++--
- src/hb-ot-maxp-table.hh | 6 +-
- src/hb-ot-name-table.hh | 6 +-
+ src/hb-ot-maxp-table.hh | 6 +-
+ src/hb-ot-name-table.hh | 6 +-
14 files changed, 296 insertions(+), 160 deletions(-)
commit 6759ed95a3bec2874826376b68ebff19ba277ef2
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Feb 17 16:05:30 2015 +0300
+Date: Tue Feb 17 16:05:30 2015 +0300
Minor
@@ -7615,7 +397,7 @@ Date: Tue Feb 17 16:05:30 2015 +0300
commit 6b599dac1f814a3c900300241d4c492a8f8b66d2
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Feb 17 16:04:07 2015 +0300
+Date: Tue Feb 17 16:04:07 2015 +0300
Remove unnecessary check in sanitize
@@ -7625,7 +407,7 @@ Date: Tue Feb 17 16:04:07 2015 +0300
commit 365576d246949f9d587e90cf0539dc0381e4d0a3
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jan 29 13:59:42 2015 +0100
+Date: Thu Jan 29 13:59:42 2015 +0100
[layout] Allocate iters in the context
@@ -7635,23 +417,23 @@ Date: Thu Jan 29 13:59:42 2015 +0100
src/hb-ot-layout-gpos-table.hh | 18 ++++++------------
src/hb-ot-layout-gsubgpos-private.hh | 21 +++++++++++++--------
- src/hb-ot-shape-fallback.cc | 2 +-
+ src/hb-ot-shape-fallback.cc | 2 +-
3 files changed, 20 insertions(+), 21 deletions(-)
commit 514564f5444b8ad2f210b1e3d7d66378f7275317
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jan 29 13:48:48 2015 +0100
+Date: Thu Jan 29 13:48:48 2015 +0100
[layout] Move skippy_iter setup from constructor into init()
src/hb-ot-layout-gpos-table.hh | 18 ++++++++++++------
src/hb-ot-layout-gsubgpos-private.hh | 28 +++++++++++++++-------------
- src/hb-ot-shape-fallback.cc | 3 ++-
+ src/hb-ot-shape-fallback.cc | 3 ++-
3 files changed, 29 insertions(+), 20 deletions(-)
commit b051be542a8945ec14b0192bbc285f3e1a78c8f1
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jan 29 13:40:39 2015 +0100
+Date: Thu Jan 29 13:40:39 2015 +0100
[lookup] Add skippy_iter.reset()
@@ -7659,12 +441,12 @@ Date: Thu Jan 29 13:40:39 2015 +0100
src/hb-ot-layout-gpos-table.hh | 18 ++++++++++++------
src/hb-ot-layout-gsubgpos-private.hh | 27 ++++++++++++++++++---------
- src/hb-ot-shape-fallback.cc | 3 ++-
+ src/hb-ot-shape-fallback.cc | 3 ++-
3 files changed, 32 insertions(+), 16 deletions(-)
commit 2cecc38c7cf49b2cf697efa7e974ceee7055f2c5
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jan 29 13:32:05 2015 +0100
+Date: Thu Jan 29 13:32:05 2015 +0100
[layout] Shuffle code around
@@ -7674,19 +456,19 @@ Date: Thu Jan 29 13:32:05 2015 +0100
commit 696266981df5ef6c62ad0115133dad1d6c1d9acc
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jan 29 13:08:41 2015 +0100
+Date: Thu Jan 29 13:08:41 2015 +0100
[layout] Merge forward and backward iterators
src/hb-ot-layout-gpos-table.hh | 12 +++---
src/hb-ot-layout-gsubgpos-private.hh | 71
++++++++----------------------------
- src/hb-ot-shape-fallback.cc | 2 +-
+ src/hb-ot-shape-fallback.cc | 2 +-
3 files changed, 23 insertions(+), 62 deletions(-)
commit 1f038eec3c0dd6331036f795614fe1ddcbf613b0
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jan 29 13:05:25 2015 +0100
+Date: Thu Jan 29 13:05:25 2015 +0100
[layout] Fix backward reject()
@@ -7698,7 +480,7 @@ Date: Thu Jan 29 13:05:25 2015 +0100
commit 37d13acd8d414a4b53fac0152addfadecf755cd4
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jan 29 11:38:01 2015 +0100
+Date: Thu Jan 29 11:38:01 2015 +0100
[layout] Remove some unnecessary checks in skippy
@@ -7708,7 +490,7 @@ Date: Thu Jan 29 11:38:01 2015 +0100
commit baa14e18148d3f5493f78b4fe9e0c835a01f50f7
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Jan 29 11:08:43 2015 +0100
+Date: Thu Jan 29 11:08:43 2015 +0100
[lookup] Don't initialize skippy if coverage match fails
@@ -7733,7 +515,7 @@ Date: Thu Jan 29 11:08:43 2015 +0100
commit 7788993bc19bf122f1e143ab64cc1da2ed1865a3
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jan 28 23:01:12 2015 -0800
+Date: Wed Jan 28 23:01:12 2015 -0800
[layout] Use setter method to set c->lookup_props
@@ -7743,7 +525,7 @@ Date: Wed Jan 28 23:01:12 2015 -0800
commit f4ee48fd7b312550faf9b0be4cd1b2f2849dd08d
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jan 28 22:53:54 2015 -0800
+Date: Wed Jan 28 22:53:54 2015 -0800
[layout] Remove unused wrapper method
@@ -7752,7 +534,7 @@ Date: Wed Jan 28 22:53:54 2015 -0800
commit 7b7129c7a997def599fb4d2ba05fda40d27aed20
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jan 28 21:46:07 2015 -0800
+Date: Wed Jan 28 21:46:07 2015 -0800
Add hb_frozen_set_t
@@ -7767,18 +549,18 @@ Date: Wed Jan 28 21:46:07 2015 -0800
commit 241eac9559465fa79f396570af4e87f455b7e9d5
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jan 28 20:55:42 2015 -0800
+Date: Wed Jan 28 20:55:42 2015 -0800
Hide internals of lookup accelerators
src/hb-ot-layout-gsub-table.hh | 5 +++--
- src/hb-ot-layout-private.hh | 5 +++++
- src/hb-ot-layout.cc | 6 +++---
+ src/hb-ot-layout-private.hh | 5 +++++
+ src/hb-ot-layout.cc | 6 +++---
3 files changed, 11 insertions(+), 5 deletions(-)
commit e2d4e8480d85436a3acad8145acac345ed593f5a
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jan 28 20:29:48 2015 -0800
+Date: Wed Jan 28 20:29:48 2015 -0800
[util] Add convenience "make lib" target
@@ -7788,53 +570,15 @@ Date: Wed Jan 28 20:29:48 2015 -0800
commit faaae64bf28abdcdd15185374bc09a3809794118
Merge: 7888a6b 9768e65
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Feb 25 15:34:34 2015 -0800
+Date: Wed Feb 25 15:34:34 2015 -0800
Merge pull request #85 from KonstantinRitt/define_inline
Fix build with MSVC on CE
-commit 9ee176ee978e6668c4faf00028811ce70979122e
-Author: Collin Fair <cpf@cpfx.ca>
-Date: Sat Feb 14 09:59:44 2015 -0500
-
- Stop hb-shape docs leaking into hb-view
-
- util/options.cc | 15 ++++++++-------
- 1 file changed, 8 insertions(+), 7 deletions(-)
-
-commit 952b8dbdf61da9b4814e09ad3c1b9b76483bef5c
-Author: Collin Fair <cpf@cpfx.ca>
-Date: Sat Feb 14 09:44:00 2015 -0500
-
- 'All' of the above, not 'each'
-
- util/options.cc | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 9e867b64467c46eea5cc9b1d5a9404a1221bbbfc
-Author: Collin Fair <cpf@cpfx.ca>
-Date: Sat Feb 14 09:32:04 2015 -0500
-
- Remove reference to --help-output-content in --help-output (as
- --help-output-format's options aren't available in hb-view)
-
- util/options.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 1d55ffeb66381889f11ebb9039ca4ec2ca5efbab
-Author: Collin Fair <cpf@cpfx.ca>
-Date: Sat Feb 14 09:29:35 2015 -0500
-
- Add serialization syntax documentation. Clarify naming and wording
- in --help-output/--help-format
-
- util/options.cc | 30 ++++++++++++++++--------------
- 1 file changed, 16 insertions(+), 14 deletions(-)
-
commit 9768e651be0561f07d6f38c3ed8bc5ee04882990
Author: Konstantin Ritt <ritt.ks@gmail.com>
-Date: Sat Feb 14 00:58:51 2015 +0400
+Date: Sat Feb 14 00:58:51 2015 +0400
Fix build with MSVC on CE
@@ -7864,7 +608,7 @@ Date: Sat Feb 14 00:58:51 2015 +0400
commit 7888a6b07a9922cedd3e0d235959058e0011357b
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jan 28 12:40:40 2015 -0800
+Date: Wed Jan 28 12:40:40 2015 -0800
[ft] Handle negative scales with vertical writing
@@ -7873,7 +617,7 @@ Date: Wed Jan 28 12:40:40 2015 -0800
commit 982d94eaa2a377616f22f39427e5ed9f1ce43263
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jan 28 10:51:33 2015 -0800
+Date: Wed Jan 28 10:51:33 2015 -0800
[coretext] Don't generate notdef glyph for default-ignorables
@@ -7886,7 +630,7 @@ Date: Wed Jan 28 10:51:33 2015 -0800
commit 6917a045fd8d16952cad75fda8b291b11e1d3564
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Jan 28 10:43:32 2015 -0800
+Date: Wed Jan 28 10:43:32 2015 -0800
[coretext] Unbreak glyph positioning in presence of notdef runs
@@ -12411,29 +5155,29 @@ Date: Mon Apr 28 12:43:18 2014 -0700
Reshuffle test data
- test/shaping/texts/in-tree/MANIFEST |
- 3 +++
- test/shaping/texts/in-tree/shaper-default/MANIFEST |
- 3 ---
- .../script-tibetan => shaper-hangul/script-hangul}/MANIFEST |
- 0
- .../script-tibetan => shaper-hangul/script-hangul}/misc/MANIFEST
- | 0
- .../{shaper-default => shaper-hangul}/script-hangul/misc/misc.txt
- | 0
- .../in-tree/{shaper-default => shaper-hebrew}/script-hebrew/MANIFEST
- | 0
- .../{shaper-default => shaper-hebrew}/script-hebrew/misc/MANIFEST
- | 0
- .../script-hebrew/misc/diacritics.txt |
- 0
- .../script-hangul => shaper-tibetan/script-tibetan}/MANIFEST |
- 0
- .../script-hangul => shaper-tibetan/script-tibetan}/misc/MANIFEST
- | 0
- .../{shaper-default => shaper-tibetan}/script-tibetan/misc/misc.txt
- | 0
- 11 files changed, 3 insertions(+), 3 deletions(-)
+ test/shaping/texts/in-tree/MANIFEST | 3 +++
+ test/shaping/texts/in-tree/shaper-default/MANIFEST | 3 ---
+ .../texts/in-tree/shaper-default/script-hangul/MANIFEST | 1 -
+ .../in-tree/shaper-default/script-hangul/misc/MANIFEST | 1 -
+ .../in-tree/shaper-default/script-hangul/misc/misc.txt | 4 ----
+ .../texts/in-tree/shaper-default/script-hebrew/MANIFEST | 1 -
+ .../in-tree/shaper-default/script-hebrew/misc/MANIFEST | 1 -
+ .../shaper-default/script-hebrew/misc/diacritics.txt | 16
+ ----------------
+ .../texts/in-tree/shaper-default/script-tibetan/MANIFEST | 1 -
+ .../in-tree/shaper-default/script-tibetan/misc/MANIFEST | 1 -
+ .../in-tree/shaper-default/script-tibetan/misc/misc.txt | 1 -
+ .../texts/in-tree/shaper-hangul/script-hangul/MANIFEST | 1 +
+ .../in-tree/shaper-hangul/script-hangul/misc/MANIFEST | 1 +
+ .../in-tree/shaper-hangul/script-hangul/misc/misc.txt | 4 ++++
+ .../texts/in-tree/shaper-hebrew/script-hebrew/MANIFEST | 1 +
+ .../in-tree/shaper-hebrew/script-hebrew/misc/MANIFEST | 1 +
+ .../shaper-hebrew/script-hebrew/misc/diacritics.txt | 16
+ ++++++++++++++++
+ .../texts/in-tree/shaper-tibetan/script-tibetan/MANIFEST | 1 +
+ .../in-tree/shaper-tibetan/script-tibetan/misc/MANIFEST | 1 +
+ .../in-tree/shaper-tibetan/script-tibetan/misc/misc.txt | 1 +
+ 20 files changed, 30 insertions(+), 30 deletions(-)
commit b082ef373cefb35dd98b5f2f0b677ccc7806f51e
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -12604,18 +5348,19 @@ Date: Mon Mar 24 14:26:36 2014 -0700
Start fleshing out builtin font functions
- src/Makefile.am | 3 +-
- src/hb-glib.cc | 2 +-
- src/hb-icu.cc | 2 +-
- src/hb-ot-font.cc | 260
- ++++++++++++++++++++++++++++++++++++
- src/{hb-tt-font.cc => hb-ot-font.h} | 56 ++------
- src/hb-ot-hhea-table.hh | 2 +-
- src/hb-ot-hmtx-table.hh | 2 +-
- src/hb-ot.h | 1 +
- util/Makefile.am | 4 +-
- util/options.cc | 4 +
- 10 files changed, 283 insertions(+), 53 deletions(-)
+ src/Makefile.am | 3 +-
+ src/hb-glib.cc | 2 +-
+ src/hb-icu.cc | 2 +-
+ src/hb-ot-font.cc | 260
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ src/hb-ot-font.h | 41 ++++++++
+ src/hb-ot-hhea-table.hh | 2 +-
+ src/hb-ot-hmtx-table.hh | 2 +-
+ src/hb-ot.h | 1 +
+ src/hb-tt-font.cc | 77 --------------
+ util/Makefile.am | 4 +-
+ util/options.cc | 4 +
+ 11 files changed, 314 insertions(+), 84 deletions(-)
commit 343a0e4e747d93eeeb724c5d585f5ba036a0df84
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -12797,13 +5542,13 @@ Date: Mon Mar 10 14:57:55 2014 -0700
Minor
- test/shaping/texts/in-tree/shaper-myanmar/script-myanmar/misc/MANIFEST
- | 1 -
- test/shaping/texts/in-tree/shaper-sea/script-tai-tham/misc/MANIFEST
- | 1 +
- .../script-myanmar => shaper-sea/script-tai-tham}/misc/torture.txt
- | 0
- 3 files changed, 1 insertion(+), 1 deletion(-)
+ .../shaper-myanmar/script-myanmar/misc/MANIFEST | 1 -
+ .../shaper-myanmar/script-myanmar/misc/torture.txt | 23
+ ----------------------
+ .../shaper-sea/script-tai-tham/misc/MANIFEST | 1 +
+ .../shaper-sea/script-tai-tham/misc/torture.txt | 23
+ ++++++++++++++++++++++
+ 4 files changed, 24 insertions(+), 24 deletions(-)
commit bb8ffb581b89cf27fb8e0743b81bbda21654233e
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -17531,8 +10276,9 @@ Date: Wed Mar 6 20:20:45 2013 -0500
Move valgrind suppressions to the correct directory
- test/{ => api}/.valgrind-suppressions | 0
- 1 file changed, 0 insertions(+), 0 deletions(-)
+ test/.valgrind-suppressions | 0
+ test/api/.valgrind-suppressions | 0
+ 2 files changed, 0 insertions(+), 0 deletions(-)
commit a8ac1d33c731f6200ee472ab6c37a80b72770564
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -18013,25 +10759,37 @@ Date: Tue Feb 19 00:50:46 2013 -0500
Moving files around
- test/shaping/texts/in-tree/MANIFEST |
+ test/shaping/texts/in-tree/MANIFEST |
2 --
- test/shaping/texts/in-tree/shaper-default/MANIFEST |
+ test/shaping/texts/in-tree/script-default/MANIFEST |
+ 1 -
+ test/shaping/texts/in-tree/script-default/misc/MANIFEST |
+ 1 -
+ test/shaping/texts/in-tree/script-default/misc/misc.txt |
+ 1 -
+ test/shaping/texts/in-tree/shaper-default/MANIFEST |
2 ++
- .../in-tree/{shaper-hangul => shaper-default}/script-hangul/MANIFEST
- | 0
- .../{shaper-hangul => shaper-default}/script-hangul/misc/MANIFEST
- | 0
- .../{shaper-hangul => shaper-default}/script-hangul/misc/misc.txt
- | 0
- .../in-tree/{script-default => shaper-default/script-tibetan}/MANIFEST
- | 0
- .../{script-default => shaper-default/script-tibetan}/misc/MANIFEST
- | 0
- .../{script-default => shaper-default/script-tibetan}/misc/misc.txt
- | 0
- test/shaping/texts/in-tree/shaper-hangul/MANIFEST |
+ test/shaping/texts/in-tree/shaper-default/script-hangul/MANIFEST |
+ 1 +
+ test/shaping/texts/in-tree/shaper-default/script-hangul/misc/MANIFEST |
+ 1 +
+ test/shaping/texts/in-tree/shaper-default/script-hangul/misc/misc.txt |
+ 3 +++
+ test/shaping/texts/in-tree/shaper-default/script-tibetan/MANIFEST |
+ 1 +
+ test/shaping/texts/in-tree/shaper-default/script-tibetan/misc/MANIFEST |
+ 1 +
+ test/shaping/texts/in-tree/shaper-default/script-tibetan/misc/misc.txt |
+ 1 +
+ test/shaping/texts/in-tree/shaper-hangul/MANIFEST |
+ 1 -
+ test/shaping/texts/in-tree/shaper-hangul/script-hangul/MANIFEST |
1 -
- 9 files changed, 2 insertions(+), 3 deletions(-)
+ test/shaping/texts/in-tree/shaper-hangul/script-hangul/misc/MANIFEST |
+ 1 -
+ test/shaping/texts/in-tree/shaper-hangul/script-hangul/misc/misc.txt |
+ 3 ---
+ 15 files changed, 10 insertions(+), 11 deletions(-)
commit b1f440759161cb5a54e1b1b910f3a8383b8e8472
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -18672,28 +11430,33 @@ Date: Tue Feb 12 12:14:10 2013 -0500
src/Makefile.am | 12 +-
src/gen-indic-table.py | 9 +-
- src/hb-ot-shape-complex-indic-private.hh | 241 +------------
- ...table.hh => hb-ot-shape-complex-indic-table.cc} | 9 +-
- src/hb-ot-shape-complex-indic.cc | 239 ++++++++++++
+ src/hb-ot-shape-complex-indic-private.hh | 241 +-----
+ src/hb-ot-shape-complex-indic-table.cc | 869
+ ++++++++++++++++++++
+ src/hb-ot-shape-complex-indic-table.hh | 872
+ ---------------------
+ src/hb-ot-shape-complex-indic.cc | 239 ++++++
src/hb-ot-shape-complex-myanmar.cc | 2 +-
src/hb-ot-shape-complex-private.hh | 28 +-
- src/hb-ot-shape-complex-sea-machine.rl | 102 ++++++
- src/hb-ot-shape-complex-sea.cc | 400
- +++++++++++++++++++++
+ src/hb-ot-shape-complex-sea-machine.rl | 102 +++
+ src/hb-ot-shape-complex-sea.cc | 400 ++++++++++
test/shaping/texts/in-tree/MANIFEST | 1 +
.../in-tree/shaper-indic/south-east-asian/MANIFEST | 1 -
+ .../south-east-asian/script-new-tai-lue/MANIFEST | 1 -
+ .../script-new-tai-lue/misc/MANIFEST | 1 -
+ .../script-new-tai-lue/misc/misc.txt | 1 -
test/shaping/texts/in-tree/shaper-myanmar/MANIFEST | 1 +
test/shaping/texts/in-tree/shaper-sea/MANIFEST | 3 +
- .../script-cham}/MANIFEST | 0
- .../script-cham}/misc/MANIFEST | 0
+ .../texts/in-tree/shaper-sea/script-cham/MANIFEST | 1 +
+ .../in-tree/shaper-sea/script-cham/misc/MANIFEST | 1 +
.../in-tree/shaper-sea/script-cham/misc/misc.txt | 1 +
.../in-tree/shaper-sea/script-new-tai-lue/MANIFEST | 1 +
.../shaper-sea/script-new-tai-lue/misc/MANIFEST | 1 +
- .../script-new-tai-lue/misc/misc.txt | 0
+ .../shaper-sea/script-new-tai-lue/misc/misc.txt | 1 +
.../in-tree/shaper-sea/script-tai-tham/MANIFEST | 1 +
.../shaper-sea/script-tai-tham/misc/MANIFEST | 1 +
.../shaper-sea/script-tai-tham/misc/misc.txt | 2 +
- 22 files changed, 792 insertions(+), 263 deletions(-)
+ 26 files changed, 1661 insertions(+), 1132 deletions(-)
commit fb960212063016656dfaba83f072c81d1efc3202
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -18703,23 +11466,29 @@ Date: Tue Feb 12 10:33:58 2013 -0500
test/shaping/texts/in-tree/MANIFEST
| 1 +
- .../south-east-asian/script-thai => script-default}/MANIFEST
- | 0
- .../south-asian/script-tibetan => script-default}/misc/MANIFEST
- | 0
- .../south-asian/script-tibetan => script-default}/misc/misc.txt
- | 0
+ test/shaping/texts/in-tree/script-default/MANIFEST
+ | 1 +
+ test/shaping/texts/in-tree/script-default/misc/MANIFEST
+ | 1 +
+ test/shaping/texts/in-tree/script-default/misc/misc.txt
+ | 1 +
test/shaping/texts/in-tree/shaper-indic/MANIFEST
| 1 -
test/shaping/texts/in-tree/shaper-indic/south-asian/MANIFEST
| 1 -
.../texts/in-tree/shaper-indic/south-asian/script-tibetan/MANIFEST
| 1 -
+ .../texts/in-tree/shaper-indic/south-asian/script-tibetan/misc/MANIFEST
+ | 1 -
+ .../texts/in-tree/shaper-indic/south-asian/script-tibetan/misc/misc.txt
+ | 1 -
test/shaping/texts/in-tree/shaper-indic/south-east-asian/MANIFEST
| 1 -
+ .../texts/in-tree/shaper-indic/south-east-asian/script-thai/MANIFEST
+ | 1 -
.../in-tree/shaper-indic/south-east-asian/script-thai/misc/MANIFEST
| 0
- 9 files changed, 1 insertion(+), 4 deletions(-)
+ 12 files changed, 4 insertions(+), 7 deletions(-)
commit 5676d5d52784e16068ae483103d59111a8081854
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -18842,25 +11611,23 @@ Date: Mon Feb 11 14:24:03 2013 -0500
Shuffle test data around
- test/shaping/texts/in-tree/MANIFEST
- | 1 +
- test/shaping/texts/in-tree/shaper-indic/south-east-asian/MANIFEST
- | 1 -
- .../in-tree/shaper-indic/south-east-asian/script-thai/misc/MANIFEST
- | 1 -
- .../south-east-asian => shaper-myanmar}/script-myanmar/MANIFEST
- | 0
- .../south-east-asian => shaper-myanmar}/script-myanmar/misc/MANIFEST
- | 0
- .../south-east-asian => shaper-myanmar}/script-myanmar/misc/misc.txt
- | 0
- .../south-east-asian => shaper-myanmar}/script-myanmar/misc/utn11.txt
- | 0
- test/shaping/texts/in-tree/shaper-thai/script-thai/misc/MANIFEST
- | 1 +
- .../south-east-asian => shaper-thai}/script-thai/misc/misc.txt
- | 0
- 9 files changed, 2 insertions(+), 2 deletions(-)
+ test/shaping/texts/in-tree/MANIFEST | 1 +
+ .../in-tree/shaper-indic/south-east-asian/MANIFEST | 1 -
+ .../south-east-asian/script-myanmar/MANIFEST | 1 -
+ .../south-east-asian/script-myanmar/misc/MANIFEST | 2 --
+ .../south-east-asian/script-myanmar/misc/misc.txt | 1 -
+ .../south-east-asian/script-myanmar/misc/utn11.txt | 34
+ ----------------------
+ .../south-east-asian/script-thai/misc/MANIFEST | 1 -
+ .../south-east-asian/script-thai/misc/misc.txt | 11 -------
+ .../in-tree/shaper-myanmar/script-myanmar/MANIFEST | 1 +
+ .../shaper-myanmar/script-myanmar/misc/MANIFEST | 2 ++
+ .../shaper-myanmar/script-myanmar/misc/misc.txt | 1 +
+ .../shaper-myanmar/script-myanmar/misc/utn11.txt | 34
+ ++++++++++++++++++++++
+ .../in-tree/shaper-thai/script-thai/misc/MANIFEST | 1 +
+ .../in-tree/shaper-thai/script-thai/misc/misc.txt | 11 +++++++
+ 14 files changed, 51 insertions(+), 51 deletions(-)
commit 98628cac9f733f2674d6409954cddb7d0634c233
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -19045,11 +11812,12 @@ Date: Mon Feb 4 23:06:50 2013 -0500
Merge check-internal-symbols.sh and check-exported-symbols.sh
- src/Makefile.am | 3 +-
- src/check-internal-symbols.sh | 34
- ----------------------
- ...{check-exported-symbols.sh => check-symbols.sh} | 16 ++++++++--
- 3 files changed, 14 insertions(+), 39 deletions(-)
+ src/Makefile.am | 3 +--
+ src/check-exported-symbols.sh | 40 ----------------------------------
+ src/check-internal-symbols.sh | 34 -----------------------------
+ src/check-symbols.sh | 50
+ +++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 51 insertions(+), 76 deletions(-)
commit ceeae30f47b9d628484ae398bc38f3f60ee8eab4
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -20973,12 +13741,12 @@ Date: Wed Nov 14 15:51:54 2012 -0800
Move Thai shaper into a separate file
- src/Makefile.am | 3 +-
- ...plex-misc.cc => hb-ot-shape-complex-default.cc} | 114
- -----------------
- src/hb-ot-shape-complex-thai.cc | 141
- +++++++++++++++++++++
- 3 files changed, 143 insertions(+), 115 deletions(-)
+ src/Makefile.am | 3 +-
+ src/hb-ot-shape-complex-default.cc | 225 ++++++++++++++++++++++++
+ src/hb-ot-shape-complex-misc.cc | 339
+ -------------------------------------
+ src/hb-ot-shape-complex-thai.cc | 141 +++++++++++++++
+ 4 files changed, 368 insertions(+), 340 deletions(-)
commit ba82325b7a6311b787ae47f41a56964e2f2cba9f
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -23603,35 +16371,37 @@ Date: Fri Aug 10 09:06:30 2012 -0400
[test] Move around
- test/shaping/texts/in-tree/shaper-arabic/script-arabic/MANIFEST |
- 2 +-
- .../texts/in-tree/shaper-arabic/script-arabic/language-urdu/MANIFEST |
- 1 +
- .../shaper-arabic/script-arabic/{ => language-urdu}/crulp/MANIFEST
- | 0
- .../script-arabic/{ => language-urdu}/crulp/ligatures/2grams.txt
- | 0
- .../script-arabic/{ => language-urdu}/crulp/ligatures/3grams.txt
- | 0
- .../script-arabic/{ => language-urdu}/crulp/ligatures/4grams.txt
- | 0
- .../script-arabic/{ => language-urdu}/crulp/ligatures/5grams.txt
- | 0
- .../script-arabic/{ => language-urdu}/crulp/ligatures/6grams.txt
- | 0
- .../script-arabic/{ => language-urdu}/crulp/ligatures/7grams.txt
- | 0
- .../script-arabic/{ => language-urdu}/crulp/ligatures/8grams.txt
- | 0
- .../script-arabic/{ => language-urdu}/crulp/ligatures/LICENSE
- | 0
- .../script-arabic/{ => language-urdu}/crulp/ligatures/MANIFEST
- | 0
- .../script-arabic/{ => language-urdu}/crulp/ligatures/README |
- 0
- .../script-arabic/{ => language-urdu}/crulp/ligatures/SOURCES
- | 0
- 14 files changed, 2 insertions(+), 1 deletion(-)
+ .../in-tree/shaper-arabic/script-arabic/MANIFEST | 2 +-
+ .../shaper-arabic/script-arabic/crulp/MANIFEST | 1 -
+ .../script-arabic/crulp/ligatures/2grams.txt | 601 --
+ .../script-arabic/crulp/ligatures/3grams.txt | 3415 -----------
+ .../script-arabic/crulp/ligatures/4grams.txt | 6316
+ --------------------
+ .../script-arabic/crulp/ligatures/5grams.txt | 5029
+ ----------------
+ .../script-arabic/crulp/ligatures/6grams.txt | 1542 -----
+ .../script-arabic/crulp/ligatures/7grams.txt | 354 --
+ .../script-arabic/crulp/ligatures/8grams.txt | 26 -
+ .../script-arabic/crulp/ligatures/LICENSE | 3 -
+ .../script-arabic/crulp/ligatures/MANIFEST | 7 -
+ .../script-arabic/crulp/ligatures/README | 16 -
+ .../script-arabic/crulp/ligatures/SOURCES | 4 -
+ .../script-arabic/language-urdu/MANIFEST | 1 +
+ .../script-arabic/language-urdu/crulp/MANIFEST | 1 +
+ .../language-urdu/crulp/ligatures/2grams.txt | 601 ++
+ .../language-urdu/crulp/ligatures/3grams.txt | 3415 +++++++++++
+ .../language-urdu/crulp/ligatures/4grams.txt | 6316
+ ++++++++++++++++++++
+ .../language-urdu/crulp/ligatures/5grams.txt | 5029
+ ++++++++++++++++
+ .../language-urdu/crulp/ligatures/6grams.txt | 1542 +++++
+ .../language-urdu/crulp/ligatures/7grams.txt | 354 ++
+ .../language-urdu/crulp/ligatures/8grams.txt | 26 +
+ .../language-urdu/crulp/ligatures/LICENSE | 3 +
+ .../language-urdu/crulp/ligatures/MANIFEST | 7 +
+ .../language-urdu/crulp/ligatures/README | 16 +
+ .../language-urdu/crulp/ligatures/SOURCES | 4 +
+ 26 files changed, 17316 insertions(+), 17315 deletions(-)
commit 7a484c601e0958533eb85a6902296733c39537fe
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -23906,15 +16676,15 @@ Date: Wed Aug 8 14:33:37 2012 -0400
Minor renaming
- src/Makefile.am |
- 4 ++--
- ...sition-fallback-private.hh => hb-ot-shape-fallback-private.hh} |
- 8 ++++----
- src/{hb-ot-shape-position-fallback.cc => hb-ot-shape-fallback.cc} |
- 4 ++--
- src/hb-ot-shape.cc |
- 4 ++--
- 4 files changed, 10 insertions(+), 10 deletions(-)
+ src/Makefile.am | 4 +-
+ src/hb-ot-shape-fallback-private.hh | 39 ++++
+ src/hb-ot-shape-fallback.cc | 276
+ +++++++++++++++++++++++++++
+ src/hb-ot-shape-position-fallback-private.hh | 39 ----
+ src/hb-ot-shape-position-fallback.cc | 276
+ ---------------------------
+ src/hb-ot-shape.cc | 4 +-
+ 6 files changed, 319 insertions(+), 319 deletions(-)
commit 801298b590effd768607bb532dc83c73ba65d16b
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -25510,25 +18280,29 @@ Date: Thu Jul 26 17:34:25 2012 -0400
Add global shape_plan. Unused so far.
- src/Makefile.am | 15 +-
- src/hb-coretext-private.hh | 42 -----
- src/hb-coretext.cc | 6 +-
- src/hb-fallback-shape.cc | 62 ++++++-
- src/hb-font-private.hh | 12 ++
- src/hb-font.cc | 15 +-
- src/hb-old.cc | 109 +++++++++---
- src/hb-ot-shape-private.hh | 8 -
- src/hb-ot-shape.cc | 60 ++++++-
- ...aphite2-private.hh => hb-shape-plan-private.hh} | 28 +++-
- src/hb-shape-plan.cc | 85 ++++++++++
- ...b-fallback-shape-private.hh => hb-shape-plan.h} | 39 +++--
- src/hb-shape.cc | 48 +-----
- ...scribe-private.hh => hb-shaper-impl-private.hh} | 20 ++-
- src/{hb-old-private.hh => hb-shaper-list.hh} | 30 ++--
- src/hb-shaper-private.hh | 81 +++++++++
- src/hb-uniscribe.cc | 186
- +++++++++++++--------
- 17 files changed, 608 insertions(+), 238 deletions(-)
+ src/Makefile.am | 15 ++--
+ src/hb-coretext-private.hh | 42 ---------
+ src/hb-coretext.cc | 6 +-
+ src/hb-fallback-shape-private.hh | 41 ---------
+ src/hb-fallback-shape.cc | 62 ++++++++++++-
+ src/hb-font-private.hh | 12 +++
+ src/hb-font.cc | 15 +++-
+ src/hb-graphite2-private.hh | 42 ---------
+ src/hb-old-private.hh | 40 ---------
+ src/hb-old.cc | 109 ++++++++++++++++++-----
+ src/hb-ot-shape-private.hh | 8 --
+ src/hb-ot-shape.cc | 60 ++++++++++++-
+ src/hb-shape-plan-private.hh | 52 +++++++++++
+ src/hb-shape-plan.cc | 85 ++++++++++++++++++
+ src/hb-shape-plan.h | 60 +++++++++++++
+ src/hb-shape.cc | 48 ++--------
+ src/hb-shaper-impl-private.hh | 44 +++++++++
+ src/hb-shaper-list.hh | 50 +++++++++++
+ src/hb-shaper-private.hh | 81 +++++++++++++++++
+ src/hb-uniscribe-private.hh | 42 ---------
+ src/hb-uniscribe.cc | 186
+ ++++++++++++++++++++++++---------------
+ 21 files changed, 735 insertions(+), 365 deletions(-)
commit fa2dfcd560444d8c54b6349ee106134d3536f79b
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -27883,11 +20657,13 @@ Date: Tue Jul 3 11:38:46 2012 -0400
test/shaping/texts/in-tree/shaper-thai/MANIFEST |
2 +-
test/shaping/texts/in-tree/shaper-thai/misc/MANIFEST | 1 -
+ test/shaping/texts/in-tree/shaper-thai/misc/misc.txt |
+ 6 ------
test/shaping/texts/in-tree/shaper-thai/script-thai/MANIFEST | 1 +
test/shaping/texts/in-tree/shaper-thai/script-thai/misc/MANIFEST | 1 +
- .../shaper-thai/{misc/misc.txt => script-thai/misc/sara-am.txt} |
- 6 ++----
- 5 files changed, 5 insertions(+), 6 deletions(-)
+ test/shaping/texts/in-tree/shaper-thai/script-thai/misc/sara-am.txt |
+ 4 ++++
+ 6 files changed, 7 insertions(+), 8 deletions(-)
commit aa116582e69d18777448e7993078e5d6335ddfed
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -28929,49 +21705,50 @@ Date: Mon Jun 4 10:21:22 2012 -0400
s/script-punjabi/script-gurmukhi/
- test/shaping/texts/in-tree/shaper-indic/indic/MANIFEST |
- 2 +-
- .../shaper-indic/indic/{script-punjabi => script-gurmukhi}/MANIFEST
- | 0
- .../indic/{script-punjabi => script-gurmukhi}/misc/MANIFEST |
- 0
- .../indic/{script-punjabi => script-gurmukhi}/misc/misc.txt |
- 0
- .../indic/{script-punjabi => script-gurmukhi}/utrrs/LICENSE |
- 0
- .../indic/{script-punjabi => script-gurmukhi}/utrrs/MANIFEST |
- 0
- .../shaper-indic/indic/{script-punjabi => script-gurmukhi}/utrrs/README
- | 0
- .../indic/{script-punjabi => script-gurmukhi}/utrrs/SOURCES |
- 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt |
- 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt
- | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt |
- 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-GurmukhiSpecific.txt
- | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt
- | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt |
- 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt
- | 0
- .../indic/{script-punjabi => script-gurmukhi}/utrrs/codepoint/MANIFEST
- | 0
- .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt |
- 0
- .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt |
- 0
- .../indic/{script-punjabi => script-gurmukhi}/utrrs/gpos/MANIFEST
- | 0
- .../utrrs/gsub/IndicFontFeatureGSUB.txt |
- 0
- .../indic/{script-punjabi => script-gurmukhi}/utrrs/gsub/MANIFEST
- | 0
- 21 files changed, 1 insertion(+), 1 deletion(-)
+ .../texts/in-tree/shaper-indic/indic/MANIFEST | 2 +-
+ .../shaper-indic/indic/script-gurmukhi/MANIFEST | 2 +
+ .../indic/script-gurmukhi/misc/MANIFEST | 1 +
+ .../indic/script-gurmukhi/misc/misc.txt | 1 +
+ .../indic/script-gurmukhi/utrrs/LICENSE | 19 +++
+ .../indic/script-gurmukhi/utrrs/MANIFEST | 3 +
+ .../indic/script-gurmukhi/utrrs/README | 13 ++
+ .../indic/script-gurmukhi/utrrs/SOURCES | 2 +
+ .../IndicFontFeatureCodepoint-Consonants.txt | 38 ++++++
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 9 ++
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 ++
+ .../IndicFontFeatureCodepoint-GurmukhiSpecific.txt | 6 +
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 10 ++
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 +
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 +
+ .../indic/script-gurmukhi/utrrs/codepoint/MANIFEST | 7 +
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 22 +++
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 2 +
+ .../indic/script-gurmukhi/utrrs/gpos/MANIFEST | 2 +
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 152
+ +++++++++++++++++++++
+ .../indic/script-gurmukhi/utrrs/gsub/MANIFEST | 1 +
+ .../shaper-indic/indic/script-punjabi/MANIFEST | 2 -
+ .../indic/script-punjabi/misc/MANIFEST | 1 -
+ .../indic/script-punjabi/misc/misc.txt | 1 -
+ .../indic/script-punjabi/utrrs/LICENSE | 19 ---
+ .../indic/script-punjabi/utrrs/MANIFEST | 3 -
+ .../shaper-indic/indic/script-punjabi/utrrs/README | 13 --
+ .../indic/script-punjabi/utrrs/SOURCES | 2 -
+ .../IndicFontFeatureCodepoint-Consonants.txt | 38 ------
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 9 --
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 --
+ .../IndicFontFeatureCodepoint-GurmukhiSpecific.txt | 6 -
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 10 --
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 -
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 -
+ .../indic/script-punjabi/utrrs/codepoint/MANIFEST | 7 -
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 22 ---
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 2 -
+ .../indic/script-punjabi/utrrs/gpos/MANIFEST | 2 -
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 152
+ ---------------------
+ .../indic/script-punjabi/utrrs/gsub/MANIFEST | 1 -
+ 41 files changed, 309 insertions(+), 309 deletions(-)
commit c1885483120d4b686b2fe95b217dce7248e040b1
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -29277,8 +22054,9 @@ Date: Wed May 23 21:50:43 2012 -0400
+++++++++++++++++++++
.../misc/diacritics/language-persian.txt | 48 ++
.../misc/diacritics/language-urdu.txt | 188 ++++++
- .../misc/{ => diacritics}/ligature-diacritics.txt | 0
- 7 files changed, 965 insertions(+), 1 deletion(-)
+ .../misc/diacritics/ligature-diacritics.txt | 1 +
+ .../script-arabic/misc/ligature-diacritics.txt | 1 -
+ 8 files changed, 966 insertions(+), 2 deletions(-)
commit ed2f1363a391add41f10cff18792003583a10257
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -29304,23 +22082,21 @@ Date: Fri May 18 15:04:35 2012 -0400
From:
http://people.mozilla.org/~jdaggett/tests/cjkcompat.html
- test/shaping/texts/in-tree/shaper-default/MANIFEST |
- 3 ++-
- .../in-tree/shaper-default/{script-japanese => script-han}/MANIFEST
- | 0
- test/shaping/texts/in-tree/shaper-default/script-han/misc/MANIFEST |
- 1 +
- .../texts/in-tree/shaper-default/script-han/misc/cjk-compat.txt |
- 3 +++
- test/shaping/texts/in-tree/shaper-default/script-hiragana/MANIFEST |
- 1 +
- .../shaper-default/{script-japanese => script-hiragana}/misc/MANIFEST
- | 0
- .../{script-japanese => script-hiragana}/misc/kazuraki-liga-lines.txt
- | 0
- .../{script-japanese => script-hiragana}/misc/kazuraki-liga.txt
- | 0
- 8 files changed, 7 insertions(+), 1 deletion(-)
+ test/shaping/texts/in-tree/shaper-default/MANIFEST | 3 +-
+ .../in-tree/shaper-default/script-han/MANIFEST | 1 +
+ .../shaper-default/script-han/misc/MANIFEST | 1 +
+ .../shaper-default/script-han/misc/cjk-compat.txt | 3 ++
+ .../shaper-default/script-hiragana/MANIFEST | 1 +
+ .../shaper-default/script-hiragana/misc/MANIFEST | 2 +
+ .../script-hiragana/misc/kazuraki-liga-lines.txt | 8 ++++
+ .../script-hiragana/misc/kazuraki-liga.txt | 53
+ ++++++++++++++++++++++
+ .../shaper-default/script-japanese/MANIFEST | 1 -
+ .../shaper-default/script-japanese/misc/MANIFEST | 2 -
+ .../script-japanese/misc/kazuraki-liga-lines.txt | 8 ----
+ .../script-japanese/misc/kazuraki-liga.txt | 53
+ ----------------------
+ 12 files changed, 71 insertions(+), 65 deletions(-)
commit 20fdb0f41d81b226e076a4830d4b0d03da31fc19
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -29467,14 +22243,15 @@ Date: Tue May 15 23:10:39 2012 -0400
[util] Refactor to accommodate for upcoming new tool
- util/Makefile.am | 10 +++--
- util/hb-shape.cc | 70
- +++++++++++++++-------------------
- util/hb-view.cc | 8 ++--
- util/{hb-view.hh => main-font-text.hh} | 48 +++++++++++------------
- util/shape-consumer.hh | 69
- +++++++++++++++++++++++++++++++++
- 5 files changed, 135 insertions(+), 70 deletions(-)
+ util/Makefile.am | 10 ++++---
+ util/hb-shape.cc | 70 +++++++++++++++++++------------------------
+ util/hb-view.cc | 8 +++--
+ util/hb-view.hh | 80
+ --------------------------------------------------
+ util/main-font-text.hh | 80
+ ++++++++++++++++++++++++++++++++++++++++++++++++++
+ util/shape-consumer.hh | 69 +++++++++++++++++++++++++++++++++++++++++++
+ 6 files changed, 191 insertions(+), 126 deletions(-)
commit 1d6846db9ebf84561bb30a4e48c6c43184914099
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -31392,24 +24169,25 @@ Date: Thu Apr 12 14:53:53 2012 -0400
More shaper API coming in preparation for plan/planned API.
- configure.ac | 6 ++--
- src/Makefile.am | 11 +++----
- src/hb-fallback-shape-private.hh | 9 +++---
- src/hb-fallback-shape.cc | 9 +++---
- src/{hb-ot-shape.h => hb-graphite2-private.hh} | 30 ++++++++----------
- src/hb-graphite2.cc | 5 ++-
- src/hb-graphite2.h | 7 -----
- src/hb-ot-shape-private.hh | 8 +++--
- src/hb-ot-shape.cc | 11 +++----
- src/hb-ot.h | 1 -
- src/hb-shape.cc | 24 ++++++---------
- src/hb-shape.h | 1 -
- src/hb-uniscribe-private.hh | 42
- ++++++++++++++++++++++++++
- src/hb-uniscribe.cc | 9 +++---
- src/hb-uniscribe.h | 7 -----
- util/options.hh | 2 +-
- 16 files changed, 96 insertions(+), 86 deletions(-)
+ configure.ac | 6 ++---
+ src/Makefile.am | 11 +++++----
+ src/hb-fallback-shape-private.hh | 9 ++++----
+ src/hb-fallback-shape.cc | 9 ++++----
+ src/hb-graphite2-private.hh | 42 +++++++++++++++++++++++++++++++++++
+ src/hb-graphite2.cc | 5 ++---
+ src/hb-graphite2.h | 7 ------
+ src/hb-ot-shape-private.hh | 8 +++++--
+ src/hb-ot-shape.cc | 11 ++++-----
+ src/hb-ot-shape.h | 48
+ ----------------------------------------
+ src/hb-ot.h | 1 -
+ src/hb-shape.cc | 24 ++++++++------------
+ src/hb-shape.h | 1 -
+ src/hb-uniscribe-private.hh | 42 +++++++++++++++++++++++++++++++++++
+ src/hb-uniscribe.cc | 9 ++++----
+ src/hb-uniscribe.h | 7 ------
+ util/options.hh | 2 +-
+ 17 files changed, 126 insertions(+), 116 deletions(-)
commit c6035cf802c60f0526f421f39a55886061df94ee
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -31713,17 +24491,23 @@ Date: Sat Apr 7 22:07:23 2012 -0400
Move around
- test/shaping/texts/in-tree/MANIFEST
- | 1 +
- test/shaping/texts/in-tree/shaper-default/MANIFEST
- | 1 -
- .../in-tree/{shaper-default => shaper-hangul}/script-hangul/MANIFEST
- | 0
- .../{shaper-default => shaper-hangul}/script-hangul/misc/MANIFEST
- | 0
- .../{shaper-default => shaper-hangul}/script-hangul/misc/misc.txt
- | 0
- 5 files changed, 1 insertion(+), 1 deletion(-)
+ test/shaping/texts/in-tree/MANIFEST |
+ 1 +
+ test/shaping/texts/in-tree/shaper-default/MANIFEST |
+ 1 -
+ test/shaping/texts/in-tree/shaper-default/script-hangul/MANIFEST |
+ 1 -
+ test/shaping/texts/in-tree/shaper-default/script-hangul/misc/MANIFEST |
+ 1 -
+ test/shaping/texts/in-tree/shaper-default/script-hangul/misc/misc.txt |
+ 2 --
+ test/shaping/texts/in-tree/shaper-hangul/script-hangul/MANIFEST |
+ 1 +
+ test/shaping/texts/in-tree/shaper-hangul/script-hangul/misc/MANIFEST |
+ 1 +
+ test/shaping/texts/in-tree/shaper-hangul/script-hangul/misc/misc.txt |
+ 2 ++
+ 8 files changed, 5 insertions(+), 5 deletions(-)
commit d4cc44716c1e098f8abbc0e495404598026ef242
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -32590,221 +25374,433 @@ Date: Fri Jan 20 17:16:35 2012 -0500
Move
- test/shaping/texts/MANIFEST |
- 4 +---
- test/shaping/texts/in-tree/MANIFEST |
- 3 +++
- test/shaping/texts/{ => in-tree}/shaper-arabic/MANIFEST | 0
- .../{shaper-default => in-tree/shaper-arabic/script-arabic}/MANIFEST | 0
- .../script-syriac => in-tree/shaper-arabic/script-mandaic}/MANIFEST | 0
- .../script-nko => in-tree/shaper-arabic/script-mongolian}/MANIFEST | 0
- .../script-mongolian => in-tree/shaper-arabic/script-nko}/MANIFEST | 0
- .../script-mandaic => in-tree/shaper-arabic/script-syriac}/MANIFEST | 0
- .../{shaper-arabic/script-arabic => in-tree/shaper-default}/MANIFEST | 0
- test/shaping/texts/{ => in-tree}/shaper-indic/MANIFEST | 0
- test/shaping/texts/{ => in-tree}/shaper-indic/indic/MANIFEST | 0
- .../shaper-indic/indic/script-assamese}/MANIFEST | 0
- .../shaper-indic/indic/script-assamese}/utrrs/LICENSE | 0
- .../shaper-indic/indic/script-assamese}/utrrs/MANIFEST | 0
- .../shaper-indic/indic/script-assamese}/utrrs/README | 0
- .../shaper-indic/indic/script-assamese}/utrrs/SOURCES | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0
- .../shaper-indic/indic/script-assamese}/utrrs/codepoint/MANIFEST | 0
- .../script-assamese/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 0
- .../script-assamese/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 0
- .../shaper-indic/indic/script-assamese}/utrrs/gpos/MANIFEST | 0
- .../indic/script-assamese/utrrs/gsub/IndicFontFeatureGSUB.txt | 0
- .../shaper-indic/indic/script-assamese}/utrrs/gsub/MANIFEST | 0
- .../shaper-indic/indic/script-bengali}/MANIFEST | 0
- .../shaper-indic/indic/script-bengali}/utrrs/LICENSE | 0
- .../shaper-indic/indic/script-bengali}/utrrs/MANIFEST | 0
- .../shaper-indic/indic/script-bengali}/utrrs/README | 0
- .../shaper-indic/indic/script-bengali}/utrrs/SOURCES | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0
- .../shaper-indic/indic/script-bengali}/utrrs/codepoint/MANIFEST | 0
- .../script-bengali/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 0
- .../script-bengali/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 0
- .../shaper-indic/indic/script-bengali}/utrrs/gpos/MANIFEST | 0
- .../indic/script-bengali/utrrs/gsub/IndicFontFeatureGSUB.txt | 0
- .../shaper-indic/indic/script-bengali}/utrrs/gsub/MANIFEST | 0
- .../shaper-indic/indic/script-devanagari}/MANIFEST | 0
- .../shaper-indic/indic/script-devanagari}/utrrs/LICENSE | 0
- .../shaper-indic/indic/script-devanagari}/utrrs/MANIFEST | 0
- .../shaper-indic/indic/script-devanagari}/utrrs/README | 0
- .../shaper-indic/indic/script-devanagari}/utrrs/SOURCES | 0
- .../codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0
- .../codepoint/IndicFontFeatureCodepoint-DevnagariSpecificAddition.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-GenericPunctuation.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0
- .../shaper-indic/indic/script-devanagari/utrrs/codepoint/MANIFEST | 0
- .../script-devanagari/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 0
- .../script-devanagari/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 0
- .../shaper-indic/indic/script-devanagari}/utrrs/gpos/MANIFEST | 0
- .../indic/script-devanagari/utrrs/gsub/IndicFontFeatureGSUB.txt | 0
- .../shaper-indic/indic/script-devanagari}/utrrs/gsub/MANIFEST | 0
- .../shaper-indic/indic/script-gujarati}/MANIFEST | 0
- .../shaper-indic/indic/script-gujarati}/utrrs/LICENSE | 0
- .../shaper-indic/indic/script-gujarati}/utrrs/MANIFEST | 0
- .../shaper-indic/indic/script-gujarati}/utrrs/README | 0
- .../shaper-indic/indic/script-gujarati}/utrrs/SOURCES | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0
- .../shaper-indic/indic/script-gujarati/utrrs/codepoint/MANIFEST | 0
- .../script-gujarati/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 0
- .../script-gujarati/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 0
- .../shaper-indic/indic/script-gujarati}/utrrs/gpos/MANIFEST | 0
- .../indic/script-gujarati/utrrs/gsub/IndicFontFeatureGSUB.txt | 0
- .../shaper-indic/indic/script-gujarati}/utrrs/gsub/MANIFEST | 0
- .../shaper-indic/indic/script-kannada}/MANIFEST | 0
- .../shaper-indic/indic/script-kannada}/utrrs/LICENSE | 0
- .../{ => in-tree}/shaper-indic/indic/script-kannada/utrrs/MANIFEST | 0
- .../shaper-indic/indic/script-kannada}/utrrs/README | 0
- .../shaper-indic/indic/script-kannada}/utrrs/SOURCES | 0
- .../codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0
- .../shaper-indic/indic/script-kannada/utrrs/codepoint/MANIFEST | 0
- .../script-kannada/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 0
- .../shaper-indic/indic/script-kannada}/utrrs/gpos/MANIFEST | 0
- .../indic/script-kannada/utrrs/gsub/IndicFontFeatureGSUB.txt | 0
- .../shaper-indic/indic/script-kannada}/utrrs/gsub/MANIFEST | 0
- .../texts/{ => in-tree}/shaper-indic/indic/script-malayalam/MANIFEST | 0
- .../{ => in-tree}/shaper-indic/indic/script-malayalam/utrrs/LICENSE | 0
- .../shaper-indic/indic/script-malayalam}/utrrs/MANIFEST | 0
- .../{ => in-tree}/shaper-indic/indic/script-malayalam/utrrs/README | 0
- .../{ => in-tree}/shaper-indic/indic/script-malayalam/utrrs/SOURCES | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0
- .../shaper-indic/indic/script-malayalam}/utrrs/codepoint/MANIFEST | 0
- .../indic/script-malayalam/utrrs/gsub/IndicFontFeatureGSUB.txt | 0
- .../shaper-indic/indic/script-malayalam}/utrrs/gsub/MANIFEST | 0
- .../shaper-indic/indic/script-oriya}/MANIFEST | 0
- .../shaper-indic/indic/script-oriya}/utrrs/LICENSE | 0
- .../shaper-indic/indic/script-oriya}/utrrs/MANIFEST | 0
- .../shaper-indic/indic/script-oriya}/utrrs/README | 0
- .../shaper-indic/indic/script-oriya}/utrrs/SOURCES | 0
- .../codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0
- .../script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-OriyaSpecific.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0
- .../shaper-indic/indic/script-oriya/utrrs/codepoint/MANIFEST | 0
- .../indic/script-oriya/utrrs/gsub/IndicFontFeatureGSUB.txt | 0
- .../shaper-indic/indic/script-oriya}/utrrs/gsub/MANIFEST | 0
- .../shaper-indic/indic/script-punjabi}/MANIFEST | 0
- .../shaper-indic/indic/script-punjabi}/utrrs/LICENSE | 0
- .../shaper-indic/indic/script-punjabi}/utrrs/MANIFEST | 0
- .../shaper-indic/indic/script-punjabi}/utrrs/README | 0
- .../shaper-indic/indic/script-punjabi}/utrrs/SOURCES | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-GurmukhiSpecific.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0
- .../shaper-indic/indic/script-punjabi/utrrs/codepoint/MANIFEST | 0
- .../script-punjabi/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 0
- .../script-punjabi/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 0
- .../shaper-indic/indic/script-punjabi}/utrrs/gpos/MANIFEST | 0
- .../indic/script-punjabi/utrrs/gsub/IndicFontFeatureGSUB.txt | 0
- .../shaper-indic/indic/script-punjabi}/utrrs/gsub/MANIFEST | 0
- .../shaper-indic/indic/script-sinhala}/MANIFEST | 0
- .../shaper-indic/indic/script-sinhala}/utrrs/LICENSE | 0
- .../shaper-indic/indic/script-sinhala}/utrrs/MANIFEST | 0
- .../shaper-indic/indic/script-sinhala}/utrrs/README | 0
- .../shaper-indic/indic/script-sinhala}/utrrs/SOURCES | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Punctuation.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0
- .../shaper-indic/indic/script-sinhala/utrrs/codepoint/MANIFEST | 0
- .../indic/script-sinhala/utrrs/gpos/IndicFontFeatureGPOS.txt | 0
- .../shaper-indic/indic/script-sinhala/utrrs/gpos/MANIFEST | 0
- .../indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Conjunct.txt | 0
- .../script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Rakaaraansaya.txt | 0
- .../indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Repaya.txt | 0
- .../script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Special-Cases.txt | 0
- .../utrrs/gsub/IndicFontFeatureGSUB-TouchingLetters.txt | 0
- .../indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Yansaya.txt | 0
- .../indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB.txt | 0
- .../shaper-indic/indic/script-sinhala/utrrs/gsub/MANIFEST | 0
- .../shaper-indic/indic/script-tamil}/MANIFEST | 0
- .../shaper-indic/indic/script-tamil}/utrrs/LICENSE | 0
- .../shaper-indic/indic/script-tamil}/utrrs/MANIFEST | 0
- .../shaper-indic/indic/script-tamil}/utrrs/README | 0
- .../shaper-indic/indic/script-tamil}/utrrs/SOURCES | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-CurrencySymbols.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0
- .../script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Numerics.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Symbols.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-TamilSymbol.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0
- .../shaper-indic/indic/script-tamil/utrrs/codepoint/MANIFEST | 0
- .../indic/script-tamil/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 0
- .../indic/script-tamil/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 0
- .../shaper-indic/indic/script-tamil}/utrrs/gpos/MANIFEST | 0
- .../indic/script-tamil/utrrs/gsub/IndicFontFeatureGSUB.txt | 0
- .../shaper-indic/indic/script-tamil}/utrrs/gsub/MANIFEST | 0
- .../shaper-indic/indic/script-telugu}/MANIFEST | 0
- .../shaper-indic/indic/script-telugu}/utrrs/LICENSE | 0
- .../shaper-indic/indic/script-telugu}/utrrs/MANIFEST | 0
- .../shaper-indic/indic/script-telugu}/utrrs/README | 0
- .../shaper-indic/indic/script-telugu}/utrrs/SOURCES | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt | 0
- .../utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt | 0
- .../shaper-indic/indic/script-telugu}/utrrs/codepoint/MANIFEST | 0
- .../indic/script-telugu/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 0
- .../shaper-indic/indic/script-telugu}/utrrs/gpos/MANIFEST | 0
- .../indic/script-telugu/utrrs/gsub/IndicFontFeatureGSUB.txt | 0
- .../shaper-indic/indic/script-telugu}/utrrs/gsub/MANIFEST | 0
- 212 files changed, 4 insertions(+), 3 deletions(-)
+ test/shaping/texts/MANIFEST | 4 +-
+ test/shaping/texts/in-tree/MANIFEST | 3 +
+ test/shaping/texts/in-tree/shaper-arabic/MANIFEST | 5 +
+ .../in-tree/shaper-arabic/script-arabic/MANIFEST | 0
+ .../in-tree/shaper-arabic/script-mandaic/MANIFEST | 0
+ .../shaper-arabic/script-mongolian/MANIFEST | 0
+ .../in-tree/shaper-arabic/script-nko/MANIFEST | 0
+ .../in-tree/shaper-arabic/script-syriac/MANIFEST | 0
+ test/shaping/texts/in-tree/shaper-default/MANIFEST | 0
+ test/shaping/texts/in-tree/shaper-indic/MANIFEST | 1 +
+ .../texts/in-tree/shaper-indic/indic/MANIFEST | 11 +
+ .../shaper-indic/indic/script-assamese/MANIFEST | 1 +
+ .../indic/script-assamese/utrrs/LICENSE | 19 +
+ .../indic/script-assamese/utrrs/MANIFEST | 3 +
+ .../indic/script-assamese/utrrs/README | 13 +
+ .../indic/script-assamese/utrrs/SOURCES | 2 +
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 4 +
+ .../IndicFontFeatureCodepoint-Consonants.txt | 40 +
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 10 +
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 +
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 11 +
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 +
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 +
+ .../indic/script-assamese/utrrs/codepoint/MANIFEST | 7 +
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 59 +
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 131 ++
+ .../indic/script-assamese/utrrs/gpos/MANIFEST | 2 +
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 139 ++
+ .../indic/script-assamese/utrrs/gsub/MANIFEST | 1 +
+ .../shaper-indic/indic/script-bengali/MANIFEST | 1 +
+ .../indic/script-bengali/utrrs/LICENSE | 19 +
+ .../indic/script-bengali/utrrs/MANIFEST | 3 +
+ .../shaper-indic/indic/script-bengali/utrrs/README | 13 +
+ .../indic/script-bengali/utrrs/SOURCES | 2 +
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 1 +
+ .../IndicFontFeatureCodepoint-Consonants.txt | 36 +
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 10 +
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 +
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 12 +
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 +
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 +
+ .../indic/script-bengali/utrrs/codepoint/MANIFEST | 7 +
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 58 +
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 119 ++
+ .../indic/script-bengali/utrrs/gpos/MANIFEST | 2 +
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 215 +++
+ .../indic/script-bengali/utrrs/gsub/MANIFEST | 1 +
+ .../shaper-indic/indic/script-devanagari/MANIFEST | 1 +
+ .../indic/script-devanagari/utrrs/LICENSE | 19 +
+ .../indic/script-devanagari/utrrs/MANIFEST | 3 +
+ .../indic/script-devanagari/utrrs/README | 13 +
+ .../indic/script-devanagari/utrrs/SOURCES | 2 +
+ ...icFontFeatureCodepoint-AdditionalConsonants.txt | 8 +
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 4 +
+ .../IndicFontFeatureCodepoint-Consonants.txt | 45 +
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 14 +
+ ...tFeatureCodepoint-DevnagariSpecificAddition.txt | 1 +
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 +
+ ...ndicFontFeatureCodepoint-GenericPunctuation.txt | 2 +
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 16 +
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 10 +
+ .../script-devanagari/utrrs/codepoint/MANIFEST | 9 +
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 185 +++
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 185 +++
+ .../indic/script-devanagari/utrrs/gpos/MANIFEST | 2 +
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 1367
+ ++++++++++++++++++++
+ .../indic/script-devanagari/utrrs/gsub/MANIFEST | 1 +
+ .../shaper-indic/indic/script-gujarati/MANIFEST | 1 +
+ .../indic/script-gujarati/utrrs/LICENSE | 19 +
+ .../indic/script-gujarati/utrrs/MANIFEST | 3 +
+ .../indic/script-gujarati/utrrs/README | 13 +
+ .../indic/script-gujarati/utrrs/SOURCES | 2 +
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 1 +
+ .../IndicFontFeatureCodepoint-Consonants.txt | 34 +
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 12 +
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 +
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 13 +
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 +
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 7 +
+ .../indic/script-gujarati/utrrs/codepoint/MANIFEST | 7 +
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 170 +++
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 170 +++
+ .../indic/script-gujarati/utrrs/gpos/MANIFEST | 2 +
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 1156
+ +++++++++++++++++
+ .../indic/script-gujarati/utrrs/gsub/MANIFEST | 1 +
+ .../shaper-indic/indic/script-kannada/MANIFEST | 1 +
+ .../indic/script-kannada/utrrs/LICENSE | 19 +
+ .../indic/script-kannada/utrrs/MANIFEST | 3 +
+ .../shaper-indic/indic/script-kannada/utrrs/README | 13 +
+ .../indic/script-kannada/utrrs/SOURCES | 2 +
+ ...icFontFeatureCodepoint-AdditionalConsonants.txt | 1 +
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 4 +
+ .../IndicFontFeatureCodepoint-Consonants.txt | 40 +
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 13 +
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 +
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 14 +
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 +
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 9 +
+ .../indic/script-kannada/utrrs/codepoint/MANIFEST | 8 +
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 188 +++
+ .../indic/script-kannada/utrrs/gpos/MANIFEST | 1 +
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 306 +++++
+ .../indic/script-kannada/utrrs/gsub/MANIFEST | 1 +
+ .../shaper-indic/indic/script-malayalam/MANIFEST | 1 +
+ .../indic/script-malayalam/utrrs/LICENSE | 19 +
+ .../indic/script-malayalam/utrrs/MANIFEST | 2 +
+ .../indic/script-malayalam/utrrs/README | 13 +
+ .../indic/script-malayalam/utrrs/SOURCES | 2 +
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 2 +
+ .../IndicFontFeatureCodepoint-Consonants.txt | 36 +
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 12 +
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 +
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 14 +
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 +
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 4 +
+ .../script-malayalam/utrrs/codepoint/MANIFEST | 7 +
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 254 ++++
+ .../indic/script-malayalam/utrrs/gsub/MANIFEST | 1 +
+ .../shaper-indic/indic/script-oriya/MANIFEST | 1 +
+ .../shaper-indic/indic/script-oriya/utrrs/LICENSE | 19 +
+ .../shaper-indic/indic/script-oriya/utrrs/MANIFEST | 2 +
+ .../shaper-indic/indic/script-oriya/utrrs/README | 13 +
+ .../shaper-indic/indic/script-oriya/utrrs/SOURCES | 2 +
+ ...icFontFeatureCodepoint-AdditionalConsonants.txt | 3 +
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 2 +
+ .../IndicFontFeatureCodepoint-Consonants.txt | 34 +
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 12 +
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 +
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 12 +
+ .../IndicFontFeatureCodepoint-OriyaSpecific.txt | 2 +
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 +
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 8 +
+ .../indic/script-oriya/utrrs/codepoint/MANIFEST | 9 +
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 170 +++
+ .../indic/script-oriya/utrrs/gsub/MANIFEST | 1 +
+ .../shaper-indic/indic/script-punjabi/MANIFEST | 1 +
+ .../indic/script-punjabi/utrrs/LICENSE | 19 +
+ .../indic/script-punjabi/utrrs/MANIFEST | 3 +
+ .../shaper-indic/indic/script-punjabi/utrrs/README | 13 +
+ .../indic/script-punjabi/utrrs/SOURCES | 2 +
+ .../IndicFontFeatureCodepoint-Consonants.txt | 38 +
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 9 +
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 +
+ .../IndicFontFeatureCodepoint-GurmukhiSpecific.txt | 6 +
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 10 +
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 +
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 +
+ .../indic/script-punjabi/utrrs/codepoint/MANIFEST | 7 +
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 22 +
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 2 +
+ .../indic/script-punjabi/utrrs/gpos/MANIFEST | 2 +
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 152 +++
+ .../indic/script-punjabi/utrrs/gsub/MANIFEST | 1 +
+ .../shaper-indic/indic/script-sinhala/MANIFEST | 1 +
+ .../indic/script-sinhala/utrrs/LICENSE | 19 +
+ .../indic/script-sinhala/utrrs/MANIFEST | 3 +
+ .../shaper-indic/indic/script-sinhala/utrrs/README | 13 +
+ .../indic/script-sinhala/utrrs/SOURCES | 2 +
+ .../IndicFontFeatureCodepoint-Consonants.txt | 41 +
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 17 +
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 18 +
+ .../IndicFontFeatureCodepoint-Punctuation.txt | 1 +
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 3 +
+ .../indic/script-sinhala/utrrs/codepoint/MANIFEST | 5 +
+ .../utrrs/gpos/IndicFontFeatureGPOS.txt | 162 +++
+ .../indic/script-sinhala/utrrs/gpos/MANIFEST | 1 +
+ .../utrrs/gsub/IndicFontFeatureGSUB-Conjunct.txt | 1 +
+ .../gsub/IndicFontFeatureGSUB-Rakaaraansaya.txt | 41 +
+ .../utrrs/gsub/IndicFontFeatureGSUB-Repaya.txt | 42 +
+ .../gsub/IndicFontFeatureGSUB-Special-Cases.txt | 2 +
+ .../gsub/IndicFontFeatureGSUB-TouchingLetters.txt | 1 +
+ .../utrrs/gsub/IndicFontFeatureGSUB-Yansaya.txt | 41 +
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 1 +
+ .../indic/script-sinhala/utrrs/gsub/MANIFEST | 7 +
+ .../shaper-indic/indic/script-tamil/MANIFEST | 1 +
+ .../shaper-indic/indic/script-tamil/utrrs/LICENSE | 19 +
+ .../shaper-indic/indic/script-tamil/utrrs/MANIFEST | 3 +
+ .../shaper-indic/indic/script-tamil/utrrs/README | 13 +
+ .../shaper-indic/indic/script-tamil/utrrs/SOURCES | 2 +
+ .../IndicFontFeatureCodepoint-Consonants.txt | 23 +
+ .../IndicFontFeatureCodepoint-CurrencySymbols.txt | 1 +
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 11 +
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 +
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 12 +
+ .../IndicFontFeatureCodepoint-Numerics.txt | 3 +
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 +
+ .../IndicFontFeatureCodepoint-Symbols.txt | 6 +
+ .../IndicFontFeatureCodepoint-TamilSymbol.txt | 1 +
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 4 +
+ .../indic/script-tamil/utrrs/codepoint/MANIFEST | 10 +
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 64 +
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 44 +
+ .../indic/script-tamil/utrrs/gpos/MANIFEST | 2 +
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 4 +
+ .../indic/script-tamil/utrrs/gsub/MANIFEST | 1 +
+ .../shaper-indic/indic/script-telugu/MANIFEST | 1 +
+ .../shaper-indic/indic/script-telugu/utrrs/LICENSE | 19 +
+ .../indic/script-telugu/utrrs/MANIFEST | 3 +
+ .../shaper-indic/indic/script-telugu/utrrs/README | 13 +
+ .../shaper-indic/indic/script-telugu/utrrs/SOURCES | 2 +
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 2 +
+ .../IndicFontFeatureCodepoint-Consonants.txt | 38 +
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 13 +
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 +
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 14 +
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 +
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 +
+ .../indic/script-telugu/utrrs/codepoint/MANIFEST | 7 +
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 385 ++++++
+ .../indic/script-telugu/utrrs/gpos/MANIFEST | 1 +
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 287 ++++
+ .../indic/script-telugu/utrrs/gsub/MANIFEST | 1 +
+ test/shaping/texts/shaper-arabic/MANIFEST | 5 -
+ .../texts/shaper-arabic/script-arabic/MANIFEST | 0
+ .../texts/shaper-arabic/script-mandaic/MANIFEST | 0
+ .../texts/shaper-arabic/script-mongolian/MANIFEST | 0
+ .../texts/shaper-arabic/script-nko/MANIFEST | 0
+ .../texts/shaper-arabic/script-syriac/MANIFEST | 0
+ test/shaping/texts/shaper-default/MANIFEST | 0
+ test/shaping/texts/shaper-indic/MANIFEST | 1 -
+ test/shaping/texts/shaper-indic/indic/MANIFEST | 11 -
+ .../shaper-indic/indic/script-assamese/MANIFEST | 1 -
+ .../indic/script-assamese/utrrs/LICENSE | 19 -
+ .../indic/script-assamese/utrrs/MANIFEST | 3 -
+ .../indic/script-assamese/utrrs/README | 13 -
+ .../indic/script-assamese/utrrs/SOURCES | 2 -
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 4 -
+ .../IndicFontFeatureCodepoint-Consonants.txt | 40 -
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 10 -
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 -
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 11 -
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 -
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 -
+ .../indic/script-assamese/utrrs/codepoint/MANIFEST | 7 -
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 59 -
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 131 --
+ .../indic/script-assamese/utrrs/gpos/MANIFEST | 2 -
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 139 --
+ .../indic/script-assamese/utrrs/gsub/MANIFEST | 1 -
+ .../shaper-indic/indic/script-bengali/MANIFEST | 1 -
+ .../indic/script-bengali/utrrs/LICENSE | 19 -
+ .../indic/script-bengali/utrrs/MANIFEST | 3 -
+ .../shaper-indic/indic/script-bengali/utrrs/README | 13 -
+ .../indic/script-bengali/utrrs/SOURCES | 2 -
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 1 -
+ .../IndicFontFeatureCodepoint-Consonants.txt | 36 -
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 10 -
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 -
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 12 -
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 -
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 -
+ .../indic/script-bengali/utrrs/codepoint/MANIFEST | 7 -
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 58 -
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 119 --
+ .../indic/script-bengali/utrrs/gpos/MANIFEST | 2 -
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 215 ---
+ .../indic/script-bengali/utrrs/gsub/MANIFEST | 1 -
+ .../shaper-indic/indic/script-devanagari/MANIFEST | 1 -
+ .../indic/script-devanagari/utrrs/LICENSE | 19 -
+ .../indic/script-devanagari/utrrs/MANIFEST | 3 -
+ .../indic/script-devanagari/utrrs/README | 13 -
+ .../indic/script-devanagari/utrrs/SOURCES | 2 -
+ ...icFontFeatureCodepoint-AdditionalConsonants.txt | 8 -
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 4 -
+ .../IndicFontFeatureCodepoint-Consonants.txt | 45 -
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 14 -
+ ...tFeatureCodepoint-DevnagariSpecificAddition.txt | 1 -
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 -
+ ...ndicFontFeatureCodepoint-GenericPunctuation.txt | 2 -
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 16 -
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 10 -
+ .../script-devanagari/utrrs/codepoint/MANIFEST | 9 -
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 185 ---
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 185 ---
+ .../indic/script-devanagari/utrrs/gpos/MANIFEST | 2 -
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 1367
+ --------------------
+ .../indic/script-devanagari/utrrs/gsub/MANIFEST | 1 -
+ .../shaper-indic/indic/script-gujarati/MANIFEST | 1 -
+ .../indic/script-gujarati/utrrs/LICENSE | 19 -
+ .../indic/script-gujarati/utrrs/MANIFEST | 3 -
+ .../indic/script-gujarati/utrrs/README | 13 -
+ .../indic/script-gujarati/utrrs/SOURCES | 2 -
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 1 -
+ .../IndicFontFeatureCodepoint-Consonants.txt | 34 -
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 12 -
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 -
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 13 -
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 -
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 7 -
+ .../indic/script-gujarati/utrrs/codepoint/MANIFEST | 7 -
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 170 ---
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 170 ---
+ .../indic/script-gujarati/utrrs/gpos/MANIFEST | 2 -
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 1156
+ -----------------
+ .../indic/script-gujarati/utrrs/gsub/MANIFEST | 1 -
+ .../shaper-indic/indic/script-kannada/MANIFEST | 1 -
+ .../indic/script-kannada/utrrs/LICENSE | 19 -
+ .../indic/script-kannada/utrrs/MANIFEST | 3 -
+ .../shaper-indic/indic/script-kannada/utrrs/README | 13 -
+ .../indic/script-kannada/utrrs/SOURCES | 2 -
+ ...icFontFeatureCodepoint-AdditionalConsonants.txt | 1 -
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 4 -
+ .../IndicFontFeatureCodepoint-Consonants.txt | 40 -
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 13 -
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 -
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 14 -
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 -
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 9 -
+ .../indic/script-kannada/utrrs/codepoint/MANIFEST | 8 -
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 188 ---
+ .../indic/script-kannada/utrrs/gpos/MANIFEST | 1 -
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 306 -----
+ .../indic/script-kannada/utrrs/gsub/MANIFEST | 1 -
+ .../shaper-indic/indic/script-malayalam/MANIFEST | 1 -
+ .../indic/script-malayalam/utrrs/LICENSE | 19 -
+ .../indic/script-malayalam/utrrs/MANIFEST | 2 -
+ .../indic/script-malayalam/utrrs/README | 13 -
+ .../indic/script-malayalam/utrrs/SOURCES | 2 -
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 2 -
+ .../IndicFontFeatureCodepoint-Consonants.txt | 36 -
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 12 -
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 -
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 14 -
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 -
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 4 -
+ .../script-malayalam/utrrs/codepoint/MANIFEST | 7 -
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 254 ----
+ .../indic/script-malayalam/utrrs/gsub/MANIFEST | 1 -
+ .../texts/shaper-indic/indic/script-oriya/MANIFEST | 1 -
+ .../shaper-indic/indic/script-oriya/utrrs/LICENSE | 19 -
+ .../shaper-indic/indic/script-oriya/utrrs/MANIFEST | 2 -
+ .../shaper-indic/indic/script-oriya/utrrs/README | 13 -
+ .../shaper-indic/indic/script-oriya/utrrs/SOURCES | 2 -
+ ...icFontFeatureCodepoint-AdditionalConsonants.txt | 3 -
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 2 -
+ .../IndicFontFeatureCodepoint-Consonants.txt | 34 -
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 12 -
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 -
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 12 -
+ .../IndicFontFeatureCodepoint-OriyaSpecific.txt | 2 -
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 -
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 8 -
+ .../indic/script-oriya/utrrs/codepoint/MANIFEST | 9 -
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 170 ---
+ .../indic/script-oriya/utrrs/gsub/MANIFEST | 1 -
+ .../shaper-indic/indic/script-punjabi/MANIFEST | 1 -
+ .../indic/script-punjabi/utrrs/LICENSE | 19 -
+ .../indic/script-punjabi/utrrs/MANIFEST | 3 -
+ .../shaper-indic/indic/script-punjabi/utrrs/README | 13 -
+ .../indic/script-punjabi/utrrs/SOURCES | 2 -
+ .../IndicFontFeatureCodepoint-Consonants.txt | 38 -
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 9 -
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 -
+ .../IndicFontFeatureCodepoint-GurmukhiSpecific.txt | 6 -
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 10 -
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 -
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 -
+ .../indic/script-punjabi/utrrs/codepoint/MANIFEST | 7 -
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 22 -
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 2 -
+ .../indic/script-punjabi/utrrs/gpos/MANIFEST | 2 -
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 152 ---
+ .../indic/script-punjabi/utrrs/gsub/MANIFEST | 1 -
+ .../shaper-indic/indic/script-sinhala/MANIFEST | 1 -
+ .../indic/script-sinhala/utrrs/LICENSE | 19 -
+ .../indic/script-sinhala/utrrs/MANIFEST | 3 -
+ .../shaper-indic/indic/script-sinhala/utrrs/README | 13 -
+ .../indic/script-sinhala/utrrs/SOURCES | 2 -
+ .../IndicFontFeatureCodepoint-Consonants.txt | 41 -
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 17 -
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 18 -
+ .../IndicFontFeatureCodepoint-Punctuation.txt | 1 -
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 3 -
+ .../indic/script-sinhala/utrrs/codepoint/MANIFEST | 5 -
+ .../utrrs/gpos/IndicFontFeatureGPOS.txt | 162 ---
+ .../indic/script-sinhala/utrrs/gpos/MANIFEST | 1 -
+ .../utrrs/gsub/IndicFontFeatureGSUB-Conjunct.txt | 1 -
+ .../gsub/IndicFontFeatureGSUB-Rakaaraansaya.txt | 41 -
+ .../utrrs/gsub/IndicFontFeatureGSUB-Repaya.txt | 42 -
+ .../gsub/IndicFontFeatureGSUB-Special-Cases.txt | 2 -
+ .../gsub/IndicFontFeatureGSUB-TouchingLetters.txt | 1 -
+ .../utrrs/gsub/IndicFontFeatureGSUB-Yansaya.txt | 41 -
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 1 -
+ .../indic/script-sinhala/utrrs/gsub/MANIFEST | 7 -
+ .../texts/shaper-indic/indic/script-tamil/MANIFEST | 1 -
+ .../shaper-indic/indic/script-tamil/utrrs/LICENSE | 19 -
+ .../shaper-indic/indic/script-tamil/utrrs/MANIFEST | 3 -
+ .../shaper-indic/indic/script-tamil/utrrs/README | 13 -
+ .../shaper-indic/indic/script-tamil/utrrs/SOURCES | 2 -
+ .../IndicFontFeatureCodepoint-Consonants.txt | 23 -
+ .../IndicFontFeatureCodepoint-CurrencySymbols.txt | 1 -
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 11 -
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 -
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 12 -
+ .../IndicFontFeatureCodepoint-Numerics.txt | 3 -
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 -
+ .../IndicFontFeatureCodepoint-Symbols.txt | 6 -
+ .../IndicFontFeatureCodepoint-TamilSymbol.txt | 1 -
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 4 -
+ .../indic/script-tamil/utrrs/codepoint/MANIFEST | 10 -
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 64 -
+ .../utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt | 44 -
+ .../indic/script-tamil/utrrs/gpos/MANIFEST | 2 -
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 4 -
+ .../indic/script-tamil/utrrs/gsub/MANIFEST | 1 -
+ .../shaper-indic/indic/script-telugu/MANIFEST | 1 -
+ .../shaper-indic/indic/script-telugu/utrrs/LICENSE | 19 -
+ .../indic/script-telugu/utrrs/MANIFEST | 3 -
+ .../shaper-indic/indic/script-telugu/utrrs/README | 13 -
+ .../shaper-indic/indic/script-telugu/utrrs/SOURCES | 2 -
+ .../IndicFontFeatureCodepoint-AdditionalVowels.txt | 2 -
+ .../IndicFontFeatureCodepoint-Consonants.txt | 38 -
+ .../IndicFontFeatureCodepoint-DependentVowels.txt | 13 -
+ .../codepoint/IndicFontFeatureCodepoint-Digits.txt | 10 -
+ ...IndicFontFeatureCodepoint-IndependentVowels.txt | 14 -
+ .../IndicFontFeatureCodepoint-Reserved.txt | 2 -
+ .../IndicFontFeatureCodepoint-VariousSigns.txt | 6 -
+ .../indic/script-telugu/utrrs/codepoint/MANIFEST | 7 -
+ .../utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt | 385 ------
+ .../indic/script-telugu/utrrs/gpos/MANIFEST | 1 -
+ .../utrrs/gsub/IndicFontFeatureGSUB.txt | 287 ----
+ .../indic/script-telugu/utrrs/gsub/MANIFEST | 1 -
+ 422 files changed, 7601 insertions(+), 7600 deletions(-)
commit 45f640c98d752161e51eda63061d70fad9ab9f68
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -33054,9 +26050,12 @@ Date: Fri Jan 20 13:50:55 2012 -0500
Move hb-diff to test/shaping/
- {util => test/shaping}/hb-diff | 0
- util/Makefile.am | 2 --
- 2 files changed, 2 deletions(-)
+ test/shaping/hb-diff | 70
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ util/Makefile.am | 2 --
+ util/hb-diff | 70
+ ----------------------------------------------------
+ 3 files changed, 70 insertions(+), 72 deletions(-)
commit f868e1b84d2f73688d4d6558d44610b1ac75ec13
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -33064,11 +26063,14 @@ Date: Fri Jan 20 13:50:05 2012 -0500
Add hb-unicode-decode
- test/shaping/{hb-read-manifest => hb-manifest-read} | 0
- .../{hb-update-manifests => hb-manifest-update} | 0
- test/shaping/hb-unicode-decode | 19
- +++++++++++++++++++
- 3 files changed, 19 insertions(+)
+ test/shaping/hb-manifest-read | 36
+ ++++++++++++++++++++++++++++++++++++
+ test/shaping/hb-manifest-update | 22 ++++++++++++++++++++++
+ test/shaping/hb-read-manifest | 36
+ ------------------------------------
+ test/shaping/hb-unicode-decode | 19 +++++++++++++++++++
+ test/shaping/hb-update-manifests | 22 ----------------------
+ 5 files changed, 77 insertions(+), 58 deletions(-)
commit 9ab23ef4749b51e60464b9ef2a92739cdc2b36ba
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -33207,25 +26209,38 @@ Date: Thu Jan 19 14:52:02 2012 -0500
Rename test/ to test/api/
- configure.ac | 1 +
- test/Makefile.am | 128
- +----------------------------------
- test/api/Makefile.am | 131
- ++++++++++++++++++++++++++++++++++++
- test/{ => api}/hb-test.h | 0
- test/{ => api}/test-blob.c | 0
- test/{ => api}/test-buffer.c | 0
- test/{ => api}/test-c.c | 0
- test/{ => api}/test-common.c | 0
- test/{ => api}/test-cplusplus.cc | 0
- test/{ => api}/test-font.c | 0
- test/{ => api}/test-object.c | 0
- test/{ => api}/test-ot-tag.c | 0
- test/{ => api}/test-shape-complex.c | 0
- test/{ => api}/test-shape.c | 0
- test/{ => api}/test-unicode.c | 0
- test/{ => api}/test-version.c | 0
- 16 files changed, 133 insertions(+), 127 deletions(-)
+ configure.ac | 1 +
+ test/Makefile.am | 128 +----
+ test/api/Makefile.am | 131 +++++
+ test/api/hb-test.h | 265 +++++++++
+ test/api/test-blob.c | 301 +++++++++++
+ test/api/test-buffer.c | 783 +++++++++++++++++++++++++++
+ test/api/test-c.c | 58 ++
+ test/api/test-common.c | 213 ++++++++
+ test/api/test-cplusplus.cc | 30 ++
+ test/api/test-font.c | 502 +++++++++++++++++
+ test/api/test-object.c | 367 +++++++++++++
+ test/api/test-ot-tag.c | 241 +++++++++
+ test/api/test-shape-complex.c | 1189
+ +++++++++++++++++++++++++++++++++++++++++
+ test/api/test-shape.c | 165 ++++++
+ test/api/test-unicode.c | 887 ++++++++++++++++++++++++++++++
+ test/api/test-version.c | 80 +++
+ test/hb-test.h | 265 ---------
+ test/test-blob.c | 301 -----------
+ test/test-buffer.c | 783 ---------------------------
+ test/test-c.c | 58 --
+ test/test-common.c | 213 --------
+ test/test-cplusplus.cc | 30 --
+ test/test-font.c | 502 -----------------
+ test/test-object.c | 367 -------------
+ test/test-ot-tag.c | 241 ---------
+ test/test-shape-complex.c | 1189
+ -----------------------------------------
+ test/test-shape.c | 165 ------
+ test/test-unicode.c | 887 ------------------------------
+ test/test-version.c | 80 ---
+ 29 files changed, 5214 insertions(+), 5208 deletions(-)
commit 3b5c22c39b87155f315853fb0c40edcf14e99b54
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -33719,20 +26734,22 @@ Date: Mon Sep 19 16:41:17 2011 -0400
The output format is kinda cryptic. Suggestions welcome.
- configure.ac | 6 -
- util/Makefile.am | 44 +++--
- util/{common.cc => hb-shape.cc} | 57 ++++--
- util/hb-view.cc | 44 +----
- util/hb-view.hh | 79 ++++++++
- util/helper-cairo.cc | 375
- +++++++++++++++++++++++++++++++++++
- util/{common.hh => helper-cairo.hh} | 64 ++++--
- util/options.cc | 79 ++++++++
- util/options.hh | 53 ++++-
- util/view-cairo.cc | 381
- ++----------------------------------
- util/view-cairo.hh | 8 +-
- 11 files changed, 717 insertions(+), 473 deletions(-)
+ configure.ac | 6 -
+ util/Makefile.am | 44 +++---
+ util/common.cc | 43 ------
+ util/common.hh | 57 --------
+ util/hb-shape.cc | 78 +++++++++++
+ util/hb-view.cc | 44 +-----
+ util/hb-view.hh | 79 +++++++++++
+ util/helper-cairo.cc | 375
+ ++++++++++++++++++++++++++++++++++++++++++++++++++
+ util/helper-cairo.hh | 79 +++++++++++
+ util/options.cc | 79 +++++++++++
+ util/options.hh | 53 ++++++-
+ util/view-cairo.cc | 381
+ ++-------------------------------------------------
+ util/view-cairo.hh | 8 +-
+ 13 files changed, 785 insertions(+), 541 deletions(-)
commit eb2d8be7a8ede0c0f5e346cf06516792f83f36f7
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -34325,9 +27342,12 @@ Date: Wed Aug 24 01:31:29 2011 +0200
Minor
- src/Makefile.am | 2 +-
- src/{hb-uniscribe-shape.cc => hb-uniscribe.cc} | 0
- 2 files changed, 1 insertion(+), 1 deletion(-)
+ src/Makefile.am | 2 +-
+ src/hb-uniscribe-shape.cc | 454
+ ----------------------------------------------
+ src/hb-uniscribe.cc | 454
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 455 insertions(+), 455 deletions(-)
commit efde8113258b117ec0a7fbffe6d681442d045c41
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -34349,12 +27369,13 @@ Date: Fri Aug 19 19:59:24 2011 +0200
need to figure out the naming. The generated code doesn't have the
right name.
- configure.ac | 2 +
- src/Makefile.am | 13 +++--
- src/hb-gobject-enums.cc.tmpl | 74
- ++++++++++++++++++++++++++++
- src/{hb-gobject.cc => hb-gobject-structs.cc} | 0
- 4 files changed, 86 insertions(+), 3 deletions(-)
+ configure.ac | 2 ++
+ src/Makefile.am | 13 ++++++--
+ src/hb-gobject-enums.cc.tmpl | 74
+ ++++++++++++++++++++++++++++++++++++++++++++
+ src/hb-gobject-structs.cc | 63 +++++++++++++++++++++++++++++++++++++
+ src/hb-gobject.cc | 63 -------------------------------------
+ 5 files changed, 149 insertions(+), 66 deletions(-)
commit 7d235d272f4c9213f54c9c807fb8fba5068c45b0
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -34444,21 +27465,27 @@ Date: Wed Aug 17 14:19:59 2011 +0200
Rename table files from eg maxp-private.hh to maxp-table.hh
- src/Makefile.am | 12
- ++++++------
- src/hb-font.cc | 2 +-
- src/{hb-ot-head-private.hh => hb-ot-head-table.hh} | 6 +++---
- ...-ot-layout-gdef-private.hh => hb-ot-layout-gdef-table.hh} | 6 +++---
- ...-ot-layout-gpos-private.hh => hb-ot-layout-gpos-table.hh} | 6 +++---
- ...-ot-layout-gsub-private.hh => hb-ot-layout-gsub-table.hh} | 6 +++---
- src/hb-ot-layout-gsubgpos-private.hh | 2 +-
- src/hb-ot-layout.cc |
- 8 ++++----
- src/{hb-ot-maxp-private.hh => hb-ot-maxp-table.hh} | 6 +++---
- src/{hb-ot-name-private.hh => hb-ot-name-table.hh} | 6 +++---
- src/hb-uniscribe-shape.cc | 2 +-
- src/main.cc | 2 +-
- 12 files changed, 32 insertions(+), 32 deletions(-)
+ src/Makefile.am | 12 +-
+ src/hb-font.cc | 2 +-
+ src/hb-ot-head-private.hh | 143 ---
+ src/hb-ot-head-table.hh | 143 +++
+ src/hb-ot-layout-gdef-private.hh | 427 ---------
+ src/hb-ot-layout-gdef-table.hh | 427 +++++++++
+ src/hb-ot-layout-gpos-private.hh | 1633
+ ----------------------------------
+ src/hb-ot-layout-gpos-table.hh | 1633
+ ++++++++++++++++++++++++++++++++++
+ src/hb-ot-layout-gsub-private.hh | 943 --------------------
+ src/hb-ot-layout-gsub-table.hh | 943 ++++++++++++++++++++
+ src/hb-ot-layout-gsubgpos-private.hh | 2 +-
+ src/hb-ot-layout.cc | 8 +-
+ src/hb-ot-maxp-private.hh | 66 --
+ src/hb-ot-maxp-table.hh | 66 ++
+ src/hb-ot-name-private.hh | 128 ---
+ src/hb-ot-name-table.hh | 128 +++
+ src/hb-uniscribe-shape.cc | 2 +-
+ src/main.cc | 2 +-
+ 18 files changed, 3354 insertions(+), 3354 deletions(-)
commit 0b7e4d9f20b3ed947d0c441ca59b43c4097cdb0e
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -34660,12 +27687,15 @@ Date: Tue Aug 9 15:03:00 2011 +0200
Move hb-view into util/
- Makefile.am | 3 +--
- configure.ac | 1 +
- src/Makefile.am | 13 -------------
- util/Makefile.am | 24 ++++++++++++++++++++++++
- {src => util}/hb-view.cc | 0
- 5 files changed, 26 insertions(+), 15 deletions(-)
+ Makefile.am | 3 +-
+ configure.ac | 1 +
+ src/Makefile.am | 13 --
+ src/hb-view.cc | 568
+ -------------------------------------------------------
+ util/Makefile.am | 24 +++
+ util/hb-view.cc | 568
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 6 files changed, 594 insertions(+), 583 deletions(-)
commit d753ac78da5619a0a545cdaf7a8e65787e996570
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -36828,10 +29858,13 @@ Date: Wed Jun 1 18:10:10 2011 -0400
Minor rename
- src/Makefile.am | 2 +-
- src/{gen-arabic-joining-table.py => gen-arabic-table.py} | 2 +-
- src/hb-ot-shape-complex-arabic-table.hh | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
+ src/Makefile.am | 2 +-
+ src/gen-arabic-joining-table.py | 83
+ ---------------------------------
+ src/gen-arabic-table.py | 83
+ +++++++++++++++++++++++++++++++++
+ src/hb-ot-shape-complex-arabic-table.hh | 2 +-
+ 4 files changed, 85 insertions(+), 85 deletions(-)
commit 0eafce56eed4c5166ee5b97b121a452ffd292a7a
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -39123,10 +32156,14 @@ Date: Wed Apr 27 12:15:06 2011 -0400
Rename hb-view.c and test.c to .cc files
- src/Makefile.am | 4 ++--
- src/{hb-view.c => hb-view.cc} | 2 +-
- src/{test.c => test.cc} | 5 ++++-
- 3 files changed, 7 insertions(+), 4 deletions(-)
+ src/Makefile.am | 4 +-
+ src/hb-view.c | 540
+ --------------------------------------------------------
+ src/hb-view.cc | 540
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/test.c | 94 ----------
+ src/test.cc | 97 ++++++++++
+ 5 files changed, 639 insertions(+), 636 deletions(-)
commit eb5796f58897ecfb9d76fd99915bf1a30669a0fa
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -39422,32 +32459,43 @@ Date: Wed Apr 20 18:50:27 2011 -0400
So we can liberally use the simple features of C++ that parts of the
codebase is already using.
- src/Makefile.am | 17
- +++++++++--------
- src/{hb-blob-private.h => hb-blob-private.hh} | 8 ++++----
- src/hb-blob.cc | 4 ++--
- src/hb-buffer-private.hh | 2 +-
- src/{hb-common.c => hb-common.cc} | 8 ++++----
- src/{hb-font-private.h => hb-font-private.hh} | 8 ++++----
- src/hb-font.cc | 6 +++---
- src/{hb-ft.c => hb-ft.cc} | 4 ++--
- src/hb-glib.cc | 2 +-
- src/hb-icu.cc | 2 +-
- src/{hb-object-private.h => hb-object-private.hh} | 10 ++++------
- src/hb-open-type-private.hh | 2 +-
- src/hb-ot-layout-gdef-private.hh | 2 +-
- src/hb-ot-layout-private.hh | 4 ++--
- ...abic-table.h => hb-ot-shape-complex-arabic-table.hh} | 8 ++++----
- src/hb-ot-shape-complex-arabic.cc | 2 +-
- src/hb-ot-shape-complex-private.hh | 2 +-
- src/hb-ot-shape-private.hh | 2 +-
- src/{hb-ot-tag.c => hb-ot-tag.cc} | 8 ++++----
- src/{hb-private.h => hb-private.hh} | 8 ++++----
- src/hb-shape.cc | 2 +-
- src/hb-unicode-private.hh | 2 +-
- src/hb-unicode.cc | 2 +-
- src/hb-view.c | 6 ++++++
- 24 files changed, 63 insertions(+), 58 deletions(-)
+ src/Makefile.am | 17 +-
+ src/hb-blob-private.h | 59 ---
+ src/hb-blob-private.hh | 59 +++
+ src/hb-blob.cc | 4 +-
+ src/hb-buffer-private.hh | 2 +-
+ src/hb-common.c | 222 -----------
+ src/hb-common.cc | 222 +++++++++++
+ src/hb-font-private.h | 97 -----
+ src/hb-font-private.hh | 97 +++++
+ src/hb-font.cc | 6 +-
+ src/hb-ft.c | 262 ------------
+ src/hb-ft.cc | 262 ++++++++++++
+ src/hb-glib.cc | 2 +-
+ src/hb-icu.cc | 2 +-
+ src/hb-object-private.h | 134 -------
+ src/hb-object-private.hh | 132 +++++++
+ src/hb-open-type-private.hh | 2 +-
+ src/hb-ot-layout-gdef-private.hh | 2 +-
+ src/hb-ot-layout-private.hh | 4 +-
+ src/hb-ot-shape-complex-arabic-table.h | 674
+ -------------------------------
+ src/hb-ot-shape-complex-arabic-table.hh | 674
+ +++++++++++++++++++++++++++++++
+ src/hb-ot-shape-complex-arabic.cc | 2 +-
+ src/hb-ot-shape-complex-private.hh | 2 +-
+ src/hb-ot-shape-private.hh | 2 +-
+ src/hb-ot-tag.c | 677
+ --------------------------------
+ src/hb-ot-tag.cc | 677
+ ++++++++++++++++++++++++++++++++
+ src/hb-private.h | 301 --------------
+ src/hb-private.hh | 301 ++++++++++++++
+ src/hb-shape.cc | 2 +-
+ src/hb-unicode-private.hh | 2 +-
+ src/hb-unicode.cc | 2 +-
+ src/hb-view.c | 6 +
+ 32 files changed, 2457 insertions(+), 2452 deletions(-)
commit f19f4f9b0965ad7473a0f3a1ffcdbf16930e35d4
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -39455,9 +32503,12 @@ Date: Wed Apr 20 18:25:56 2011 -0400
Rename hb-blob.c to hb-blob.cc in preparation of more changes
- src/Makefile.am | 2 +-
- src/{hb-blob.c => hb-blob.cc} | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ src/Makefile.am | 2 +-
+ src/hb-blob.c | 356
+ --------------------------------------------------------
+ src/hb-blob.cc | 356
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 357 insertions(+), 357 deletions(-)
commit 04744e73bad22d679986173b5f0d84dbbf49dd57
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -39607,9 +32658,12 @@ Date: Wed Apr 20 02:56:39 2011 -0400
[test] Rename test-types to test-common
- test/Makefile.am | 2 +-
- test/{test-types.c => test-common.c} | 0
- 2 files changed, 1 insertion(+), 1 deletion(-)
+ test/Makefile.am | 2 +-
+ test/test-common.c | 166
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ test/test-types.c | 166
+ -----------------------------------------------------
+ 3 files changed, 167 insertions(+), 167 deletions(-)
commit f144a8ea840c6452c1fece2fd988b42a8ea7c5a6
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -39657,18 +32711,23 @@ Date: Wed Apr 20 02:00:47 2011 -0400
unicode: Cleanup implementation
- src/Makefile.am | 8 +-
- src/hb-buffer-private.hh | 2 +-
- src/{hb-glib.c => hb-glib.cc} | 65 +++----
- src/{hb-icu.c => hb-icu.cc} | 30 +--
- src/hb-ot-shape.cc | 14 +-
- src/hb-shape.cc | 4 +-
- ...{hb-unicode-private.h => hb-unicode-private.hh} | 65 ++++---
- src/{hb-unicode.c => hb-unicode.cc} | 213
- +++++++++------------
- src/hb-unicode.h | 57 +++---
- test/test-unicode.c | 23 ++-
- 10 files changed, 237 insertions(+), 244 deletions(-)
+ src/Makefile.am | 8 +-
+ src/hb-buffer-private.hh | 2 +-
+ src/hb-glib.c | 230 -------------------------------------
+ src/hb-glib.cc | 231 +++++++++++++++++++++++++++++++++++++
+ src/hb-icu.c | 285
+ ----------------------------------------------
+ src/hb-icu.cc | 285
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ src/hb-ot-shape.cc | 14 +--
+ src/hb-shape.cc | 4 +-
+ src/hb-unicode-private.h | 77 -------------
+ src/hb-unicode-private.hh | 96 ++++++++++++++++
+ src/hb-unicode.c | 256 -----------------------------------------
+ src/hb-unicode.cc | 223 ++++++++++++++++++++++++++++++++++++
+ src/hb-unicode.h | 57 +++++-----
+ test/test-unicode.c | 23 ++--
+ 14 files changed, 892 insertions(+), 899 deletions(-)
commit ecfb773829a5d98a4f5456a992f3e5ecd6731435
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -41485,15 +34544,17 @@ Date: Tue Oct 12 16:50:36 2010 -0400
Add hb_ot_complex_shaper_t stuff and start hooking Arabic shaper up
- src/Makefile.am | 3 +-
- src/hb-ot-map-private.hh | 2 +-
- src/hb-ot-map.cc | 2 +-
- ...ape-arabic.cc => hb-ot-shape-complex-arabic.cc} | 9 +++
- src/hb-ot-shape-complex-private.hh | 88
- ++++++++++++++++++++++
- src/hb-ot-shape-private.hh | 12 +--
- src/hb-ot-shape.cc | 8 +-
- 7 files changed, 107 insertions(+), 17 deletions(-)
+ src/Makefile.am | 3 +-
+ src/hb-ot-map-private.hh | 2 +-
+ src/hb-ot-map.cc | 2 +-
+ src/hb-ot-shape-arabic.cc | 706
+ ------------------------------------
+ src/hb-ot-shape-complex-arabic.cc | 715
+ +++++++++++++++++++++++++++++++++++++
+ src/hb-ot-shape-complex-private.hh | 88 +++++
+ src/hb-ot-shape-private.hh | 12 +-
+ src/hb-ot-shape.cc | 8 +-
+ 8 files changed, 813 insertions(+), 723 deletions(-)
commit 605ed468f380f86d642031f6451447d270cb6de1
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -42172,15 +35233,19 @@ Date: Fri Jul 23 15:00:13 2010 -0400
Helps with avoiding many "extern C" declarations in source files.
- src/Makefile.am | 4 ++--
- src/check-header-guards.sh | 2 +-
- src/{hb-font-private.hh => hb-font-private.h} | 6 +++---
- src/hb-font.cc | 2 +-
- src/{hb-ft.cc => hb-ft.c} | 2 +-
- src/hb-graphite.cc | 2 +-
- src/hb-ot-layout-gdef-private.hh | 2 +-
- src/hb-ot-layout-private.hh | 2 +-
- 8 files changed, 11 insertions(+), 11 deletions(-)
+ src/Makefile.am | 4 +-
+ src/check-header-guards.sh | 2 +-
+ src/hb-font-private.h | 95 ++++++++++++++++
+ src/hb-font-private.hh | 95 ----------------
+ src/hb-font.cc | 2 +-
+ src/hb-ft.c | 240
+ +++++++++++++++++++++++++++++++++++++++
+ src/hb-ft.cc | 240
+ ---------------------------------------
+ src/hb-graphite.cc | 2 +-
+ src/hb-ot-layout-gdef-private.hh | 2 +-
+ src/hb-ot-layout-private.hh | 2 +-
+ 10 files changed, 342 insertions(+), 342 deletions(-)
commit 0dd200d28f51bf4062d8a377432c8977c80cb210
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -43507,24 +36572,32 @@ Date: Wed May 12 18:23:21 2010 -0400
In anticipation for buffer revamp coming.
- src/Makefile.am | 16
- ++++++++--------
- src/{hb-buffer-private.h => hb-buffer-private.hh} | 2 +-
- src/{hb-buffer.c => hb-buffer.cc} | 14
- +++++++-------
- src/hb-common.h | 1 +
- src/{hb-font-private.h => hb-font-private.hh} | 2 +-
- src/hb-font.cc | 4 ++--
- src/{hb-ft.c => hb-ft.cc} | 8 ++++----
- src/hb-ot-layout-common-private.hh | 2 +-
- src/hb-ot-layout-gdef-private.hh | 2 +-
- src/hb-ot-layout-gsubgpos-private.hh | 2 +-
- src/{hb-ot-layout-private.h => hb-ot-layout-private.hh} | 2 +-
- src/hb-ot-layout.cc | 2 +-
- src/{hb-ot-shape-private.h => hb-ot-shape-private.hh} | 0
- src/{hb-ot-shape.c => hb-ot-shape.cc} | 4 ++--
- src/{hb-shape.c => hb-shape.cc} | 6 +++---
- 15 files changed, 34 insertions(+), 33 deletions(-)
+ src/Makefile.am | 16 +-
+ src/hb-buffer-private.h | 155 ---------
+ src/hb-buffer-private.hh | 155 +++++++++
+ src/hb-buffer.c | 650
+ -----------------------------------
+ src/hb-buffer.cc | 650
+ +++++++++++++++++++++++++++++++++++
+ src/hb-common.h | 1 +
+ src/hb-font-private.h | 92 -----
+ src/hb-font-private.hh | 92 +++++
+ src/hb-font.cc | 4 +-
+ src/hb-ft.c | 240 -------------
+ src/hb-ft.cc | 240 +++++++++++++
+ src/hb-ot-layout-common-private.hh | 2 +-
+ src/hb-ot-layout-gdef-private.hh | 2 +-
+ src/hb-ot-layout-gsubgpos-private.hh | 2 +-
+ src/hb-ot-layout-private.h | 121 -------
+ src/hb-ot-layout-private.hh | 121 +++++++
+ src/hb-ot-layout.cc | 2 +-
+ src/hb-ot-shape-private.h | 53 ---
+ src/hb-ot-shape-private.hh | 53 +++
+ src/hb-ot-shape.c | 164 ---------
+ src/hb-ot-shape.cc | 164 +++++++++
+ src/hb-shape.c | 258 --------------
+ src/hb-shape.cc | 258 ++++++++++++++
+ 23 files changed, 1748 insertions(+), 1747 deletions(-)
commit c3df649f258b334e93c7626a43cd8ebfbd5a610e
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -46726,21 +39799,24 @@ Date: Mon Nov 2 16:28:39 2009 -0500
Add build system
- AUTHORS | 0
- src/COPYING => COPYING | 0
- Makefile.am | 3 +
- NEWS | 0
- src/README => README | 0
- src/TODO => TODO | 0
- autogen.sh | 189
- +++++++++++++++++++++++++++++++++++++++++++++++++
- configure.ac | 40 +++++++++++
- git.mk | 184
- +++++++++++++++++++++++++++++++++++++++++++++++
- harfbuzz.pc.in | 11 +++
- src/.gitignore | 1 -
- src/Makefile.ng | 11 ---
- 12 files changed, 427 insertions(+), 12 deletions(-)
+ AUTHORS | 0
+ COPYING | 17 +++++
+ Makefile.am | 3 +
+ NEWS | 0
+ README | 9 +++
+ TODO | 6 ++
+ autogen.sh | 189
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ configure.ac | 40 ++++++++++++
+ git.mk | 184
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ harfbuzz.pc.in | 11 ++++
+ src/.gitignore | 1 -
+ src/COPYING | 17 -----
+ src/Makefile.ng | 11 ----
+ src/README | 9 ---
+ src/TODO | 6 --
+ 15 files changed, 459 insertions(+), 44 deletions(-)
commit c09ed9801ead002d6f8e507ce664b83707b202e9
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -47833,11 +40909,14 @@ Date: Tue Aug 4 22:06:57 2009 -0400
[HB] Rename open-types to open-type; beauty
- src/Makefile.am | 2 +-
- src/hb-open-file-private.hh | 2 +-
- src/{hb-open-types-private.hh => hb-open-type-private.hh} | 0
- src/hb-ot-layout-common-private.hh | 2 +-
- 4 files changed, 3 insertions(+), 3 deletions(-)
+ src/Makefile.am | 2 +-
+ src/hb-open-file-private.hh | 2 +-
+ src/hb-open-type-private.hh | 565
+ +++++++++++++++++++++++++++++++++++++
+ src/hb-open-types-private.hh | 565
+ -------------------------------------
+ src/hb-ot-layout-common-private.hh | 2 +-
+ 5 files changed, 568 insertions(+), 568 deletions(-)
commit f4b58d3fc2956a9d1b6178588d809c781f7a5c0c
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -48234,9 +41313,12 @@ Date: Sun Aug 2 20:06:48 2009 -0400
[HB] Rename hb-font.c to hb-font.cc
- src/Makefile.am | 2 +-
- src/{hb-font.c => hb-font.cc} | 0
- 2 files changed, 1 insertion(+), 1 deletion(-)
+ src/Makefile.am | 2 +-
+ src/hb-font.c | 349
+ --------------------------------------------------------
+ src/hb-font.cc | 349
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 350 insertions(+), 350 deletions(-)
commit 5f5b24f99f52bbc922e238b65c06061ba07c8548
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -48244,18 +41326,26 @@ Date: Sun Aug 2 20:03:12 2009 -0400
[OT] Rename C++ header files from *.h to *.hh
- src/Makefile.am | 14
- +++++++-------
- src/{hb-open-file-private.h => hb-open-file-private.hh} | 8 ++++----
- src/{hb-open-types-private.h => hb-open-types-private.hh} | 6 +++---
- ...out-common-private.h => hb-ot-layout-common-private.hh} | 8 ++++----
- ...-layout-gdef-private.h => hb-ot-layout-gdef-private.hh} | 8 ++++----
- ...-layout-gpos-private.h => hb-ot-layout-gpos-private.hh} | 8 ++++----
- ...-layout-gsub-private.h => hb-ot-layout-gsub-private.hh} | 8 ++++----
- ...gsubgpos-private.h => hb-ot-layout-gsubgpos-private.hh} | 8 ++++----
- src/hb-ot-layout.cc | 8 ++++----
- src/main.cc | 6 +++---
- 10 files changed, 41 insertions(+), 41 deletions(-)
+ src/Makefile.am | 14 +-
+ src/hb-open-file-private.h | 145 ----
+ src/hb-open-file-private.hh | 145 ++++
+ src/hb-open-types-private.h | 386 ----------
+ src/hb-open-types-private.hh | 386 ++++++++++
+ src/hb-ot-layout-common-private.h | 447 -----------
+ src/hb-ot-layout-common-private.hh | 447 +++++++++++
+ src/hb-ot-layout-gdef-private.h | 320 --------
+ src/hb-ot-layout-gdef-private.hh | 320 ++++++++
+ src/hb-ot-layout-gpos-private.h | 1355
+ ----------------------------------
+ src/hb-ot-layout-gpos-private.hh | 1355
+ ++++++++++++++++++++++++++++++++++
+ src/hb-ot-layout-gsub-private.h | 751 -------------------
+ src/hb-ot-layout-gsub-private.hh | 751 +++++++++++++++++++
+ src/hb-ot-layout-gsubgpos-private.h | 773 -------------------
+ src/hb-ot-layout-gsubgpos-private.hh | 773 +++++++++++++++++++
+ src/hb-ot-layout.cc | 8 +-
+ src/main.cc | 6 +-
+ 17 files changed, 4191 insertions(+), 4191 deletions(-)
commit 2098a021a826e76ee27d5db74e32738d7d1c3d30
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -48263,15 +41353,15 @@ Date: Sun Aug 2 19:57:00 2009 -0400
[HB] Move OT file handling out of ot-layout
- src/Makefile.am | 3 +-
- src/hb-open-file-private.h | 145
- +++++++++++++++++++++
- ...yout-open-private.h => hb-open-types-private.h} | 117
- +----------------
- src/hb-ot-layout-common-private.h | 4 +-
- src/hb-ot-layout.cc | 2 +-
- src/main.cc | 4 +-
- 6 files changed, 157 insertions(+), 118 deletions(-)
+ src/Makefile.am | 3 +-
+ src/hb-open-file-private.h | 145 +++++++++++
+ src/hb-open-types-private.h | 386 +++++++++++++++++++++++++++++
+ src/hb-ot-layout-common-private.h | 4 +-
+ src/hb-ot-layout-open-private.h | 495
+ --------------------------------------
+ src/hb-ot-layout.cc | 2 +-
+ src/main.cc | 4 +-
+ 7 files changed, 539 insertions(+), 500 deletions(-)
commit 0ead481a5a8623103565fd7d924666e7342278dd
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -48427,14 +41517,15 @@ Date: Sat Aug 1 20:29:22 2009 -0400
[HB] Simplify object creation
- src/Makefile.am | 2 +-
- src/hb-blob.c | 6 +---
- src/hb-font-private.h | 1 -
- src/hb-font.c | 37
- +++++++---------------
- src/{hb-refcount-private.h => hb-object-private.h} | 14 ++++++--
- src/hb-private.h | 2 ++
- 6 files changed, 27 insertions(+), 35 deletions(-)
+ src/Makefile.am | 2 +-
+ src/hb-blob.c | 6 +--
+ src/hb-font-private.h | 1 -
+ src/hb-font.c | 37 ++++++------------
+ src/hb-object-private.h | 97
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ src/hb-private.h | 2 +
+ src/hb-refcount-private.h | 87 ------------------------------------------
+ 7 files changed, 112 insertions(+), 120 deletions(-)
commit c62b503770325819f249885dfc9d4683a69c9efd
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -49225,15 +42316,20 @@ Date: Wed May 20 05:42:12 2009 -0400
[HB] Rename harfbuzz-buffer to hb-buffer
- src/Makefile.am | 5 +++--
- src/{harfbuzz-buffer-private.h => hb-buffer-private.h} | 8 ++++----
- src/{harfbuzz-buffer.c => hb-buffer.c} | 6 ++----
- src/{harfbuzz-buffer.h => hb-buffer.h} | 8 ++++----
- src/hb-ot-layout-gsubgpos-private.h | 2 +-
- src/hb-ot-layout-private.h | 2 +-
- src/hb-ot-layout.cc | 5 +++--
- src/hb-ot-layout.h | 2 +-
- 8 files changed, 19 insertions(+), 19 deletions(-)
+ src/Makefile.am | 5 +-
+ src/harfbuzz-buffer-private.h | 106 -----------
+ src/harfbuzz-buffer.c | 349
+ ------------------------------------
+ src/harfbuzz-buffer.h | 94 ----------
+ src/hb-buffer-private.h | 106 +++++++++++
+ src/hb-buffer.c | 347
+ +++++++++++++++++++++++++++++++++++
+ src/hb-buffer.h | 94 ++++++++++
+ src/hb-ot-layout-gsubgpos-private.h | 2 +-
+ src/hb-ot-layout-private.h | 2 +-
+ src/hb-ot-layout.cc | 5 +-
+ src/hb-ot-layout.h | 2 +-
+ 11 files changed, 556 insertions(+), 556 deletions(-)
commit b857b49c82782d29d6d189f1a9f4a84d39cd84ea
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -50696,7 +43792,8 @@ Date: Thu Jan 24 03:11:09 2008 -0500
Starting public interface
- src/{Makefile => Makefile.ng} | 0
+ src/Makefile | 11 -----
+ src/Makefile.ng | 11 +++++
src/hb-ot-layout-gdef-private.h | 17 ++++----
src/hb-ot-layout-gsub-private.h | 3 +-
src/hb-ot-layout-open-private.h | 92
@@ -50705,7 +43802,7 @@ Date: Thu Jan 24 03:11:09 2008 -0500
src/hb-ot-layout.cc | 67 ++++++++++++++++++++++++++++++
src/hb-ot-layout.h | 35 ++++++++++++++--
src/main.cc | 1 +
- 8 files changed, 225 insertions(+), 41 deletions(-)
+ 9 files changed, 236 insertions(+), 52 deletions(-)
commit 7d6b95b000ec6cd8ca93113b2d81a049ad2f9bbe
Author: Behdad Esfahbod <behdad@src.gnome.org>
@@ -50785,20 +43882,21 @@ Date: Wed Jan 23 05:00:30 2008 -0500
Clean up file names, add namespace
- src/harfbuzz-common.h | 14
- --------------
- src/harfbuzz-gdef.h | 11
- -----------
- src/hb-common.h | 14
- ++++++++++++++
- ...harfbuzz-gdef-private.h => hb-ot-layout-gdef-private.h} | 8 ++++----
- ...harfbuzz-open-private.h => hb-ot-layout-open-private.h} | 10
- +++++-----
- src/{harfbuzz-open.h => hb-ot-layout.h} | 12
- ++++++------
- src/{harfbuzz-private.h => hb-private.h} | 6 +++---
- src/main.cc | 4 ++--
- 8 files changed, 34 insertions(+), 45 deletions(-)
+ src/harfbuzz-common.h | 14 -
+ src/harfbuzz-gdef-private.h | 213 -----------
+ src/harfbuzz-gdef.h | 11 -
+ src/harfbuzz-open-private.h | 804
+ ----------------------------------------
+ src/harfbuzz-open.h | 17 -
+ src/harfbuzz-private.h | 12 -
+ src/hb-common.h | 14 +
+ src/hb-ot-layout-gdef-private.h | 213 +++++++++++
+ src/hb-ot-layout-open-private.h | 804
+ ++++++++++++++++++++++++++++++++++++++++
+ src/hb-ot-layout.h | 17 +
+ src/hb-private.h | 12 +
+ src/main.cc | 4 +-
+ 12 files changed, 1062 insertions(+), 1073 deletions(-)
commit 1f437e6f47fb6c15761021bd2078f31778f2179c
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -51118,24 +44216,26 @@ Date: Thu Oct 25 00:23:46 2007 +0000
and more
type renames and moving code around.
- src/Makefile.am | 3 +-
- src/ftglue.h | 151
- --------------------------------------
- src/harfbuzz-dump-main.c | 48 ++----------
- src/harfbuzz-dump.c | 30 ++++----
- src/harfbuzz-gdef.c | 18 ++---
- src/harfbuzz-global.h | 18 +++++
- src/harfbuzz-gpos-private.h | 2 +-
- src/harfbuzz-gpos.c | 90 +++++++++++------------
- src/harfbuzz-gsub-private.h | 2 +-
- src/harfbuzz-gsub.c | 64 ++++++++--------
- src/{ftglue.c => harfbuzz-impl.c} | 64 ++++++++--------
- src/harfbuzz-impl.h | 114 ++++++++++++++++++++++++++--
- src/harfbuzz-open-private.h | 14 ++--
- src/harfbuzz-open.c | 32 ++++----
- src/harfbuzz-open.h | 16 ----
- src/harfbuzz.c | 4 +-
- 16 files changed, 289 insertions(+), 381 deletions(-)
+ src/Makefile.am | 3 +-
+ src/ftglue.c | 287
+ --------------------------------------------
+ src/ftglue.h | 151 -----------------------
+ src/harfbuzz-dump-main.c | 48 +-------
+ src/harfbuzz-dump.c | 30 ++---
+ src/harfbuzz-gdef.c | 18 +--
+ src/harfbuzz-global.h | 18 +++
+ src/harfbuzz-gpos-private.h | 2 +-
+ src/harfbuzz-gpos.c | 90 +++++++-------
+ src/harfbuzz-gsub-private.h | 2 +-
+ src/harfbuzz-gsub.c | 64 +++++-----
+ src/harfbuzz-impl.c | 283
+ +++++++++++++++++++++++++++++++++++++++++++
+ src/harfbuzz-impl.h | 114 ++++++++++++++++--
+ src/harfbuzz-open-private.h | 14 +--
+ src/harfbuzz-open.c | 32 ++---
+ src/harfbuzz-open.h | 16 ---
+ src/harfbuzz.c | 4 +-
+ 17 files changed, 542 insertions(+), 634 deletions(-)
commit 5716ae278a82d318ddbfeba01d0785d4efbe1454
Author: Behdad Esfahbod <behdad@gnome.org>
@@ -51635,15 +44735,15 @@ Date: Thu Dec 28 06:10:59 2006 -0500
Break and rename, in the layout of old HarfBuzz codebase
- src/.gitignore | 1 +
- src/Makefile | 2 +-
- src/harfbuzz-common.h | 14 +++
- src/{harfbuzz-ng.cc => harfbuzz-open-private.h} | 117
- ++----------------------
- src/harfbuzz-open.h | 13 +++
- src/main.cc | 98
- ++++++++++++++++++++
- 6 files changed, 133 insertions(+), 112 deletions(-)
+ src/.gitignore | 1 +
+ src/Makefile | 2 +-
+ src/harfbuzz-common.h | 14 +
+ src/harfbuzz-ng.cc | 802
+ --------------------------------------------
+ src/harfbuzz-open-private.h | 697 ++++++++++++++++++++++++++++++++++++++
+ src/harfbuzz-open.h | 13 +
+ src/main.cc | 98 ++++++
+ 7 files changed, 824 insertions(+), 803 deletions(-)
commit 3158d84b0dfe5032e7c56c03f2da97b8ab549d94
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -51771,9 +44871,12 @@ Date: Mon Dec 25 10:28:31 2006 -0500
Rename to harfbuzz-ng.cc
- src/Makefile | 2 +-
- src/{hb-types-private.cc => harfbuzz-ng.cc} | 0
- 2 files changed, 1 insertion(+), 1 deletion(-)
+ src/Makefile | 2 +-
+ src/harfbuzz-ng.cc | 513
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ src/hb-types-private.cc | 513
+ ------------------------------------------------
+ 3 files changed, 514 insertions(+), 514 deletions(-)
commit f8ba99f6f322800a915428ffc3b5eaf1be2e6c21
Author: Behdad Esfahbod <behdad@behdad.org>
@@ -52140,48 +45243,52 @@ Date: Fri Mar 31 12:28:09 2006 +0000
* pango/pango-ot-*: Updated to use HarfBuzz symbol names.
- src/COPYING | 15 +
- src/{FTL.TXT => COPYING.FTL} | 0
- src/COPYING.GPL | 340 ++
- src/FT-license.txt | 28 -
- src/Makefile.am | 89 +-
- src/README | 44 +-
- src/ftglue.c | 88 +-
- src/ftglue.h | 68 +-
- src/ftxgdef.c | 1225 -------
- src/ftxgdef.h | 224 --
- src/ftxgpos.c | 6199
- -------------------------------
- src/ftxgpos.h | 838 -----
- src/ftxgsub.c | 4533 -----------------------
- src/ftxgsub.h | 594 ---
- src/ftxopen.c | 1552 --------
- src/ftxopen.h | 317 --
- src/ftxopenf.h | 166 -
- src/harfbuzz-buffer.c | 227 ++
- src/harfbuzz-buffer.h | 106 +
- src/{ottest.c => harfbuzz-dump-main.c} | 84 +-
- src/{disasm.c => harfbuzz-dump.c} | 186 +-
- src/{disasm.h => harfbuzz-dump.h} | 18 +-
- src/harfbuzz-gdef-private.h | 101 +
- src/harfbuzz-gdef.c | 1228 +++++++
- src/harfbuzz-gdef.h | 127 +
- src/harfbuzz-gpos-private.h | 683 ++++
- src/harfbuzz-gpos.c | 6269
- ++++++++++++++++++++++++++++++++
- src/harfbuzz-gpos.h | 168 +
- src/harfbuzz-gsub-private.h | 448 +++
- src/harfbuzz-gsub.c | 4581 +++++++++++++++++++++++
- src/harfbuzz-gsub.h | 132 +
- src/harfbuzz-impl.h | 64 +
- src/harfbuzz-open-private.h | 81 +
- src/harfbuzz-open.c | 1426 ++++++++
- src/harfbuzz-open.h | 285 ++
- src/harfbuzz.c | 19 +
- src/harfbuzz.h | 23 +
- src/otlbuffer.c | 238 --
- src/otlbuffer.h | 103 -
- 39 files changed, 16582 insertions(+), 16335 deletions(-)
+ src/COPYING | 15 +
+ src/COPYING.FTL | 174 ++
+ src/COPYING.GPL | 340 +++
+ src/FT-license.txt | 28 -
+ src/FTL.TXT | 174 --
+ src/Makefile.am | 89 +-
+ src/README | 44 +-
+ src/disasm.c | 720 -----
+ src/disasm.h | 26 -
+ src/ftglue.c | 88 +-
+ src/ftglue.h | 68 +-
+ src/ftxgdef.c | 1225 ---------
+ src/ftxgdef.h | 224 --
+ src/ftxgpos.c | 6199
+ ------------------------------------------
+ src/ftxgpos.h | 838 ------
+ src/ftxgsub.c | 4533 -------------------------------
+ src/ftxgsub.h | 594 ----
+ src/ftxopen.c | 1552 -----------
+ src/ftxopen.h | 317 ---
+ src/ftxopenf.h | 166 --
+ src/harfbuzz-buffer.c | 227 ++
+ src/harfbuzz-buffer.h | 106 +
+ src/harfbuzz-dump-main.c | 272 ++
+ src/harfbuzz-dump.c | 720 +++++
+ src/harfbuzz-dump.h | 34 +
+ src/harfbuzz-gdef-private.h | 101 +
+ src/harfbuzz-gdef.c | 1228 +++++++++
+ src/harfbuzz-gdef.h | 127 +
+ src/harfbuzz-gpos-private.h | 683 +++++
+ src/harfbuzz-gpos.c | 6269
+ +++++++++++++++++++++++++++++++++++++++++++
+ src/harfbuzz-gpos.h | 168 ++
+ src/harfbuzz-gsub-private.h | 448 ++++
+ src/harfbuzz-gsub.c | 4581 +++++++++++++++++++++++++++++++
+ src/harfbuzz-gsub.h | 132 +
+ src/harfbuzz-impl.h | 64 +
+ src/harfbuzz-open-private.h | 81 +
+ src/harfbuzz-open.c | 1426 ++++++++++
+ src/harfbuzz-open.h | 285 ++
+ src/harfbuzz.c | 19 +
+ src/harfbuzz.h | 23 +
+ src/otlbuffer.c | 238 --
+ src/otlbuffer.h | 103 -
+ src/ottest.c | 274 --
+ 43 files changed, 17635 insertions(+), 17388 deletions(-)
commit dd2a8d4d490df1d310e7553ba6c7c8de661f28a1
Author: Behdad Esfahbod <behdad@gnome.org>
diff --git a/INSTALL b/INSTALL
index 2099840..007e939 100644
--- a/INSTALL
+++ b/INSTALL
@@ -12,8 +12,8 @@ without warranty of any kind.
Basic Installation
==================
- Briefly, the shell command `./configure && make && make install'
-should configure, build, and install this package. The following
+ Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
instructions specific to this package. Some packages provide this
`INSTALL' file but do not implement all of the features documented
diff --git a/Makefile.am b/Makefile.am
index d56a151..47aeb97 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -4,14 +4,13 @@ NULL =
ACLOCAL_AMFLAGS = -I m4
-SUBDIRS = src util test docs win32
+SUBDIRS = src util test docs
EXTRA_DIST = \
autogen.sh \
harfbuzz.doap \
Android.mk \
README.python \
- BUILD.md \
$(NULL)
MAINTAINERCLEANFILES = \
@@ -21,7 +20,6 @@ MAINTAINERCLEANFILES = \
$(srcdir)/INSTALL \
$(srcdir)/ChangeLog \
$(srcdir)/gtk-doc.make \
- $(srcdir)/m4/gtk-doc.m4 \
$(NULL)
diff --git a/Makefile.in b/Makefile.in
index e817519..badd4c0 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -224,8 +224,6 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
-DIRECTWRITE_CXXFLAGS = @DIRECTWRITE_CXXFLAGS@
-DIRECTWRITE_LIBS = @DIRECTWRITE_LIBS@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
@@ -235,20 +233,15 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
-FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
-FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
-FREETYPE_DEPS = @FREETYPE_DEPS@
FREETYPE_LIBS = @FREETYPE_LIBS@
GIT = @GIT@
GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_DEPS = @GLIB_DEPS@
GLIB_LIBS = @GLIB_LIBS@
GLIB_MKENUMS = @GLIB_MKENUMS@
GOBJECT_CFLAGS = @GOBJECT_CFLAGS@
GOBJECT_LIBS = @GOBJECT_LIBS@
GRAPHITE2_CFLAGS = @GRAPHITE2_CFLAGS@
-GRAPHITE2_DEPS = @GRAPHITE2_DEPS@
GRAPHITE2_LIBS = @GRAPHITE2_LIBS@
GREP = @GREP@
GTKDOC_CHECK = @GTKDOC_CHECK@
@@ -373,13 +366,12 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
NULL =
ACLOCAL_AMFLAGS = -I m4
-SUBDIRS = src util test docs win32
+SUBDIRS = src util test docs
EXTRA_DIST = \
autogen.sh \
harfbuzz.doap \
Android.mk \
README.python \
- BUILD.md \
$(NULL)
MAINTAINERCLEANFILES = \
@@ -389,7 +381,6 @@ MAINTAINERCLEANFILES = \
$(srcdir)/INSTALL \
$(srcdir)/ChangeLog \
$(srcdir)/gtk-doc.make \
- $(srcdir)/m4/gtk-doc.m4 \
$(NULL)
@@ -725,10 +716,9 @@ distcheck: dist
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build \
- && ../configure \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
- --srcdir=.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
diff --git a/NEWS b/NEWS
index e62b198..c4950e2 100644
--- a/NEWS
+++ b/NEWS
@@ -1,322 +1,3 @@
-Overview of changes leading to 1.2.7
-Monday, May 2, 2016
-====================================
-
-- Blacklist another version of Times New Roman (Bold) Italic from Windows 7.
-- Fix Mongolian Free Variation Selectors shaping with certain fonts.
-- Fix Tibetan shorthand contractions shaping.
-- Improved list of language tag mappings.
-- Unbreak build on Windows CE.
-- Make 'glyf' table loading lazy in hb-ot-font.
-
-
-Overview of changes leading to 1.2.6
-Friday, April 8, 2016
-====================================
-
-- Blacklist GDEF table of another set of Times New Roman (Bold) Italic.
-- DirectWrite backend improvements. Note: DirectWrite backend is
- exclusively for our internal testing and should NOT be used in any
- production system whatsoever.
-
-
-Overview of changes leading to 1.2.5
-Monday, April 4, 2016
-====================================
-
-- Fix GDEF mark-filtering-set, which was broken in 1.2.3.
-
-
-Overview of changes leading to 1.2.4
-Thursday, March 17, 2016
-====================================
-
-- Synthesize GDEF glyph class for any glyph that does not have one in GDEF.
- I really hope we don't discover broken fonts that shape badly with this
- change.
-- Misc build and other minor fixes.
-- API changes:
- - Added HB_NDEBUG. It's fine for production systems to define this to
- disable high-overhead debugging checks. However, I also reduced the
- overhead of those checks, so it's a non-issue right now. You can
- forget it. Just not defining anything at all is fine.
-
-
-Overview of changes leading to 1.2.3
-Thursday, February 25, 2016
-====================================
-
-- Blacklist GDEF table of certain versions of Times New Roman (Bold) Italic,
- due to bug in glyph class of ASCII double-quote character. This should
- address "regression" introduced in 1.2.0 when we switched mark zeroing
- in most shapers from BY_UNICODE_LATE to BY_GDEF_LATE.
- This fourth release in a week should finally stablize things...
-
-- hb-ot-font's get_glyph() implementation saw some optimizations. Though,
- might be really hard to measure in real-world situations.
-
-- Also, two rather small API changes:
-
-We now disable some time-consuming internal bookkeeping if built with NDEBUG
-defined. This is a first time that we use NDEBUG to disable debug code. If
-there exist production systems that do NOT want to enable NDEBUG, please let
-me know and I'll add HB_NDEBUG.
-
-Added get_nominal_glyph() and get_variation_glyph() instead of get_glyph()
-
-New API:
-- hb_font_get_nominal_glyph_func_t
-- hb_font_get_variation_glyph_func_t
-- hb_font_funcs_set_nominal_glyph_func()
-- hb_font_funcs_set_variation_glyph_func()
-- hb_font_get_nominal_glyph()
-- hb_font_get_variation_glyph()
-
-Deprecated API:
-- hb_font_get_glyph_func_t
-- hb_font_funcs_set_glyph_func()
-
-Clients that implement their own font-funcs are encouraged to replace
-their get_glyph() implementation with a get_nominal_glyph() and
-get_variation_glyph() pair. The variation version can assume that
-variation_selector argument is not zero. Old (deprecated) functions
-will continue working indefinitely using internal gymnastics; it is
-just more efficient to use the new functions.
-
-
-Overview of changes leading to 1.2.2
-Wednesday, February 24, 2016
-====================================
-
-- Fix regression with mark positioning with fonts that have
- non-zero mark advances. This was introduced in 1.2.0 while
- trying to make mark and cursive attachments to work together.
- I have partially reverted that, so this version is much more
- like what we had before. All clients who updated to 1.2.0
- should update to this version.
-
-
-Overview of changes leading to 1.2.1
-Tuesday, February 23, 2016
-====================================
-
-- CoreText: Fix bug with wrong scale if font scale was changed later.
- https://github.com/libass/libass/issues/212
-- CoreText: Drastically speed up font initialization.
-- CoreText: Fix tiny leak.
-- Group ZWJ/ZWNJ with previous syllable under cluster-level=0.
- https://github.com/behdad/harfbuzz/issues/217
-- Add test/shaping/README.md about how to add tests to the suite.
-
-
-Overview of changes leading to 1.2.0
-Friday, February 19, 2016
-====================================
-
-- Fix various issues (hangs mostly) in case of memory allocation failure.
-- Change mark zeroing types of most shapers from BY_UNICODE_LATE to
- BY_GDEF_LATE. This seems to be what Uniscribe does.
-- Change mark zeroing of USE shaper from NONE to BY_GDEF_EARLY. That's
- what Windows does.
-- Allow GPOS cursive connection on marks, and fix the interaction with
- mark attachment. This work resulted in some changes to how mark
- attachments work. See:
- https://github.com/behdad/harfbuzz/issues/211
- https://github.com/behdad/harfbuzz/commit/86c68c7a2c971efe8e35b1f1bd99401dc8b688d2
-- Graphite2 shaper: improved negative advance handling (eg. Nastaliq).
-- Add nmake-based build system for Windows.
-- Minor speedup.
-- Misc. improvements.
-
-
-Overview of changes leading to 1.1.3
-Monday, January 11, 2016
-====================================
-
-- Ported Indic shaper to Unicode 8.0 data.
-- Universal Shaping Engine fixes.
-- Speed up CoreText shaper when font fallback happens in CoreText.
-- Documentation improvements, thanks to Khaled Hosny.
-- Very rough directwrite shaper for testing, thanks to Ebrahim Byagowi.
-- Misc bug fixes.
-- New API:
-
- * Font extents:
- hb_font_extents_t
- hb_font_get_font_extents_func_t
- hb_font_get_font_h_extents_func_t
- hb_font_get_font_v_extents_func_t
- hb_font_funcs_set_font_h_extents_func
- hb_font_funcs_set_font_v_extents_func
- hb_font_get_h_extents
- hb_font_get_v_extents
- hb_font_get_extents_for_direction
-
- * Buffer message (aka debug):
- hb_buffer_message_func_t
- hb_buffer_set_message_func()
- Actual message protocol to be fleshed out later.
-
-
-Overview of changes leading to 1.1.2
-Wednesday, November 26, 2015
-====================================
-
-- Fix badly-broken fallback shaper that affected terminology.
- https://github.com/behdad/harfbuzz/issues/187
-- Fix y_scaling in Graphite shaper.
-- API changes:
- * An unset glyph_h_origin() function in font-funcs now (sensibly)
- implies horizontal origin at 0,0. Ie, the nil callback returns
- true instead of false. As such, implementations that have a
- glyph_h_origin() that simply returns true, can remove that function
- with HarfBuzz >= 1.1.2. This results in a tiny speedup.
-
-
-Overview of changes leading to 1.1.1
-Wednesday, November 24, 2015
-====================================
-
-- Build fixes, specially for hb-coretext.
-
-
-Overview of changes leading to 1.1.0
-Wednesday, November 18, 2015
-====================================
-
-- Implement 'stch' stretch feature for Syriac Abbreviation Mark.
- https://github.com/behdad/harfbuzz/issues/141
-- Disable use of decompose_compatibility() callback.
-- Implement "shaping" of various Unicode space characters, even
- if the font does not support them.
- https://github.com/behdad/harfbuzz/issues/153
-- If font does not support U+2011 NO-BREAK HYPHEN, fallback to
- U+2010 HYPHEN.
-- Changes resulting from libFuzzer continuous fuzzing:
- * Reject font tables that need more than 8 edits,
- * Bound buffer growth during shaping to 32x,
- * Fix assertions and other issues at OOM / buffer max-growth.
-- Misc fixes and optimizations.
-- API changes:
- * All fonts created with hb_font_create() now inherit from
- (ie. have parent) hb_font_get_empty().
-
-
-Overview of changes leading to 1.0.6
-Thursday, October 15, 2015
-====================================
-
-- Reduce max nesting level in OT lookups from 8 to 6.
- Should not affect any real font as far as I know.
-- Fix memory access issue in ot-font.
-- Revert default load-flags of fonts created using hb_ft_font_create()
- back to FT_LOAD_DEFAULT|FT_LOAD_NO_HINTING. This was changed in
- last release (1.0.5), but caused major issues, so revert.
- https://github.com/behdad/harfbuzz/issues/143
-
-
-Overview of changes leading to 1.0.5
-Tuesday, October 13, 2015
-====================================
-
-- Fix multiple memory access bugs discovered using libFuzzer.
- https://github.com/behdad/harfbuzz/issues/139
- Everyone should upgrade to this version as soon as possible.
- We now have continuous fuzzing set up, to avoid issues like
- these creeping in again.
-- Misc fixes.
-
-- New API:
- * hb_font_set_parent().
- * hb_ft_font_[sg]et_load_flags()
- The default flags for fonts created using hb_ft_font_create()
- has changed to default to FT_LOAD_DEFAULT now. Previously it
- was defaulting to FT_LOAD_DFEAULT|FT_LOAD_NO_HINTING.
-
-- API changes:
- * Fonts now default to units-per-EM as their scale, instead of 0.
- * hb_font_create_sub_font() does NOT make parent font immutable
- anymore. hb_font_make_immutable() does.
-
-
-Overview of changes leading to 1.0.4
-Wednesday, September 30, 2015
-====================================
-
-- Fix minor out-of-bounds read error.
-
-
-Overview of changes leading to 1.0.3
-Tuesday, September 1, 2015
-====================================
-
-- Start of user documentation, from Simon Cozens!
-- Implement glyph_extents() for TrueType fonts in hb-ot-font.
-- Improve GPOS cursive attachments with conflicting lookups.
-- More fixes for cluster-level = 1.
-- Uniscribe positioning fix.
-
-
-Overview of changes leading to 1.0.2
-Wednesday, August 19, 2015
-====================================
-
-- Fix shaping with cluster-level > 0.
-- Fix Uniscribe backend font-size scaling.
-- Declare dependencies in harfbuzz.pc.
- FreeType is not declared though, to avoid bugs in pkg-config
- 0.26 with recursive dependencies.
-- Slightly improved debug infrastructure. More to come later.
-- Misc build fixes.
-
-
-Overview of changes leading to 1.0.1
-Monday, July 27, 2015
-====================================
-
-- Fix out-of-bounds access in USE shaper.
-
-
-Overview of changes leading to 1.0.0
-Sunday, July 26, 2015
-====================================
-
-- Implement Universal Shaping Engine:
- https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm
- http://blogs.windows.com/bloggingwindows/2015/02/23/windows-shapes-the-worlds-languages/
-- Bump version to 1.0.0. The soname was NOT bumped.
-
-
-Overview of changes leading to 0.9.42
-Thursday, July 26, 2015
-=====================================
-
-- New API to allow for retrieving finer-grained cluster
- mappings if the client desires to handle them. Default
- behavior is unchanged.
-- Fix cluster merging when removing default-ignorables.
-- Update to Unicode 8.0
-- hb-graphite2 fixes.
-- Misc fixes.
-- Removed HB_NO_MERGE_CLUSTERS hack.
-- New API:
- hb_buffer_cluster_level_t enum
- hb_buffer_get_cluster_level()
- hb_buffer_set_cluster_level()
- hb-shape / hb-view --cluster-level
-
-
-Overview of changes leading to 0.9.41
-Thursday, June 18, 2015
-=====================================
-
-- Fix hb-coretext with trailing whitespace in right-to-left.
-- New API: hb_buffer_reverse_range().
-- Allow implementing atomic ops in config.h.
-- Fix hb_language_t in language bindings.
-- Misc fixes.
-
-
Overview of changes leading to 0.9.40
Friday, March 20, 2015
=====================================
diff --git a/README b/README
index 3fcdfb4..d34bc74 100644
--- a/README
+++ b/README
@@ -1,6 +1,5 @@
[![Build Status](https://travis-ci.org/behdad/harfbuzz.svg)](https://travis-ci.org/behdad/harfbuzz)
[![Coverage Status](https://img.shields.io/coveralls/behdad/harfbuzz.svg)](https://coveralls.io/r/behdad/harfbuzz)
-[ABI Tracker](http://abi-laboratory.pro/tracker/timeline/harfbuzz/)
This is HarfBuzz, a text shaping library.
diff --git a/README.python b/README.python
index cd31264..eabdf5b 100644
--- a/README.python
+++ b/README.python
@@ -1,10 +1,6 @@
To enable HarfBuzz bindings for Python among other languages, make sure
-you have latest version of gobject-introspection available. On Ubuntu,
-you can install that this way:
-
- sudo apt-get install libgirepository1.0-dev
-
-And then run autogen.sh (if building from git), and then:
+you have latest version of gobject-introspection compiled, and then
+run autogen.sh (if building from git), and then:
./configure --with-gobject --enable-introspection
diff --git a/TODO b/TODO
index 4f37f60..e1aa39c 100644
--- a/TODO
+++ b/TODO
@@ -9,14 +9,26 @@ General fixes:
- mask propagation? (when ligation, "or" the masks).
+- Warn at compile time (and runtime with HB_DEBUG?) if no Unicode / font
+ funcs found / set.
-API issues:
-===========
+- Do proper rounding when scaling from font space? May be a non-issue.
+
+- Misc features:
+ * init/medi/fina/isol for non-cursive scripts
+
+
+API issues to fix before 1.0:
+============================
- API to accept a list of languages?
- Add init_func to font_funcs. Adjust ft.
+- hb-ft load_flags issues.
+
+- Add pkg-config files for glue codes (harfbuzz-glib, etc)
+
- 'const' for getter APIs? (use mutable internally)
- Remove hb_ot_shape_glyphs_closure()?
diff --git a/aclocal.m4 b/aclocal.m4
index c0e8135..0a02487 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.14 -*- Autoconf -*-
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
@@ -132,7 +132,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.14'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.14.1], [],
+m4_if([$1], [1.14], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -148,7 +148,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.14.1])dnl
+[AM_AUTOMAKE_VERSION([1.14])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
diff --git a/config.h.in b/config.h.in
index c4ca473..35395c3 100644
--- a/config.h.in
+++ b/config.h.in
@@ -15,21 +15,12 @@
/* Have Core Text backend */
#undef HAVE_CORETEXT
-/* Have DirectWrite library */
-#undef HAVE_DIRECTWRITE
-
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
-/* Define to 1 if you have the <dwrite.h> header file. */
-#undef HAVE_DWRITE_H
-
/* Have simple TrueType Layout backend */
#undef HAVE_FALLBACK
-/* Have fontconfig library */
-#undef HAVE_FONTCONFIG
-
/* Have FreeType 2 library */
#undef HAVE_FREETYPE
@@ -48,9 +39,6 @@
/* Have ICU library */
#undef HAVE_ICU
-/* Use hb-icu Unicode callbacks */
-#undef HAVE_ICU_BUILTIN
-
/* Have Intel __sync_* atomic primitives */
#undef HAVE_INTEL_ATOMIC_PRIMITIVES
@@ -126,8 +114,7 @@
/* Define to 1 if you have the <windows.h> header file. */
#undef HAVE_WINDOWS_H
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
#undef LT_OBJDIR
/* Define to the address where bug reports for this package should be sent. */
diff --git a/config.sub b/config.sub
index 9633db7..8b612ab 100755
--- a/config.sub
+++ b/config.sub
@@ -2,7 +2,7 @@
# Configuration validation subroutine script.
# Copyright 1992-2013 Free Software Foundation, Inc.
-timestamp='2013-08-10'
+timestamp='2013-04-24'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -257,7 +257,7 @@ case $basic_machine in
| avr | avr32 \
| be32 | be64 \
| bfin \
- | c4x | c8051 | clipper \
+ | c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
| epiphany \
| fido | fr30 | frv \
@@ -372,7 +372,7 @@ case $basic_machine in
| be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
- | c8051-* | clipper-* | craynv-* | cydra-* \
+ | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
@@ -794,7 +794,7 @@ case $basic_machine in
os=-mingw64
;;
mingw32)
- basic_machine=i686-pc
+ basic_machine=i386-pc
os=-mingw32
;;
mingw32ce)
@@ -830,7 +830,7 @@ case $basic_machine in
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
msys)
- basic_machine=i686-pc
+ basic_machine=i386-pc
os=-msys
;;
mvs)
@@ -1546,9 +1546,6 @@ case $basic_machine in
c4x-* | tic4x-*)
os=-coff
;;
- c8051-*)
- os=-elf
- ;;
hexagon-*)
os=-elf
;;
diff --git a/configure b/configure
index 1b45257..1c08cae 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for HarfBuzz 1.2.7.
+# Generated by GNU Autoconf 2.69 for HarfBuzz 0.9.40.
#
# Report bugs to <http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz>.
#
@@ -591,8 +591,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='HarfBuzz'
PACKAGE_TARNAME='harfbuzz'
-PACKAGE_VERSION='1.2.7'
-PACKAGE_STRING='HarfBuzz 1.2.7'
+PACKAGE_VERSION='0.9.40'
+PACKAGE_STRING='HarfBuzz 0.9.40'
PACKAGE_BUGREPORT='http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz'
PACKAGE_URL='http://harfbuzz.org/'
@@ -641,10 +641,6 @@ HAVE_CORETEXT_FALSE
HAVE_CORETEXT_TRUE
CORETEXT_LIBS
CORETEXT_CFLAGS
-HAVE_DIRECTWRITE_FALSE
-HAVE_DIRECTWRITE_TRUE
-DIRECTWRITE_LIBS
-DIRECTWRITE_CXXFLAGS
HAVE_UNISCRIBE_FALSE
HAVE_UNISCRIBE_TRUE
UNISCRIBE_LIBS
@@ -653,25 +649,15 @@ HAVE_FREETYPE_FALSE
HAVE_FREETYPE_TRUE
FREETYPE_LIBS
FREETYPE_CFLAGS
-FREETYPE_DEPS
HAVE_GRAPHITE2_FALSE
HAVE_GRAPHITE2_TRUE
GRAPHITE2_LIBS
GRAPHITE2_CFLAGS
-GRAPHITE2_DEPS
-HAVE_UCDN_FALSE
-HAVE_UCDN_TRUE
-HAVE_ICU_BUILTIN_FALSE
-HAVE_ICU_BUILTIN_TRUE
HAVE_ICU_FALSE
HAVE_ICU_TRUE
ICU_CONFIG
ICU_LIBS
ICU_CFLAGS
-HAVE_FONTCONFIG_FALSE
-HAVE_FONTCONFIG_TRUE
-FONTCONFIG_LIBS
-FONTCONFIG_CFLAGS
HAVE_CAIRO_FT_FALSE
HAVE_CAIRO_FT_TRUE
CAIRO_FT_LIBS
@@ -680,6 +666,8 @@ HAVE_CAIRO_FALSE
HAVE_CAIRO_TRUE
CAIRO_LIBS
CAIRO_CFLAGS
+HAVE_UCDN_FALSE
+HAVE_UCDN_TRUE
HAVE_INTROSPECTION_FALSE
HAVE_INTROSPECTION_TRUE
INTROSPECTION_MAKEFILE
@@ -699,7 +687,6 @@ HAVE_GLIB_FALSE
HAVE_GLIB_TRUE
GLIB_LIBS
GLIB_CFLAGS
-GLIB_DEPS
HAVE_FALLBACK_FALSE
HAVE_FALLBACK_TRUE
HAVE_OT_FALSE
@@ -882,12 +869,10 @@ with_glib
with_gobject
enable_introspection
with_cairo
-with_fontconfig
with_icu
with_graphite2
with_freetype
with_uniscribe
-with_directwrite
with_coretext
'
ac_precious_vars='build_alias
@@ -914,8 +899,6 @@ CAIRO_CFLAGS
CAIRO_LIBS
CAIRO_FT_CFLAGS
CAIRO_FT_LIBS
-FONTCONFIG_CFLAGS
-FONTCONFIG_LIBS
ICU_CFLAGS
ICU_LIBS
GRAPHITE2_CFLAGS
@@ -1462,7 +1445,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures HarfBuzz 1.2.7 to adapt to many kinds of systems.
+\`configure' configures HarfBuzz 0.9.40 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1532,7 +1515,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of HarfBuzz 1.2.7:";;
+ short | recursive ) echo "Configuration of HarfBuzz 0.9.40:";;
esac
cat <<\_ACEOF
@@ -1563,8 +1546,8 @@ Optional Packages:
--with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use
both]
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
- --with-sysroot=DIR Search for dependent libraries within DIR
- (or the compiler's sysroot if not specified).
+ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the
+ compiler's sysroot if not specified).
--with-html-dir=PATH path to installed docs
--with-glib=[yes/no/auto]
Use glib [default=auto]
@@ -1572,9 +1555,7 @@ Optional Packages:
Use gobject [default=auto]
--with-cairo=[yes/no/auto]
Use cairo [default=auto]
- --with-fontconfig=[yes/no/auto]
- Use fontconfig [default=auto]
- --with-icu=[yes/no/builtin/auto]
+ --with-icu=[yes/no/auto]
Use ICU [default=auto]
--with-graphite2=[yes/no/auto]
Use the graphite2 library [default=no]
@@ -1582,9 +1563,6 @@ Optional Packages:
Use the FreeType library [default=auto]
--with-uniscribe=[yes/no/auto]
Use the Uniscribe library [default=no]
- --with-directwrite=[yes/no/auto]
- Use the DirectWrite library (experimental)
- [default=no]
--with-coretext=[yes/no/auto]
Use CoreText [default=no]
@@ -1618,10 +1596,6 @@ Some influential environment variables:
C compiler flags for CAIRO_FT, overriding pkg-config
CAIRO_FT_LIBS
linker flags for CAIRO_FT, overriding pkg-config
- FONTCONFIG_CFLAGS
- C compiler flags for FONTCONFIG, overriding pkg-config
- FONTCONFIG_LIBS
- linker flags for FONTCONFIG, overriding pkg-config
ICU_CFLAGS C compiler flags for ICU, overriding pkg-config
ICU_LIBS linker flags for ICU, overriding pkg-config
GRAPHITE2_CFLAGS
@@ -1700,7 +1674,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-HarfBuzz configure 1.2.7
+HarfBuzz configure 0.9.40
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2370,97 +2344,6 @@ rm -f conftest.val
} # ac_fn_c_compute_int
-# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES
-# ---------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_cxx_check_header_mongrel ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if eval \${$3+:} false; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
- ac_header_compiler=yes
-else
- ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <$2>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
- ac_header_preproc=yes
-else
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #((
- yes:no: )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
- ;;
- no:yes:* )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ------------------------------------------------------------------------- ##
-## Report this to http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz ##
-## ------------------------------------------------------------------------- ##"
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_cxx_check_header_mongrel
-
# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
# -------------------------------------------
# Tests whether TYPE exists after having included INCLUDES, setting cache
@@ -2518,7 +2401,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by HarfBuzz $as_me 1.2.7, which was
+It was created by HarfBuzz $as_me 0.9.40, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3387,7 +3270,7 @@ fi
# Define the identity of the package.
PACKAGE='harfbuzz'
- VERSION='1.2.7'
+ VERSION='0.9.40'
# Some tools Automake needs.
@@ -3420,47 +3303,16 @@ AMTAR='$${TAR-tar}'
# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar plaintar pax cpio none'
-
-# The POSIX 1988 'ustar' format is defined with fixed-size fields.
- # There is notably a 21 bits limit for the UID and the GID. In fact,
- # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
- # and bug#13588).
- am_max_uid=2097151 # 2^21 - 1
- am_max_gid=$am_max_uid
- # The $UID and $GID variables are not portable, so we need to resort
- # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
- # below are definitely unexpected, so allow the users to see them
- # (that is, avoid stderr redirection).
- am_uid=`id -u || echo unknown`
- am_gid=`id -g || echo unknown`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5
-$as_echo_n "checking whether UID '$am_uid' is supported by ustar format... " >&6; }
- if test $am_uid -le $am_max_uid; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- _am_tools=none
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5
-$as_echo_n "checking whether GID '$am_gid' is supported by ustar format... " >&6; }
- if test $am_gid -le $am_max_gid; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- _am_tools=none
- fi
+_am_tools='gnutar pax cpio none'
+
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5
-$as_echo_n "checking how to create a ustar tar archive... " >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a pax tar archive" >&5
+$as_echo_n "checking how to create a pax tar archive... " >&6; }
# Go ahead even if we have the value already cached. We do so because we
# need to set the values for the 'am__tar' and 'am__untar' variables.
- _am_tools=${am_cv_prog_tar_ustar-$_am_tools}
+ _am_tools=${am_cv_prog_tar_pax-$_am_tools}
for _am_tool in $_am_tools; do
case $_am_tool in
@@ -3472,8 +3324,8 @@ $as_echo_n "checking how to create a ustar tar archive... " >&6; }
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && break
done
- am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"'
- am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"'
+ am__tar="$_am_tar --format=posix -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=posix -chf - "'"$tardir"'
am__untar="$_am_tar -xf -"
;;
plaintar)
@@ -3485,14 +3337,14 @@ $as_echo_n "checking how to create a ustar tar archive... " >&6; }
am__untar='tar xf -'
;;
pax)
- am__tar='pax -L -x ustar -w "$$tardir"'
- am__tar_='pax -L -x ustar -w "$tardir"'
+ am__tar='pax -L -x pax -w "$$tardir"'
+ am__tar_='pax -L -x pax -w "$tardir"'
am__untar='pax -r'
;;
cpio)
- am__tar='find "$$tardir" -print | cpio -o -H ustar -L'
- am__tar_='find "$tardir" -print | cpio -o -H ustar -L'
- am__untar='cpio -i -H ustar -d'
+ am__tar='find "$$tardir" -print | cpio -o -H pax -L'
+ am__tar_='find "$tardir" -print | cpio -o -H pax -L'
+ am__untar='cpio -i -H pax -d'
;;
none)
am__tar=false
@@ -3503,7 +3355,7 @@ $as_echo_n "checking how to create a ustar tar archive... " >&6; }
# If the value was cached, stop now. We just wanted to have am__tar
# and am__untar set.
- test -n "${am_cv_prog_tar_ustar}" && break
+ test -n "${am_cv_prog_tar_pax}" && break
# tar/untar a dummy directory, and stop if the command works.
rm -rf conftest.dir
@@ -3531,14 +3383,14 @@ $as_echo_n "checking how to create a ustar tar archive... " >&6; }
done
rm -rf conftest.dir
- if ${am_cv_prog_tar_ustar+:} false; then :
+ if ${am_cv_prog_tar_pax+:} false; then :
$as_echo_n "(cached) " >&6
else
- am_cv_prog_tar_ustar=$_am_tool
+ am_cv_prog_tar_pax=$_am_tool
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5
-$as_echo "$am_cv_prog_tar_ustar" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_pax" >&5
+$as_echo "$am_cv_prog_tar_pax" >&6; }
@@ -4855,8 +4707,8 @@ esac
-macro_version='2.4.2'
-macro_revision='1.3337'
+macro_version='2.4.2.418'
+macro_revision='2.4.2.418'
@@ -4870,7 +4722,7 @@ macro_revision='1.3337'
-ltmain="$ac_aux_dir/ltmain.sh"
+ltmain=$ac_aux_dir/ltmain.sh
# Make sure we can run config.sub.
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
@@ -4990,7 +4842,7 @@ func_echo_all ()
$ECHO ""
}
-case "$ECHO" in
+case $ECHO in
printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
$as_echo "printf" >&6; } ;;
print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
@@ -5313,19 +5165,19 @@ test -z "$GREP" && GREP=grep
# Check whether --with-gnu-ld was given.
if test "${with_gnu_ld+set}" = set; then :
- withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+ withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
else
with_gnu_ld=no
fi
ac_prog=ld
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
# Check if gcc -print-prog-name=ld gives a path.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
$as_echo_n "checking for ld used by $CC... " >&6; }
case $host in
*-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
+ # gcc leaves a trailing carriage return, which upsets mingw
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
*)
ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
@@ -5339,7 +5191,7 @@ $as_echo_n "checking for ld used by $CC... " >&6; }
while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
done
- test -z "$LD" && LD="$ac_prog"
+ test -z "$LD" && LD=$ac_prog
;;
"")
# If it fails, then pretend we aren't using GCC.
@@ -5350,7 +5202,7 @@ $as_echo_n "checking for ld used by $CC... " >&6; }
with_gnu_ld=unknown
;;
esac
-elif test "$with_gnu_ld" = yes; then
+elif test yes = "$with_gnu_ld"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
$as_echo_n "checking for GNU ld... " >&6; }
else
@@ -5361,32 +5213,32 @@ if ${lt_cv_path_LD+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -z "$LD"; then
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
for ac_dir in $PATH; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
test -z "$ac_dir" && ac_dir=.
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- lt_cv_path_LD="$ac_dir/$ac_prog"
+ lt_cv_path_LD=$ac_dir/$ac_prog
# Check to see if the program is GNU ld. I'd rather use --version,
# but apparently some variants of GNU ld only accept -v.
# Break only if it was the GNU/non-GNU ld that we prefer.
case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break
+ test no != "$with_gnu_ld" && break
;;
*)
- test "$with_gnu_ld" != yes && break
+ test yes != "$with_gnu_ld" && break
;;
esac
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
else
- lt_cv_path_LD="$LD" # Let the user override the test with a path.
+ lt_cv_path_LD=$LD # Let the user override the test with a path.
fi
fi
-LD="$lt_cv_path_LD"
+LD=$lt_cv_path_LD
if test -n "$LD"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
$as_echo "$LD" >&6; }
@@ -5429,33 +5281,33 @@ if ${lt_cv_path_NM+:} false; then :
else
if test -n "$NM"; then
# Let the user override the test.
- lt_cv_path_NM="$NM"
+ lt_cv_path_NM=$NM
else
- lt_nm_to_check="${ac_tool_prefix}nm"
+ lt_nm_to_check=${ac_tool_prefix}nm
if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
lt_nm_to_check="$lt_nm_to_check nm"
fi
for lt_tmp_nm in $lt_nm_to_check; do
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
test -z "$ac_dir" && ac_dir=.
- tmp_nm="$ac_dir/$lt_tmp_nm"
- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ tmp_nm=$ac_dir/$lt_tmp_nm
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
# Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # Adding the 'sed 1q' prevents false positives on HP-UX, which says:
# nm: unknown option "B" ignored
# Tru64's nm complains that /dev/null is an invalid object file
case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
*/dev/null* | *'Invalid file or object type'*)
lt_cv_path_NM="$tmp_nm -B"
- break
+ break 2
;;
*)
case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
*/dev/null*)
lt_cv_path_NM="$tmp_nm -p"
- break
+ break 2
;;
*)
lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
@@ -5466,15 +5318,15 @@ else
esac
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
done
: ${lt_cv_path_NM=no}
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
$as_echo "$lt_cv_path_NM" >&6; }
-if test "$lt_cv_path_NM" != "no"; then
- NM="$lt_cv_path_NM"
+if test no != "$lt_cv_path_NM"; then
+ NM=$lt_cv_path_NM
else
# Didn't find any BSD compatible name lister, look for dumpbin.
if test -n "$DUMPBIN"; then :
@@ -5580,9 +5432,9 @@ esac
fi
fi
- case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+ case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
*COFF*)
- DUMPBIN="$DUMPBIN -symbols"
+ DUMPBIN="$DUMPBIN -symbols -headers"
;;
*)
DUMPBIN=:
@@ -5590,8 +5442,8 @@ fi
esac
fi
- if test "$DUMPBIN" != ":"; then
- NM="$DUMPBIN"
+ if test : != "$DUMPBIN"; then
+ NM=$DUMPBIN
fi
fi
test -z "$NM" && NM=nm
@@ -5642,7 +5494,7 @@ if ${lt_cv_sys_max_cmd_len+:} false; then :
$as_echo_n "(cached) " >&6
else
i=0
- teststring="ABCD"
+ teststring=ABCD
case $build_os in
msdosdjgpp*)
@@ -5682,7 +5534,7 @@ else
lt_cv_sys_max_cmd_len=8192;
;;
- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
# This has been around since 386BSD, at least. Likely further.
if test -x /sbin/sysctl; then
lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
@@ -5733,22 +5585,22 @@ else
*)
lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
if test -n "$lt_cv_sys_max_cmd_len" && \
- test undefined != "$lt_cv_sys_max_cmd_len"; then
+ test undefined != "$lt_cv_sys_max_cmd_len"; then
lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
else
# Make teststring a little bigger before we do anything with it.
# a 1K string should be a reasonable start.
- for i in 1 2 3 4 5 6 7 8 ; do
+ for i in 1 2 3 4 5 6 7 8; do
teststring=$teststring$teststring
done
SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
# If test is not a shell built-in, we'll probably end up computing a
# maximum length that is only half of the actual maximum length, but
# we can't tell.
- while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+ while { test X`env echo "$teststring$teststring" 2>/dev/null` \
= "X$teststring$teststring"; } >/dev/null 2>&1 &&
- test $i != 17 # 1/2 MB should be enough
+ test 17 != "$i" # 1/2 MB should be enough
do
i=`expr $i + 1`
teststring=$teststring$teststring
@@ -5766,7 +5618,7 @@ else
fi
-if test -n $lt_cv_sys_max_cmd_len ; then
+if test -n "$lt_cv_sys_max_cmd_len"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
else
@@ -5784,30 +5636,6 @@ max_cmd_len=$lt_cv_sys_max_cmd_len
: ${MV="mv -f"}
: ${RM="rm -f"}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
- test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
- = c,a/b,b/c, \
- && eval 'test $(( 1 + 1 )) -eq 2 \
- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
- && xsi_shell=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
- >/dev/null 2>&1 \
- && lt_shell_append=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
-
-
if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
lt_unset=unset
else
@@ -5930,13 +5758,13 @@ esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
- if test "$GCC" != yes; then
+ if test yes != "$GCC"; then
reload_cmds=false
fi
;;
darwin*)
- if test "$GCC" = yes; then
- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ if test yes = "$GCC"; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
else
reload_cmds='$LD$reload_flag -o $output$reload_objs'
fi
@@ -6064,13 +5892,13 @@ lt_cv_deplibs_check_method='unknown'
# Need to set the preceding variable on all platforms that support
# interlibrary dependencies.
# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
+# 'unknown' -- same as none, but documents that we really don't know.
# 'pass_all' -- all dependencies passed with no checks.
# 'test_compile' -- check by making test program.
# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
+# that responds to the $file_magic_cmd with a given extended regex.
+# If you have 'file' or equivalent on your system and you're not sure
+# whether 'pass_all' will *always* work, you probably want this one.
case $host_os in
aix[4-9]*)
@@ -6097,8 +5925,7 @@ mingw* | pw32*)
# Base MSYS/MinGW do not provide the 'file' command needed by
# func_win32_libid shell function, so use a weaker test based on 'objdump',
# unless we find 'file', for example because we are cross-compiling.
- # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
- if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+ if ( file / ) >/dev/null 2>&1; then
lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
lt_cv_file_magic_cmd='func_win32_libid'
else
@@ -6176,7 +6003,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
lt_cv_deplibs_check_method=pass_all
;;
-netbsd* | netbsdelf*-gnu)
+netbsd*)
if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
else
@@ -6194,8 +6021,8 @@ newos6*)
lt_cv_deplibs_check_method=pass_all
;;
-openbsd*)
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+openbsd* | bitrig*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
else
lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
@@ -6405,8 +6232,8 @@ else
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
- # two different shell functions defined in ltmain.sh
- # decide which to use based on capabilities of $DLLTOOL
+ # two different shell functions defined in ltmain.sh;
+ # decide which one to use based on capabilities of $DLLTOOL
case `$DLLTOOL --help 2>&1` in
*--identify-strict*)
lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
@@ -6418,7 +6245,7 @@ cygwin* | mingw* | pw32* | cegcc*)
;;
*)
# fallback: assume linklib IS sharedlib
- lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+ lt_cv_sharedlib_from_linklib_cmd=$ECHO
;;
esac
@@ -6572,7 +6399,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
- if test "$ac_status" -eq 0; then
+ if test 0 -eq "$ac_status"; then
# Ensure the archiver fails upon bogus file names.
rm -f conftest.$ac_objext libconftest.a
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
@@ -6580,7 +6407,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
- if test "$ac_status" -ne 0; then
+ if test 0 -ne "$ac_status"; then
lt_cv_ar_at_file=@
fi
fi
@@ -6593,7 +6420,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
$as_echo "$lt_cv_ar_at_file" >&6; }
-if test "x$lt_cv_ar_at_file" = xno; then
+if test no = "$lt_cv_ar_at_file"; then
archiver_list_spec=
else
archiver_list_spec=$lt_cv_ar_at_file
@@ -6810,7 +6637,7 @@ old_postuninstall_cmds=
if test -n "$RANLIB"; then
case $host_os in
- openbsd*)
+ bitrig* | openbsd*)
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
;;
*)
@@ -6900,7 +6727,7 @@ cygwin* | mingw* | pw32* | cegcc*)
symcode='[ABCDGISTW]'
;;
hpux*)
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
symcode='[ABCDEGRST]'
fi
;;
@@ -6933,14 +6760,44 @@ case `$NM -V 2>&1` in
symcode='[ABCDGIRSTW]' ;;
esac
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Gets list of data symbols to import.
+ lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+ # Adjust the below global symbol transforms to fixup imported variables.
+ lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
+ lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'"
+ lt_c_name_lib_hook="\
+ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\
+ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'"
+else
+ # Disable hooks by default.
+ lt_cv_sys_global_symbol_to_import=
+ lt_cdecl_hook=
+ lt_c_name_hook=
+ lt_c_name_lib_hook=
+fi
+
# Transform an extracted symbol line into a proper C declaration.
# Some systems (esp. on ia64) link data and code symbols differently,
# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+$lt_cdecl_hook\
+" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+$lt_c_name_hook\
+" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'"
+
+# Transform an extracted symbol line into symbol name with lib prefix and
+# symbol address.
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+$lt_c_name_lib_hook\
+" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'"
# Handle CRLF in mingw tool chain
opt_cr=
@@ -6958,21 +6815,24 @@ for ac_symprfx in "" "_"; do
# Write the raw and C identifiers.
if test "$lt_cv_nm_interface" = "MS dumpbin"; then
- # Fake it for dumpbin and say T for any non-static function
- # and D for any global variable.
+ # Fake it for dumpbin and say T for any non-static function,
+ # D for any global variable and I for any imported variable.
# Also find C++ and __fastcall symbols from MSVC++,
# which start with @ or ?.
lt_cv_sys_global_symbol_pipe="$AWK '"\
" {last_section=section; section=\$ 3};"\
" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
+" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
+" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
" \$ 0!~/External *\|/{next};"\
" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
" {if(hide[section]) next};"\
-" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-" s[1]~/^[@?]/{print s[1], s[1]; next};"\
-" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
+" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
+" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
" ' prfx=^$ac_symprfx"
else
lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
@@ -7020,11 +6880,11 @@ _LT_EOF
if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
cat <<_LT_EOF > conftest.$ac_ext
/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
relocations are performed -- see ld's documentation on pseudo-relocs. */
# define LT_DLSYM_CONST
-#elif defined(__osf__)
+#elif defined __osf__
/* This system does not cope well with relocations in const data. */
# define LT_DLSYM_CONST
#else
@@ -7050,7 +6910,7 @@ lt__PROGRAM__LTX_preloaded_symbols[] =
{
{ "@PROGRAM@", (void *) 0 },
_LT_EOF
- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
cat <<\_LT_EOF >> conftest.$ac_ext
{0, (void *) 0}
};
@@ -7070,13 +6930,13 @@ _LT_EOF
mv conftest.$ac_objext conftstm.$ac_objext
lt_globsym_save_LIBS=$LIBS
lt_globsym_save_CFLAGS=$CFLAGS
- LIBS="conftstm.$ac_objext"
+ LIBS=conftstm.$ac_objext
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
(eval $ac_link) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ test $ac_status = 0; } && test -s conftest$ac_exeext; then
pipe_works=yes
fi
LIBS=$lt_globsym_save_LIBS
@@ -7097,7 +6957,7 @@ _LT_EOF
rm -rf conftest* conftst*
# Do not use the global_symbol_pipe unless it works.
- if test "$pipe_works" = yes; then
+ if test yes = "$pipe_works"; then
break
else
lt_cv_sys_global_symbol_pipe=
@@ -7150,6 +7010,16 @@ fi
+
+
+
+
+
+
+
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
$as_echo_n "checking for sysroot... " >&6; }
@@ -7162,9 +7032,9 @@ fi
lt_sysroot=
-case ${with_sysroot} in #(
+case $with_sysroot in #(
yes)
- if test "$GCC" = yes; then
+ if test yes = "$GCC"; then
lt_sysroot=`$CC --print-sysroot 2>/dev/null`
fi
;; #(
@@ -7174,8 +7044,8 @@ case ${with_sysroot} in #(
no|'')
;; #(
*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
-$as_echo "${with_sysroot}" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
+$as_echo "$with_sysroot" >&6; }
as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
;;
esac
@@ -7192,13 +7062,14 @@ if test "${enable_libtool_lock+set}" = set; then :
enableval=$enable_libtool_lock;
fi
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+test no = "$enable_libtool_lock" || enable_libtool_lock=yes
# Some flags need to be propagated to the compiler or linker for good
# libtool support.
case $host in
ia64-*-hpux*)
- # Find out which ABI we are using.
+ # Find out what ABI is being produced by ac_compile, and set mode
+ # options accordingly.
echo 'int i;' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
@@ -7207,24 +7078,25 @@ ia64-*-hpux*)
test $ac_status = 0; }; then
case `/usr/bin/file conftest.$ac_objext` in
*ELF-32*)
- HPUX_IA64_MODE="32"
+ HPUX_IA64_MODE=32
;;
*ELF-64*)
- HPUX_IA64_MODE="64"
+ HPUX_IA64_MODE=64
;;
esac
fi
rm -rf conftest*
;;
*-*-irix6*)
- # Find out which ABI we are using.
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
echo '#line '$LINENO' "configure"' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- if test "$lt_cv_prog_gnu_ld" = yes; then
+ if test yes = "$lt_cv_prog_gnu_ld"; then
case `/usr/bin/file conftest.$ac_objext` in
*32-bit*)
LD="${LD-ld} -melf32bsmip"
@@ -7253,9 +7125,50 @@ ia64-*-hpux*)
rm -rf conftest*
;;
+mips64*-*linux*)
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
+ echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ emul=elf
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ emul="${emul}32"
+ ;;
+ *64-bit*)
+ emul="${emul}64"
+ ;;
+ esac
+ case `/usr/bin/file conftest.$ac_objext` in
+ *MSB*)
+ emul="${emul}btsmip"
+ ;;
+ *LSB*)
+ emul="${emul}ltsmip"
+ ;;
+ esac
+ case `/usr/bin/file conftest.$ac_objext` in
+ *N32*)
+ emul="${emul}n32"
+ ;;
+ esac
+ LD="${LD-ld} -m $emul"
+ fi
+ rm -rf conftest*
+ ;;
+
x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- # Find out which ABI we are using.
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly. Note that the listed cases only cover the
+ # situations where additional linker options are needed (such as when
+ # doing 32-bit compilation for a host where ld defaults to 64-bit, or
+ # vice versa); the common cases where no linker options are needed do
+ # not appear in the list.
echo 'int i;' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
@@ -7278,10 +7191,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
;;
esac
;;
- powerpc64le-*)
+ powerpc64le-*linux*)
LD="${LD-ld} -m elf32lppclinux"
;;
- powerpc64-*)
+ powerpc64-*linux*)
LD="${LD-ld} -m elf32ppclinux"
;;
s390x-*linux*)
@@ -7300,10 +7213,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
- powerpcle-*)
+ powerpcle-*linux*)
LD="${LD-ld} -m elf64lppc"
;;
- powerpc-*)
+ powerpc-*linux*)
LD="${LD-ld} -m elf64ppc"
;;
s390*-*linux*|s390*-*tpf*)
@@ -7321,7 +7234,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
*-*-sco3.2v5*)
# On SCO OpenServer 5, we need -belf to get full-featured binaries.
- SAVE_CFLAGS="$CFLAGS"
+ SAVE_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -belf"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
@@ -7361,13 +7274,14 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
$as_echo "$lt_cv_cc_needs_belf" >&6; }
- if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ if test yes != "$lt_cv_cc_needs_belf"; then
# this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
- CFLAGS="$SAVE_CFLAGS"
+ CFLAGS=$SAVE_CFLAGS
fi
;;
*-*solaris*)
- # Find out which ABI we are using.
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
echo 'int i;' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
@@ -7379,7 +7293,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
case $lt_cv_prog_gnu_ld in
yes*)
case $host in
- i?86-*-solaris*)
+ i?86-*-solaris*|x86_64-*-solaris*)
LD="${LD-ld} -m elf_x86_64"
;;
sparc*-*-solaris*)
@@ -7388,7 +7302,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
esac
# GNU ld 2.21 introduced _sol2 emulations. Use them if available.
if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
- LD="${LD-ld}_sol2"
+ LD=${LD-ld}_sol2
fi
;;
*)
@@ -7404,7 +7318,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
;;
esac
-need_locks="$enable_libtool_lock"
+need_locks=$enable_libtool_lock
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
@@ -7515,7 +7429,7 @@ else
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
+if test yes != "$lt_cv_path_mainfest_tool"; then
MANIFEST_TOOL=:
fi
@@ -8018,7 +7932,7 @@ if ${lt_cv_apple_cc_single_mod+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_apple_cc_single_mod=no
- if test -z "${LT_MULTI_MODULE}"; then
+ if test -z "$LT_MULTI_MODULE"; then
# By default we will add the -single_module flag. You can override
# by either setting the environment variable LT_MULTI_MODULE
# non-empty at configure time, or by adding -multi_module to the
@@ -8036,7 +7950,7 @@ else
cat conftest.err >&5
# Otherwise, if the output was created with a 0 exit code from
# the compiler, it worked.
- elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+ elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
lt_cv_apple_cc_single_mod=yes
else
cat conftest.err >&5
@@ -8075,7 +7989,7 @@ else
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
- LDFLAGS="$save_LDFLAGS"
+ LDFLAGS=$save_LDFLAGS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
@@ -8104,7 +8018,7 @@ _LT_EOF
_lt_result=$?
if test -s conftest.err && $GREP force_load conftest.err; then
cat conftest.err >&5
- elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+ elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
lt_cv_ld_force_load=yes
else
cat conftest.err >&5
@@ -8117,32 +8031,32 @@ fi
$as_echo "$lt_cv_ld_force_load" >&6; }
case $host_os in
rhapsody* | darwin1.[012])
- _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
darwin1.*)
- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
darwin*) # darwin 5.x on
# if running on 10.5 or later, the deployment target defaults
# to the OS version, if on x86, and 10.4, the deployment
# target defaults to 10.4. Don't you love it?
case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
10.0,*86*-darwin8*|10.0,*-darwin[91]*)
- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
10.[012]*)
- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
10.*)
- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
esac
;;
esac
- if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ if test yes = "$lt_cv_apple_cc_single_mod"; then
_lt_dar_single_mod='$single_module'
fi
- if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
- _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ if test yes = "$lt_cv_ld_exported_symbols_list"; then
+ _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
else
- _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
fi
- if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+ if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
_lt_dsymutil='~$DSYMUTIL $lib || :'
else
_lt_dsymutil=
@@ -8444,14 +8358,14 @@ if test "${enable_static+set}" = set; then :
*)
enable_static=no
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_static=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac
else
@@ -8482,14 +8396,14 @@ if test "${enable_shared+set}" = set; then :
*)
enable_shared=no
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_shared=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac
else
@@ -8514,14 +8428,14 @@ if test "${with_pic+set}" = set; then :
*)
pic_mode=default
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for lt_pkg in $withval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$lt_pkg" = "X$lt_p"; then
pic_mode=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac
else
@@ -8529,8 +8443,6 @@ else
fi
-test -z "$pic_mode" && pic_mode=default
-
@@ -8546,14 +8458,14 @@ if test "${enable_fast_install+set}" = set; then :
*)
enable_fast_install=no
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_fast_install=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac
else
@@ -8571,7 +8483,7 @@ fi
# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
+LIBTOOL_DEPS=$ltmain
# Always use our own libtool.
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
@@ -8620,7 +8532,7 @@ test -z "$LN_S" && LN_S="ln -s"
-if test -n "${ZSH_VERSION+set}" ; then
+if test -n "${ZSH_VERSION+set}"; then
setopt NO_GLOB_SUBST
fi
@@ -8659,7 +8571,7 @@ aix3*)
# AIX sometimes has problems with the GCC collect2 program. For some
# reason, if we set the COLLECT_NAMES environment variable, the problems
# vanish in a puff of smoke.
- if test "X${COLLECT_NAMES+set}" != Xset; then
+ if test set != "${COLLECT_NAMES+set}"; then
COLLECT_NAMES=
export COLLECT_NAMES
fi
@@ -8670,14 +8582,14 @@ esac
ofile=libtool
can_build_shared=yes
-# All known linkers require a `.a' archive for static linking (except MSVC,
+# All known linkers require a '.a' archive for static linking (except MSVC,
# which needs '.lib').
libext=a
-with_gnu_ld="$lt_cv_prog_gnu_ld"
+with_gnu_ld=$lt_cv_prog_gnu_ld
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
+old_CC=$CC
+old_CFLAGS=$CFLAGS
# Set sane defaults for various variables
test -z "$CC" && CC=cc
@@ -8709,22 +8621,22 @@ if ${lt_cv_path_MAGIC_CMD+:} false; then :
else
case $MAGIC_CMD in
[\\/*] | ?:[\\/]*)
- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
;;
*)
- lt_save_MAGIC_CMD="$MAGIC_CMD"
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ lt_save_MAGIC_CMD=$MAGIC_CMD
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
for ac_dir in $ac_dummy; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/${ac_tool_prefix}file; then
- lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+ if test -f "$ac_dir/${ac_tool_prefix}file"; then
+ lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file"
if test -n "$file_magic_test_file"; then
case $deplibs_check_method in
"file_magic "*)
file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ MAGIC_CMD=$lt_cv_path_MAGIC_CMD
if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
$EGREP "$file_magic_regex" > /dev/null; then
:
@@ -8747,13 +8659,13 @@ _LT_EOF
break
fi
done
- IFS="$lt_save_ifs"
- MAGIC_CMD="$lt_save_MAGIC_CMD"
+ IFS=$lt_save_ifs
+ MAGIC_CMD=$lt_save_MAGIC_CMD
;;
esac
fi
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
if test -n "$MAGIC_CMD"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
$as_echo "$MAGIC_CMD" >&6; }
@@ -8775,22 +8687,22 @@ if ${lt_cv_path_MAGIC_CMD+:} false; then :
else
case $MAGIC_CMD in
[\\/*] | ?:[\\/]*)
- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
;;
*)
- lt_save_MAGIC_CMD="$MAGIC_CMD"
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ lt_save_MAGIC_CMD=$MAGIC_CMD
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
for ac_dir in $ac_dummy; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/file; then
- lt_cv_path_MAGIC_CMD="$ac_dir/file"
+ if test -f "$ac_dir/file"; then
+ lt_cv_path_MAGIC_CMD=$ac_dir/"file"
if test -n "$file_magic_test_file"; then
case $deplibs_check_method in
"file_magic "*)
file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ MAGIC_CMD=$lt_cv_path_MAGIC_CMD
if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
$EGREP "$file_magic_regex" > /dev/null; then
:
@@ -8813,13 +8725,13 @@ _LT_EOF
break
fi
done
- IFS="$lt_save_ifs"
- MAGIC_CMD="$lt_save_MAGIC_CMD"
+ IFS=$lt_save_ifs
+ MAGIC_CMD=$lt_save_MAGIC_CMD
;;
esac
fi
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
if test -n "$MAGIC_CMD"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
$as_echo "$MAGIC_CMD" >&6; }
@@ -8840,7 +8752,7 @@ esac
# Use C for the default configuration in the libtool script
-lt_save_CC="$CC"
+lt_save_CC=$CC
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -8902,7 +8814,7 @@ if test -n "$compiler"; then
lt_prog_compiler_no_builtin_flag=
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
case $cc_basename in
nvcc*)
lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
@@ -8918,7 +8830,7 @@ else
lt_cv_prog_compiler_rtti_exceptions=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
- lt_compiler_flag="-fno-rtti -fno-exceptions"
+ lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
# Note that $ac_compile itself does not contain backslashes and begins
@@ -8948,7 +8860,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then
lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
else
:
@@ -8966,17 +8878,18 @@ lt_prog_compiler_pic=
lt_prog_compiler_static=
- if test "$GCC" = yes; then
+ if test yes = "$GCC"; then
lt_prog_compiler_wl='-Wl,'
lt_prog_compiler_static='-static'
case $host_os in
aix*)
# All AIX code is PIC.
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 now supports IA64 processor
lt_prog_compiler_static='-Bstatic'
fi
+ lt_prog_compiler_pic='-fPIC'
;;
amigaos*)
@@ -8987,8 +8900,8 @@ lt_prog_compiler_static=
;;
m68k)
# FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
+ # adding the '-m68020' flag to GCC prevents building anything better,
+ # like '-m68040'.
lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
;;
esac
@@ -9074,7 +8987,7 @@ lt_prog_compiler_static=
case $host_os in
aix*)
lt_prog_compiler_wl='-Wl,'
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 now supports IA64 processor
lt_prog_compiler_static='-Bstatic'
else
@@ -9082,6 +8995,20 @@ lt_prog_compiler_static=
fi
;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ case $cc_basename in
+ nagfor*)
+ # NAG Fortran compiler
+ lt_prog_compiler_wl='-Wl,-Wl,,'
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ esac
+ ;;
+
mingw* | cygwin* | pw32* | os2* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
@@ -9101,7 +9028,7 @@ lt_prog_compiler_static=
;;
esac
# Is there a better lt_prog_compiler_static that works with the bundled CC?
- lt_prog_compiler_static='${wl}-a ${wl}archive'
+ lt_prog_compiler_static='$wl-a ${wl}archive'
;;
irix5* | irix6* | nonstopux*)
@@ -9112,7 +9039,7 @@ lt_prog_compiler_static=
linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
case $cc_basename in
- # old Intel for x86_64 which still supported -KPIC.
+ # old Intel for x86_64, which still supported -KPIC.
ecc*)
lt_prog_compiler_wl='-Wl,'
lt_prog_compiler_pic='-KPIC'
@@ -9137,6 +9064,12 @@ lt_prog_compiler_static=
lt_prog_compiler_pic='-PIC'
lt_prog_compiler_static='-Bstatic'
;;
+ tcc*)
+ # Fabrice Bellard et al's Tiny C Compiler
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
@@ -9234,7 +9167,7 @@ lt_prog_compiler_static=
;;
sysv4*MP*)
- if test -d /usr/nec ;then
+ if test -d /usr/nec; then
lt_prog_compiler_pic='-Kconform_pic'
lt_prog_compiler_static='-Bstatic'
fi
@@ -9263,7 +9196,7 @@ lt_prog_compiler_static=
fi
case $host_os in
- # For platforms which do not support PIC, -DPIC is meaningless:
+ # For platforms that do not support PIC, -DPIC is meaningless:
*djgpp*)
lt_prog_compiler_pic=
;;
@@ -9295,7 +9228,7 @@ else
lt_cv_prog_compiler_pic_works=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
- lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
# Note that $ac_compile itself does not contain backslashes and begins
@@ -9325,7 +9258,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
-if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+if test yes = "$lt_cv_prog_compiler_pic_works"; then
case $lt_prog_compiler_pic in
"" | " "*) ;;
*) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
@@ -9357,7 +9290,7 @@ if ${lt_cv_prog_compiler_static_works+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_prog_compiler_static_works=no
- save_LDFLAGS="$LDFLAGS"
+ save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
echo "$lt_simple_link_test_code" > conftest.$ac_ext
if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
@@ -9376,13 +9309,13 @@ else
fi
fi
$RM -r conftest*
- LDFLAGS="$save_LDFLAGS"
+ LDFLAGS=$save_LDFLAGS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
-if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+if test yes = "$lt_cv_prog_compiler_static_works"; then
:
else
lt_prog_compiler_static=
@@ -9502,8 +9435,8 @@ $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+hard_links=nottested
+if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then
# do not overwrite the value of need_locks provided by the user
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
$as_echo_n "checking if we can lock with hard links... " >&6; }
@@ -9515,9 +9448,9 @@ $as_echo_n "checking if we can lock with hard links... " >&6; }
ln conftest.a conftest.b 2>/dev/null && hard_links=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
$as_echo "$hard_links" >&6; }
- if test "$hard_links" = no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ if test no = "$hard_links"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
need_locks=warn
fi
else
@@ -9560,9 +9493,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
# included in the symbol list
include_expsyms=
# exclude_expsyms can be an extended regexp of symbols to exclude
- # it will be wrapped by ` (' and `)$', so one must not match beginning or
- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
- # as well as any symbol that contains `d'.
+ # it will be wrapped by ' (' and ')$', so one must not match beginning or
+ # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
+ # as well as any symbol that contains 'd'.
exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
# platforms (ab)use it in PIC code, but their linkers get confused if
@@ -9577,7 +9510,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
# FIXME: the MSVC++ port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
- if test "$GCC" != yes; then
+ if test yes != "$GCC"; then
with_gnu_ld=no
fi
;;
@@ -9585,12 +9518,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
# we just hope/assume this is gcc and not c89 (= MSVC++)
with_gnu_ld=yes
;;
- openbsd*)
+ openbsd* | bitrig*)
with_gnu_ld=no
;;
- linux* | k*bsd*-gnu | gnu*)
- link_all_deplibs=no
- ;;
esac
ld_shlibs=yes
@@ -9598,7 +9528,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
# On some targets, GNU ld is compatible enough with the native linker
# that we're better off using the native interface for both.
lt_use_gnu_ld_interface=no
- if test "$with_gnu_ld" = yes; then
+ if test yes = "$with_gnu_ld"; then
case $host_os in
aix*)
# The AIX port of GNU ld has always aspired to compatibility
@@ -9620,24 +9550,24 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
esac
fi
- if test "$lt_use_gnu_ld_interface" = yes; then
+ if test yes = "$lt_use_gnu_ld_interface"; then
# If archive_cmds runs LD, not CC, wlarc should be empty
- wlarc='${wl}'
+ wlarc='$wl'
# Set some defaults for GNU ld with shared library support. These
# are reset later if shared libraries are not supported. Putting them
# here allows them to be overridden if necessary.
runpath_var=LD_RUN_PATH
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- export_dynamic_flag_spec='${wl}--export-dynamic'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+ export_dynamic_flag_spec='$wl--export-dynamic'
# ancient GNU ld didn't support --whole-archive et. al.
if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
else
whole_archive_flag_spec=
fi
supports_anon_versioning=no
- case `$LD -v 2>&1` in
+ case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in
*GNU\ gold*) supports_anon_versioning=yes ;;
*\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
*\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
@@ -9650,7 +9580,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
case $host_os in
aix[3-9]*)
# On AIX/PPC, the GNU linker is very broken
- if test "$host_cpu" != ia64; then
+ if test ia64 != "$host_cpu"; then
ld_shlibs=no
cat <<_LT_EOF 1>&2
@@ -9669,7 +9599,7 @@ _LT_EOF
case $host_cpu in
powerpc)
# see comment about AmigaOS4 .so support
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
archive_expsym_cmds=''
;;
m68k)
@@ -9685,7 +9615,7 @@ _LT_EOF
allow_undefined_flag=unsupported
# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
# support --undefined. This deserves some investigation. FIXME
- archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
else
ld_shlibs=no
fi
@@ -9695,7 +9625,7 @@ _LT_EOF
# _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
# as there is no search path for DLLs.
hardcode_libdir_flag_spec='-L$libdir'
- export_dynamic_flag_spec='${wl}--export-all-symbols'
+ export_dynamic_flag_spec='$wl--export-all-symbols'
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
@@ -9703,61 +9633,61 @@ _LT_EOF
exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- # If the export-symbols file already is a .def file (1st line
- # is EXPORTS), use it as is; otherwise, prepend...
- archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- cp $export_symbols $output_objdir/$soname.def;
- else
- echo EXPORTS > $output_objdir/$soname.def;
- cat $export_symbols >> $output_objdir/$soname.def;
- fi~
- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file, use it as
+ # is; otherwise, prepend EXPORTS...
+ archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
else
ld_shlibs=no
fi
;;
haiku*)
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
link_all_deplibs=yes
;;
interix[3-9]*)
hardcode_direct=no
hardcode_shlibpath_var=no
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- export_dynamic_flag_spec='${wl}-E'
+ hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+ export_dynamic_flag_spec='$wl-E'
# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
# Instead, shared libraries are loaded at an image base (0x10000000 by
# default) and relocated if they conflict, which is a slow very memory
# consuming and fragmenting process. To avoid this, we pick a random,
# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
# time. Moving up from 0x10000000 also allows more sbrk(2) space.
- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
tmp_diet=no
- if test "$host_os" = linux-dietlibc; then
+ if test linux-dietlibc = "$host_os"; then
case $cc_basename in
diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
esac
fi
if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
- && test "$tmp_diet" = no
+ && test no = "$tmp_diet"
then
tmp_addflag=' $pic_flag'
tmp_sharedflag='-shared'
case $cc_basename,$host_cpu in
pgcc*) # Portland Group C compiler
- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
tmp_addflag=' $pic_flag'
;;
pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group f77 and f90 compilers
- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
tmp_addflag=' $pic_flag -Mnomain' ;;
ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
tmp_addflag=' -i_dynamic' ;;
@@ -9768,42 +9698,44 @@ _LT_EOF
lf95*) # Lahey Fortran 8.1
whole_archive_flag_spec=
tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
+ tmp_sharedflag='-Wl,-shared' ;;
xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
tmp_sharedflag='-qmkshrobj'
tmp_addflag= ;;
nvcc*) # Cuda Compiler Driver 2.2
- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
compiler_needs_object=yes
;;
esac
case `$CC -V 2>&1 | sed 5q` in
*Sun\ C*) # Sun C 5.9
- whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
compiler_needs_object=yes
tmp_sharedflag='-G' ;;
*Sun\ F*) # Sun Fortran 8.3
tmp_sharedflag='-G' ;;
esac
- archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
+ if test yes = "$supports_anon_versioning"; then
archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
fi
case $cc_basename in
xlf* | bgf* | bgxlf* | mpixlf*)
# IBM XL Fortran 10.1 on PPC cannot create shared libs itself
whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
+ if test yes = "$supports_anon_versioning"; then
archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
fi
;;
esac
@@ -9812,13 +9744,13 @@ _LT_EOF
fi
;;
- netbsd* | netbsdelf*-gnu)
+ netbsd*)
if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
fi
;;
@@ -9836,8 +9768,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
else
ld_shlibs=no
fi
@@ -9849,7 +9781,7 @@ _LT_EOF
ld_shlibs=no
cat <<_LT_EOF 1>&2
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
*** reliably create shared libraries on SCO systems. Therefore, libtool
*** is disabling shared libraries support. We urge you to upgrade GNU
*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
@@ -9864,9 +9796,9 @@ _LT_EOF
# DT_RUNPATH tag from executables and libraries. But doing so
# requires that you compile everything twice, which is a pain.
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
else
ld_shlibs=no
fi
@@ -9883,15 +9815,15 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
else
ld_shlibs=no
fi
;;
esac
- if test "$ld_shlibs" = no; then
+ if test no = "$ld_shlibs"; then
runpath_var=
hardcode_libdir_flag_spec=
export_dynamic_flag_spec=
@@ -9907,7 +9839,7 @@ _LT_EOF
# Note: this linker hardcodes the directories in LIBPATH if there
# are no directories specified by -L.
hardcode_minus_L=yes
- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
# Neither direct hardcoding nor static linking is supported with a
# broken collect2.
hardcode_direct=unsupported
@@ -9915,12 +9847,12 @@ _LT_EOF
;;
aix[4-9]*)
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
aix_use_runtimelinking=no
exp_sym_flag='-Bexport'
- no_entry_flag=""
+ no_entry_flag=
else
# If we're using GNU nm, then we don't want the "-C" option.
# -C means demangle to AIX nm, but means don't demangle with GNU nm
@@ -9938,7 +9870,7 @@ _LT_EOF
# need to do runtime linking.
case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
for ld_flag in $LDFLAGS; do
- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
aix_use_runtimelinking=yes
break
fi
@@ -9961,13 +9893,13 @@ _LT_EOF
hardcode_direct_absolute=yes
hardcode_libdir_separator=':'
link_all_deplibs=yes
- file_list_spec='${wl}-f,'
+ file_list_spec='$wl-f,'
- if test "$GCC" = yes; then
+ if test yes = "$GCC"; then
case $host_os in aix4.[012]|aix4.[012].*)
# We only want to do this on AIX 4.2 and lower, the check
# below for broken collect2 doesn't work under 4.3+
- collect2name=`${CC} -print-prog-name=collect2`
+ collect2name=`$CC -print-prog-name=collect2`
if test -f "$collect2name" &&
strings "$collect2name" | $GREP resolve_lib_name >/dev/null
then
@@ -9986,36 +9918,35 @@ _LT_EOF
;;
esac
shared_flag='-shared'
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag="$shared_flag "'${wl}-G'
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag="$shared_flag "'$wl-G'
fi
- link_all_deplibs=no
else
# not using gcc
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
# chokes on -Wl,-G. The following line is correct:
shared_flag='-G'
else
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag='${wl}-G'
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag='$wl-G'
else
- shared_flag='${wl}-bM:SRE'
+ shared_flag='$wl-bM:SRE'
fi
fi
fi
- export_dynamic_flag_spec='${wl}-bexpall'
+ export_dynamic_flag_spec='$wl-bexpall'
# It seems that -bexpall does not export symbols beginning with
# underscore (_), so it is better to generate a list of symbols to export.
always_export_symbols=yes
- if test "$aix_use_runtimelinking" = yes; then
+ if test yes = "$aix_use_runtimelinking"; then
# Warning - without using the other runtime loading flags (-brtl),
# -berok will link without error, but may produce a broken library.
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
- if test "${lt_cv_aix_libpath+set}" = set; then
+ if test set = "${lt_cv_aix_libpath+set}"; then
aix_libpath=$lt_cv_aix_libpath
else
if ${lt_cv_aix_libpath_+:} false; then :
@@ -10050,7 +9981,7 @@ fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
if test -z "$lt_cv_aix_libpath_"; then
- lt_cv_aix_libpath_="/usr/lib:/lib"
+ lt_cv_aix_libpath_=/usr/lib:/lib
fi
fi
@@ -10058,17 +9989,17 @@ fi
aix_libpath=$lt_cv_aix_libpath_
fi
- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
- archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
else
- if test "$host_cpu" = ia64; then
- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ if test ia64 = "$host_cpu"; then
+ hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib'
allow_undefined_flag="-z nodefs"
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
else
# Determine the default libpath from the value encoded in an
# empty executable.
- if test "${lt_cv_aix_libpath+set}" = set; then
+ if test set = "${lt_cv_aix_libpath+set}"; then
aix_libpath=$lt_cv_aix_libpath
else
if ${lt_cv_aix_libpath_+:} false; then :
@@ -10103,7 +10034,7 @@ fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
if test -z "$lt_cv_aix_libpath_"; then
- lt_cv_aix_libpath_="/usr/lib:/lib"
+ lt_cv_aix_libpath_=/usr/lib:/lib
fi
fi
@@ -10111,21 +10042,21 @@ fi
aix_libpath=$lt_cv_aix_libpath_
fi
- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
# -berok will link without error, but may produce a broken library.
- no_undefined_flag=' ${wl}-bernotok'
- allow_undefined_flag=' ${wl}-berok'
- if test "$with_gnu_ld" = yes; then
+ no_undefined_flag=' $wl-bernotok'
+ allow_undefined_flag=' $wl-berok'
+ if test yes = "$with_gnu_ld"; then
# We only use this code for GNU lds that support --whole-archive.
- whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive'
else
# Exported symbols can be pulled into shared objects from archives
whole_archive_flag_spec='$convenience'
fi
archive_cmds_need_lc=yes
# This is similar to how AIX traditionally builds its shared libraries.
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $wl-bnoentry $compiler_flags $wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
fi
fi
;;
@@ -10134,7 +10065,7 @@ fi
case $host_cpu in
powerpc)
# see comment about AmigaOS4 .so support
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
archive_expsym_cmds=''
;;
m68k)
@@ -10164,16 +10095,17 @@ fi
# Tell ltmain to make .lib files, not .a files.
libext=lib
# Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
+ shrext_cmds=.dll
# FIXME: Setting linknames here is a bad hack.
- archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
- archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
- else
- sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
- fi~
- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
- linknames='
+ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+ archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then
+ cp "$export_symbols" "$output_objdir/$soname.def";
+ echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+ else
+ $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
# The linker will not automatically build a static lib if we build a DLL.
# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
enable_shared_with_static_runtimes=yes
@@ -10182,18 +10114,18 @@ fi
# Don't use ranlib
old_postinstall_cmds='chmod 644 $oldlib'
postlink_cmds='lt_outputfile="@OUTPUT@"~
- lt_tool_outputfile="@TOOL_OUTPUT@"~
- case $lt_outputfile in
- *.exe|*.EXE) ;;
- *)
- lt_outputfile="$lt_outputfile.exe"
- lt_tool_outputfile="$lt_tool_outputfile.exe"
- ;;
- esac~
- if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
- $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
- $RM "$lt_outputfile.manifest";
- fi'
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile=$lt_outputfile.exe
+ lt_tool_outputfile=$lt_tool_outputfile.exe
+ ;;
+ esac~
+ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
;;
*)
# Assume MSVC wrapper
@@ -10202,7 +10134,7 @@ fi
# Tell ltmain to make .lib files, not .a files.
libext=lib
# Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
+ shrext_cmds=.dll
# FIXME: Setting linknames here is a bad hack.
archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
# The linker will automatically build a .lib file if we build a DLL.
@@ -10221,24 +10153,24 @@ fi
hardcode_direct=no
hardcode_automatic=yes
hardcode_shlibpath_var=unsupported
- if test "$lt_cv_ld_force_load" = "yes"; then
- whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+ if test yes = "$lt_cv_ld_force_load"; then
+ whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
else
whole_archive_flag_spec=''
fi
link_all_deplibs=yes
- allow_undefined_flag="$_lt_dar_allow_undefined"
+ allow_undefined_flag=$_lt_dar_allow_undefined
case $cc_basename in
- ifort*) _lt_dar_can_shared=yes ;;
+ ifort*|nagfor*) _lt_dar_can_shared=yes ;;
*) _lt_dar_can_shared=$GCC ;;
esac
- if test "$_lt_dar_can_shared" = "yes"; then
+ if test yes = "$_lt_dar_can_shared"; then
output_verbose_link_cmd=func_echo_all
- archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
- module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
- archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
- module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+ archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+ module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
else
ld_shlibs=no
@@ -10280,33 +10212,33 @@ fi
;;
hpux9*)
- if test "$GCC" = yes; then
- archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ if test yes = "$GCC"; then
+ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
else
- archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
fi
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec='$wl+b $wl$libdir'
hardcode_libdir_separator=:
hardcode_direct=yes
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
hardcode_minus_L=yes
- export_dynamic_flag_spec='${wl}-E'
+ export_dynamic_flag_spec='$wl-E'
;;
hpux10*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
- archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ if test yes,no = "$GCC,$with_gnu_ld"; then
+ archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
- if test "$with_gnu_ld" = no; then
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ if test no = "$with_gnu_ld"; then
+ hardcode_libdir_flag_spec='$wl+b $wl$libdir'
hardcode_libdir_separator=:
hardcode_direct=yes
hardcode_direct_absolute=yes
- export_dynamic_flag_spec='${wl}-E'
+ export_dynamic_flag_spec='$wl-E'
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
hardcode_minus_L=yes
@@ -10314,25 +10246,25 @@ fi
;;
hpux11*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ if test yes,no = "$GCC,$with_gnu_ld"; then
case $host_cpu in
hppa*64*)
- archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
- archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
;;
*)
- archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
;;
esac
else
case $host_cpu in
hppa*64*)
- archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
;;
*)
@@ -10344,7 +10276,7 @@ if ${lt_cv_prog_compiler__b+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_prog_compiler__b=no
- save_LDFLAGS="$LDFLAGS"
+ save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -b"
echo "$lt_simple_link_test_code" > conftest.$ac_ext
if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
@@ -10363,14 +10295,14 @@ else
fi
fi
$RM -r conftest*
- LDFLAGS="$save_LDFLAGS"
+ LDFLAGS=$save_LDFLAGS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
$as_echo "$lt_cv_prog_compiler__b" >&6; }
-if test x"$lt_cv_prog_compiler__b" = xyes; then
- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+if test yes = "$lt_cv_prog_compiler__b"; then
+ archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
@@ -10378,8 +10310,8 @@ fi
;;
esac
fi
- if test "$with_gnu_ld" = no; then
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ if test no = "$with_gnu_ld"; then
+ hardcode_libdir_flag_spec='$wl+b $wl$libdir'
hardcode_libdir_separator=:
case $host_cpu in
@@ -10390,7 +10322,7 @@ fi
*)
hardcode_direct=yes
hardcode_direct_absolute=yes
- export_dynamic_flag_spec='${wl}-E'
+ export_dynamic_flag_spec='$wl-E'
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
@@ -10401,8 +10333,8 @@ fi
;;
irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ if test yes = "$GCC"; then
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
# Try to use the -exported_symbol ld option, if it does not
# work, assume that -exports_file does not work either and
# implicitly export all symbols.
@@ -10412,8 +10344,8 @@ $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >
if ${lt_cv_irix_exported_symbol+:} false; then :
$as_echo_n "(cached) " >&6
else
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ save_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int foo (void) { return 0; }
@@ -10425,25 +10357,25 @@ else
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
- LDFLAGS="$save_LDFLAGS"
+ LDFLAGS=$save_LDFLAGS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
$as_echo "$lt_cv_irix_exported_symbol" >&6; }
- if test "$lt_cv_irix_exported_symbol" = yes; then
- archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+ if test yes = "$lt_cv_irix_exported_symbol"; then
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
fi
else
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
fi
archive_cmds_need_lc='no'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
hardcode_libdir_separator=:
inherit_rpath=yes
link_all_deplibs=yes
;;
- netbsd* | netbsdelf*-gnu)
+ netbsd*)
if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
else
@@ -10457,7 +10389,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
newsos6)
archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
hardcode_libdir_separator=:
hardcode_shlibpath_var=no
;;
@@ -10465,27 +10397,19 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
*nto* | *qnx*)
;;
- openbsd*)
+ openbsd* | bitrig*)
if test -f /usr/libexec/ld.so; then
hardcode_direct=yes
hardcode_shlibpath_var=no
hardcode_direct_absolute=yes
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- export_dynamic_flag_spec='${wl}-E'
+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+ export_dynamic_flag_spec='$wl-E'
else
- case $host_os in
- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec='-R$libdir'
- ;;
- *)
- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- ;;
- esac
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='$wl-rpath,$libdir'
fi
else
ld_shlibs=no
@@ -10501,28 +10425,28 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
;;
osf3*)
- if test "$GCC" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ if test yes = "$GCC"; then
+ allow_undefined_flag=' $wl-expect_unresolved $wl\*'
+ archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
else
allow_undefined_flag=' -expect_unresolved \*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
fi
archive_cmds_need_lc='no'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
hardcode_libdir_separator=:
;;
osf4* | osf5*) # as osf3* with the addition of -msym flag
- if test "$GCC" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ if test yes = "$GCC"; then
+ allow_undefined_flag=' $wl-expect_unresolved $wl\*'
+ archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
else
allow_undefined_flag=' -expect_unresolved \*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
- $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
# Both c and cxx compiler support -rpath directly
hardcode_libdir_flag_spec='-rpath $libdir'
@@ -10533,24 +10457,24 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
solaris*)
no_undefined_flag=' -z defs'
- if test "$GCC" = yes; then
- wlarc='${wl}'
- archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ if test yes = "$GCC"; then
+ wlarc='$wl'
+ archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
wlarc=''
- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
;;
*)
- wlarc='${wl}'
- archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ wlarc='$wl'
+ archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
;;
esac
fi
@@ -10560,11 +10484,11 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
solaris2.[0-5] | solaris2.[0-5].*) ;;
*)
# The compiler driver will combine and reorder linker options,
- # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but understands '-z linker_flag'. GCC discards it without '$wl',
# but is careful enough not to reorder.
# Supported since Solaris 2.6 (maybe 2.5.1?)
- if test "$GCC" = yes; then
- whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ if test yes = "$GCC"; then
+ whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
else
whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
fi
@@ -10574,10 +10498,10 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
;;
sunos4*)
- if test "x$host_vendor" = xsequent; then
+ if test sequent = "$host_vendor"; then
# Use $CC to link under sequent, because it throws in some extra .o
# files that make .init and .fini sections work.
- archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
else
archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
fi
@@ -10626,43 +10550,43 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
;;
sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
- no_undefined_flag='${wl}-z,text'
+ no_undefined_flag='$wl-z,text'
archive_cmds_need_lc=no
hardcode_shlibpath_var=no
runpath_var='LD_RUN_PATH'
- if test "$GCC" = yes; then
- archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ if test yes = "$GCC"; then
+ archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
else
- archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
fi
;;
sysv5* | sco3.2v5* | sco5v6*)
- # Note: We can NOT use -z defs as we might desire, because we do not
+ # Note: We CANNOT use -z defs as we might desire, because we do not
# link with -lc, and that would cause any symbols used from libc to
# always be unresolved, which means just about no library would
# ever link correctly. If we're not using GNU ld we use -z text
# though, which does catch some bad symbols but isn't as heavy-handed
# as -z defs.
- no_undefined_flag='${wl}-z,text'
- allow_undefined_flag='${wl}-z,nodefs'
+ no_undefined_flag='$wl-z,text'
+ allow_undefined_flag='$wl-z,nodefs'
archive_cmds_need_lc=no
hardcode_shlibpath_var=no
- hardcode_libdir_flag_spec='${wl}-R,$libdir'
+ hardcode_libdir_flag_spec='$wl-R,$libdir'
hardcode_libdir_separator=':'
link_all_deplibs=yes
- export_dynamic_flag_spec='${wl}-Bexport'
+ export_dynamic_flag_spec='$wl-Bexport'
runpath_var='LD_RUN_PATH'
- if test "$GCC" = yes; then
- archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ if test yes = "$GCC"; then
+ archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
else
- archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
fi
;;
@@ -10677,10 +10601,10 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
;;
esac
- if test x$host_vendor = xsni; then
+ if test sni = "$host_vendor"; then
case $host in
sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- export_dynamic_flag_spec='${wl}-Blargedynsym'
+ export_dynamic_flag_spec='$wl-Blargedynsym'
;;
esac
fi
@@ -10688,7 +10612,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
$as_echo "$ld_shlibs" >&6; }
-test "$ld_shlibs" = no && can_build_shared=no
+test no = "$ld_shlibs" && can_build_shared=no
with_gnu_ld=$with_gnu_ld
@@ -10714,7 +10638,7 @@ x|xyes)
# Assume -lc should be added
archive_cmds_need_lc=yes
- if test "$enable_shared" = yes && test "$GCC" = yes; then
+ if test yes,yes = "$GCC,$enable_shared"; then
case $archive_cmds in
*'~'*)
# FIXME: we may have to deal with multi-command sequences.
@@ -10929,14 +10853,14 @@ esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
$as_echo_n "checking dynamic linker characteristics... " >&6; }
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
case $host_os in
- darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
- *) lt_awk_arg="/^libraries:/" ;;
+ darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
+ *) lt_awk_arg='/^libraries:/' ;;
esac
case $host_os in
- mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
- *) lt_sed_strip_eq="s,=/,/,g" ;;
+ mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;;
+ *) lt_sed_strip_eq='s|=/|/|g' ;;
esac
lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
case $lt_search_path_spec in
@@ -10952,28 +10876,35 @@ if test "$GCC" = yes; then
;;
esac
# Ok, now we have the path, separated by spaces, we can step through it
- # and add multilib dir if necessary.
+ # and add multilib dir if necessary...
lt_tmp_lt_search_path_spec=
- lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ # ...but if some path component already ends with the multilib dir we assume
+ # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
+ case "$lt_multi_os_dir; $lt_search_path_spec " in
+ "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
+ lt_multi_os_dir=
+ ;;
+ esac
for lt_sys_path in $lt_search_path_spec; do
- if test -d "$lt_sys_path/$lt_multi_os_dir"; then
- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
- else
+ if test -d "$lt_sys_path$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
+ elif test -n "$lt_multi_os_dir"; then
test -d "$lt_sys_path" && \
lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
fi
done
lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
- lt_foo="";
- lt_count=0;
+BEGIN {RS = " "; FS = "/|\n";} {
+ lt_foo = "";
+ lt_count = 0;
for (lt_i = NF; lt_i > 0; lt_i--) {
if ($lt_i != "" && $lt_i != ".") {
if ($lt_i == "..") {
lt_count++;
} else {
if (lt_count == 0) {
- lt_foo="/" $lt_i lt_foo;
+ lt_foo = "/" $lt_i lt_foo;
} else {
lt_count--;
}
@@ -10987,7 +10918,7 @@ BEGIN {RS=" "; FS="/|\n";} {
# for these hosts.
case $host_os in
mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
- $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+ $SED 's|/\([A-Za-z]:\)|\1|g'` ;;
esac
sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
else
@@ -10996,7 +10927,7 @@ fi
library_names_spec=
libname_spec='lib$name'
soname_spec=
-shrext_cmds=".so"
+shrext_cmds=.so
postinstall_cmds=
postuninstall_cmds=
finish_cmds=
@@ -11016,11 +10947,11 @@ need_version=unknown
case $host_os in
aix3*)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
shlibpath_var=LIBPATH
# AIX 3 has no versioning support, so we append a major version to the name.
- soname_spec='${libname}${release}${shared_ext}$major'
+ soname_spec='$libname$release$shared_ext$major'
;;
aix[4-9]*)
@@ -11028,40 +10959,40 @@ aix[4-9]*)
need_lib_prefix=no
need_version=no
hardcode_into_libs=yes
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 supports IA64
- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
else
# With GCC up to 2.95.x, collect2 would create an import file
# for dependence libraries. The import file would start with
- # the line `#! .'. This would cause the generated library to
- # depend on `.', always an invalid library. This was fixed in
+ # the line '#! .'. This would cause the generated library to
+ # depend on '.', always an invalid library. This was fixed in
# development snapshots of GCC prior to 3.0.
case $host_os in
aix4 | aix4.[01] | aix4.[01].*)
if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
echo ' yes '
- echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
:
else
can_build_shared=no
fi
;;
esac
- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
# soname into executable. Probably we can add versioning support to
# collect2, so additional links can be useful in future.
- if test "$aix_use_runtimelinking" = yes; then
+ if test yes = "$aix_use_runtimelinking"; then
# If using run time linking (on AIX 4.2 or later) use lib<name>.so
# instead of lib<name>.a to let people know that these are not
# typical AIX shared libraries.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
else
# We preserve .a as extension for shared libraries through AIX4.2
# and later when we are not doing run time linking.
- library_names_spec='${libname}${release}.a $libname.a'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release.a $libname.a'
+ soname_spec='$libname$release$shared_ext$major'
fi
shlibpath_var=LIBPATH
fi
@@ -11072,18 +11003,18 @@ amigaos*)
powerpc)
# Since July 2007 AmigaOS4 officially supports .so libraries.
# When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
;;
m68k)
library_names_spec='$libname.ixlibrary $libname.a'
# Create ${libname}_ixlibrary.a entries in /sys/libs.
- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
;;
esac
;;
beos*)
- library_names_spec='${libname}${shared_ext}'
+ library_names_spec='$libname$shared_ext'
dynamic_linker="$host_os ld.so"
shlibpath_var=LIBRARY_PATH
;;
@@ -11091,8 +11022,8 @@ beos*)
bsdi[45]*)
version_type=linux # correct to gnu/linux during the next big refactor
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
shlibpath_var=LD_LIBRARY_PATH
sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
@@ -11104,7 +11035,7 @@ bsdi[45]*)
cygwin* | mingw* | pw32* | cegcc*)
version_type=windows
- shrext_cmds=".dll"
+ shrext_cmds=.dll
need_version=no
need_lib_prefix=no
@@ -11113,8 +11044,8 @@ cygwin* | mingw* | pw32* | cegcc*)
# gcc
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ postinstall_cmds='base_file=`basename \$file`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
dldir=$destdir/`dirname \$dlpath`~
test -d \$dldir || mkdir -p \$dldir~
$install_prog $dir/$dlname \$dldir/$dlname~
@@ -11130,17 +11061,17 @@ cygwin* | mingw* | pw32* | cegcc*)
case $host_os in
cygwin*)
# Cygwin DLLs use 'cyg' prefix rather than 'lib'
- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
;;
mingw* | cegcc*)
# MinGW DLLs use traditional 'lib' prefix
- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
;;
pw32*)
# pw32 DLLs use 'pw' prefix rather than 'lib'
- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
;;
esac
dynamic_linker='Win32 ld.exe'
@@ -11149,8 +11080,8 @@ cygwin* | mingw* | pw32* | cegcc*)
*,cl*)
# Native MSVC
libname_spec='$name'
- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
- library_names_spec='${libname}.dll.lib'
+ soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+ library_names_spec='$libname.dll.lib'
case $build_os in
mingw*)
@@ -11177,7 +11108,7 @@ cygwin* | mingw* | pw32* | cegcc*)
sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
;;
*)
- sys_lib_search_path_spec="$LIB"
+ sys_lib_search_path_spec=$LIB
if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
# It is most probably a Windows format PATH.
sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
@@ -11190,8 +11121,8 @@ cygwin* | mingw* | pw32* | cegcc*)
esac
# DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ postinstall_cmds='base_file=`basename \$file`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
dldir=$destdir/`dirname \$dlpath`~
test -d \$dldir || mkdir -p \$dldir~
$install_prog $dir/$dlname \$dldir/$dlname'
@@ -11204,7 +11135,7 @@ cygwin* | mingw* | pw32* | cegcc*)
*)
# Assume MSVC wrapper
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
dynamic_linker='Win32 ld.exe'
;;
esac
@@ -11217,8 +11148,8 @@ darwin* | rhapsody*)
version_type=darwin
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
- soname_spec='${libname}${release}${major}$shared_ext'
+ library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+ soname_spec='$libname$release$major$shared_ext'
shlibpath_overrides_runpath=yes
shlibpath_var=DYLD_LIBRARY_PATH
shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
@@ -11231,8 +11162,8 @@ dgux*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
;;
@@ -11250,12 +11181,12 @@ freebsd* | dragonfly*)
version_type=freebsd-$objformat
case $version_type in
freebsd-elf*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
need_version=no
need_lib_prefix=no
;;
freebsd-*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
need_version=yes
;;
esac
@@ -11285,10 +11216,10 @@ haiku*)
need_lib_prefix=no
need_version=no
dynamic_linker="$host_os runtime_loader"
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LIBRARY_PATH
- shlibpath_overrides_runpath=yes
+ shlibpath_overrides_runpath=no
sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
hardcode_into_libs=yes
;;
@@ -11306,9 +11237,9 @@ hpux9* | hpux10* | hpux11*)
dynamic_linker="$host_os dld.so"
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- if test "X$HPUX_IA64_MODE" = X32; then
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ if test 32 = "$HPUX_IA64_MODE"; then
sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
else
sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
@@ -11321,8 +11252,8 @@ hpux9* | hpux10* | hpux11*)
dynamic_linker="$host_os dld.sl"
shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
;;
@@ -11331,8 +11262,8 @@ hpux9* | hpux10* | hpux11*)
dynamic_linker="$host_os dld.sl"
shlibpath_var=SHLIB_PATH
shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
;;
esac
# HP-UX runs *really* slowly unless shared libraries are mode 555, ...
@@ -11345,8 +11276,8 @@ interix[3-9]*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
@@ -11357,7 +11288,7 @@ irix5* | irix6* | nonstopux*)
case $host_os in
nonstopux*) version_type=nonstopux ;;
*)
- if test "$lt_cv_prog_gnu_ld" = yes; then
+ if test yes = "$lt_cv_prog_gnu_ld"; then
version_type=linux # correct to gnu/linux during the next big refactor
else
version_type=irix
@@ -11365,8 +11296,8 @@ irix5* | irix6* | nonstopux*)
esac
need_lib_prefix=no
need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='$libname$release$shared_ext$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
case $host_os in
irix5* | nonstopux*)
libsuff= shlibsuff=
@@ -11385,8 +11316,8 @@ irix5* | irix6* | nonstopux*)
esac
shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
shlibpath_overrides_runpath=no
- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+ sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
hardcode_into_libs=yes
;;
@@ -11395,13 +11326,33 @@ linux*oldld* | linux*aout* | linux*coff*)
dynamic_linker=no
;;
+linux*android*)
+ version_type=none # Android doesn't support versioned libraries.
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext'
+ soname_spec='$libname$release$shared_ext'
+ finish_cmds=
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ dynamic_linker='Android linker'
+ # Don't embed -rpath directories since the linker doesn't support them.
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+
# This must be glibc/ELF.
linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
@@ -11460,29 +11411,17 @@ fi
dynamic_linker='GNU/Linux ld.so'
;;
-netbsdelf*-gnu)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- dynamic_linker='NetBSD ld.elf_so'
- ;;
-
netbsd*)
version_type=sunos
need_lib_prefix=no
need_version=no
if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
dynamic_linker='NetBSD (a.out) ld.so'
else
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
dynamic_linker='NetBSD ld.elf_so'
fi
shlibpath_var=LD_LIBRARY_PATH
@@ -11492,7 +11431,7 @@ netbsd*)
newsos6)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
;;
@@ -11501,45 +11440,34 @@ newsos6)
version_type=qnx
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
dynamic_linker='ldqnx.so'
;;
-openbsd*)
+openbsd* | bitrig*)
version_type=sunos
- sys_lib_dlsearch_path_spec="/usr/lib"
+ sys_lib_dlsearch_path_spec=/usr/lib
need_lib_prefix=no
- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
- case $host_os in
- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
- *) need_version=no ;;
- esac
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- case $host_os in
- openbsd2.[89] | openbsd2.[89].*)
- shlibpath_overrides_runpath=no
- ;;
- *)
- shlibpath_overrides_runpath=yes
- ;;
- esac
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+ need_version=no
else
- shlibpath_overrides_runpath=yes
+ need_version=yes
fi
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
;;
os2*)
libname_spec='$name'
- shrext_cmds=".dll"
+ shrext_cmds=.dll
need_lib_prefix=no
- library_names_spec='$libname${shared_ext} $libname.a'
+ library_names_spec='$libname$shared_ext $libname.a'
dynamic_linker='OS/2 ld.exe'
shlibpath_var=LIBPATH
;;
@@ -11548,11 +11476,11 @@ osf3* | osf4* | osf5*)
version_type=osf
need_lib_prefix=no
need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='$libname$release$shared_ext$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
;;
rdos*)
@@ -11563,8 +11491,8 @@ solaris*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
@@ -11574,11 +11502,11 @@ solaris*)
sunos4*)
version_type=sunos
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
- if test "$with_gnu_ld" = yes; then
+ if test yes = "$with_gnu_ld"; then
need_lib_prefix=no
fi
need_version=yes
@@ -11586,8 +11514,8 @@ sunos4*)
sysv4 | sysv4.3*)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
case $host_vendor in
sni)
@@ -11608,10 +11536,10 @@ sysv4 | sysv4.3*)
;;
sysv4*MP*)
- if test -d /usr/nec ;then
+ if test -d /usr/nec; then
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
- soname_spec='$libname${shared_ext}.$major'
+ library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+ soname_spec='$libname$shared_ext.$major'
shlibpath_var=LD_LIBRARY_PATH
fi
;;
@@ -11620,12 +11548,12 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
version_type=freebsd-elf
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
- if test "$with_gnu_ld" = yes; then
+ if test yes = "$with_gnu_ld"; then
sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
else
sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
@@ -11643,7 +11571,7 @@ tpf*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
@@ -11651,8 +11579,8 @@ tpf*)
uts4*)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
;;
@@ -11662,18 +11590,18 @@ uts4*)
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
+test no = "$dynamic_linker" && can_build_shared=no
variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
fi
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
- sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+ sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
- sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+ sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
fi
@@ -11772,15 +11700,15 @@ $as_echo_n "checking how to hardcode library paths into programs... " >&6; }
hardcode_action=
if test -n "$hardcode_libdir_flag_spec" ||
test -n "$runpath_var" ||
- test "X$hardcode_automatic" = "Xyes" ; then
+ test yes = "$hardcode_automatic"; then
# We can hardcode non-existent directories.
- if test "$hardcode_direct" != no &&
+ if test no != "$hardcode_direct" &&
# If the only mechanism to avoid hardcoding is shlibpath_var, we
# have to relink, otherwise we might link with an installed library
# when we should be linking with a yet-to-be-installed one
- ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
- test "$hardcode_minus_L" != no; then
+ ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" &&
+ test no != "$hardcode_minus_L"; then
# Linking always hardcodes the temporary library directory.
hardcode_action=relink
else
@@ -11795,12 +11723,12 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
$as_echo "$hardcode_action" >&6; }
-if test "$hardcode_action" = relink ||
- test "$inherit_rpath" = yes; then
+if test relink = "$hardcode_action" ||
+ test yes = "$inherit_rpath"; then
# Fast installation is not supported
enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
- test "$enable_shared" = no; then
+elif test yes = "$shlibpath_overrides_runpath" ||
+ test no = "$enable_shared"; then
# Fast installation is not necessary
enable_fast_install=needless
fi
@@ -11810,7 +11738,7 @@ fi
- if test "x$enable_dlopen" != xyes; then
+ if test yes != "$enable_dlopen"; then
enable_dlopen=unknown
enable_dlopen_self=unknown
enable_dlopen_self_static=unknown
@@ -11820,23 +11748,23 @@ else
case $host_os in
beos*)
- lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen=load_add_on
lt_cv_dlopen_libs=
lt_cv_dlopen_self=yes
;;
mingw* | pw32* | cegcc*)
- lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen=LoadLibrary
lt_cv_dlopen_libs=
;;
cygwin*)
- lt_cv_dlopen="dlopen"
+ lt_cv_dlopen=dlopen
lt_cv_dlopen_libs=
;;
darwin*)
- # if libdl is installed we need to link against it
+ # if libdl is installed we need to link against it
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
$as_echo_n "checking for dlopen in -ldl... " >&6; }
if ${ac_cv_lib_dl_dlopen+:} false; then :
@@ -11874,10 +11802,10 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+ lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
else
- lt_cv_dlopen="dyld"
+ lt_cv_dlopen=dyld
lt_cv_dlopen_libs=
lt_cv_dlopen_self=yes
@@ -11885,10 +11813,18 @@ fi
;;
+ tpf*)
+ # Don't try to run any link tests for TPF. We know it's impossible
+ # because TPF is a cross-compiler, and we know how we open DSOs.
+ lt_cv_dlopen=dlopen
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=no
+ ;;
+
*)
ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
if test "x$ac_cv_func_shl_load" = xyes; then :
- lt_cv_dlopen="shl_load"
+ lt_cv_dlopen=shl_load
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
$as_echo_n "checking for shl_load in -ldld... " >&6; }
@@ -11927,11 +11863,11 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+ lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld
else
ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
if test "x$ac_cv_func_dlopen" = xyes; then :
- lt_cv_dlopen="dlopen"
+ lt_cv_dlopen=dlopen
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
$as_echo_n "checking for dlopen in -ldl... " >&6; }
@@ -11970,7 +11906,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+ lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
$as_echo_n "checking for dlopen in -lsvld... " >&6; }
@@ -12009,7 +11945,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+ lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
$as_echo_n "checking for dld_link in -ldld... " >&6; }
@@ -12048,7 +11984,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+ lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld
fi
@@ -12069,21 +12005,21 @@ fi
;;
esac
- if test "x$lt_cv_dlopen" != xno; then
- enable_dlopen=yes
- else
+ if test no = "$lt_cv_dlopen"; then
enable_dlopen=no
+ else
+ enable_dlopen=yes
fi
case $lt_cv_dlopen in
dlopen)
- save_CPPFLAGS="$CPPFLAGS"
- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+ save_CPPFLAGS=$CPPFLAGS
+ test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
- save_LDFLAGS="$LDFLAGS"
+ save_LDFLAGS=$LDFLAGS
wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
- save_LIBS="$LIBS"
+ save_LIBS=$LIBS
LIBS="$lt_cv_dlopen_libs $LIBS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
@@ -12091,7 +12027,7 @@ $as_echo_n "checking whether a program can dlopen itself... " >&6; }
if ${lt_cv_dlopen_self+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test "$cross_compiling" = yes; then :
+ if test yes = "$cross_compiling"; then :
lt_cv_dlopen_self=cross
else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
@@ -12140,7 +12076,7 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
int fnord () __attribute__((visibility("default")));
#endif
@@ -12170,7 +12106,7 @@ _LT_EOF
(eval $ac_link) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+ test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
(./conftest; exit; ) >&5 2>/dev/null
lt_status=$?
case x$lt_status in
@@ -12190,14 +12126,14 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
$as_echo "$lt_cv_dlopen_self" >&6; }
- if test "x$lt_cv_dlopen_self" = xyes; then
+ if test yes = "$lt_cv_dlopen_self"; then
wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
if ${lt_cv_dlopen_self_static+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test "$cross_compiling" = yes; then :
+ if test yes = "$cross_compiling"; then :
lt_cv_dlopen_self_static=cross
else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
@@ -12246,7 +12182,7 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
int fnord () __attribute__((visibility("default")));
#endif
@@ -12276,7 +12212,7 @@ _LT_EOF
(eval $ac_link) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+ test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
(./conftest; exit; ) >&5 2>/dev/null
lt_status=$?
case x$lt_status in
@@ -12297,9 +12233,9 @@ fi
$as_echo "$lt_cv_dlopen_self_static" >&6; }
fi
- CPPFLAGS="$save_CPPFLAGS"
- LDFLAGS="$save_LDFLAGS"
- LIBS="$save_LIBS"
+ CPPFLAGS=$save_CPPFLAGS
+ LDFLAGS=$save_LDFLAGS
+ LIBS=$save_LIBS
;;
esac
@@ -12343,7 +12279,7 @@ else
# FIXME - insert some real tests, host_os isn't really good enough
case $host_os in
darwin*)
- if test -n "$STRIP" ; then
+ if test -n "$STRIP"; then
striplib="$STRIP -x"
old_striplib="$STRIP -S"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
@@ -12371,7 +12307,7 @@ fi
- # Report which library types will actually be built
+ # Report what library types will actually be built
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
$as_echo_n "checking if libtool supports shared libraries... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
@@ -12379,13 +12315,13 @@ $as_echo "$can_build_shared" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
$as_echo_n "checking whether to build shared libraries... " >&6; }
- test "$can_build_shared" = "no" && enable_shared=no
+ test no = "$can_build_shared" && enable_shared=no
# On AIX, shared libraries and static libraries use the same namespace, and
# are all built from PIC.
case $host_os in
aix3*)
- test "$enable_shared" = yes && enable_static=no
+ test yes = "$enable_shared" && enable_static=no
if test -n "$RANLIB"; then
archive_cmds="$archive_cmds~\$RANLIB \$lib"
postinstall_cmds='$RANLIB $lib'
@@ -12393,8 +12329,8 @@ $as_echo_n "checking whether to build shared libraries... " >&6; }
;;
aix[4-9]*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
+ if test ia64 != "$host_cpu" && test no = "$aix_use_runtimelinking"; then
+ test yes = "$enable_shared" && enable_static=no
fi
;;
esac
@@ -12404,7 +12340,7 @@ $as_echo "$enable_shared" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
$as_echo_n "checking whether to build static libraries... " >&6; }
# Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
+ test yes = "$enable_shared" || enable_static=yes
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
$as_echo "$enable_static" >&6; }
@@ -12418,7 +12354,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-CC="$lt_save_CC"
+CC=$lt_save_CC
@@ -13560,15 +13496,15 @@ fi
func_stripname_cnf ()
{
- case ${2} in
- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+ case $2 in
+ .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;;
+ *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;;
esac
} # func_stripname_cnf
- if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
- (test "X$CXX" != "Xg++"))) ; then
+ if test -n "$CXX" && ( test no != "$CXX" &&
+ ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
+ (test g++ != "$CXX"))); then
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -13747,7 +13683,7 @@ objext_CXX=$objext
# the CXX compiler isn't working. Some variables (like enable_shared)
# are currently assumed to apply to all compilers on this platform,
# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
+if test yes != "$_lt_caught_CXX_error"; then
# Code to be used in simple compile tests
lt_simple_compile_test_code="int some_variable = 0;"
@@ -13822,32 +13758,32 @@ cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
if test -n "$compiler"; then
# We don't want -fno-exception when compiling C++ code, so set the
# no_builtin_flag separately
- if test "$GXX" = yes; then
+ if test yes = "$GXX"; then
lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
else
lt_prog_compiler_no_builtin_flag_CXX=
fi
- if test "$GXX" = yes; then
+ if test yes = "$GXX"; then
# Set up default GNU C++ configuration
# Check whether --with-gnu-ld was given.
if test "${with_gnu_ld+set}" = set; then :
- withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+ withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
else
with_gnu_ld=no
fi
ac_prog=ld
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
# Check if gcc -print-prog-name=ld gives a path.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
$as_echo_n "checking for ld used by $CC... " >&6; }
case $host in
*-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
+ # gcc leaves a trailing carriage return, which upsets mingw
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
*)
ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
@@ -13861,7 +13797,7 @@ $as_echo_n "checking for ld used by $CC... " >&6; }
while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
done
- test -z "$LD" && LD="$ac_prog"
+ test -z "$LD" && LD=$ac_prog
;;
"")
# If it fails, then pretend we aren't using GCC.
@@ -13872,7 +13808,7 @@ $as_echo_n "checking for ld used by $CC... " >&6; }
with_gnu_ld=unknown
;;
esac
-elif test "$with_gnu_ld" = yes; then
+elif test yes = "$with_gnu_ld"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
$as_echo_n "checking for GNU ld... " >&6; }
else
@@ -13883,32 +13819,32 @@ if ${lt_cv_path_LD+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -z "$LD"; then
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
for ac_dir in $PATH; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
test -z "$ac_dir" && ac_dir=.
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- lt_cv_path_LD="$ac_dir/$ac_prog"
+ lt_cv_path_LD=$ac_dir/$ac_prog
# Check to see if the program is GNU ld. I'd rather use --version,
# but apparently some variants of GNU ld only accept -v.
# Break only if it was the GNU/non-GNU ld that we prefer.
case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break
+ test no != "$with_gnu_ld" && break
;;
*)
- test "$with_gnu_ld" != yes && break
+ test yes != "$with_gnu_ld" && break
;;
esac
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
else
- lt_cv_path_LD="$LD" # Let the user override the test with a path.
+ lt_cv_path_LD=$LD # Let the user override the test with a path.
fi
fi
-LD="$lt_cv_path_LD"
+LD=$lt_cv_path_LD
if test -n "$LD"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
$as_echo "$LD" >&6; }
@@ -13944,22 +13880,22 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
# Check if GNU C++ uses GNU ld as the underlying linker, since the
# archiving commands below assume that GNU ld is being used.
- if test "$with_gnu_ld" = yes; then
- archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ if test yes = "$with_gnu_ld"; then
+ archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
- hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
- export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+ export_dynamic_flag_spec_CXX='$wl--export-dynamic'
# If archive_cmds runs LD, not CC, wlarc should be empty
# XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
# investigate it a little bit more. (MM)
- wlarc='${wl}'
+ wlarc='$wl'
# ancient GNU ld didn't support --whole-archive et. al.
if eval "`$CC -print-prog-name=ld` --help 2>&1" |
$GREP 'no-whole-archive' > /dev/null; then
- whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
else
whole_archive_flag_spec_CXX=
fi
@@ -13996,12 +13932,12 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
ld_shlibs_CXX=no
;;
aix[4-9]*)
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
aix_use_runtimelinking=no
exp_sym_flag='-Bexport'
- no_entry_flag=""
+ no_entry_flag=
else
aix_use_runtimelinking=no
@@ -14035,13 +13971,13 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
hardcode_direct_absolute_CXX=yes
hardcode_libdir_separator_CXX=':'
link_all_deplibs_CXX=yes
- file_list_spec_CXX='${wl}-f,'
+ file_list_spec_CXX='$wl-f,'
- if test "$GXX" = yes; then
+ if test yes = "$GXX"; then
case $host_os in aix4.[012]|aix4.[012].*)
# We only want to do this on AIX 4.2 and lower, the check
# below for broken collect2 doesn't work under 4.3+
- collect2name=`${CC} -print-prog-name=collect2`
+ collect2name=`$CC -print-prog-name=collect2`
if test -f "$collect2name" &&
strings "$collect2name" | $GREP resolve_lib_name >/dev/null
then
@@ -14059,36 +13995,36 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
fi
esac
shared_flag='-shared'
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag="$shared_flag "'${wl}-G'
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag=$shared_flag' $wl-G'
fi
else
# not using gcc
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
# chokes on -Wl,-G. The following line is correct:
shared_flag='-G'
else
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag='${wl}-G'
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag='$wl-G'
else
- shared_flag='${wl}-bM:SRE'
+ shared_flag='$wl-bM:SRE'
fi
fi
fi
- export_dynamic_flag_spec_CXX='${wl}-bexpall'
+ export_dynamic_flag_spec_CXX='$wl-bexpall'
# It seems that -bexpall does not export symbols beginning with
# underscore (_), so it is better to generate a list of symbols to
# export.
always_export_symbols_CXX=yes
- if test "$aix_use_runtimelinking" = yes; then
+ if test yes = "$aix_use_runtimelinking"; then
# Warning - without using the other runtime loading flags (-brtl),
# -berok will link without error, but may produce a broken library.
allow_undefined_flag_CXX='-berok'
# Determine the default libpath from the value encoded in an empty
# executable.
- if test "${lt_cv_aix_libpath+set}" = set; then
+ if test set = "${lt_cv_aix_libpath+set}"; then
aix_libpath=$lt_cv_aix_libpath
else
if ${lt_cv_aix_libpath__CXX+:} false; then :
@@ -14123,7 +14059,7 @@ fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
if test -z "$lt_cv_aix_libpath__CXX"; then
- lt_cv_aix_libpath__CXX="/usr/lib:/lib"
+ lt_cv_aix_libpath__CXX=/usr/lib:/lib
fi
fi
@@ -14131,18 +14067,18 @@ fi
aix_libpath=$lt_cv_aix_libpath__CXX
fi
- hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+ hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath"
- archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
else
- if test "$host_cpu" = ia64; then
- hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+ if test ia64 = "$host_cpu"; then
+ hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib'
allow_undefined_flag_CXX="-z nodefs"
- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
else
# Determine the default libpath from the value encoded in an
# empty executable.
- if test "${lt_cv_aix_libpath+set}" = set; then
+ if test set = "${lt_cv_aix_libpath+set}"; then
aix_libpath=$lt_cv_aix_libpath
else
if ${lt_cv_aix_libpath__CXX+:} false; then :
@@ -14177,7 +14113,7 @@ fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
if test -z "$lt_cv_aix_libpath__CXX"; then
- lt_cv_aix_libpath__CXX="/usr/lib:/lib"
+ lt_cv_aix_libpath__CXX=/usr/lib:/lib
fi
fi
@@ -14185,14 +14121,14 @@ fi
aix_libpath=$lt_cv_aix_libpath__CXX
fi
- hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+ hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
# -berok will link without error, but may produce a broken library.
- no_undefined_flag_CXX=' ${wl}-bernotok'
- allow_undefined_flag_CXX=' ${wl}-berok'
- if test "$with_gnu_ld" = yes; then
+ no_undefined_flag_CXX=' $wl-bernotok'
+ allow_undefined_flag_CXX=' $wl-berok'
+ if test yes = "$with_gnu_ld"; then
# We only use this code for GNU lds that support --whole-archive.
- whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
else
# Exported symbols can be pulled into shared objects from archives
whole_archive_flag_spec_CXX='$convenience'
@@ -14200,7 +14136,7 @@ fi
archive_cmds_need_lc_CXX=yes
# This is similar to how AIX traditionally builds its shared
# libraries.
- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $wl-bnoentry $compiler_flags $wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
fi
fi
;;
@@ -14210,7 +14146,7 @@ fi
allow_undefined_flag_CXX=unsupported
# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
# support --undefined. This deserves some investigation. FIXME
- archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
else
ld_shlibs_CXX=no
fi
@@ -14238,57 +14174,58 @@ fi
# Tell ltmain to make .lib files, not .a files.
libext=lib
# Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
+ shrext_cmds=.dll
# FIXME: Setting linknames here is a bad hack.
- archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
- archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
- else
- $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
- fi~
- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
- linknames='
+ archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+ archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then
+ cp "$export_symbols" "$output_objdir/$soname.def";
+ echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+ else
+ $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
# The linker will not automatically build a static lib if we build a DLL.
# _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
enable_shared_with_static_runtimes_CXX=yes
# Don't use ranlib
old_postinstall_cmds_CXX='chmod 644 $oldlib'
postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
- lt_tool_outputfile="@TOOL_OUTPUT@"~
- case $lt_outputfile in
- *.exe|*.EXE) ;;
- *)
- lt_outputfile="$lt_outputfile.exe"
- lt_tool_outputfile="$lt_tool_outputfile.exe"
- ;;
- esac~
- func_to_tool_file "$lt_outputfile"~
- if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
- $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
- $RM "$lt_outputfile.manifest";
- fi'
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile=$lt_outputfile.exe
+ lt_tool_outputfile=$lt_tool_outputfile.exe
+ ;;
+ esac~
+ func_to_tool_file "$lt_outputfile"~
+ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
;;
*)
# g++
# _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
# as there is no search path for DLLs.
hardcode_libdir_flag_spec_CXX='-L$libdir'
- export_dynamic_flag_spec_CXX='${wl}--export-all-symbols'
+ export_dynamic_flag_spec_CXX='$wl--export-all-symbols'
allow_undefined_flag_CXX=unsupported
always_export_symbols_CXX=no
enable_shared_with_static_runtimes_CXX=yes
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- # If the export-symbols file already is a .def file (1st line
- # is EXPORTS), use it as is; otherwise, prepend...
- archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- cp $export_symbols $output_objdir/$soname.def;
- else
- echo EXPORTS > $output_objdir/$soname.def;
- cat $export_symbols >> $output_objdir/$soname.def;
- fi~
- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file, use it as
+ # is; otherwise, prepend EXPORTS...
+ archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
else
ld_shlibs_CXX=no
fi
@@ -14302,27 +14239,27 @@ fi
hardcode_direct_CXX=no
hardcode_automatic_CXX=yes
hardcode_shlibpath_var_CXX=unsupported
- if test "$lt_cv_ld_force_load" = "yes"; then
- whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+ if test yes = "$lt_cv_ld_force_load"; then
+ whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
else
whole_archive_flag_spec_CXX=''
fi
link_all_deplibs_CXX=yes
- allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
+ allow_undefined_flag_CXX=$_lt_dar_allow_undefined
case $cc_basename in
- ifort*) _lt_dar_can_shared=yes ;;
+ ifort*|nagfor*) _lt_dar_can_shared=yes ;;
*) _lt_dar_can_shared=$GCC ;;
esac
- if test "$_lt_dar_can_shared" = "yes"; then
+ if test yes = "$_lt_dar_can_shared"; then
output_verbose_link_cmd=func_echo_all
- archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
- module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
- archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
- module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
- if test "$lt_cv_apple_cc_single_mod" != "yes"; then
- archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
- archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+ archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+ module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+ archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+ module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
+ if test yes != "$lt_cv_apple_cc_single_mod"; then
+ archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
+ archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
fi
else
@@ -14366,14 +14303,14 @@ fi
;;
haiku*)
- archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
link_all_deplibs_CXX=yes
;;
hpux9*)
- hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
hardcode_libdir_separator_CXX=:
- export_dynamic_flag_spec_CXX='${wl}-E'
+ export_dynamic_flag_spec_CXX='$wl-E'
hardcode_direct_CXX=yes
hardcode_minus_L_CXX=yes # Not in the search PATH,
# but as the default
@@ -14385,7 +14322,7 @@ fi
ld_shlibs_CXX=no
;;
aCC*)
- archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
@@ -14394,11 +14331,11 @@ fi
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
- if test "$GXX" = yes; then
- archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ if test yes = "$GXX"; then
+ archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
else
# FIXME: insert proper C++ library support
ld_shlibs_CXX=no
@@ -14408,15 +14345,15 @@ fi
;;
hpux10*|hpux11*)
- if test $with_gnu_ld = no; then
- hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ if test no = "$with_gnu_ld"; then
+ hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
hardcode_libdir_separator_CXX=:
case $host_cpu in
hppa*64*|ia64*)
;;
*)
- export_dynamic_flag_spec_CXX='${wl}-E'
+ export_dynamic_flag_spec_CXX='$wl-E'
;;
esac
fi
@@ -14442,13 +14379,13 @@ fi
aCC*)
case $host_cpu in
hppa*64*)
- archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
ia64*)
- archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
*)
- archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
esac
# Commands to make compiler produce verbose output that lists
@@ -14459,20 +14396,20 @@ fi
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
- if test "$GXX" = yes; then
- if test $with_gnu_ld = no; then
+ if test yes = "$GXX"; then
+ if test no = "$with_gnu_ld"; then
case $host_cpu in
hppa*64*)
- archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
ia64*)
- archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
*)
- archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
esac
fi
@@ -14487,22 +14424,22 @@ fi
interix[3-9]*)
hardcode_direct_CXX=no
hardcode_shlibpath_var_CXX=no
- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
- export_dynamic_flag_spec_CXX='${wl}-E'
+ hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='$wl-E'
# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
# Instead, shared libraries are loaded at an image base (0x10000000 by
# default) and relocated if they conflict, which is a slow very memory
# consuming and fragmenting process. To avoid this, we pick a random,
# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
# time. Moving up from 0x10000000 also allows more sbrk(2) space.
- archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
irix5* | irix6*)
case $cc_basename in
CC*)
# SGI C++
- archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
# Archives containing C++ object files must be created using
# "CC -ar", where "CC" is the IRIX C++ compiler. This is
@@ -14511,17 +14448,17 @@ fi
old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
;;
*)
- if test "$GXX" = yes; then
- if test "$with_gnu_ld" = no; then
- archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ if test yes = "$GXX"; then
+ if test no = "$with_gnu_ld"; then
+ archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
else
- archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+ archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib'
fi
fi
link_all_deplibs_CXX=yes
;;
esac
- hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
hardcode_libdir_separator_CXX=:
inherit_rpath_CXX=yes
;;
@@ -14534,8 +14471,8 @@ fi
# KCC will only create a shared library if the output file
# ends with ".so" (or ".sl" for HP-UX), so rename the library
# to its proper name (with version) after linking.
- archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
- archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib'
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
@@ -14544,10 +14481,10 @@ fi
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
- export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='$wl--export-dynamic'
# Archives containing C++ object files must be created using
# "CC -Bstatic", where "CC" is the KAI C++ compiler.
@@ -14561,59 +14498,59 @@ fi
# earlier do not add the objects themselves.
case `$CC -V 2>&1` in
*"Version 7."*)
- archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
;;
*) # Version 8.0 or newer
tmp_idyn=
case $host_cpu in
ia64*) tmp_idyn=' -i_dynamic';;
esac
- archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
;;
esac
archive_cmds_need_lc_CXX=no
- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
- export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
- whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+ whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
;;
pgCC* | pgcpp*)
# Portland Group C++ compiler
case `$CC -V` in
*pgCC\ [1-5].* | *pgcpp\ [1-5].*)
prelink_cmds_CXX='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
- compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
old_archive_cmds_CXX='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
- $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
- $RANLIB $oldlib'
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+ $RANLIB $oldlib'
archive_cmds_CXX='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
archive_expsym_cmds_CXX='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
;;
*) # Version 6 and above use weak symbols
- archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
- archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
;;
esac
- hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
- export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
- whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir'
+ export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+ whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
;;
cxx*)
# Compaq C++
- archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols'
runpath_var=LD_RUN_PATH
hardcode_libdir_flag_spec_CXX='-rpath $libdir'
@@ -14627,18 +14564,18 @@ fi
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
;;
xl* | mpixl* | bgxl*)
# IBM XL 8.0 on PPC, with GNU ld
- hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
- export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
- archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
+ hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+ export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+ archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ if test yes = "$supports_anon_versioning"; then
archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
fi
;;
*)
@@ -14646,10 +14583,10 @@ fi
*Sun\ C*)
# Sun C++ 5.9
no_undefined_flag_CXX=' -zdefs'
- archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+ archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
hardcode_libdir_flag_spec_CXX='-R$libdir'
- whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
compiler_needs_object_CXX=yes
# Not sure whether something based on
@@ -14707,22 +14644,17 @@ fi
ld_shlibs_CXX=yes
;;
- openbsd2*)
- # C++ shared libraries are fairly broken
- ld_shlibs_CXX=no
- ;;
-
- openbsd*)
+ openbsd* | bitrig*)
if test -f /usr/libexec/ld.so; then
hardcode_direct_CXX=yes
hardcode_shlibpath_var_CXX=no
hardcode_direct_absolute_CXX=yes
archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
- export_dynamic_flag_spec_CXX='${wl}-E'
- whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
+ export_dynamic_flag_spec_CXX='$wl-E'
+ whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
fi
output_verbose_link_cmd=func_echo_all
else
@@ -14738,9 +14670,9 @@ fi
# KCC will only create a shared library if the output file
# ends with ".so" (or ".sl" for HP-UX), so rename the library
# to its proper name (with version) after linking.
- archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
hardcode_libdir_separator_CXX=:
# Archives containing C++ object files must be created using
@@ -14758,17 +14690,17 @@ fi
cxx*)
case $host in
osf3*)
- allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
+ archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+ hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
;;
*)
allow_undefined_flag_CXX=' -expect_unresolved \*'
- archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
- echo "-hidden">> $lib.exp~
- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
- $RM $lib.exp'
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
+ $RM $lib.exp'
hardcode_libdir_flag_spec_CXX='-rpath $libdir'
;;
esac
@@ -14783,21 +14715,21 @@ fi
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
- allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ if test yes,no = "$GXX,$with_gnu_ld"; then
+ allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
case $host in
osf3*)
- archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
;;
*)
- archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
;;
esac
- hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
hardcode_libdir_separator_CXX=:
# Commands to make compiler produce verbose output that lists
@@ -14843,9 +14775,9 @@ fi
# Sun C++ 4.2, 5.x and Centerline C++
archive_cmds_need_lc_CXX=yes
no_undefined_flag_CXX=' -zdefs'
- archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
hardcode_libdir_flag_spec_CXX='-R$libdir'
hardcode_shlibpath_var_CXX=no
@@ -14853,7 +14785,7 @@ fi
solaris2.[0-5] | solaris2.[0-5].*) ;;
*)
# The compiler driver will combine and reorder linker options,
- # but understands `-z linker_flag'.
+ # but understands '-z linker_flag'.
# Supported since Solaris 2.6 (maybe 2.5.1?)
whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
;;
@@ -14870,30 +14802,30 @@ fi
;;
gcx*)
# Green Hills C++ Compiler
- archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
# The C++ compiler must be used to create the archive.
old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
;;
*)
# GNU C++ compiler with Solaris linker
- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
- no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+ if test yes,no = "$GXX,$with_gnu_ld"; then
+ no_undefined_flag_CXX=' $wl-z ${wl}defs'
if $CC --version | $GREP -v '^2\.7' > /dev/null; then
- archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
else
- # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # g++ 2.7 appears to require '-G' NOT '-shared' on this
# platform.
- archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
@@ -14901,11 +14833,11 @@ fi
output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
fi
- hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+ hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir'
case $host_os in
solaris2.[0-5] | solaris2.[0-5].*) ;;
*)
- whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
;;
esac
fi
@@ -14914,52 +14846,52 @@ fi
;;
sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
- no_undefined_flag_CXX='${wl}-z,text'
+ no_undefined_flag_CXX='$wl-z,text'
archive_cmds_need_lc_CXX=no
hardcode_shlibpath_var_CXX=no
runpath_var='LD_RUN_PATH'
case $cc_basename in
CC*)
- archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
*)
- archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
esac
;;
sysv5* | sco3.2v5* | sco5v6*)
- # Note: We can NOT use -z defs as we might desire, because we do not
+ # Note: We CANNOT use -z defs as we might desire, because we do not
# link with -lc, and that would cause any symbols used from libc to
# always be unresolved, which means just about no library would
# ever link correctly. If we're not using GNU ld we use -z text
# though, which does catch some bad symbols but isn't as heavy-handed
# as -z defs.
- no_undefined_flag_CXX='${wl}-z,text'
- allow_undefined_flag_CXX='${wl}-z,nodefs'
+ no_undefined_flag_CXX='$wl-z,text'
+ allow_undefined_flag_CXX='$wl-z,nodefs'
archive_cmds_need_lc_CXX=no
hardcode_shlibpath_var_CXX=no
- hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
+ hardcode_libdir_flag_spec_CXX='$wl-R,$libdir'
hardcode_libdir_separator_CXX=':'
link_all_deplibs_CXX=yes
- export_dynamic_flag_spec_CXX='${wl}-Bexport'
+ export_dynamic_flag_spec_CXX='$wl-Bexport'
runpath_var='LD_RUN_PATH'
case $cc_basename in
CC*)
- archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
- '"$old_archive_cmds_CXX"
+ '"$old_archive_cmds_CXX"
reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
- '"$reload_cmds_CXX"
+ '"$reload_cmds_CXX"
;;
*)
- archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
esac
;;
@@ -14991,10 +14923,10 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
$as_echo "$ld_shlibs_CXX" >&6; }
- test "$ld_shlibs_CXX" = no && can_build_shared=no
+ test no = "$ld_shlibs_CXX" && can_build_shared=no
- GCC_CXX="$GXX"
- LD_CXX="$LD"
+ GCC_CXX=$GXX
+ LD_CXX=$LD
## CAVEAT EMPTOR:
## There is no encapsulation within the following macros, do not change
@@ -15038,13 +14970,13 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
pre_test_object_deps_done=no
for p in `eval "$output_verbose_link_cmd"`; do
- case ${prev}${p} in
+ case $prev$p in
-L* | -R* | -l*)
# Some compilers place space between "-{L,R}" and the path.
# Remove the space.
- if test $p = "-L" ||
- test $p = "-R"; then
+ if test x-L = "$p" ||
+ test x-R = "$p"; then
prev=$p
continue
fi
@@ -15060,16 +14992,16 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
case $p in
=*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
esac
- if test "$pre_test_object_deps_done" = no; then
- case ${prev} in
+ if test no = "$pre_test_object_deps_done"; then
+ case $prev in
-L | -R)
# Internal compiler library paths should come after those
# provided the user. The postdeps already come after the
# user supplied libs so there is no need to process them.
if test -z "$compiler_lib_search_path_CXX"; then
- compiler_lib_search_path_CXX="${prev}${p}"
+ compiler_lib_search_path_CXX=$prev$p
else
- compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+ compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p"
fi
;;
# The "-l" case would never come before the object being
@@ -15077,9 +15009,9 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
esac
else
if test -z "$postdeps_CXX"; then
- postdeps_CXX="${prev}${p}"
+ postdeps_CXX=$prev$p
else
- postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+ postdeps_CXX="${postdeps_CXX} $prev$p"
fi
fi
prev=
@@ -15094,15 +15026,15 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
continue
fi
- if test "$pre_test_object_deps_done" = no; then
+ if test no = "$pre_test_object_deps_done"; then
if test -z "$predep_objects_CXX"; then
- predep_objects_CXX="$p"
+ predep_objects_CXX=$p
else
predep_objects_CXX="$predep_objects_CXX $p"
fi
else
if test -z "$postdep_objects_CXX"; then
- postdep_objects_CXX="$p"
+ postdep_objects_CXX=$p
else
postdep_objects_CXX="$postdep_objects_CXX $p"
fi
@@ -15148,7 +15080,7 @@ linux*)
;;
esac
- if test "$solaris_use_stlport4" != yes; then
+ if test yes != "$solaris_use_stlport4"; then
postdeps_CXX='-library=Cstd -library=Crun'
fi
;;
@@ -15171,7 +15103,7 @@ solaris*)
# Adding this requires a known-good setup of shared libraries for
# Sun compiler versions before 5.6, else PIC objects from an old
# archive will be linked into the output, leading to subtle bugs.
- if test "$solaris_use_stlport4" != yes; then
+ if test yes != "$solaris_use_stlport4"; then
postdeps_CXX='-library=Cstd -library=Crun'
fi
;;
@@ -15185,7 +15117,7 @@ case " $postdeps_CXX " in
esac
compiler_lib_search_dirs_CXX=
if test -n "${compiler_lib_search_path_CXX}"; then
- compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+ compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'`
fi
@@ -15224,17 +15156,18 @@ lt_prog_compiler_static_CXX=
# C++ specific cases for pic, static, wl, etc.
- if test "$GXX" = yes; then
+ if test yes = "$GXX"; then
lt_prog_compiler_wl_CXX='-Wl,'
lt_prog_compiler_static_CXX='-static'
case $host_os in
aix*)
# All AIX code is PIC.
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 now supports IA64 processor
lt_prog_compiler_static_CXX='-Bstatic'
fi
+ lt_prog_compiler_pic_CXX='-fPIC'
;;
amigaos*)
@@ -15245,8 +15178,8 @@ lt_prog_compiler_static_CXX=
;;
m68k)
# FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
+ # adding the '-m68020' flag to GCC prevents building anything better,
+ # like '-m68040'.
lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
;;
esac
@@ -15310,7 +15243,7 @@ lt_prog_compiler_static_CXX=
case $host_os in
aix[4-9]*)
# All AIX code is PIC.
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 now supports IA64 processor
lt_prog_compiler_static_CXX='-Bstatic'
else
@@ -15350,14 +15283,14 @@ lt_prog_compiler_static_CXX=
case $cc_basename in
CC*)
lt_prog_compiler_wl_CXX='-Wl,'
- lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
- if test "$host_cpu" != ia64; then
+ lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
+ if test ia64 != "$host_cpu"; then
lt_prog_compiler_pic_CXX='+Z'
fi
;;
aCC*)
lt_prog_compiler_wl_CXX='-Wl,'
- lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+ lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
case $host_cpu in
hppa*64*|ia64*)
# +Z the default
@@ -15394,7 +15327,7 @@ lt_prog_compiler_static_CXX=
lt_prog_compiler_pic_CXX='-fPIC'
;;
ecpc* )
- # old Intel C++ for x86_64 which still supported -KPIC.
+ # old Intel C++ for x86_64, which still supported -KPIC.
lt_prog_compiler_wl_CXX='-Wl,'
lt_prog_compiler_pic_CXX='-KPIC'
lt_prog_compiler_static_CXX='-static'
@@ -15450,7 +15383,7 @@ lt_prog_compiler_static_CXX=
;;
esac
;;
- netbsd* | netbsdelf*-gnu)
+ netbsd*)
;;
*qnx* | *nto*)
# QNX uses GNU C++, but need to define -shared option too, otherwise
@@ -15539,7 +15472,7 @@ lt_prog_compiler_static_CXX=
fi
case $host_os in
- # For platforms which do not support PIC, -DPIC is meaningless:
+ # For platforms that do not support PIC, -DPIC is meaningless:
*djgpp*)
lt_prog_compiler_pic_CXX=
;;
@@ -15571,7 +15504,7 @@ else
lt_cv_prog_compiler_pic_works_CXX=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
- lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+ lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
# Note that $ac_compile itself does not contain backslashes and begins
@@ -15601,7 +15534,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
-if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
+if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then
case $lt_prog_compiler_pic_CXX in
"" | " "*) ;;
*) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
@@ -15627,7 +15560,7 @@ if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_prog_compiler_static_works_CXX=no
- save_LDFLAGS="$LDFLAGS"
+ save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
echo "$lt_simple_link_test_code" > conftest.$ac_ext
if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
@@ -15646,13 +15579,13 @@ else
fi
fi
$RM -r conftest*
- LDFLAGS="$save_LDFLAGS"
+ LDFLAGS=$save_LDFLAGS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
-if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
+if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then
:
else
lt_prog_compiler_static_CXX=
@@ -15766,8 +15699,8 @@ $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+hard_links=nottested
+if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then
# do not overwrite the value of need_locks provided by the user
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
$as_echo_n "checking if we can lock with hard links... " >&6; }
@@ -15779,9 +15712,9 @@ $as_echo_n "checking if we can lock with hard links... " >&6; }
ln conftest.a conftest.b 2>/dev/null && hard_links=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
$as_echo "$hard_links" >&6; }
- if test "$hard_links" = no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ if test no = "$hard_links"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
need_locks=warn
fi
else
@@ -15808,7 +15741,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
fi
;;
pw32*)
- export_symbols_cmds_CXX="$ltdll_cmds"
+ export_symbols_cmds_CXX=$ltdll_cmds
;;
cygwin* | mingw* | cegcc*)
case $cc_basename in
@@ -15821,9 +15754,6 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
;;
esac
;;
- linux* | k*bsd*-gnu | gnu*)
- link_all_deplibs_CXX=no
- ;;
*)
export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
;;
@@ -15831,7 +15761,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
$as_echo "$ld_shlibs_CXX" >&6; }
-test "$ld_shlibs_CXX" = no && can_build_shared=no
+test no = "$ld_shlibs_CXX" && can_build_shared=no
with_gnu_ld_CXX=$with_gnu_ld
@@ -15848,7 +15778,7 @@ x|xyes)
# Assume -lc should be added
archive_cmds_need_lc_CXX=yes
- if test "$enable_shared" = yes && test "$GCC" = yes; then
+ if test yes,yes = "$GCC,$enable_shared"; then
case $archive_cmds_CXX in
*'~'*)
# FIXME: we may have to deal with multi-command sequences.
@@ -15976,7 +15906,7 @@ $as_echo_n "checking dynamic linker characteristics... " >&6; }
library_names_spec=
libname_spec='lib$name'
soname_spec=
-shrext_cmds=".so"
+shrext_cmds=.so
postinstall_cmds=
postuninstall_cmds=
finish_cmds=
@@ -15996,11 +15926,11 @@ need_version=unknown
case $host_os in
aix3*)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
shlibpath_var=LIBPATH
# AIX 3 has no versioning support, so we append a major version to the name.
- soname_spec='${libname}${release}${shared_ext}$major'
+ soname_spec='$libname$release$shared_ext$major'
;;
aix[4-9]*)
@@ -16008,40 +15938,40 @@ aix[4-9]*)
need_lib_prefix=no
need_version=no
hardcode_into_libs=yes
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 supports IA64
- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
else
# With GCC up to 2.95.x, collect2 would create an import file
# for dependence libraries. The import file would start with
- # the line `#! .'. This would cause the generated library to
- # depend on `.', always an invalid library. This was fixed in
+ # the line '#! .'. This would cause the generated library to
+ # depend on '.', always an invalid library. This was fixed in
# development snapshots of GCC prior to 3.0.
case $host_os in
aix4 | aix4.[01] | aix4.[01].*)
if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
echo ' yes '
- echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
:
else
can_build_shared=no
fi
;;
esac
- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
# soname into executable. Probably we can add versioning support to
# collect2, so additional links can be useful in future.
- if test "$aix_use_runtimelinking" = yes; then
+ if test yes = "$aix_use_runtimelinking"; then
# If using run time linking (on AIX 4.2 or later) use lib<name>.so
# instead of lib<name>.a to let people know that these are not
# typical AIX shared libraries.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
else
# We preserve .a as extension for shared libraries through AIX4.2
# and later when we are not doing run time linking.
- library_names_spec='${libname}${release}.a $libname.a'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release.a $libname.a'
+ soname_spec='$libname$release$shared_ext$major'
fi
shlibpath_var=LIBPATH
fi
@@ -16052,18 +15982,18 @@ amigaos*)
powerpc)
# Since July 2007 AmigaOS4 officially supports .so libraries.
# When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
;;
m68k)
library_names_spec='$libname.ixlibrary $libname.a'
# Create ${libname}_ixlibrary.a entries in /sys/libs.
- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
;;
esac
;;
beos*)
- library_names_spec='${libname}${shared_ext}'
+ library_names_spec='$libname$shared_ext'
dynamic_linker="$host_os ld.so"
shlibpath_var=LIBRARY_PATH
;;
@@ -16071,8 +16001,8 @@ beos*)
bsdi[45]*)
version_type=linux # correct to gnu/linux during the next big refactor
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
shlibpath_var=LD_LIBRARY_PATH
sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
@@ -16084,7 +16014,7 @@ bsdi[45]*)
cygwin* | mingw* | pw32* | cegcc*)
version_type=windows
- shrext_cmds=".dll"
+ shrext_cmds=.dll
need_version=no
need_lib_prefix=no
@@ -16093,8 +16023,8 @@ cygwin* | mingw* | pw32* | cegcc*)
# gcc
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ postinstall_cmds='base_file=`basename \$file`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
dldir=$destdir/`dirname \$dlpath`~
test -d \$dldir || mkdir -p \$dldir~
$install_prog $dir/$dlname \$dldir/$dlname~
@@ -16110,16 +16040,16 @@ cygwin* | mingw* | pw32* | cegcc*)
case $host_os in
cygwin*)
# Cygwin DLLs use 'cyg' prefix rather than 'lib'
- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
;;
mingw* | cegcc*)
# MinGW DLLs use traditional 'lib' prefix
- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
;;
pw32*)
# pw32 DLLs use 'pw' prefix rather than 'lib'
- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
;;
esac
dynamic_linker='Win32 ld.exe'
@@ -16128,8 +16058,8 @@ cygwin* | mingw* | pw32* | cegcc*)
*,cl*)
# Native MSVC
libname_spec='$name'
- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
- library_names_spec='${libname}.dll.lib'
+ soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+ library_names_spec='$libname.dll.lib'
case $build_os in
mingw*)
@@ -16156,7 +16086,7 @@ cygwin* | mingw* | pw32* | cegcc*)
sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
;;
*)
- sys_lib_search_path_spec="$LIB"
+ sys_lib_search_path_spec=$LIB
if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
# It is most probably a Windows format PATH.
sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
@@ -16169,8 +16099,8 @@ cygwin* | mingw* | pw32* | cegcc*)
esac
# DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ postinstall_cmds='base_file=`basename \$file`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
dldir=$destdir/`dirname \$dlpath`~
test -d \$dldir || mkdir -p \$dldir~
$install_prog $dir/$dlname \$dldir/$dlname'
@@ -16183,7 +16113,7 @@ cygwin* | mingw* | pw32* | cegcc*)
*)
# Assume MSVC wrapper
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
dynamic_linker='Win32 ld.exe'
;;
esac
@@ -16196,8 +16126,8 @@ darwin* | rhapsody*)
version_type=darwin
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
- soname_spec='${libname}${release}${major}$shared_ext'
+ library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+ soname_spec='$libname$release$major$shared_ext'
shlibpath_overrides_runpath=yes
shlibpath_var=DYLD_LIBRARY_PATH
shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
@@ -16209,8 +16139,8 @@ dgux*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
;;
@@ -16228,12 +16158,12 @@ freebsd* | dragonfly*)
version_type=freebsd-$objformat
case $version_type in
freebsd-elf*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
need_version=no
need_lib_prefix=no
;;
freebsd-*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
need_version=yes
;;
esac
@@ -16263,10 +16193,10 @@ haiku*)
need_lib_prefix=no
need_version=no
dynamic_linker="$host_os runtime_loader"
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LIBRARY_PATH
- shlibpath_overrides_runpath=yes
+ shlibpath_overrides_runpath=no
sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
hardcode_into_libs=yes
;;
@@ -16284,9 +16214,9 @@ hpux9* | hpux10* | hpux11*)
dynamic_linker="$host_os dld.so"
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- if test "X$HPUX_IA64_MODE" = X32; then
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ if test 32 = "$HPUX_IA64_MODE"; then
sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
else
sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
@@ -16299,8 +16229,8 @@ hpux9* | hpux10* | hpux11*)
dynamic_linker="$host_os dld.sl"
shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
;;
@@ -16309,8 +16239,8 @@ hpux9* | hpux10* | hpux11*)
dynamic_linker="$host_os dld.sl"
shlibpath_var=SHLIB_PATH
shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
;;
esac
# HP-UX runs *really* slowly unless shared libraries are mode 555, ...
@@ -16323,8 +16253,8 @@ interix[3-9]*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
@@ -16335,7 +16265,7 @@ irix5* | irix6* | nonstopux*)
case $host_os in
nonstopux*) version_type=nonstopux ;;
*)
- if test "$lt_cv_prog_gnu_ld" = yes; then
+ if test yes = "$lt_cv_prog_gnu_ld"; then
version_type=linux # correct to gnu/linux during the next big refactor
else
version_type=irix
@@ -16343,8 +16273,8 @@ irix5* | irix6* | nonstopux*)
esac
need_lib_prefix=no
need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='$libname$release$shared_ext$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
case $host_os in
irix5* | nonstopux*)
libsuff= shlibsuff=
@@ -16363,8 +16293,8 @@ irix5* | irix6* | nonstopux*)
esac
shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
shlibpath_overrides_runpath=no
- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+ sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
hardcode_into_libs=yes
;;
@@ -16373,13 +16303,33 @@ linux*oldld* | linux*aout* | linux*coff*)
dynamic_linker=no
;;
+linux*android*)
+ version_type=none # Android doesn't support versioned libraries.
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext'
+ soname_spec='$libname$release$shared_ext'
+ finish_cmds=
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ dynamic_linker='Android linker'
+ # Don't embed -rpath directories since the linker doesn't support them.
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ ;;
+
# This must be glibc/ELF.
linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
@@ -16438,29 +16388,17 @@ fi
dynamic_linker='GNU/Linux ld.so'
;;
-netbsdelf*-gnu)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- dynamic_linker='NetBSD ld.elf_so'
- ;;
-
netbsd*)
version_type=sunos
need_lib_prefix=no
need_version=no
if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
dynamic_linker='NetBSD (a.out) ld.so'
else
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
dynamic_linker='NetBSD ld.elf_so'
fi
shlibpath_var=LD_LIBRARY_PATH
@@ -16470,7 +16408,7 @@ netbsd*)
newsos6)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
;;
@@ -16479,45 +16417,34 @@ newsos6)
version_type=qnx
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
dynamic_linker='ldqnx.so'
;;
-openbsd*)
+openbsd* | bitrig*)
version_type=sunos
- sys_lib_dlsearch_path_spec="/usr/lib"
+ sys_lib_dlsearch_path_spec=/usr/lib
need_lib_prefix=no
- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
- case $host_os in
- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
- *) need_version=no ;;
- esac
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- case $host_os in
- openbsd2.[89] | openbsd2.[89].*)
- shlibpath_overrides_runpath=no
- ;;
- *)
- shlibpath_overrides_runpath=yes
- ;;
- esac
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+ need_version=no
else
- shlibpath_overrides_runpath=yes
+ need_version=yes
fi
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
;;
os2*)
libname_spec='$name'
- shrext_cmds=".dll"
+ shrext_cmds=.dll
need_lib_prefix=no
- library_names_spec='$libname${shared_ext} $libname.a'
+ library_names_spec='$libname$shared_ext $libname.a'
dynamic_linker='OS/2 ld.exe'
shlibpath_var=LIBPATH
;;
@@ -16526,11 +16453,11 @@ osf3* | osf4* | osf5*)
version_type=osf
need_lib_prefix=no
need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='$libname$release$shared_ext$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
;;
rdos*)
@@ -16541,8 +16468,8 @@ solaris*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
@@ -16552,11 +16479,11 @@ solaris*)
sunos4*)
version_type=sunos
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
- if test "$with_gnu_ld" = yes; then
+ if test yes = "$with_gnu_ld"; then
need_lib_prefix=no
fi
need_version=yes
@@ -16564,8 +16491,8 @@ sunos4*)
sysv4 | sysv4.3*)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
case $host_vendor in
sni)
@@ -16586,10 +16513,10 @@ sysv4 | sysv4.3*)
;;
sysv4*MP*)
- if test -d /usr/nec ;then
+ if test -d /usr/nec; then
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
- soname_spec='$libname${shared_ext}.$major'
+ library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+ soname_spec='$libname$shared_ext.$major'
shlibpath_var=LD_LIBRARY_PATH
fi
;;
@@ -16598,12 +16525,12 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
version_type=freebsd-elf
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
- if test "$with_gnu_ld" = yes; then
+ if test yes = "$with_gnu_ld"; then
sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
else
sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
@@ -16621,7 +16548,7 @@ tpf*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
@@ -16629,8 +16556,8 @@ tpf*)
uts4*)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
;;
@@ -16640,18 +16567,18 @@ uts4*)
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
+test no = "$dynamic_linker" && can_build_shared=no
variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
fi
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
- sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+ sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
- sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+ sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
fi
@@ -16696,15 +16623,15 @@ $as_echo_n "checking how to hardcode library paths into programs... " >&6; }
hardcode_action_CXX=
if test -n "$hardcode_libdir_flag_spec_CXX" ||
test -n "$runpath_var_CXX" ||
- test "X$hardcode_automatic_CXX" = "Xyes" ; then
+ test yes = "$hardcode_automatic_CXX"; then
# We can hardcode non-existent directories.
- if test "$hardcode_direct_CXX" != no &&
+ if test no != "$hardcode_direct_CXX" &&
# If the only mechanism to avoid hardcoding is shlibpath_var, we
# have to relink, otherwise we might link with an installed library
# when we should be linking with a yet-to-be-installed one
- ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
- test "$hardcode_minus_L_CXX" != no; then
+ ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" &&
+ test no != "$hardcode_minus_L_CXX"; then
# Linking always hardcodes the temporary library directory.
hardcode_action_CXX=relink
else
@@ -16719,12 +16646,12 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
$as_echo "$hardcode_action_CXX" >&6; }
-if test "$hardcode_action_CXX" = relink ||
- test "$inherit_rpath_CXX" = yes; then
+if test relink = "$hardcode_action_CXX" ||
+ test yes = "$inherit_rpath_CXX"; then
# Fast installation is not supported
enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
- test "$enable_shared" = no; then
+elif test yes = "$shlibpath_overrides_runpath" ||
+ test no = "$enable_shared"; then
# Fast installation is not necessary
enable_fast_install=needless
fi
@@ -16747,7 +16674,7 @@ fi
lt_cv_path_LD=$lt_save_path_LD
lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
+fi # test yes != "$_lt_caught_CXX_error"
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -16884,10 +16811,10 @@ GIT=${GIT-"${am_missing_run}git"}
-HB_VERSION_MAJOR=1
-HB_VERSION_MINOR=2
-HB_VERSION_MICRO=7
-HB_VERSION=1.2.7
+HB_VERSION_MAJOR=0
+HB_VERSION_MINOR=9
+HB_VERSION_MICRO=40
+HB_VERSION=0.9.40
@@ -16898,7 +16825,7 @@ HB_VERSION=1.2.7
-HB_LIBTOOL_VERSION_INFO=10200:7:10200
+HB_LIBTOOL_VERSION_INFO=940:0:940
# Documentation
@@ -17853,8 +17780,6 @@ else
fi
have_glib=false
-GLIB_DEPS="glib-2.0 >= 2.16"
-
if test "x$with_glib" = "xyes" -o "x$with_glib" = "xauto"; then
pkg_failed=no
@@ -17866,12 +17791,12 @@ if test -n "$PKG_CONFIG"; then
pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$GLIB_DEPS\""; } >&5
- ($PKG_CONFIG --exists --print-errors "$GLIB_DEPS") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.16\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.16") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "$GLIB_DEPS" 2>/dev/null`
+ pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.16" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -17884,12 +17809,12 @@ if test -n "$PKG_CONFIG"; then
pkg_cv_GLIB_LIBS="$GLIB_LIBS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$GLIB_DEPS\""; } >&5
- ($PKG_CONFIG --exists --print-errors "$GLIB_DEPS") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.16\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.16") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "$GLIB_DEPS" 2>/dev/null`
+ pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.16" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -17908,9 +17833,9 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$GLIB_DEPS"`
+ GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "glib-2.0 >= 2.16"`
else
- GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$GLIB_DEPS"`
+ GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-2.0 >= 2.16"`
fi
# Put the nasty error message in config.log where it belongs
echo "$GLIB_PKG_ERRORS" >&5
@@ -18163,6 +18088,25 @@ fi
+have_ucdn=true
+if $have_glib; then
+ have_ucdn=false
+fi
+if $have_ucdn; then
+
+$as_echo "#define HAVE_UCDN 1" >>confdefs.h
+
+fi
+ if $have_ucdn; then
+ HAVE_UCDN_TRUE=
+ HAVE_UCDN_FALSE='#'
+else
+ HAVE_UCDN_TRUE='#'
+ HAVE_UCDN_FALSE=
+fi
+
+
+
# Check whether --with-cairo was given.
if test "${with_cairo+set}" = set; then :
@@ -18352,106 +18296,6 @@ fi
-# Check whether --with-fontconfig was given.
-if test "${with_fontconfig+set}" = set; then :
- withval=$with_fontconfig;
-else
- with_fontconfig=auto
-fi
-
-have_fontconfig=false
-if test "x$with_fontconfig" = "xyes" -o "x$with_fontconfig" = "xauto"; then
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FONTCONFIG" >&5
-$as_echo_n "checking for FONTCONFIG... " >&6; }
-
-if test -n "$PKG_CONFIG"; then
- if test -n "$FONTCONFIG_CFLAGS"; then
- pkg_cv_FONTCONFIG_CFLAGS="$FONTCONFIG_CFLAGS"
- else
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fontconfig\""; } >&5
- ($PKG_CONFIG --exists --print-errors "fontconfig") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_FONTCONFIG_CFLAGS=`$PKG_CONFIG --cflags "fontconfig" 2>/dev/null`
-else
- pkg_failed=yes
-fi
- fi
-else
- pkg_failed=untried
-fi
-if test -n "$PKG_CONFIG"; then
- if test -n "$FONTCONFIG_LIBS"; then
- pkg_cv_FONTCONFIG_LIBS="$FONTCONFIG_LIBS"
- else
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fontconfig\""; } >&5
- ($PKG_CONFIG --exists --print-errors "fontconfig") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_FONTCONFIG_LIBS=`$PKG_CONFIG --libs "fontconfig" 2>/dev/null`
-else
- pkg_failed=yes
-fi
- fi
-else
- pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
-else
- _pkg_short_errors_supported=no
-fi
- if test $_pkg_short_errors_supported = yes; then
- FONTCONFIG_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "fontconfig"`
- else
- FONTCONFIG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "fontconfig"`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$FONTCONFIG_PKG_ERRORS" >&5
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- :
-elif test $pkg_failed = untried; then
- :
-else
- FONTCONFIG_CFLAGS=$pkg_cv_FONTCONFIG_CFLAGS
- FONTCONFIG_LIBS=$pkg_cv_FONTCONFIG_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- have_fontconfig=true
-fi
-fi
-if test "x$with_fontconfig" = "xyes" -a "x$have_fontconfig" != "xtrue"; then
- as_fn_error $? "fontconfig support requested but not found" "$LINENO" 5
-fi
-if $have_fontconfig; then
-
-$as_echo "#define HAVE_FONTCONFIG 1" >>confdefs.h
-
-fi
- if $have_fontconfig; then
- HAVE_FONTCONFIG_TRUE=
- HAVE_FONTCONFIG_FALSE='#'
-else
- HAVE_FONTCONFIG_TRUE='#'
- HAVE_FONTCONFIG_FALSE=
-fi
-
-
-
-
# Check whether --with-icu was given.
if test "${with_icu+set}" = set; then :
withval=$with_icu;
@@ -18460,7 +18304,7 @@ else
fi
have_icu=false
-if test "x$with_icu" = "xyes" -o "x$with_icu" = "xbuiltin" -o "x$with_icu" = "xauto"; then
+if test "x$with_icu" = "xyes" -o "x$with_icu" = "xauto"; then
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ICU" >&5
@@ -18645,20 +18489,14 @@ $as_echo "no" >&6; }
fi
fi
fi
-if test \( "x$with_icu" = "xyes" -o "x$with_icu" = "xbuiltin" \) -a "x$have_icu" != "xtrue"; then
+if test "x$with_icu" = "xyes" -a "x$have_icu" != "xtrue"; then
as_fn_error $? "icu support requested but icu-uc not found" "$LINENO" 5
fi
-
if $have_icu; then
CXXFLAGS="$CXXFLAGS `$PKG_CONFIG --variable=CXXFLAGS icu-uc`"
$as_echo "#define HAVE_ICU 1" >>confdefs.h
- if test "x$with_icu" = "xbuiltin"; then
-
-$as_echo "#define HAVE_ICU_BUILTIN 1" >>confdefs.h
-
- fi
fi
if $have_icu; then
HAVE_ICU_TRUE=
@@ -18668,33 +18506,6 @@ else
HAVE_ICU_FALSE=
fi
- if $have_icu && test "x$with_icu" = "xbuiltin"; then
- HAVE_ICU_BUILTIN_TRUE=
- HAVE_ICU_BUILTIN_FALSE='#'
-else
- HAVE_ICU_BUILTIN_TRUE='#'
- HAVE_ICU_BUILTIN_FALSE=
-fi
-
-
-
-have_ucdn=true
-if $have_glib || $have_icu && test "x$with_icu" = "xbuiltin"; then
- have_ucdn=false
-fi
-if $have_ucdn; then
-
-$as_echo "#define HAVE_UCDN 1" >>confdefs.h
-
-fi
- if $have_ucdn; then
- HAVE_UCDN_TRUE=
- HAVE_UCDN_FALSE='#'
-else
- HAVE_UCDN_TRUE='#'
- HAVE_UCDN_FALSE=
-fi
-
@@ -18706,8 +18517,6 @@ else
fi
have_graphite2=false
-GRAPHITE2_DEPS="graphite2"
-
if test "x$with_graphite2" = "xyes" -o "x$with_graphite2" = "xauto"; then
pkg_failed=no
@@ -18719,12 +18528,12 @@ if test -n "$PKG_CONFIG"; then
pkg_cv_GRAPHITE2_CFLAGS="$GRAPHITE2_CFLAGS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$GRAPHITE2_DEPS\""; } >&5
- ($PKG_CONFIG --exists --print-errors "$GRAPHITE2_DEPS") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"graphite2\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "graphite2") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GRAPHITE2_CFLAGS=`$PKG_CONFIG --cflags "$GRAPHITE2_DEPS" 2>/dev/null`
+ pkg_cv_GRAPHITE2_CFLAGS=`$PKG_CONFIG --cflags "graphite2" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -18737,12 +18546,12 @@ if test -n "$PKG_CONFIG"; then
pkg_cv_GRAPHITE2_LIBS="$GRAPHITE2_LIBS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$GRAPHITE2_DEPS\""; } >&5
- ($PKG_CONFIG --exists --print-errors "$GRAPHITE2_DEPS") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"graphite2\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "graphite2") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GRAPHITE2_LIBS=`$PKG_CONFIG --libs "$GRAPHITE2_DEPS" 2>/dev/null`
+ pkg_cv_GRAPHITE2_LIBS=`$PKG_CONFIG --libs "graphite2" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -18761,9 +18570,9 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- GRAPHITE2_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$GRAPHITE2_DEPS"`
+ GRAPHITE2_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "graphite2"`
else
- GRAPHITE2_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$GRAPHITE2_DEPS"`
+ GRAPHITE2_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "graphite2"`
fi
# Put the nasty error message in config.log where it belongs
echo "$GRAPHITE2_PKG_ERRORS" >&5
@@ -18808,8 +18617,6 @@ else
fi
have_freetype=false
-FREETYPE_DEPS="freetype2 >= 12.0.6"
-
if test "x$with_freetype" = "xyes" -o "x$with_freetype" = "xauto"; then
# See freetype/docs/VERSION.DLL; 12.0.6 means freetype-2.4.2
@@ -18822,12 +18629,12 @@ if test -n "$PKG_CONFIG"; then
pkg_cv_FREETYPE_CFLAGS="$FREETYPE_CFLAGS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$FREETYPE_DEPS\""; } >&5
- ($PKG_CONFIG --exists --print-errors "$FREETYPE_DEPS") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2 >= 12.0.6\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "freetype2 >= 12.0.6") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_FREETYPE_CFLAGS=`$PKG_CONFIG --cflags "$FREETYPE_DEPS" 2>/dev/null`
+ pkg_cv_FREETYPE_CFLAGS=`$PKG_CONFIG --cflags "freetype2 >= 12.0.6" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -18840,12 +18647,12 @@ if test -n "$PKG_CONFIG"; then
pkg_cv_FREETYPE_LIBS="$FREETYPE_LIBS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$FREETYPE_DEPS\""; } >&5
- ($PKG_CONFIG --exists --print-errors "$FREETYPE_DEPS") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2 >= 12.0.6\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "freetype2 >= 12.0.6") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_FREETYPE_LIBS=`$PKG_CONFIG --libs "$FREETYPE_DEPS" 2>/dev/null`
+ pkg_cv_FREETYPE_LIBS=`$PKG_CONFIG --libs "freetype2 >= 12.0.6" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -18864,9 +18671,9 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- FREETYPE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$FREETYPE_DEPS"`
+ FREETYPE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "freetype2 >= 12.0.6"`
else
- FREETYPE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$FREETYPE_DEPS"`
+ FREETYPE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "freetype2 >= 12.0.6"`
fi
# Put the nasty error message in config.log where it belongs
echo "$FREETYPE_PKG_ERRORS" >&5
@@ -18949,64 +18756,6 @@ fi
-# Check whether --with-directwrite was given.
-if test "${with_directwrite+set}" = set; then :
- withval=$with_directwrite;
-else
- with_directwrite=no
-fi
-
-have_directwrite=false
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-if test "x$with_directwrite" = "xyes" -o "x$with_directwrite" = "xauto"; then
-
-for ac_header in dwrite.h
-do :
- ac_fn_cxx_check_header_mongrel "$LINENO" "dwrite.h" "ac_cv_header_dwrite_h" "$ac_includes_default"
-if test "x$ac_cv_header_dwrite_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DWRITE_H 1
-_ACEOF
- have_directwrite=true
-fi
-
-done
-
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-if test "x$with_directwrite" = "xyes" -a "x$have_directwrite" != "xtrue"; then
- as_fn_error $? "directwrite support requested but not found" "$LINENO" 5
-fi
-if $have_directwrite; then
- DIRECTWRITE_CXXFLAGS=
- DIRECTWRITE_LIBS="-ldwrite"
-
-
-
-$as_echo "#define HAVE_DIRECTWRITE 1" >>confdefs.h
-
-fi
- if $have_directwrite; then
- HAVE_DIRECTWRITE_TRUE=
- HAVE_DIRECTWRITE_FALSE='#'
-else
- HAVE_DIRECTWRITE_TRUE='#'
- HAVE_DIRECTWRITE_FALSE=
-fi
-
-
-
-
# Check whether --with-coretext was given.
if test "${with_coretext+set}" = set; then :
withval=$with_coretext;
@@ -19220,7 +18969,7 @@ fi
fi
-ac_config_files="$ac_config_files Makefile src/Makefile src/hb-version.h src/hb-ucdn/Makefile util/Makefile test/Makefile test/api/Makefile test/fuzzing/Makefile test/shaping/Makefile docs/Makefile docs/version.xml win32/Makefile win32/config.h.win32"
+ac_config_files="$ac_config_files Makefile src/Makefile src/hb-version.h src/hb-ucdn/Makefile util/Makefile test/Makefile test/api/Makefile test/shaping/Makefile docs/Makefile docs/reference/Makefile docs/reference/version.xml"
cat >confcache <<\_ACEOF
@@ -19428,6 +19177,10 @@ if test -z "${HAVE_INTROSPECTION_TRUE}" && test -z "${HAVE_INTROSPECTION_FALSE}"
as_fn_error $? "conditional \"HAVE_INTROSPECTION\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${HAVE_UCDN_TRUE}" && test -z "${HAVE_UCDN_FALSE}"; then
+ as_fn_error $? "conditional \"HAVE_UCDN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${HAVE_CAIRO_TRUE}" && test -z "${HAVE_CAIRO_FALSE}"; then
as_fn_error $? "conditional \"HAVE_CAIRO\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -19436,22 +19189,10 @@ if test -z "${HAVE_CAIRO_FT_TRUE}" && test -z "${HAVE_CAIRO_FT_FALSE}"; then
as_fn_error $? "conditional \"HAVE_CAIRO_FT\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${HAVE_FONTCONFIG_TRUE}" && test -z "${HAVE_FONTCONFIG_FALSE}"; then
- as_fn_error $? "conditional \"HAVE_FONTCONFIG\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
if test -z "${HAVE_ICU_TRUE}" && test -z "${HAVE_ICU_FALSE}"; then
as_fn_error $? "conditional \"HAVE_ICU\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${HAVE_ICU_BUILTIN_TRUE}" && test -z "${HAVE_ICU_BUILTIN_FALSE}"; then
- as_fn_error $? "conditional \"HAVE_ICU_BUILTIN\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_UCDN_TRUE}" && test -z "${HAVE_UCDN_FALSE}"; then
- as_fn_error $? "conditional \"HAVE_UCDN\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
if test -z "${HAVE_GRAPHITE2_TRUE}" && test -z "${HAVE_GRAPHITE2_FALSE}"; then
as_fn_error $? "conditional \"HAVE_GRAPHITE2\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -19464,10 +19205,6 @@ if test -z "${HAVE_UNISCRIBE_TRUE}" && test -z "${HAVE_UNISCRIBE_FALSE}"; then
as_fn_error $? "conditional \"HAVE_UNISCRIBE\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${HAVE_DIRECTWRITE_TRUE}" && test -z "${HAVE_DIRECTWRITE_FALSE}"; then
- as_fn_error $? "conditional \"HAVE_DIRECTWRITE\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
if test -z "${HAVE_CORETEXT_TRUE}" && test -z "${HAVE_CORETEXT_FALSE}"; then
as_fn_error $? "conditional \"HAVE_CORETEXT\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -19869,7 +19606,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by HarfBuzz $as_me 1.2.7, which was
+This file was extended by HarfBuzz $as_me 0.9.40, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -19936,7 +19673,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-HarfBuzz config.status 1.2.7
+HarfBuzz config.status 0.9.40
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -20120,8 +19857,10 @@ compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`'
nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
@@ -20293,8 +20032,10 @@ CFLAGS \
compiler \
lt_cv_sys_global_symbol_pipe \
lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_import \
lt_cv_sys_global_symbol_to_c_name_address \
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+lt_cv_nm_interface \
nm_file_list_spec \
lt_prog_compiler_no_builtin_flag \
lt_prog_compiler_pic \
@@ -20361,7 +20102,7 @@ postdeps_CXX \
compiler_lib_search_path_CXX; do
case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
*[\\\\\\\`\\"\\\$]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
;;
*)
eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -20402,7 +20143,7 @@ prelink_cmds_CXX \
postlink_cmds_CXX; do
case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
*[\\\\\\\`\\"\\\$]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
;;
*)
eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -20411,19 +20152,16 @@ postlink_cmds_CXX; do
done
ac_aux_dir='$ac_aux_dir'
-xsi_shell='$xsi_shell'
-lt_shell_append='$lt_shell_append'
-# See if we are running on zsh, and set the options which allow our
+# See if we are running on zsh, and set the options that allow our
# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
+if test -n "\${ZSH_VERSION+set}"; then
setopt NO_GLOB_SUBST
fi
PACKAGE='$PACKAGE'
VERSION='$VERSION'
- TIMESTAMP='$TIMESTAMP'
RM='$RM'
ofile='$ofile'
@@ -20450,12 +20188,10 @@ do
"util/Makefile") CONFIG_FILES="$CONFIG_FILES util/Makefile" ;;
"test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
"test/api/Makefile") CONFIG_FILES="$CONFIG_FILES test/api/Makefile" ;;
- "test/fuzzing/Makefile") CONFIG_FILES="$CONFIG_FILES test/fuzzing/Makefile" ;;
"test/shaping/Makefile") CONFIG_FILES="$CONFIG_FILES test/shaping/Makefile" ;;
"docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
- "docs/version.xml") CONFIG_FILES="$CONFIG_FILES docs/version.xml" ;;
- "win32/Makefile") CONFIG_FILES="$CONFIG_FILES win32/Makefile" ;;
- "win32/config.h.win32") CONFIG_FILES="$CONFIG_FILES win32/config.h.win32" ;;
+ "docs/reference/Makefile") CONFIG_FILES="$CONFIG_FILES docs/reference/Makefile" ;;
+ "docs/reference/version.xml") CONFIG_FILES="$CONFIG_FILES docs/reference/version.xml" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
@@ -21146,13 +20882,13 @@ $as_echo X"$file" |
;;
"libtool":C)
- # See if we are running on zsh, and set the options which allow our
+ # See if we are running on zsh, and set the options that allow our
# commands through without removal of \ escapes.
- if test -n "${ZSH_VERSION+set}" ; then
+ if test -n "${ZSH_VERSION+set}"; then
setopt NO_GLOB_SUBST
fi
- cfgfile="${ofile}T"
+ cfgfile=${ofile}T
trap "$RM \"$cfgfile\"; exit 1" 1 2 15
$RM "$cfgfile"
@@ -21160,7 +20896,7 @@ $as_echo X"$file" |
#! $SHELL
# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Generated automatically by $as_me ($PACKAGE) $VERSION
# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
@@ -21194,7 +20930,7 @@ $as_echo X"$file" |
# The names of the tagged configurations supported by this script.
-available_tags="CXX "
+available_tags='CXX '
# ### BEGIN LIBTOOL CONFIG
@@ -21331,16 +21067,22 @@ global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
# Transform the output of nm in a proper C declaration.
global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+# Transform the output of nm into a list of symbols to manually relocate.
+global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import
+
# Transform the output of nm in a C name address pair.
global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
# Transform the output of nm in a C name address pair when lib prefix is needed.
global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+# The name lister interface.
+nm_interface=$lt_lt_cv_nm_interface
+
# Specify filename containing input files for \$NM.
nm_file_list_spec=$lt_nm_file_list_spec
-# The root where to search for dependent libraries,and in which our libraries should be installed.
+# The root where to search for dependent libraries,and where our libraries should be installed.
lt_sysroot=$lt_sysroot
# The name of the directory that contains temporary libtool files.
@@ -21527,13 +21269,13 @@ hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
# Whether we need a single "-rpath" flag with a separated argument.
hardcode_libdir_separator=$lt_hardcode_libdir_separator
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
# DIR into the resulting binary.
hardcode_direct=$hardcode_direct
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# "absolute",i.e impossible to change by setting \$shlibpath_var if the
# library is relocated.
hardcode_direct_absolute=$hardcode_direct_absolute
@@ -21605,7 +21347,7 @@ _LT_EOF
# AIX sometimes has problems with the GCC collect2 program. For some
# reason, if we set the COLLECT_NAMES environment variable, the problems
# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
+if test set != "${COLLECT_NAMES+set}"; then
COLLECT_NAMES=
export COLLECT_NAMES
fi
@@ -21614,7 +21356,7 @@ _LT_EOF
esac
-ltmain="$ac_aux_dir/ltmain.sh"
+ltmain=$ac_aux_dir/ltmain.sh
# We use sed instead of cat because bash on DJGPP gets confused if
@@ -21624,165 +21366,6 @@ ltmain="$ac_aux_dir/ltmain.sh"
sed '$q' "$ltmain" >> "$cfgfile" \
|| (rm -f "$cfgfile"; exit 1)
- if test x"$xsi_shell" = xyes; then
- sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-func_dirname ()\
-{\
-\ case ${1} in\
-\ */*) func_dirname_result="${1%/*}${2}" ;;\
-\ * ) func_dirname_result="${3}" ;;\
-\ esac\
-} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_basename ()$/,/^} # func_basename /c\
-func_basename ()\
-{\
-\ func_basename_result="${1##*/}"\
-} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-func_dirname_and_basename ()\
-{\
-\ case ${1} in\
-\ */*) func_dirname_result="${1%/*}${2}" ;;\
-\ * ) func_dirname_result="${3}" ;;\
-\ esac\
-\ func_basename_result="${1##*/}"\
-} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-func_stripname ()\
-{\
-\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-\ # positional parameters, so assign one to ordinary parameter first.\
-\ func_stripname_result=${3}\
-\ func_stripname_result=${func_stripname_result#"${1}"}\
-\ func_stripname_result=${func_stripname_result%"${2}"}\
-} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-func_split_long_opt ()\
-{\
-\ func_split_long_opt_name=${1%%=*}\
-\ func_split_long_opt_arg=${1#*=}\
-} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-func_split_short_opt ()\
-{\
-\ func_split_short_opt_arg=${1#??}\
-\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-func_lo2o ()\
-{\
-\ case ${1} in\
-\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-\ *) func_lo2o_result=${1} ;;\
-\ esac\
-} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_xform ()$/,/^} # func_xform /c\
-func_xform ()\
-{\
- func_xform_result=${1%.*}.lo\
-} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_arith ()$/,/^} # func_arith /c\
-func_arith ()\
-{\
- func_arith_result=$(( $* ))\
-} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_len ()$/,/^} # func_len /c\
-func_len ()\
-{\
- func_len_result=${#1}\
-} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-fi
-
-if test x"$lt_shell_append" = xyes; then
- sed -e '/^func_append ()$/,/^} # func_append /c\
-func_append ()\
-{\
- eval "${1}+=\\${2}"\
-} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-func_append_quoted ()\
-{\
-\ func_quote_for_eval "${2}"\
-\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- # Save a `func_append' function call where possible by direct use of '+='
- sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
- test 0 -eq $? || _lt_function_replace_fail=:
-else
- # Save a `func_append' function call even when '+=' is not available
- sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
- test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-fi
-
-
mv -f "$cfgfile" "$ofile" ||
(rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
chmod +x "$ofile"
@@ -21869,13 +21452,13 @@ hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
# Whether we need a single "-rpath" flag with a separated argument.
hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
# DIR into the resulting binary.
hardcode_direct=$hardcode_direct_CXX
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# "absolute",i.e impossible to change by setting \$shlibpath_var if the
# library is relocated.
hardcode_direct_absolute=$hardcode_direct_absolute_CXX
@@ -21994,7 +21577,6 @@ Font callbacks (the more the better):
Tools used for command-line utilities:
Cairo: ${have_cairo}
- Fontconfig: ${have_fontconfig}
Additional shapers (the more the better):
Graphite2: ${have_graphite2}
@@ -22002,7 +21584,6 @@ Additional shapers (the more the better):
Platform shapers (not normally needed):
CoreText: ${have_coretext}
Uniscribe: ${have_uniscribe}
- DirectWrite: ${have_directwrite}
Other features:
Documentation: ${have_gtk_doc}
@@ -22023,7 +21604,6 @@ Font callbacks (the more the better):
Tools used for command-line utilities:
Cairo: ${have_cairo}
- Fontconfig: ${have_fontconfig}
Additional shapers (the more the better):
Graphite2: ${have_graphite2}
@@ -22031,7 +21611,6 @@ Additional shapers (the more the better):
Platform shapers (not normally needed):
CoreText: ${have_coretext}
Uniscribe: ${have_uniscribe}
- DirectWrite: ${have_directwrite}
Other features:
Documentation: ${have_gtk_doc}
diff --git a/configure.ac b/configure.ac
index 5ffd494..5baad1f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
AC_PREREQ([2.64])
AC_INIT([HarfBuzz],
- [1.2.7],
+ [0.9.40],
[http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz],
[harfbuzz],
[http://harfbuzz.org/])
@@ -9,7 +9,7 @@ AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR([src/harfbuzz.pc.in])
AC_CONFIG_HEADERS([config.h])
-AM_INIT_AUTOMAKE([1.11.1 gnits tar-ustar dist-bzip2 no-dist-gzip -Wall no-define color-tests -Wno-portability])
+AM_INIT_AUTOMAKE([1.11.1 gnits tar-pax dist-bzip2 no-dist-gzip -Wall no-define color-tests -Wno-portability])
AM_CONDITIONAL(AUTOMAKE_OLDER_THAN_1_13, test $am__api_version = 1.11 -o $am__api_version = 1.12)
AM_SILENT_RULES([yes])
@@ -51,7 +51,7 @@ m4_if(m4_eval(hb_version_minor % 2), [1],
m4_define([hb_libtool_age],
m4_eval(hb_version_int - hb_libtool_revision))
m4_define([hb_libtool_current],
- m4_eval(hb_libtool_age))
+ m4_eval(hb_version_major + hb_libtool_age))
HB_LIBTOOL_VERSION_INFO=hb_libtool_current:hb_libtool_revision:hb_libtool_age
AC_SUBST(HB_LIBTOOL_VERSION_INFO)
@@ -145,10 +145,8 @@ AC_ARG_WITH(glib,
[Use glib @<:@default=auto@:>@])],,
[with_glib=auto])
have_glib=false
-GLIB_DEPS="glib-2.0 >= 2.16"
-AC_SUBST(GLIB_DEPS)
if test "x$with_glib" = "xyes" -o "x$with_glib" = "xauto"; then
- PKG_CHECK_MODULES(GLIB, $GLIB_DEPS, have_glib=true, :)
+ PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.16, have_glib=true, :)
fi
if test "x$with_glib" = "xyes" -a "x$have_glib" != "xtrue"; then
AC_MSG_ERROR([glib support requested but glib-2.0 not found])
@@ -197,6 +195,17 @@ m4_ifdef([GOBJECT_INTROSPECTION_CHECK], [
AM_CONDITIONAL([HAVE_INTROSPECTION], false)
])
+dnl ===========================================================================
+
+have_ucdn=true
+if $have_glib; then
+ have_ucdn=false
+fi
+if $have_ucdn; then
+ AC_DEFINE(HAVE_UCDN, 1, [Have UCDN Unicode functions])
+fi
+AM_CONDITIONAL(HAVE_UCDN, $have_ucdn)
+
dnl ==========================================================================
AC_ARG_WITH(cairo,
@@ -226,30 +235,12 @@ AM_CONDITIONAL(HAVE_CAIRO_FT, $have_cairo_ft)
dnl ==========================================================================
-AC_ARG_WITH(fontconfig,
- [AS_HELP_STRING([--with-fontconfig=@<:@yes/no/auto@:>@],
- [Use fontconfig @<:@default=auto@:>@])],,
- [with_fontconfig=auto])
-have_fontconfig=false
-if test "x$with_fontconfig" = "xyes" -o "x$with_fontconfig" = "xauto"; then
- PKG_CHECK_MODULES(FONTCONFIG, fontconfig, have_fontconfig=true, :)
-fi
-if test "x$with_fontconfig" = "xyes" -a "x$have_fontconfig" != "xtrue"; then
- AC_MSG_ERROR([fontconfig support requested but not found])
-fi
-if $have_fontconfig; then
- AC_DEFINE(HAVE_FONTCONFIG, 1, [Have fontconfig library])
-fi
-AM_CONDITIONAL(HAVE_FONTCONFIG, $have_fontconfig)
-
-dnl ==========================================================================
-
AC_ARG_WITH(icu,
- [AS_HELP_STRING([--with-icu=@<:@yes/no/builtin/auto@:>@],
+ [AS_HELP_STRING([--with-icu=@<:@yes/no/auto@:>@],
[Use ICU @<:@default=auto@:>@])],,
[with_icu=auto])
have_icu=false
-if test "x$with_icu" = "xyes" -o "x$with_icu" = "xbuiltin" -o "x$with_icu" = "xauto"; then
+if test "x$with_icu" = "xyes" -o "x$with_icu" = "xauto"; then
PKG_CHECK_MODULES(ICU, icu-uc, have_icu=true, :)
dnl Fallback to icu-config if ICU pkg-config files could not be found
@@ -271,30 +262,14 @@ if test "x$with_icu" = "xyes" -o "x$with_icu" = "xbuiltin" -o "x$with_icu" = "xa
fi
fi
fi
-if test \( "x$with_icu" = "xyes" -o "x$with_icu" = "xbuiltin" \) -a "x$have_icu" != "xtrue"; then
+if test "x$with_icu" = "xyes" -a "x$have_icu" != "xtrue"; then
AC_MSG_ERROR([icu support requested but icu-uc not found])
fi
-
if $have_icu; then
CXXFLAGS="$CXXFLAGS `$PKG_CONFIG --variable=CXXFLAGS icu-uc`"
AC_DEFINE(HAVE_ICU, 1, [Have ICU library])
- if test "x$with_icu" = "xbuiltin"; then
- AC_DEFINE(HAVE_ICU_BUILTIN, 1, [Use hb-icu Unicode callbacks])
- fi
fi
AM_CONDITIONAL(HAVE_ICU, $have_icu)
-AM_CONDITIONAL(HAVE_ICU_BUILTIN, $have_icu && test "x$with_icu" = "xbuiltin")
-
-dnl ===========================================================================
-
-have_ucdn=true
-if $have_glib || $have_icu && test "x$with_icu" = "xbuiltin"; then
- have_ucdn=false
-fi
-if $have_ucdn; then
- AC_DEFINE(HAVE_UCDN, 1, [Have UCDN Unicode functions])
-fi
-AM_CONDITIONAL(HAVE_UCDN, $have_ucdn)
dnl ==========================================================================
@@ -303,10 +278,8 @@ AC_ARG_WITH(graphite2,
[Use the graphite2 library @<:@default=no@:>@])],,
[with_graphite2=no])
have_graphite2=false
-GRAPHITE2_DEPS="graphite2"
-AC_SUBST(GRAPHITE2_DEPS)
if test "x$with_graphite2" = "xyes" -o "x$with_graphite2" = "xauto"; then
- PKG_CHECK_MODULES(GRAPHITE2, $GRAPHITE2_DEPS, have_graphite2=true, :)
+ PKG_CHECK_MODULES(GRAPHITE2, graphite2, have_graphite2=true, :)
fi
if test "x$with_graphite2" = "xyes" -a "x$have_graphite2" != "xtrue"; then
AC_MSG_ERROR([graphite2 support requested but libgraphite2 not found])
@@ -323,11 +296,9 @@ AC_ARG_WITH(freetype,
[Use the FreeType library @<:@default=auto@:>@])],,
[with_freetype=auto])
have_freetype=false
-FREETYPE_DEPS="freetype2 >= 12.0.6"
-AC_SUBST(FREETYPE_DEPS)
if test "x$with_freetype" = "xyes" -o "x$with_freetype" = "xauto"; then
# See freetype/docs/VERSION.DLL; 12.0.6 means freetype-2.4.2
- PKG_CHECK_MODULES(FREETYPE, $FREETYPE_DEPS, have_freetype=true, :)
+ PKG_CHECK_MODULES(FREETYPE, freetype2 >= 12.0.6, have_freetype=true, :)
fi
if test "x$with_freetype" = "xyes" -a "x$have_freetype" != "xtrue"; then
AC_MSG_ERROR([FreeType support requested but libfreetype2 not found])
@@ -361,30 +332,6 @@ AM_CONDITIONAL(HAVE_UNISCRIBE, $have_uniscribe)
dnl ===========================================================================
-AC_ARG_WITH(directwrite,
- [AS_HELP_STRING([--with-directwrite=@<:@yes/no/auto@:>@],
- [Use the DirectWrite library (experimental) @<:@default=no@:>@])],,
- [with_directwrite=no])
-have_directwrite=false
-AC_LANG_PUSH([C++])
-if test "x$with_directwrite" = "xyes" -o "x$with_directwrite" = "xauto"; then
- AC_CHECK_HEADERS(dwrite.h, have_directwrite=true)
-fi
-AC_LANG_POP([C++])
-if test "x$with_directwrite" = "xyes" -a "x$have_directwrite" != "xtrue"; then
- AC_MSG_ERROR([directwrite support requested but not found])
-fi
-if $have_directwrite; then
- DIRECTWRITE_CXXFLAGS=
- DIRECTWRITE_LIBS="-ldwrite"
- AC_SUBST(DIRECTWRITE_CXXFLAGS)
- AC_SUBST(DIRECTWRITE_LIBS)
- AC_DEFINE(HAVE_DIRECTWRITE, 1, [Have DirectWrite library])
-fi
-AM_CONDITIONAL(HAVE_DIRECTWRITE, $have_directwrite)
-
-dnl ===========================================================================
-
AC_ARG_WITH(coretext,
[AS_HELP_STRING([--with-coretext=@<:@yes/no/auto@:>@],
[Use CoreText @<:@default=no@:>@])],,
@@ -469,12 +416,10 @@ src/hb-ucdn/Makefile
util/Makefile
test/Makefile
test/api/Makefile
-test/fuzzing/Makefile
test/shaping/Makefile
docs/Makefile
-docs/version.xml
-win32/Makefile
-win32/config.h.win32
+docs/reference/Makefile
+docs/reference/version.xml
])
AC_OUTPUT
@@ -493,7 +438,6 @@ Font callbacks (the more the better):
Tools used for command-line utilities:
Cairo: ${have_cairo}
- Fontconfig: ${have_fontconfig}
Additional shapers (the more the better):
Graphite2: ${have_graphite2}
@@ -501,7 +445,6 @@ Additional shapers (the more the better):
Platform shapers (not normally needed):
CoreText: ${have_coretext}
Uniscribe: ${have_uniscribe}
- DirectWrite: ${have_directwrite}
Other features:
Documentation: ${have_gtk_doc}
diff --git a/docs/HarfBuzz.png b/docs/HarfBuzz.png
deleted file mode 100644
index d58d9fc..0000000
--- a/docs/HarfBuzz.png
+++ /dev/null
Binary files differ
diff --git a/docs/Makefile.am b/docs/Makefile.am
index 3916801..034926c 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -1,122 +1,3 @@
-# Process this file with automake to produce Makefile.in
-
-# We require automake 1.6 at least.
-AUTOMAKE_OPTIONS = 1.6
-
-# This is a blank Makefile.am for using gtk-doc.
-# Copy this to your project's API docs directory and modify the variables to
-# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
-# of using the various options.
-
-# The name of the module, e.g. 'glib'.
-DOC_MODULE=harfbuzz
-
-# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
-#DOC_MODULE_VERSION=$(HB_VERSION_MAJOR)
-
-# The top-level SGML file. You can change this if you want to.
-DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml
-
-# Directories containing the source code.
-# gtk-doc will search all .c and .h files beneath these paths
-# for inline comments documenting functions and macros.
-# e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk
-DOC_SOURCE_DIR=$(top_srcdir)/src $(top_builddir)/src
-
-# Extra options to pass to gtkdoc-scangobj. Not normally needed.
-SCANGOBJ_OPTIONS=
-
-# Extra options to supply to gtkdoc-scan.
-# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
-SCAN_OPTIONS=--rebuild-types --deprecated-guards="HB_DISABLE_DEPRECATED" \
- --ignore-decorators="HB_EXTERN"
-
-# Header files or dirs to ignore when scanning. Use base file/dir names
-# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code
-IGNORE_HFILES=`cd $(top_srcdir)/src; find . -path './hb-*/*.h' | sed 's@^.*/@@'`
-if HAVE_GOBJECT
-else
-IGNORE_HFILES+=hb-gobject.h hb-gobject-enums.h hb-gobject-structs.h
-endif
-
-# Extra options to supply to gtkdoc-mkdb.
-# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
-MKDB_OPTIONS=--source-suffixes=h,cc --xml-mode --output-format=xml --ignore-files="$(IGNORE_HFILES)"
-
-# Extra options to supply to gtkdoc-mktmpl
-# e.g. MKTMPL_OPTIONS=--only-section-tmpl
-MKTMPL_OPTIONS=
-
-# Extra options to supply to gtkdoc-mkhtml
-MKHTML_OPTIONS=
-
-# Extra options to supply to gtkdoc-fixref. Not normally needed.
-# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
-FIXXREF_OPTIONS=
-
-# Used for dependencies. The docs will be rebuilt if any of these change.
-# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
-# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
-HFILE_GLOB=$(top_srcdir)/src/hb.h $(top_srcdir)/src/hb-*.h
-CFILE_GLOB=$(top_srcdir)/src/hb-*.cc
-
-# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
-# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
-EXTRA_HFILES=$(top_builddir)/src/hb-version.h
-
-# Images to copy into HTML directory.
-# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
-HTML_IMAGES= \
- HarfBuzz.png
-
-# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
-# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
-content_files= \
- usermanual-buffers-language-script-and-direction.xml \
- usermanual-clusters.xml \
- usermanual-fonts-and-faces.xml \
- usermanual-glyph-information.xml \
- usermanual-hello-harfbuzz.xml \
- usermanual-install-harfbuzz.xml \
- usermanual-opentype-features.xml \
- usermanual-what-is-harfbuzz.xml \
- version.xml
-
-# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
-# These files must be listed here *and* in content_files
-# e.g. expand_content_files=running.sgml
-expand_content_files=
-
-# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
-# Only needed if you are using gtkdoc-scangobj to dynamically query widget
-# signals and properties.
-# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
-# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
-GTKDOC_CFLAGS=
-GTKDOC_LIBS=$(top_builddir)/src/libharfbuzz.la
-if HAVE_GOBJECT
-GTKDOC_LIBS+=$(top_builddir)/src/libharfbuzz-gobject.la
-endif
-
-# This includes the standard gtk-doc make rules, copied by gtkdocize.
-include $(top_srcdir)/gtk-doc.make
-
-# Other files to distribute
-# e.g. EXTRA_DIST += version.xml.in
-EXTRA_DIST += version.xml.in
-
-# Files not to distribute
-# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
-# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
-#DISTCLEANFILES +=
-
-# Comment this out if you want 'make check' to test you doc status
-# and run some sanity checks
-if ENABLE_GTK_DOC
-TESTS_ENVIRONMENT = cd $(srcdir) && \
- DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
- SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir)
-#TESTS = $(GTKDOC_CHECK)
-endif
+SUBDIRS = reference
-include $(top_srcdir)/git.mk
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 04b9a15..f8fe860 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -13,14 +13,6 @@
# PARTICULAR PURPOSE.
@SET_MAKE@
-
-# Process this file with automake to produce Makefile.in
-
-# -*- mode: makefile -*-
-
-####################################
-# Everything below here is generic #
-####################################
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
@@ -85,11 +77,8 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-@HAVE_GOBJECT_FALSE@am__append_1 = hb-gobject.h hb-gobject-enums.h hb-gobject-structs.h
-@HAVE_GOBJECT_TRUE@am__append_2 = $(top_builddir)/src/libharfbuzz-gobject.la
-DIST_COMMON = $(top_srcdir)/gtk-doc.make $(srcdir)/Makefile.in \
- $(srcdir)/Makefile.am $(srcdir)/version.xml.in
subdir = docs
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
$(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \
@@ -100,7 +89,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = version.xml
+CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -116,13 +105,73 @@ am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ distdir
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
@@ -149,8 +198,6 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
-DIRECTWRITE_CXXFLAGS = @DIRECTWRITE_CXXFLAGS@
-DIRECTWRITE_LIBS = @DIRECTWRITE_LIBS@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
@@ -160,20 +207,15 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
-FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
-FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
-FREETYPE_DEPS = @FREETYPE_DEPS@
FREETYPE_LIBS = @FREETYPE_LIBS@
GIT = @GIT@
GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_DEPS = @GLIB_DEPS@
GLIB_LIBS = @GLIB_LIBS@
GLIB_MKENUMS = @GLIB_MKENUMS@
GOBJECT_CFLAGS = @GOBJECT_CFLAGS@
GOBJECT_LIBS = @GOBJECT_LIBS@
GRAPHITE2_CFLAGS = @GRAPHITE2_CFLAGS@
-GRAPHITE2_DEPS = @GRAPHITE2_DEPS@
GRAPHITE2_LIBS = @GRAPHITE2_LIBS@
GREP = @GREP@
GTKDOC_CHECK = @GTKDOC_CHECK@
@@ -296,195 +338,11 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-
-# We require automake 1.6 at least.
-AUTOMAKE_OPTIONS = 1.6
-
-# This is a blank Makefile.am for using gtk-doc.
-# Copy this to your project's API docs directory and modify the variables to
-# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
-# of using the various options.
-
-# The name of the module, e.g. 'glib'.
-DOC_MODULE = harfbuzz
-
-# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
-#DOC_MODULE_VERSION=$(HB_VERSION_MAJOR)
-
-# The top-level SGML file. You can change this if you want to.
-DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.xml
-
-# Directories containing the source code.
-# gtk-doc will search all .c and .h files beneath these paths
-# for inline comments documenting functions and macros.
-# e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk
-DOC_SOURCE_DIR = $(top_srcdir)/src $(top_builddir)/src
-
-# Extra options to pass to gtkdoc-scangobj. Not normally needed.
-SCANGOBJ_OPTIONS =
-
-# Extra options to supply to gtkdoc-scan.
-# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
-SCAN_OPTIONS = --rebuild-types --deprecated-guards="HB_DISABLE_DEPRECATED" \
- --ignore-decorators="HB_EXTERN"
-
-
-# Header files or dirs to ignore when scanning. Use base file/dir names
-# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code
-IGNORE_HFILES = `cd $(top_srcdir)/src; find . -path './hb-*/*.h' | sed \
- 's@^.*/@@'` $(am__append_1)
-
-# Extra options to supply to gtkdoc-mkdb.
-# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
-MKDB_OPTIONS = --source-suffixes=h,cc --xml-mode --output-format=xml --ignore-files="$(IGNORE_HFILES)"
-
-# Extra options to supply to gtkdoc-mktmpl
-# e.g. MKTMPL_OPTIONS=--only-section-tmpl
-MKTMPL_OPTIONS =
-
-# Extra options to supply to gtkdoc-mkhtml
-MKHTML_OPTIONS =
-
-# Extra options to supply to gtkdoc-fixref. Not normally needed.
-# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
-FIXXREF_OPTIONS =
-
-# Used for dependencies. The docs will be rebuilt if any of these change.
-# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
-# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
-HFILE_GLOB = $(top_srcdir)/src/hb.h $(top_srcdir)/src/hb-*.h
-CFILE_GLOB = $(top_srcdir)/src/hb-*.cc
-
-# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
-# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
-EXTRA_HFILES = $(top_builddir)/src/hb-version.h
-
-# Images to copy into HTML directory.
-# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
-HTML_IMAGES = \
- HarfBuzz.png
-
-
-# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
-# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
-content_files = \
- usermanual-buffers-language-script-and-direction.xml \
- usermanual-clusters.xml \
- usermanual-fonts-and-faces.xml \
- usermanual-glyph-information.xml \
- usermanual-hello-harfbuzz.xml \
- usermanual-install-harfbuzz.xml \
- usermanual-opentype-features.xml \
- usermanual-what-is-harfbuzz.xml \
- version.xml
-
-
-# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
-# These files must be listed here *and* in content_files
-# e.g. expand_content_files=running.sgml
-expand_content_files =
-
-# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
-# Only needed if you are using gtkdoc-scangobj to dynamically query widget
-# signals and properties.
-# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
-# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
-GTKDOC_CFLAGS =
-GTKDOC_LIBS = $(top_builddir)/src/libharfbuzz.la $(am__append_2)
-@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
-@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
-@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN =
-@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute
-
-# We set GPATH here; this gives us semantics for GNU make
-# which are more like other make's VPATH, when it comes to
-# whether a source that is a target of one rule is then
-# searched for in VPATH/GPATH.
-#
-GPATH = $(srcdir)
-TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE)
-SETUP_FILES = \
- $(content_files) \
- $(DOC_MAIN_SGML_FILE) \
- $(DOC_MODULE)-sections.txt \
- $(DOC_MODULE)-overrides.txt
-
-
-# This includes the standard gtk-doc make rules, copied by gtkdocize.
-
-# Other files to distribute
-# e.g. EXTRA_DIST += version.xml.in
-EXTRA_DIST = $(HTML_IMAGES) $(SETUP_FILES) version.xml.in
-DOC_STAMPS = setup-build.stamp scan-build.stamp sgml-build.stamp \
- html-build.stamp pdf-build.stamp \
- sgml.stamp html.stamp pdf.stamp
-
-SCANOBJ_FILES = \
- $(DOC_MODULE).args \
- $(DOC_MODULE).hierarchy \
- $(DOC_MODULE).interfaces \
- $(DOC_MODULE).prerequisites \
- $(DOC_MODULE).signals
-
-REPORT_FILES = \
- $(DOC_MODULE)-undocumented.txt \
- $(DOC_MODULE)-undeclared.txt \
- $(DOC_MODULE)-unused.txt
-
-CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) gtkdoc-check.test
-@GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP =
-@GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp
-@GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP =
-@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp
-
-#### setup ####
-GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_$(V))
-GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY))
-GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build";
-
-#### scan ####
-GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_$(V))
-GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY))
-GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files";
-GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_$(V))
-GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY))
-GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects";
-
-#### xml ####
-GTK_DOC_V_XML = $(GTK_DOC_V_XML_$(V))
-GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY))
-GTK_DOC_V_XML_0 = @echo " DOC Building XML";
-
-#### html ####
-GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_$(V))
-GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY))
-GTK_DOC_V_HTML_0 = @echo " DOC Building HTML";
-GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_$(V))
-GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY))
-GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references";
-
-#### pdf ####
-GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_$(V))
-GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY))
-GTK_DOC_V_PDF_0 = @echo " DOC Building PDF";
-
-# Files not to distribute
-# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
-# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
-#DISTCLEANFILES +=
-
-# Comment this out if you want 'make check' to test you doc status
-# and run some sanity checks
-@ENABLE_GTK_DOC_TRUE@TESTS_ENVIRONMENT = cd $(srcdir) && \
-@ENABLE_GTK_DOC_TRUE@ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
-@ENABLE_GTK_DOC_TRUE@ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir)
-
-all: all-am
+SUBDIRS = reference
+all: all-recursive
.SUFFIXES:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(am__configure_deps)
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -505,7 +363,6 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(top_srcdir)/gtk-doc.make:
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -515,20 +372,111 @@ $(top_srcdir)/configure: $(am__configure_deps)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
-version.xml: $(top_builddir)/config.status $(srcdir)/version.xml.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
-tags TAGS:
-
-ctags CTAGS:
-cscope cscopelist:
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -560,23 +508,45 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$(top_distdir)" distdir="$(distdir)" \
- dist-hook
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
check-am: all-am
-check: check-am
-@ENABLE_GTK_DOC_FALSE@all-local:
-all-am: Makefile all-local
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-installcheck: installcheck-am
+installcheck: installcheck-recursive
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
@@ -590,7 +560,6 @@ install-strip:
mostlyclean-generic:
clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
@@ -599,272 +568,87 @@ distclean-generic:
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
+clean: clean-recursive
-clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+clean-am: clean-generic clean-libtool mostlyclean-am
-distclean: distclean-am
+distclean: distclean-recursive
-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-local
+distclean-am: clean-am distclean-generic distclean-tags
-dvi: dvi-am
+dvi: dvi-recursive
dvi-am:
-html: html-am
+html: html-recursive
html-am:
-info: info-am
+info: info-recursive
info-am:
-install-data-am: install-data-local
+install-data-am:
-install-dvi: install-dvi-am
+install-dvi: install-dvi-recursive
install-dvi-am:
install-exec-am:
-install-html: install-html-am
+install-html: install-html-recursive
install-html-am:
-install-info: install-info-am
+install-info: install-info-recursive
install-info-am:
install-man:
-install-pdf: install-pdf-am
+install-pdf: install-pdf-recursive
install-pdf-am:
-install-ps: install-ps-am
+install-ps: install-ps-recursive
install-ps-am:
installcheck-am:
-maintainer-clean: maintainer-clean-am
+maintainer-clean: maintainer-clean-recursive
-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic \
- maintainer-clean-local
+maintainer-clean-am: distclean-am maintainer-clean-generic
-mostlyclean: mostlyclean-am
+mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-pdf: pdf-am
+pdf: pdf-recursive
pdf-am:
-ps: ps-am
+ps: ps-recursive
ps-am:
-uninstall-am: uninstall-local
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am all-local check check-am clean clean-generic \
- clean-libtool clean-local cscopelist-am ctags-am dist-hook \
- distclean distclean-generic distclean-libtool distclean-local \
- distdir dvi dvi-am html html-am info info-am install \
- install-am install-data install-data-am install-data-local \
- install-dvi install-dvi-am install-exec install-exec-am \
- install-html install-html-am install-info install-info-am \
- install-man install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- maintainer-clean-local mostlyclean mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
- uninstall-am uninstall-local
-
-
-gtkdoc-check.test: Makefile
- $(AM_V_GEN)echo "#!/bin/sh -e" > $@; \
- echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \
- chmod +x $@
-
-all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
-.PHONY: all-gtk-doc
-
-@ENABLE_GTK_DOC_TRUE@all-local: all-gtk-doc
-
-docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
-
-$(REPORT_FILES): sgml-build.stamp
-
-setup-build.stamp:
- -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
- files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \
- if test "x$$files" != "x" ; then \
- for file in $$files ; do \
- destdir=`dirname $(abs_builddir)/$$file`; \
- test -d "$$destdir" || mkdir -p "$$destdir"; \
- test -f $(abs_srcdir)/$$file && \
- cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \
- done; \
- fi; \
- fi
- $(AM_V_at)touch setup-build.stamp
-
-scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB)
- $(GTK_DOC_V_SCAN)_source_dir='' ; \
- for i in $(DOC_SOURCE_DIR) ; do \
- _source_dir="$${_source_dir} --source-dir=$$i" ; \
- done ; \
- gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES)
- $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \
- scanobj_options=""; \
- gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \
- if test "$(?)" = "0"; then \
- if test "x$(V)" = "x1"; then \
- scanobj_options="--verbose"; \
- fi; \
- fi; \
- CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \
- gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \
- else \
- for i in $(SCANOBJ_FILES) ; do \
- test -f $$i || touch $$i ; \
- done \
- fi
- $(AM_V_at)touch scan-build.stamp
-
-$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
- @true
-
-sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files)
- $(GTK_DOC_V_XML)_source_dir='' ; \
- for i in $(DOC_SOURCE_DIR) ; do \
- _source_dir="$${_source_dir} --source-dir=$$i" ; \
- done ; \
- gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS)
- $(AM_V_at)touch sgml-build.stamp
-
-sgml.stamp: sgml-build.stamp
- @true
-
-html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
- $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \
- mkhtml_options=""; \
- gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \
- if test "$(?)" = "0"; then \
- if test "x$(V)" = "x1"; then \
- mkhtml_options="$$mkhtml_options --verbose"; \
- fi; \
- fi; \
- gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \
- if test "$(?)" = "0"; then \
- mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \
- fi; \
- cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
- -@test "x$(HTML_IMAGES)" = "x" || \
- for file in $(HTML_IMAGES) ; do \
- if test -f $(abs_srcdir)/$$file ; then \
- cp $(abs_srcdir)/$$file $(abs_builddir)/html; \
- fi; \
- if test -f $(abs_builddir)/$$file ; then \
- cp $(abs_builddir)/$$file $(abs_builddir)/html; \
- fi; \
- done;
- $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
- $(AM_V_at)touch html-build.stamp
-
-pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
- $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \
- mkpdf_options=""; \
- gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \
- if test "$(?)" = "0"; then \
- if test "x$(V)" = "x1"; then \
- mkpdf_options="$$mkpdf_options --verbose"; \
- fi; \
- fi; \
- if test "x$(HTML_IMAGES)" != "x"; then \
- for img in $(HTML_IMAGES); do \
- part=`dirname $$img`; \
- echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \
- if test $$? != 0; then \
- mkpdf_options="$$mkpdf_options --imgdir=$$part"; \
- fi; \
- done; \
- fi; \
- gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS)
- $(AM_V_at)touch pdf-build.stamp
-
-##############
-
-clean-local:
- @rm -f *~ *.bak
- @rm -rf .libs
- @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-types" ; then \
- rm -f $(DOC_MODULE).types; \
- fi
-
-distclean-local:
- @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \
- $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
- @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
- rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \
- fi
+uninstall-am:
-maintainer-clean-local:
- @rm -rf xml html
+.MAKE: $(am__recursive_targets) install-am install-strip
-install-data-local:
- @installfiles=`echo $(builddir)/html/*`; \
- if test "$$installfiles" = '$(builddir)/html/*'; \
- then echo 1>&2 'Nothing to install' ; \
- else \
- if test -n "$(DOC_MODULE_VERSION)"; then \
- installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
- else \
- installdir="$(DESTDIR)$(TARGET_DIR)"; \
- fi; \
- $(mkinstalldirs) $${installdir} ; \
- for i in $$installfiles; do \
- echo ' $(INSTALL_DATA) '$$i ; \
- $(INSTALL_DATA) $$i $${installdir}; \
- done; \
- if test -n "$(DOC_MODULE_VERSION)"; then \
- mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
- $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
- fi; \
- $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \
- fi
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+ check-am clean clean-generic clean-libtool cscopelist-am ctags \
+ ctags-am distclean distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags tags-am uninstall uninstall-am
-uninstall-local:
- @if test -n "$(DOC_MODULE_VERSION)"; then \
- installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
- else \
- installdir="$(DESTDIR)$(TARGET_DIR)"; \
- fi; \
- rm -rf $${installdir}
-
-#
-# Require gtk-doc when making dist
-#
-@HAVE_GTK_DOC_TRUE@dist-check-gtkdoc: docs
-@HAVE_GTK_DOC_FALSE@dist-check-gtkdoc:
-@HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc is needed to run 'make dist'. ***"
-@HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc was not found when 'configure' ran. ***"
-@HAVE_GTK_DOC_FALSE@ @echo "*** please install gtk-doc and rerun 'configure'. ***"
-@HAVE_GTK_DOC_FALSE@ @false
-
-dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local
- @mkdir $(distdir)/html
- @cp ./html/* $(distdir)/html
- @-cp ./$(DOC_MODULE).pdf $(distdir)/
- @-cp ./$(DOC_MODULE).types $(distdir)/
- @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/
- @cd $(distdir) && rm -f $(DISTCLEANFILES)
- @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html
-
-.PHONY : dist-hook-local docs
-#TESTS = $(GTKDOC_CHECK)
-include $(top_srcdir)/git.mk
diff --git a/docs/harfbuzz-docs.xml b/docs/harfbuzz-docs.xml
deleted file mode 100644
index 6c03f39..0000000
--- a/docs/harfbuzz-docs.xml
+++ /dev/null
@@ -1,184 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
- "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
- <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
- <!ENTITY version SYSTEM "version.xml">
-]>
-<book id="index">
- <bookinfo>
- <title>HarfBuzz Manual</title>
- <abstract>
- <title>HarfBuzz</title>
- <graphic fileref="HarfBuzz.png" format="PNG" align="center"/>
- <para>
- HarfBuzz is an <ulink url="http://www.microsoft.com/typography/otspec/">OpenType</ulink>
- text shaping engine.
- </para>
- <para>
- The current HarfBuzz codebase, formerly known as harfbuzz-ng, is
- versioned 1.x.x and is stable and under active maintenance. This is
- what is used in latest versions of Firefox, GNOME, ChromeOS, Chrome,
- LibreOffice, XeTeX, Android, and KDE, among other places. The canonical
- source tree is available
- <ulink url="http://cgit.freedesktop.org/harfbuzz/">here</ulink>.
- Also available on
- <ulink url="https://github.com/behdad/harfbuzz">github</ulink>.
- See <xref linkend="download" endterm="download.title"/> for release tarballs.
- </para>
- <para>
- The old HarfBuzz codebase, these days known as harfbuzz-old, was
- derived from <ulink url="http://freetype.org/">FreeType</ulink>,
- <ulink url="http://pango.org/">Pango</ulink>, and
- <ulink url="http://qt-project.org/">Qt</ulink> and is available
- <ulink url="http://cgit.freedesktop.org/harfbuzz.old/">here</ulink>.
- It is not actively developed or maintained, and is extremely buggy. All
- users are encouraged to switch over to the new HarfBuzz as soon as
- possible. There are no release tarballs of old HarfBuzz whatsoever.
- </para>
- </abstract>
- </bookinfo>
-
- <part>
- <title>User's manual</title>
- <xi:include href="usermanual-what-is-harfbuzz.xml"/>
- <xi:include href="usermanual-install-harfbuzz.xml"/>
- <xi:include href="usermanual-hello-harfbuzz.xml"/>
- <xi:include href="usermanual-buffers-language-script-and-direction.xml"/>
- <xi:include href="usermanual-fonts-and-faces.xml"/>
- <xi:include href="usermanual-opentype-features.xml"/>
- <xi:include href="usermanual-glyph-information.xml"/>
- </part>
-
- <part>
- <partinfo>
- <releaseinfo>
- This document is for HarfBuzz &version;.
- <!--The latest version of this documentation can be found on-line at
- <ulink role="online-location" url="http://[SERVER]/libharfbuzz/index.html">http://[SERVER]/libharfbuzz/</ulink>.-->
- </releaseinfo>
- </partinfo>
- <title>Reference manual</title>
- <chapter>
- <title>Harfbuzz API</title>
- <xi:include href="xml/hb.xml"/>
- <xi:include href="xml/hb-common.xml"/>
- <xi:include href="xml/hb-unicode.xml"/>
- <xi:include href="xml/hb-buffer.xml"/>
- <xi:include href="xml/hb-blob.xml"/>
- <xi:include href="xml/hb-face.xml"/>
- <xi:include href="xml/hb-font.xml"/>
- <xi:include href="xml/hb-shape.xml"/>
-
- <xi:include href="xml/hb-version.xml"/>
- <xi:include href="xml/hb-deprecated.xml"/>
-
- <xi:include href="xml/hb-set.xml"/>
-
- <xi:include href="xml/hb-ot.xml"/>
- <xi:include href="xml/hb-ot-layout.xml"/>
- <xi:include href="xml/hb-ot-tag.xml"/>
- <xi:include href="xml/hb-ot-font.xml"/>
- <xi:include href="xml/hb-ot-shape.xml"/>
-
- <xi:include href="xml/hb-shape-plan.xml"/>
-
- <xi:include href="xml/hb-glib.xml"/>
- <xi:include href="xml/hb-icu.xml"/>
-
- <xi:include href="xml/hb-ft.xml"/>
-
- <xi:include href="xml/hb-graphite2.xml"/>
- <xi:include href="xml/hb-uniscribe.xml"/>
- <xi:include href="xml/hb-coretext.xml"/>
-
- <xi:include href="xml/hb-gobject.xml"/>
-
- </chapter>
- <chapter id="object-tree">
- <title>Object Hierarchy</title>
- <xi:include href="xml/tree_index.sgml"/>
- </chapter>
- <index id="api-index-full">
- <title>API Index</title>
- <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-2" role="0.9.2">
- <title>Index of new symbols in 0.9.2</title>
- <xi:include href="xml/api-index-0.9.2.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-5" role="0.9.5">
- <title>Index of new symbols in 0.9.5</title>
- <xi:include href="xml/api-index-0.9.5.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-7" role="0.9.7">
- <title>Index of new symbols in 0.9.7</title>
- <xi:include href="xml/api-index-0.9.7.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-8" role="0.9.8">
- <title>Index of new symbols in 0.9.8</title>
- <xi:include href="xml/api-index-0.9.8.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-10" role="0.9.10">
- <title>Index of new symbols in 0.9.10</title>
- <xi:include href="xml/api-index-0.9.10.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-11" role="0.9.11">
- <title>Index of new symbols in 0.9.11</title>
- <xi:include href="xml/api-index-0.9.11.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-20" role="0.9.20">
- <title>Index of new symbols in 0.9.20</title>
- <xi:include href="xml/api-index-0.9.20.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-22" role="0.9.22">
- <title>Index of new symbols in 0.9.22</title>
- <xi:include href="xml/api-index-0.9.22.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-28" role="0.9.28">
- <title>Index of new symbols in 0.9.28</title>
- <xi:include href="xml/api-index-0.9.28.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-30" role="0.9.30">
- <title>Index of new symbols in 0.9.30</title>
- <xi:include href="xml/api-index-0.9.30.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-31" role="0.9.31">
- <title>Index of new symbols in 0.9.31</title>
- <xi:include href="xml/api-index-0.9.31.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-38" role="0.9.38">
- <title>Index of new symbols in 0.9.38</title>
- <xi:include href="xml/api-index-0.9.38.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-39" role="0.9.39">
- <title>Index of new symbols in 0.9.39</title>
- <xi:include href="xml/api-index-0.9.39.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-41" role="0.9.41">
- <title>Index of new symbols in 0.9.41</title>
- <xi:include href="xml/api-index-0.9.41.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-42" role="0.9.42">
- <title>Index of new symbols in 0.9.42</title>
- <xi:include href="xml/api-index-0.9.42.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-1-0-5" role="1.0.5">
- <title>Index of new symbols in 1.0.5</title>
- <xi:include href="xml/api-index-1.0.5.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-1-1-2" role="1.1.2">
- <title>Index of new symbols in 1.1.2</title>
- <xi:include href="xml/api-index-1.1.2.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-1-1-3" role="1.1.3">
- <title>Index of new symbols in 1.1.3</title>
- <xi:include href="xml/api-index-1.1.3.xml"><xi:fallback /></xi:include>
- </index>
- <index id="deprecated-api-index" role="deprecated">
- <title>Index of deprecated API</title>
- <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
- </index>
-
- <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
- </part>
-</book>
diff --git a/docs/harfbuzz.types b/docs/harfbuzz.types
deleted file mode 100644
index d9664df..0000000
--- a/docs/harfbuzz.types
+++ /dev/null
@@ -1,24 +0,0 @@
-hb_gobject_blob_get_type
-hb_gobject_buffer_cluster_level_get_type
-hb_gobject_buffer_content_type_get_type
-hb_gobject_buffer_flags_get_type
-hb_gobject_buffer_get_type
-hb_gobject_buffer_serialize_flags_get_type
-hb_gobject_buffer_serialize_format_get_type
-hb_gobject_direction_get_type
-hb_gobject_face_get_type
-hb_gobject_feature_get_type
-hb_gobject_font_funcs_get_type
-hb_gobject_font_get_type
-hb_gobject_glyph_info_get_type
-hb_gobject_glyph_position_get_type
-hb_gobject_memory_mode_get_type
-hb_gobject_ot_layout_glyph_class_get_type
-hb_gobject_script_get_type
-hb_gobject_segment_properties_get_type
-hb_gobject_set_get_type
-hb_gobject_shape_plan_get_type
-hb_gobject_unicode_combining_class_get_type
-hb_gobject_unicode_funcs_get_type
-hb_gobject_unicode_general_category_get_type
-hb_gobject_user_data_key_get_type
diff --git a/docs/html/HarfBuzz.png b/docs/html/HarfBuzz.png
deleted file mode 100644
index d58d9fc..0000000
--- a/docs/html/HarfBuzz.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/adding-text-to-the-buffer.html b/docs/html/adding-text-to-the-buffer.html
deleted file mode 100644
index ccf96bc..0000000
--- a/docs/html/adding-text-to-the-buffer.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Adding text to the buffer: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="buffers-language-script-and-direction.html" title="Buffers, language, script and direction">
-<link rel="prev" href="buffers-language-script-and-direction.html" title="Buffers, language, script and direction">
-<link rel="next" href="setting-buffer-properties.html" title="Setting buffer properties">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="buffers-language-script-and-direction.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="buffers-language-script-and-direction.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="setting-buffer-properties.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="adding-text-to-the-buffer"></a>Adding text to the buffer</h2></div></div></div>
-<p>
- Now we have a brand new Harfbuzz buffer. Let's start filling it
- with text! From Harfbuzz's perspective, a buffer is just a stream
- of Unicode codepoints, but your input string is probably in one of
- the standard Unicode character encodings (UTF-8, UTF-16, UTF-32)
- </p>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/annotation-glossary.html b/docs/html/annotation-glossary.html
deleted file mode 100644
index ccbbafe..0000000
--- a/docs/html/annotation-glossary.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Annotation Glossary: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="deprecated-api-index.html" title="Index of deprecated API">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_glossary"><a class="shortcut" href="#glsA">A</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#glsC">C</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#glsD">D</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#glsE">E</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#glsI">I</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#glsN">N</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#glsO">O</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#glsS">S</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#glsT">T</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="deprecated-api-index.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><img src="right-insensitive.png" width="16" height="16" border="0"></td>
-</tr></table>
-<div class="glossary">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="annotation-glossary"></a>Annotation Glossary</h2></div></div></div>
-<a name="glsA"></a><h3 class="title">A</h3>
-<dt><span class="glossterm"><a name="annotation-glossterm-allow-none"></a>allow-none</span></dt>
-<dd class="glossdef"><p>NULL is OK, both for passing and for returning.</p></dd>
-<dt><span class="glossterm"><a name="annotation-glossterm-array"></a>array</span></dt>
-<dd class="glossdef"><p>Parameter points to an array of items.</p></dd>
-<a name="glsC"></a><h3 class="title">C</h3>
-<dt><span class="glossterm"><a name="annotation-glossterm-closure"></a>closure</span></dt>
-<dd class="glossdef"><p>This parameter is a 'user_data', for callbacks; many bindings can pass NULL here.</p></dd>
-<a name="glsD"></a><h3 class="title">D</h3>
-<dt><span class="glossterm"><a name="annotation-glossterm-destroy"></a>destroy</span></dt>
-<dd class="glossdef"><p>This parameter is a 'destroy_data', for callbacks.</p></dd>
-<a name="glsE"></a><h3 class="title">E</h3>
-<dt><span class="glossterm"><a name="annotation-glossterm-element-type"></a>element-type</span></dt>
-<dd class="glossdef"><p>Generics and defining elements of containers and arrays.</p></dd>
-<a name="glsI"></a><h3 class="title">I</h3>
-<dt><span class="glossterm"><a name="annotation-glossterm-inout"></a>inout</span></dt>
-<dd class="glossdef"><p>Parameter for input and for returning results. Default is <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>.</p></dd>
-<a name="glsN"></a><h3 class="title">N</h3>
-<dt><span class="glossterm"><a name="annotation-glossterm-nullable"></a>nullable</span></dt>
-<dd class="glossdef"><p>NULL may be passed as the value in, out, in-out; or as a return value.</p></dd>
-<a name="glsO"></a><h3 class="title">O</h3>
-<dt><span class="glossterm"><a name="annotation-glossterm-out"></a>out</span></dt>
-<dd class="glossdef"><p>Parameter for returning results. Default is <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>.</p></dd>
-<a name="glsS"></a><h3 class="title">S</h3>
-<dt><span class="glossterm"><a name="annotation-glossterm-scope%20notified"></a>scope notified</span></dt>
-<dd class="glossdef"><p>The callback is valid until the GDestroyNotify argument is called.</p></dd>
-<dt><span class="glossterm"><a name="annotation-glossterm-skip"></a>skip</span></dt>
-<dd class="glossdef"><p>Exposed in C code, not necessarily available in other languages.</p></dd>
-<a name="glsT"></a><h3 class="title">T</h3>
-<dt><span class="glossterm"><a name="annotation-glossterm-transfer%20full"></a>transfer full</span></dt>
-<dd class="glossdef"><p>Free data after the code is done.</p></dd>
-<dt><span class="glossterm"><a name="annotation-glossterm-transfer%20none"></a>transfer none</span></dt>
-<dd class="glossdef"><p>Don't free data after the code is done.</p></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-10.html b/docs/html/api-index-0-9-10.html
deleted file mode 100644
index 76ac9c6..0000000
--- a/docs/html/api-index-0-9-10.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.9.10: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-8.html" title="Index of new symbols in 0.9.8">
-<link rel="next" href="api-index-0-9-11.html" title="Index of new symbols in 0.9.11">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxO">O</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxS">S</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-8.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-11.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-0-9-10"></a>Index of new symbols in 0.9.10</h2></div></div></div>
-<a name="idx"></a><a name="idxO"></a><h3 class="title">O</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-get-size-params" title="hb_ot_layout_get_size_params ()">hb_ot_layout_get_size_params</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
-</dt>
-<dd></dd>
-<a name="idxS"></a><h3 class="title">S</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-invert" title="hb_set_invert ()">hb_set_invert</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-11.html b/docs/html/api-index-0-9-11.html
deleted file mode 100644
index 83271c7..0000000
--- a/docs/html/api-index-0-9-11.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.9.11: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-10.html" title="Index of new symbols in 0.9.10">
-<link rel="next" href="api-index-0-9-20.html" title="Index of new symbols in 0.9.20">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-10.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-20.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-0-9-11"></a>Index of new symbols in 0.9.11</h2></div></div></div>
-<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-clear-contents" title="hb_buffer_clear_contents ()">hb_buffer_clear_contents</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-2.html b/docs/html/api-index-0-9-2.html
deleted file mode 100644
index 75ae862..0000000
--- a/docs/html/api-index-0-9-2.html
+++ /dev/null
@@ -1,746 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.9.2: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-full.html" title="API Index">
-<link rel="next" href="api-index-0-9-5.html" title="Index of new symbols in 0.9.5">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxD">D</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxF">F</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxL">L</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxO">O</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxS">S</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxT">T</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxU">U</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxV">V</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-full.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-5.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-0-9-2"></a>Index of new symbols in 0.9.2</h2></div></div></div>
-<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-blob.html#hb-blob-create" title="hb_blob_create ()">hb_blob_create</a>, function in <a class="link" href="harfbuzz-hb-blob.html" title="hb-blob">hb-blob</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-blob.html#hb-blob-create-sub-blob" title="hb_blob_create_sub_blob ()">hb_blob_create_sub_blob</a>, function in <a class="link" href="harfbuzz-hb-blob.html" title="hb-blob">hb-blob</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-blob.html#hb-blob-destroy" title="hb_blob_destroy ()">hb_blob_destroy</a>, function in <a class="link" href="harfbuzz-hb-blob.html" title="hb-blob">hb-blob</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-blob.html#hb-blob-get-data" title="hb_blob_get_data ()">hb_blob_get_data</a>, function in <a class="link" href="harfbuzz-hb-blob.html" title="hb-blob">hb-blob</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-blob.html#hb-blob-get-data-writable" title="hb_blob_get_data_writable ()">hb_blob_get_data_writable</a>, function in <a class="link" href="harfbuzz-hb-blob.html" title="hb-blob">hb-blob</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-blob.html#hb-blob-get-empty" title="hb_blob_get_empty ()">hb_blob_get_empty</a>, function in <a class="link" href="harfbuzz-hb-blob.html" title="hb-blob">hb-blob</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-blob.html#hb-blob-get-length" title="hb_blob_get_length ()">hb_blob_get_length</a>, function in <a class="link" href="harfbuzz-hb-blob.html" title="hb-blob">hb-blob</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-blob.html#hb-blob-get-user-data" title="hb_blob_get_user_data ()">hb_blob_get_user_data</a>, function in <a class="link" href="harfbuzz-hb-blob.html" title="hb-blob">hb-blob</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-blob.html#hb-blob-is-immutable" title="hb_blob_is_immutable ()">hb_blob_is_immutable</a>, function in <a class="link" href="harfbuzz-hb-blob.html" title="hb-blob">hb-blob</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-blob.html#hb-blob-make-immutable" title="hb_blob_make_immutable ()">hb_blob_make_immutable</a>, function in <a class="link" href="harfbuzz-hb-blob.html" title="hb-blob">hb-blob</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-blob.html#hb-blob-reference" title="hb_blob_reference ()">hb_blob_reference</a>, function in <a class="link" href="harfbuzz-hb-blob.html" title="hb-blob">hb-blob</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-blob.html#hb-blob-set-user-data" title="hb_blob_set_user_data ()">hb_blob_set_user_data</a>, function in <a class="link" href="harfbuzz-hb-blob.html" title="hb-blob">hb-blob</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf16" title="hb_buffer_add_utf16 ()">hb_buffer_add_utf16</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf32" title="hb_buffer_add_utf32 ()">hb_buffer_add_utf32</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf8" title="hb_buffer_add_utf8 ()">hb_buffer_add_utf8</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-allocation-successful" title="hb_buffer_allocation_successful ()">hb_buffer_allocation_successful</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-create" title="hb_buffer_create ()">hb_buffer_create</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-destroy" title="hb_buffer_destroy ()">hb_buffer_destroy</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-direction" title="hb_buffer_get_direction ()">hb_buffer_get_direction</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-empty" title="hb_buffer_get_empty ()">hb_buffer_get_empty</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-glyph-infos" title="hb_buffer_get_glyph_infos ()">hb_buffer_get_glyph_infos</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-glyph-positions" title="hb_buffer_get_glyph_positions ()">hb_buffer_get_glyph_positions</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-language" title="hb_buffer_get_language ()">hb_buffer_get_language</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-length" title="hb_buffer_get_length ()">hb_buffer_get_length</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-script" title="hb_buffer_get_script ()">hb_buffer_get_script</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-unicode-funcs" title="hb_buffer_get_unicode_funcs ()">hb_buffer_get_unicode_funcs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-user-data" title="hb_buffer_get_user_data ()">hb_buffer_get_user_data</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-normalize-glyphs" title="hb_buffer_normalize_glyphs ()">hb_buffer_normalize_glyphs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-pre-allocate" title="hb_buffer_pre_allocate ()">hb_buffer_pre_allocate</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reference" title="hb_buffer_reference ()">hb_buffer_reference</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reset" title="hb_buffer_reset ()">hb_buffer_reset</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse" title="hb_buffer_reverse ()">hb_buffer_reverse</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse-clusters" title="hb_buffer_reverse_clusters ()">hb_buffer_reverse_clusters</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t">hb_buffer_serialize_format_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()">hb_buffer_set_direction</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-language" title="hb_buffer_set_language ()">hb_buffer_set_language</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-length" title="hb_buffer_set_length ()">hb_buffer_set_length</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-script" title="hb_buffer_set_script ()">hb_buffer_set_script</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-unicode-funcs" title="hb_buffer_set_unicode_funcs ()">hb_buffer_set_unicode_funcs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-user-data" title="hb_buffer_set_user_data ()">hb_buffer_set_user_data</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<a name="idxD"></a><h3 class="title">D</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-common.html#hb-direction-from-string" title="hb_direction_from_string ()">hb_direction_from_string</a>, function in <a class="link" href="harfbuzz-hb-common.html" title="hb-common">hb-common</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-common.html#hb-direction-to-string" title="hb_direction_to_string ()">hb_direction_to_string</a>, function in <a class="link" href="harfbuzz-hb-common.html" title="hb-common">hb-common</a>
-</dt>
-<dd></dd>
-<a name="idxF"></a><h3 class="title">F</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-face.html#hb-face-create" title="hb_face_create ()">hb_face_create</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-face.html#hb-face-create-for-tables" title="hb_face_create_for_tables ()">hb_face_create_for_tables</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-face.html#hb-face-destroy" title="hb_face_destroy ()">hb_face_destroy</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-face.html#hb-face-get-empty" title="hb_face_get_empty ()">hb_face_get_empty</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-face.html#hb-face-get-index" title="hb_face_get_index ()">hb_face_get_index</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-face.html#hb-face-get-upem" title="hb_face_get_upem ()">hb_face_get_upem</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-face.html#hb-face-get-user-data" title="hb_face_get_user_data ()">hb_face_get_user_data</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-face.html#hb-face-is-immutable" title="hb_face_is_immutable ()">hb_face_is_immutable</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-face.html#hb-face-make-immutable" title="hb_face_make_immutable ()">hb_face_make_immutable</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-face.html#hb-face-reference" title="hb_face_reference ()">hb_face_reference</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-face.html#hb-face-reference-blob" title="hb_face_reference_blob ()">hb_face_reference_blob</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-face.html#hb-face-reference-table" title="hb_face_reference_table ()">hb_face_reference_table</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-face.html#hb-face-set-index" title="hb_face_set_index ()">hb_face_set_index</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-face.html#hb-face-set-upem" title="hb_face_set_upem ()">hb_face_set_upem</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-face.html#hb-face-set-user-data" title="hb_face_set_user_data ()">hb_face_set_user_data</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-add-glyph-origin-for-direction" title="hb_font_add_glyph_origin_for_direction ()">hb_font_add_glyph_origin_for_direction</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-create" title="hb_font_create ()">hb_font_create</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-create-sub-font" title="hb_font_create_sub_font ()">hb_font_create_sub_font</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-destroy" title="hb_font_destroy ()">hb_font_destroy</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-create" title="hb_font_funcs_create ()">hb_font_funcs_create</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-destroy" title="hb_font_funcs_destroy ()">hb_font_funcs_destroy</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-get-empty" title="hb_font_funcs_get_empty ()">hb_font_funcs_get_empty</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-get-user-data" title="hb_font_funcs_get_user_data ()">hb_font_funcs_get_user_data</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-is-immutable" title="hb_font_funcs_is_immutable ()">hb_font_funcs_is_immutable</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-make-immutable" title="hb_font_funcs_make_immutable ()">hb_font_funcs_make_immutable</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-reference" title="hb_font_funcs_reference ()">hb_font_funcs_reference</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-contour-point-func" title="hb_font_funcs_set_glyph_contour_point_func ()">hb_font_funcs_set_glyph_contour_point_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-extents-func" title="hb_font_funcs_set_glyph_extents_func ()">hb_font_funcs_set_glyph_extents_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-from-name-func" title="hb_font_funcs_set_glyph_from_name_func ()">hb_font_funcs_set_glyph_from_name_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-func" title="hb_font_funcs_set_glyph_func ()">hb_font_funcs_set_glyph_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-advance-func" title="hb_font_funcs_set_glyph_h_advance_func ()">hb_font_funcs_set_glyph_h_advance_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-kerning-func" title="hb_font_funcs_set_glyph_h_kerning_func ()">hb_font_funcs_set_glyph_h_kerning_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-origin-func" title="hb_font_funcs_set_glyph_h_origin_func ()">hb_font_funcs_set_glyph_h_origin_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-name-func" title="hb_font_funcs_set_glyph_name_func ()">hb_font_funcs_set_glyph_name_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-advance-func" title="hb_font_funcs_set_glyph_v_advance_func ()">hb_font_funcs_set_glyph_v_advance_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-kerning-func" title="hb_font_funcs_set_glyph_v_kerning_func ()">hb_font_funcs_set_glyph_v_kerning_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-origin-func" title="hb_font_funcs_set_glyph_v_origin_func ()">hb_font_funcs_set_glyph_v_origin_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-user-data" title="hb_font_funcs_set_user_data ()">hb_font_funcs_set_user_data</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-empty" title="hb_font_get_empty ()">hb_font_get_empty</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-face" title="hb_font_get_face ()">hb_font_get_face</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph" title="hb_font_get_glyph ()">hb_font_get_glyph</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-advance-for-direction" title="hb_font_get_glyph_advance_for_direction ()">hb_font_get_glyph_advance_for_direction</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-contour-point" title="hb_font_get_glyph_contour_point ()">hb_font_get_glyph_contour_point</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-contour-point-for-origin" title="hb_font_get_glyph_contour_point_for_origin ()">hb_font_get_glyph_contour_point_for_origin</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-extents" title="hb_font_get_glyph_extents ()">hb_font_get_glyph_extents</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-extents-for-origin" title="hb_font_get_glyph_extents_for_origin ()">hb_font_get_glyph_extents_for_origin</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-from-name" title="hb_font_get_glyph_from_name ()">hb_font_get_glyph_from_name</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-h-advance" title="hb_font_get_glyph_h_advance ()">hb_font_get_glyph_h_advance</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-h-kerning" title="hb_font_get_glyph_h_kerning ()">hb_font_get_glyph_h_kerning</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-h-origin" title="hb_font_get_glyph_h_origin ()">hb_font_get_glyph_h_origin</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-kerning-for-direction" title="hb_font_get_glyph_kerning_for_direction ()">hb_font_get_glyph_kerning_for_direction</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-name" title="hb_font_get_glyph_name ()">hb_font_get_glyph_name</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-origin-for-direction" title="hb_font_get_glyph_origin_for_direction ()">hb_font_get_glyph_origin_for_direction</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-v-advance" title="hb_font_get_glyph_v_advance ()">hb_font_get_glyph_v_advance</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-v-kerning" title="hb_font_get_glyph_v_kerning ()">hb_font_get_glyph_v_kerning</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-v-origin" title="hb_font_get_glyph_v_origin ()">hb_font_get_glyph_v_origin</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-parent" title="hb_font_get_parent ()">hb_font_get_parent</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-ppem" title="hb_font_get_ppem ()">hb_font_get_ppem</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-scale" title="hb_font_get_scale ()">hb_font_get_scale</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-user-data" title="hb_font_get_user_data ()">hb_font_get_user_data</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-glyph-from-string" title="hb_font_glyph_from_string ()">hb_font_glyph_from_string</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-glyph-to-string" title="hb_font_glyph_to_string ()">hb_font_glyph_to_string</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-is-immutable" title="hb_font_is_immutable ()">hb_font_is_immutable</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-make-immutable" title="hb_font_make_immutable ()">hb_font_make_immutable</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-reference" title="hb_font_reference ()">hb_font_reference</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-set-funcs" title="hb_font_set_funcs ()">hb_font_set_funcs</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-set-funcs-data" title="hb_font_set_funcs_data ()">hb_font_set_funcs_data</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-set-ppem" title="hb_font_set_ppem ()">hb_font_set_ppem</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-set-scale" title="hb_font_set_scale ()">hb_font_set_scale</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-set-user-data" title="hb_font_set_user_data ()">hb_font_set_user_data</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-subtract-glyph-origin-for-direction" title="hb_font_subtract_glyph_origin_for_direction ()">hb_font_subtract_glyph_origin_for_direction</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-ft.html#hb-ft-face-create" title="hb_ft_face_create ()">hb_ft_face_create</a>, function in <a class="link" href="harfbuzz-hb-ft.html" title="hb-ft">hb-ft</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-ft.html#hb-ft-face-create-cached" title="hb_ft_face_create_cached ()">hb_ft_face_create_cached</a>, function in <a class="link" href="harfbuzz-hb-ft.html" title="hb-ft">hb-ft</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-ft.html#hb-ft-font-create" title="hb_ft_font_create ()">hb_ft_font_create</a>, function in <a class="link" href="harfbuzz-hb-ft.html" title="hb-ft">hb-ft</a>
-</dt>
-<dd></dd>
-<a name="idxL"></a><h3 class="title">L</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-common.html#hb-language-from-string" title="hb_language_from_string ()">hb_language_from_string</a>, function in <a class="link" href="harfbuzz-hb-common.html" title="hb-common">hb-common</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-common.html#hb-language-get-default" title="hb_language_get_default ()">hb_language_get_default</a>, function in <a class="link" href="harfbuzz-hb-common.html" title="hb-common">hb-common</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-common.html#hb-language-to-string" title="hb_language_to_string ()">hb_language_to_string</a>, function in <a class="link" href="harfbuzz-hb-common.html" title="hb-common">hb-common</a>
-</dt>
-<dd></dd>
-<a name="idxO"></a><h3 class="title">O</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-ot-shape.html#hb-ot-shape-glyphs-closure" title="hb_ot_shape_glyphs_closure ()">hb_ot_shape_glyphs_closure</a>, function in <a class="link" href="harfbuzz-hb-ot-shape.html" title="hb-ot-shape">hb-ot-shape</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-ot-tag.html#hb-ot-tag-to-language" title="hb_ot_tag_to_language ()">hb_ot_tag_to_language</a>, function in <a class="link" href="harfbuzz-hb-ot-tag.html" title="hb-ot-tag">hb-ot-tag</a>
-</dt>
-<dd></dd>
-<a name="idxS"></a><h3 class="title">S</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-common.html#hb-script-from-iso15924-tag" title="hb_script_from_iso15924_tag ()">hb_script_from_iso15924_tag</a>, function in <a class="link" href="harfbuzz-hb-common.html" title="hb-common">hb-common</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-common.html#hb-script-from-string" title="hb_script_from_string ()">hb_script_from_string</a>, function in <a class="link" href="harfbuzz-hb-common.html" title="hb-common">hb-common</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-common.html#hb-script-get-horizontal-direction" title="hb_script_get_horizontal_direction ()">hb_script_get_horizontal_direction</a>, function in <a class="link" href="harfbuzz-hb-common.html" title="hb-common">hb-common</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-common.html#hb-script-to-iso15924-tag" title="hb_script_to_iso15924_tag ()">hb_script_to_iso15924_tag</a>, function in <a class="link" href="harfbuzz-hb-common.html" title="hb-common">hb-common</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-add" title="hb_set_add ()">hb_set_add</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-allocation-successful" title="hb_set_allocation_successful ()">hb_set_allocation_successful</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-clear" title="hb_set_clear ()">hb_set_clear</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-create" title="hb_set_create ()">hb_set_create</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-del" title="hb_set_del ()">hb_set_del</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-destroy" title="hb_set_destroy ()">hb_set_destroy</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-get-empty" title="hb_set_get_empty ()">hb_set_get_empty</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-get-user-data" title="hb_set_get_user_data ()">hb_set_get_user_data</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-has" title="hb_set_has ()">hb_set_has</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-intersect" title="hb_set_intersect ()">hb_set_intersect</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-next" title="hb_set_next ()">hb_set_next</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-reference" title="hb_set_reference ()">hb_set_reference</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-set" title="hb_set_set ()">hb_set_set</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-set-user-data" title="hb_set_set_user_data ()">hb_set_set_user_data</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-subtract" title="hb_set_subtract ()">hb_set_subtract</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-symmetric-difference" title="hb_set_symmetric_difference ()">hb_set_symmetric_difference</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-union" title="hb_set_union ()">hb_set_union</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-shape" title="hb_shape ()">hb_shape</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-shape-full" title="hb_shape_full ()">hb_shape_full</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-shape-list-shapers" title="hb_shape_list_shapers ()">hb_shape_list_shapers</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
-</dt>
-<dd></dd>
-<a name="idxT"></a><h3 class="title">T</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-common.html#hb-tag-from-string" title="hb_tag_from_string ()">hb_tag_from_string</a>, function in <a class="link" href="harfbuzz-hb-common.html" title="hb-common">hb-common</a>
-</dt>
-<dd></dd>
-<a name="idxU"></a><h3 class="title">U</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-combining-class" title="hb_unicode_combining_class ()">hb_unicode_combining_class</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-compose" title="hb_unicode_compose ()">hb_unicode_compose</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-decompose" title="hb_unicode_decompose ()">hb_unicode_decompose</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-decompose-compatibility" title="hb_unicode_decompose_compatibility ()">hb_unicode_decompose_compatibility</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-eastasian-width" title="hb_unicode_eastasian_width ()">hb_unicode_eastasian_width</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-create" title="hb_unicode_funcs_create ()">hb_unicode_funcs_create</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-destroy" title="hb_unicode_funcs_destroy ()">hb_unicode_funcs_destroy</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-empty" title="hb_unicode_funcs_get_empty ()">hb_unicode_funcs_get_empty</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-parent" title="hb_unicode_funcs_get_parent ()">hb_unicode_funcs_get_parent</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-user-data" title="hb_unicode_funcs_get_user_data ()">hb_unicode_funcs_get_user_data</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-is-immutable" title="hb_unicode_funcs_is_immutable ()">hb_unicode_funcs_is_immutable</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-make-immutable" title="hb_unicode_funcs_make_immutable ()">hb_unicode_funcs_make_immutable</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-reference" title="hb_unicode_funcs_reference ()">hb_unicode_funcs_reference</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-combining-class-func" title="hb_unicode_funcs_set_combining_class_func ()">hb_unicode_funcs_set_combining_class_func</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-compose-func" title="hb_unicode_funcs_set_compose_func ()">hb_unicode_funcs_set_compose_func</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-decompose-compatibility-func" title="hb_unicode_funcs_set_decompose_compatibility_func ()">hb_unicode_funcs_set_decompose_compatibility_func</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-decompose-func" title="hb_unicode_funcs_set_decompose_func ()">hb_unicode_funcs_set_decompose_func</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-eastasian-width-func" title="hb_unicode_funcs_set_eastasian_width_func ()">hb_unicode_funcs_set_eastasian_width_func</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-general-category-func" title="hb_unicode_funcs_set_general_category_func ()">hb_unicode_funcs_set_general_category_func</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-mirroring-func" title="hb_unicode_funcs_set_mirroring_func ()">hb_unicode_funcs_set_mirroring_func</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-script-func" title="hb_unicode_funcs_set_script_func ()">hb_unicode_funcs_set_script_func</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-user-data" title="hb_unicode_funcs_set_user_data ()">hb_unicode_funcs_set_user_data</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-general-category" title="hb_unicode_general_category ()">hb_unicode_general_category</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-mirroring" title="hb_unicode_mirroring ()">hb_unicode_mirroring</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-script" title="hb_unicode_script ()">hb_unicode_script</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<a name="idxV"></a><h3 class="title">V</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-version.html#hb-version" title="hb_version ()">hb_version</a>, function in <a class="link" href="harfbuzz-hb-version.html" title="hb-version">hb-version</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-version.html#hb-version-string" title="hb_version_string ()">hb_version_string</a>, function in <a class="link" href="harfbuzz-hb-version.html" title="hb-version">hb-version</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-20.html b/docs/html/api-index-0-9-20.html
deleted file mode 100644
index cb1b1f6..0000000
--- a/docs/html/api-index-0-9-20.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.9.20: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-11.html" title="Index of new symbols in 0.9.11">
-<link rel="next" href="api-index-0-9-22.html" title="Index of new symbols in 0.9.22">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-11.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-22.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-0-9-20"></a>Index of new symbols in 0.9.20</h2></div></div></div>
-<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t">hb_buffer_flags_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t">hb_buffer_serialize_flags_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-22.html b/docs/html/api-index-0-9-22.html
deleted file mode 100644
index 29003d2..0000000
--- a/docs/html/api-index-0-9-22.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.9.22: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-20.html" title="Index of new symbols in 0.9.20">
-<link rel="next" href="api-index-0-9-28.html" title="Index of new symbols in 0.9.28">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxO">O</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-20.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-28.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-0-9-22"></a>Index of new symbols in 0.9.22</h2></div></div></div>
-<a name="idx"></a><a name="idxO"></a><h3 class="title">O</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-get-lookup-count" title="hb_ot_layout_table_get_lookup_count ()">hb_ot_layout_table_get_lookup_count</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-28.html b/docs/html/api-index-0-9-28.html
deleted file mode 100644
index db1a51b..0000000
--- a/docs/html/api-index-0-9-28.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.9.28: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-22.html" title="Index of new symbols in 0.9.22">
-<link rel="next" href="api-index-0-9-30.html" title="Index of new symbols in 0.9.30">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxO">O</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-22.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-30.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-0-9-28"></a>Index of new symbols in 0.9.28</h2></div></div></div>
-<a name="idx"></a><a name="idxO"></a><h3 class="title">O</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-ot-font.html#hb-ot-font-set-funcs" title="hb_ot_font_set_funcs ()">hb_ot_font_set_funcs</a>, function in <a class="link" href="harfbuzz-hb-ot-font.html" title="hb-ot-font">hb-ot-font</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-30.html b/docs/html/api-index-0-9-30.html
deleted file mode 100644
index e28f4db..0000000
--- a/docs/html/api-index-0-9-30.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.9.30: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-28.html" title="Index of new symbols in 0.9.28">
-<link rel="next" href="api-index-0-9-31.html" title="Index of new symbols in 0.9.31">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxO">O</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxV">V</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-28.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-31.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-0-9-30"></a>Index of new symbols in 0.9.30</h2></div></div></div>
-<a name="idx"></a><a name="idxO"></a><h3 class="title">O</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-language-get-required-feature" title="hb_ot_layout_language_get_required_feature ()">hb_ot_layout_language_get_required_feature</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
-</dt>
-<dd></dd>
-<a name="idxV"></a><h3 class="title">V</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-version.html#hb-version-atleast" title="hb_version_atleast ()">hb_version_atleast</a>, function in <a class="link" href="harfbuzz-hb-version.html" title="hb-version">hb-version</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-31.html b/docs/html/api-index-0-9-31.html
deleted file mode 100644
index b011157..0000000
--- a/docs/html/api-index-0-9-31.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.9.31: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-30.html" title="Index of new symbols in 0.9.30">
-<link rel="next" href="api-index-0-9-38.html" title="Index of new symbols in 0.9.38">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-30.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-38.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-0-9-31"></a>Index of new symbols in 0.9.31</h2></div></div></div>
-<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()">hb_buffer_add_codepoints</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-replacement-codepoint" title="hb_buffer_get_replacement_codepoint ()">hb_buffer_get_replacement_codepoint</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS" title="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT">HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT</a>, macro in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()">hb_buffer_set_replacement_codepoint</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-38.html b/docs/html/api-index-0-9-38.html
deleted file mode 100644
index 263adb8..0000000
--- a/docs/html/api-index-0-9-38.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.9.38: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-31.html" title="Index of new symbols in 0.9.31">
-<link rel="next" href="api-index-0-9-39.html" title="Index of new symbols in 0.9.39">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxF">F</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxG">G</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-31.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-39.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-0-9-38"></a>Index of new symbols in 0.9.38</h2></div></div></div>
-<a name="idx"></a><a name="idxF"></a><h3 class="title">F</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-ft.html#hb-ft-face-create-referenced" title="hb_ft_face_create_referenced ()">hb_ft_face_create_referenced</a>, function in <a class="link" href="harfbuzz-hb-ft.html" title="hb-ft">hb-ft</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-ft.html#hb-ft-font-create-referenced" title="hb_ft_font_create_referenced ()">hb_ft_font_create_referenced</a>, function in <a class="link" href="harfbuzz-hb-ft.html" title="hb-ft">hb-ft</a>
-</dt>
-<dd></dd>
-<a name="idxG"></a><h3 class="title">G</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-glib.html#hb-glib-blob-create" title="hb_glib_blob_create ()">hb_glib_blob_create</a>, function in <a class="link" href="harfbuzz-hb-glib.html" title="hb-glib">hb-glib</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-39.html b/docs/html/api-index-0-9-39.html
deleted file mode 100644
index dc36815..0000000
--- a/docs/html/api-index-0-9-39.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.9.39: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-38.html" title="Index of new symbols in 0.9.38">
-<link rel="next" href="api-index-0-9-41.html" title="Index of new symbols in 0.9.41">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-38.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-41.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-0-9-39"></a>Index of new symbols in 0.9.39</h2></div></div></div>
-<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-latin1" title="hb_buffer_add_latin1 ()">hb_buffer_add_latin1</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-41.html b/docs/html/api-index-0-9-41.html
deleted file mode 100644
index b4b2466..0000000
--- a/docs/html/api-index-0-9-41.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.9.41: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-39.html" title="Index of new symbols in 0.9.39">
-<link rel="next" href="api-index-0-9-42.html" title="Index of new symbols in 0.9.42">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-39.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-42.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-0-9-41"></a>Index of new symbols in 0.9.41</h2></div></div></div>
-<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse-range" title="hb_buffer_reverse_range ()">hb_buffer_reverse_range</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-42.html b/docs/html/api-index-0-9-42.html
deleted file mode 100644
index 4fdb417..0000000
--- a/docs/html/api-index-0-9-42.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.9.42: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-41.html" title="Index of new symbols in 0.9.41">
-<link rel="next" href="api-index-1-0-5.html" title="Index of new symbols in 1.0.5">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-41.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-1-0-5.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-0-9-42"></a>Index of new symbols in 0.9.42</h2></div></div></div>
-<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-cluster-level" title="hb_buffer_get_cluster_level ()">hb_buffer_get_cluster_level</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-cluster-level" title="hb_buffer_set_cluster_level ()">hb_buffer_set_cluster_level</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-5.html b/docs/html/api-index-0-9-5.html
deleted file mode 100644
index 5f03c6d..0000000
--- a/docs/html/api-index-0-9-5.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.9.5: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-2.html" title="Index of new symbols in 0.9.2">
-<link rel="next" href="api-index-0-9-7.html" title="Index of new symbols in 0.9.7">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxF">F</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxT">T</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-2.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-7.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-0-9-5"></a>Index of new symbols in 0.9.5</h2></div></div></div>
-<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-content-type" title="hb_buffer_get_content_type ()">hb_buffer_get_content_type</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-content-type" title="hb_buffer_set_content_type ()">hb_buffer_set_content_type</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<a name="idxF"></a><h3 class="title">F</h3>
-<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-feature-from-string" title="hb_feature_from_string ()">hb_feature_from_string</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-feature-to-string" title="hb_feature_to_string ()">hb_feature_to_string</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
-</dt>
-<dd></dd>
-<a name="idxT"></a><h3 class="title">T</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-common.html#hb-tag-to-string" title="hb_tag_to_string ()">hb_tag_to_string</a>, function in <a class="link" href="harfbuzz-hb-common.html" title="hb-common">hb-common</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-7.html b/docs/html/api-index-0-9-7.html
deleted file mode 100644
index d948391..0000000
--- a/docs/html/api-index-0-9-7.html
+++ /dev/null
@@ -1,195 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.9.7: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-5.html" title="Index of new symbols in 0.9.5">
-<link rel="next" href="api-index-0-9-8.html" title="Index of new symbols in 0.9.8">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxF">F</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxO">O</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxS">S</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-5.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-8.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-0-9-7"></a>Index of new symbols in 0.9.7</h2></div></div></div>
-<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add" title="hb_buffer_add ()">hb_buffer_add</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-deserialize-glyphs" title="hb_buffer_deserialize_glyphs ()">hb_buffer_deserialize_glyphs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-flags" title="hb_buffer_get_flags ()">hb_buffer_get_flags</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-segment-properties" title="hb_buffer_get_segment_properties ()">hb_buffer_get_segment_properties</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-guess-segment-properties" title="hb_buffer_guess_segment_properties ()">hb_buffer_guess_segment_properties</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-from-string" title="hb_buffer_serialize_format_from_string ()">hb_buffer_serialize_format_from_string</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-to-string" title="hb_buffer_serialize_format_to_string ()">hb_buffer_serialize_format_to_string</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()">hb_buffer_serialize_glyphs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-list-formats" title="hb_buffer_serialize_list_formats ()">hb_buffer_serialize_list_formats</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-flags" title="hb_buffer_set_flags ()">hb_buffer_set_flags</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-segment-properties" title="hb_buffer_set_segment_properties ()">hb_buffer_set_segment_properties</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<a name="idxF"></a><h3 class="title">F</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-face.html#hb-face-get-glyph-count" title="hb_face_get_glyph_count ()">hb_face_get_glyph_count</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-face.html#hb-face-set-glyph-count" title="hb_face_set_glyph_count ()">hb_face_set_glyph_count</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
-</dt>
-<dd></dd>
-<a name="idxO"></a><h3 class="title">O</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-feature-get-lookups" title="hb_ot_layout_feature_get_lookups ()">hb_ot_layout_feature_get_lookups</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-get-glyphs-in-class" title="hb_ot_layout_get_glyphs_in_class ()">hb_ot_layout_get_glyphs_in_class</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-get-glyph-class" title="hb_ot_layout_get_glyph_class ()">hb_ot_layout_get_glyph_class</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-lookup-collect-glyphs" title="hb_ot_layout_lookup_collect_glyphs ()">hb_ot_layout_lookup_collect_glyphs</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-lookup-substitute-closure" title="hb_ot_layout_lookup_substitute_closure ()">hb_ot_layout_lookup_substitute_closure</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-lookup-would-substitute" title="hb_ot_layout_lookup_would_substitute ()">hb_ot_layout_lookup_would_substitute</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-shape-plan-collect-lookups" title="hb_ot_shape_plan_collect_lookups ()">hb_ot_shape_plan_collect_lookups</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
-</dt>
-<dd></dd>
-<a name="idxS"></a><h3 class="title">S</h3>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-equal" title="hb_segment_properties_equal ()">hb_segment_properties_equal</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-hash" title="hb_segment_properties_hash ()">hb_segment_properties_hash</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-add-range" title="hb_set_add_range ()">hb_set_add_range</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-del-range" title="hb_set_del_range ()">hb_set_del_range</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-get-max" title="hb_set_get_max ()">hb_set_get_max</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-get-min" title="hb_set_get_min ()">hb_set_get_min</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-get-population" title="hb_set_get_population ()">hb_set_get_population</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-is-empty" title="hb_set_is_empty ()">hb_set_is_empty</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-is-equal" title="hb_set_is_equal ()">hb_set_is_equal</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-set.html#hb-set-next-range" title="hb_set_next_range ()">hb_set_next_range</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-create" title="hb_shape_plan_create ()">hb_shape_plan_create</a>, function in <a class="link" href="harfbuzz-hb-shape-plan.html" title="hb-shape-plan">hb-shape-plan</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-create-cached" title="hb_shape_plan_create_cached ()">hb_shape_plan_create_cached</a>, function in <a class="link" href="harfbuzz-hb-shape-plan.html" title="hb-shape-plan">hb-shape-plan</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-destroy" title="hb_shape_plan_destroy ()">hb_shape_plan_destroy</a>, function in <a class="link" href="harfbuzz-hb-shape-plan.html" title="hb-shape-plan">hb-shape-plan</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-execute" title="hb_shape_plan_execute ()">hb_shape_plan_execute</a>, function in <a class="link" href="harfbuzz-hb-shape-plan.html" title="hb-shape-plan">hb-shape-plan</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-get-empty" title="hb_shape_plan_get_empty ()">hb_shape_plan_get_empty</a>, function in <a class="link" href="harfbuzz-hb-shape-plan.html" title="hb-shape-plan">hb-shape-plan</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-get-shaper" title="hb_shape_plan_get_shaper ()">hb_shape_plan_get_shaper</a>, function in <a class="link" href="harfbuzz-hb-shape-plan.html" title="hb-shape-plan">hb-shape-plan</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-get-user-data" title="hb_shape_plan_get_user_data ()">hb_shape_plan_get_user_data</a>, function in <a class="link" href="harfbuzz-hb-shape-plan.html" title="hb-shape-plan">hb-shape-plan</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-reference" title="hb_shape_plan_reference ()">hb_shape_plan_reference</a>, function in <a class="link" href="harfbuzz-hb-shape-plan.html" title="hb-shape-plan">hb-shape-plan</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-set-user-data" title="hb_shape_plan_set_user_data ()">hb_shape_plan_set_user_data</a>, function in <a class="link" href="harfbuzz-hb-shape-plan.html" title="hb-shape-plan">hb-shape-plan</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-8.html b/docs/html/api-index-0-9-8.html
deleted file mode 100644
index 13ef9b1..0000000
--- a/docs/html/api-index-0-9-8.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 0.9.8: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-7.html" title="Index of new symbols in 0.9.7">
-<link rel="next" href="api-index-0-9-10.html" title="Index of new symbols in 0.9.10">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxO">O</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-7.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-10.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-0-9-8"></a>Index of new symbols in 0.9.8</h2></div></div></div>
-<a name="idx"></a><a name="idxO"></a><h3 class="title">O</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-collect-lookups" title="hb_ot_layout_collect_lookups ()">hb_ot_layout_collect_lookups</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-0-5.html b/docs/html/api-index-1-0-5.html
deleted file mode 100644
index 243d7b8..0000000
--- a/docs/html/api-index-1-0-5.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 1.0.5: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-42.html" title="Index of new symbols in 0.9.42">
-<link rel="next" href="api-index-1-1-2.html" title="Index of new symbols in 1.1.2">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxF">F</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-42.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-1-1-2.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-1-0-5"></a>Index of new symbols in 1.0.5</h2></div></div></div>
-<a name="idx"></a><a name="idxF"></a><h3 class="title">F</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-set-parent" title="hb_font_set_parent ()">hb_font_set_parent</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-ft.html#hb-ft-font-get-load-flags" title="hb_ft_font_get_load_flags ()">hb_ft_font_get_load_flags</a>, function in <a class="link" href="harfbuzz-hb-ft.html" title="hb-ft">hb-ft</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-ft.html#hb-ft-font-set-load-flags" title="hb_ft_font_set_load_flags ()">hb_ft_font_set_load_flags</a>, function in <a class="link" href="harfbuzz-hb-ft.html" title="hb-ft">hb-ft</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-1-2.html b/docs/html/api-index-1-1-2.html
deleted file mode 100644
index 2d8ba8a..0000000
--- a/docs/html/api-index-1-1-2.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 1.1.2: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-1-0-5.html" title="Index of new symbols in 1.0.5">
-<link rel="next" href="api-index-1-1-3.html" title="Index of new symbols in 1.1.3">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxF">F</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-1-0-5.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-1-1-3.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-1-1-2"></a>Index of new symbols in 1.1.2</h2></div></div></div>
-<a name="idx"></a><a name="idxF"></a><h3 class="title">F</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-font-h-extents-func" title="hb_font_funcs_set_font_h_extents_func ()">hb_font_funcs_set_font_h_extents_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-font-v-extents-func" title="hb_font_funcs_set_font_v_extents_func ()">hb_font_funcs_set_font_v_extents_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-1-3.html b/docs/html/api-index-1-1-3.html
deleted file mode 100644
index 545ed99..0000000
--- a/docs/html/api-index-1-1-3.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of new symbols in 1.1.3: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-1-1-2.html" title="Index of new symbols in 1.1.2">
-<link rel="next" href="deprecated-api-index.html" title="Index of deprecated API">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxF">F</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-1-1-2.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="deprecated-api-index.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="index">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="api-index-1-1-3"></a>Index of new symbols in 1.1.3</h2></div></div></div>
-<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-message-func" title="hb_buffer_set_message_func ()">hb_buffer_set_message_func</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<a name="idxF"></a><h3 class="title">F</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-extents-for-direction" title="hb_font_get_extents_for_direction ()">hb_font_get_extents_for_direction</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-h-extents" title="hb_font_get_h_extents ()">hb_font_get_h_extents</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-v-extents" title="hb_font_get_v_extents ()">hb_font_get_v_extents</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/buffers-language-script-and-direction.html b/docs/html/buffers-language-script-and-direction.html
deleted file mode 100644
index 5447496..0000000
--- a/docs/html/buffers-language-script-and-direction.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Buffers, language, script and direction: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt01.html" title="Part I. User's manual">
-<link rel="prev" href="hello-harfbuzz.html" title="Hello, Harfbuzz">
-<link rel="next" href="adding-text-to-the-buffer.html" title="Adding text to the buffer">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="hello-harfbuzz.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="adding-text-to-the-buffer.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="chapter">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="buffers-language-script-and-direction"></a>Buffers, language, script and direction</h2></div></div></div>
-<div class="toc"><dl class="toc">
-<dt><span class="section"><a href="buffers-language-script-and-direction.html#creating-and-destroying-buffers">Creating and destroying buffers</a></span></dt>
-<dt><span class="section"><a href="adding-text-to-the-buffer.html">Adding text to the buffer</a></span></dt>
-<dt><span class="section"><a href="setting-buffer-properties.html">Setting buffer properties</a></span></dt>
-<dt><span class="section"><a href="what-about-the-other-scripts.html">What about the other scripts?</a></span></dt>
-<dt><span class="section"><a href="customizing-unicode-functions.html">Customizing Unicode functions</a></span></dt>
-</dl></div>
-<p>
- The input to Harfbuzz is a series of Unicode characters, stored in a
- buffer. In this chapter, we'll look at how to set up a buffer with
- the text that we want and then customize the properties of the
- buffer.
- </p>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="creating-and-destroying-buffers"></a>Creating and destroying buffers</h2></div></div></div>
-<p>
- As we saw in our initial example, a buffer is created and
- initialized with <code class="literal">hb_buffer_create()</code>. This
- produces a new, empty buffer object, instantiated with some
- default values and ready to accept your Unicode strings.
- </p>
-<p>
- Harfbuzz manages the memory of objects that it creates (such as
- buffers), so you don't have to. When you have finished working on
- a buffer, you can call <code class="literal">hb_buffer_destroy()</code>:
- </p>
-<pre class="programlisting">
- hb_buffer_t *buffer = hb_buffer_create();
- ...
- hb_buffer_destroy(buffer);
-</pre>
-<p>
- This will destroy the object and free its associated memory -
- unless some other part of the program holds a reference to this
- buffer. If you acquire a Harfbuzz buffer from another subsystem
- and want to ensure that it is not garbage collected by someone
- else destroying it, you should increase its reference count:
- </p>
-<pre class="programlisting">
-void somefunc(hb_buffer_t *buffer) {
- buffer = hb_buffer_reference(buffer);
- ...
-</pre>
-<p>
- And then decrease it once you're done with it:
- </p>
-<pre class="programlisting">
- hb_buffer_destroy(buffer);
-}
-</pre>
-<p>
- To throw away all the data in your buffer and start from scratch,
- call <code class="literal">hb_buffer_reset(buffer)</code>. If you want to
- throw away the string in the buffer but keep the options, you can
- instead call <code class="literal">hb_buffer_clear_contents(buffer)</code>.
- </p>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/building.html b/docs/html/building.html
deleted file mode 100644
index 0351b6c..0000000
--- a/docs/html/building.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Building: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="install-harfbuzz.html" title="Install Harfbuzz">
-<link rel="prev" href="install-harfbuzz.html" title="Install Harfbuzz">
-<link rel="next" href="hello-harfbuzz.html" title="Hello, Harfbuzz">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="install-harfbuzz.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="install-harfbuzz.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="hello-harfbuzz.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="building"></a>Building</h2></div></div></div>
-<p>
- On Linux, install the development packages for FreeType, Cairo, and GLib.
- For example, on Ubuntu / Debian, you would do:
- </p>
-<pre class="programlisting">
-<span class="command"><strong>sudo apt-get install</strong></span> <span class="package">gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev</span>
- </pre>
-<p>
- whereas on Fedora, RHEL, CentOS, and other Red Hat based systems you would do:
- </p>
-<pre class="programlisting">
-<span class="command"><strong>sudo yum install</strong></span> <span class="package">gcc gcc-c++ freetype-devel glib2-devel cairo-devel</span>
- </pre>
-<p>
- or using MacPorts:
- </p>
-<pre class="programlisting">
-<span class="command"><strong>sudo port install</strong></span> <span class="package">freetype glib2 cairo</span>
- </pre>
-<p>
- </p>
-<p>
- If you are using a tarball, you can now proceed to running
- <span class="command"><strong>configure</strong></span> and <span class="command"><strong>make</strong></span> as with any
- other standard package. That should leave you with a shared library in
- <code class="filename">src/</code>, and a few utility programs including hb-view
- and hb-shape under <code class="filename">util/</code>.
- </p>
-<p>
- If you are bootstraping from git, you need a few more tools before you
- can run <code class="filename">autogen.sh</code> for the first time. Namely,
- pkg-config and <a class="ulink" href="http://www.complang.org/ragel/" target="_top">ragel</a>.
- Again, on Ubuntu / Debian:
- </p>
-<pre class="programlisting">
-<span class="command"><strong>sudo apt-get install</strong></span> <span class="package">autoconf automake libtool pkg-config ragel gtk-doc-tools</span>
- </pre>
-<p>
- and on Fedora, RHEL, CentOS:
- </p>
-<pre class="programlisting">
-<span class="command"><strong>sudo yum install</strong></span> <span class="package">autoconf automake libtool pkgconfig ragel gtk-doc</span>
- </pre>
-<p>
- or using MacPorts:
- </p>
-<pre class="programlisting">
-<span class="command"><strong>sudo port install</strong></span> <span class="package">autoconf automake libtool pkgconfig ragel gtk-doc</span>
- </pre>
-<p>
- </p>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/customizing-unicode-functions.html b/docs/html/customizing-unicode-functions.html
deleted file mode 100644
index f496df4..0000000
--- a/docs/html/customizing-unicode-functions.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Customizing Unicode functions: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="buffers-language-script-and-direction.html" title="Buffers, language, script and direction">
-<link rel="prev" href="what-about-the-other-scripts.html" title="What about the other scripts?">
-<link rel="next" href="fonts-and-faces.html" title="Fonts and faces">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="buffers-language-script-and-direction.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="what-about-the-other-scripts.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="fonts-and-faces.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="customizing-unicode-functions"></a>Customizing Unicode functions</h2></div></div></div>
-<p>
- </p>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/fonts-and-faces.html b/docs/html/fonts-and-faces.html
deleted file mode 100644
index 0700a1c..0000000
--- a/docs/html/fonts-and-faces.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Fonts and faces: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt01.html" title="Part I. User's manual">
-<link rel="prev" href="customizing-unicode-functions.html" title="Customizing Unicode functions">
-<link rel="next" href="using-harfbuzzs-native-opentype-implementation.html" title="Using Harfbuzz's native OpenType implementation">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="customizing-unicode-functions.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="using-harfbuzzs-native-opentype-implementation.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="chapter">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="fonts-and-faces"></a>Fonts and faces</h2></div></div></div>
-<div class="toc"><dl class="toc">
-<dt><span class="section"><a href="fonts-and-faces.html#using-freetype">Using FreeType</a></span></dt>
-<dt><span class="section"><a href="using-harfbuzzs-native-opentype-implementation.html">Using Harfbuzz's native OpenType implementation</a></span></dt>
-<dt><span class="section"><a href="using-your-own-font-functions.html">Using your own font functions</a></span></dt>
-</dl></div>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="using-freetype"></a>Using FreeType</h2></div></div></div>
-<p>
- </p>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-Buffers.html b/docs/html/harfbuzz-Buffers.html
deleted file mode 100644
index 6c7d0e9..0000000
--- a/docs/html/harfbuzz-Buffers.html
+++ /dev/null
@@ -1,2722 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Buffers: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
-<link rel="prev" href="harfbuzz-hb-unicode.html" title="hb-unicode">
-<link rel="next" href="harfbuzz-hb-blob.html" title="hb-blob">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts">
-<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
- <a href="#harfbuzz-Buffers.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
- <a href="#harfbuzz-Buffers.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
-</td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-unicode.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-blob.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="harfbuzz-Buffers"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="harfbuzz-Buffers.top_of_page"></a>Buffers</span></h2>
-<p>Buffers — Input and output buffers</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="harfbuzz-Buffers.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="functions_return">
-<col class="functions_name">
-</colgroup>
-<tbody>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-create" title="hb_buffer_create ()">hb_buffer_create</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reference" title="hb_buffer_reference ()">hb_buffer_reference</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-empty" title="hb_buffer_get_empty ()">hb_buffer_get_empty</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-destroy" title="hb_buffer_destroy ()">hb_buffer_destroy</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reset" title="hb_buffer_reset ()">hb_buffer_reset</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-clear-contents" title="hb_buffer_clear_contents ()">hb_buffer_clear_contents</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-pre-allocate" title="hb_buffer_pre_allocate ()">hb_buffer_pre_allocate</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-allocation-successful" title="hb_buffer_allocation_successful ()">hb_buffer_allocation_successful</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add" title="hb_buffer_add ()">hb_buffer_add</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()">hb_buffer_add_codepoints</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf32" title="hb_buffer_add_utf32 ()">hb_buffer_add_utf32</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf16" title="hb_buffer_add_utf16 ()">hb_buffer_add_utf16</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf8" title="hb_buffer_add_utf8 ()">hb_buffer_add_utf8</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-latin1" title="hb_buffer_add_latin1 ()">hb_buffer_add_latin1</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-content-type" title="hb_buffer_set_content_type ()">hb_buffer_set_content_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t"><span class="returnvalue">hb_buffer_content_type_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-content-type" title="hb_buffer_get_content_type ()">hb_buffer_get_content_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()">hb_buffer_set_direction</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="returnvalue">hb_direction_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-direction" title="hb_buffer_get_direction ()">hb_buffer_get_direction</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-script" title="hb_buffer_set_script ()">hb_buffer_set_script</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-script" title="hb_buffer_get_script ()">hb_buffer_get_script</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-language" title="hb_buffer_set_language ()">hb_buffer_set_language</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-language" title="hb_buffer_get_language ()">hb_buffer_get_language</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-flags" title="hb_buffer_set_flags ()">hb_buffer_set_flags</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="returnvalue">hb_buffer_flags_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-flags" title="hb_buffer_get_flags ()">hb_buffer_get_flags</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-cluster-level" title="hb_buffer_set_cluster_level ()">hb_buffer_set_cluster_level</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t"><span class="returnvalue">hb_buffer_cluster_level_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-cluster-level" title="hb_buffer_get_cluster_level ()">hb_buffer_get_cluster_level</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-length" title="hb_buffer_set_length ()">hb_buffer_set_length</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">unsigned <span class="returnvalue">int</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-length" title="hb_buffer_get_length ()">hb_buffer_get_length</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-segment-properties" title="hb_buffer_set_segment_properties ()">hb_buffer_set_segment_properties</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-segment-properties" title="hb_buffer_get_segment_properties ()">hb_buffer_get_segment_properties</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-guess-segment-properties" title="hb_buffer_guess_segment_properties ()">hb_buffer_guess_segment_properties</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-unicode-funcs" title="hb_buffer_set_unicode_funcs ()">hb_buffer_set_unicode_funcs</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="returnvalue">hb_unicode_funcs_t</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-unicode-funcs" title="hb_buffer_get_unicode_funcs ()">hb_buffer_get_unicode_funcs</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-user-data" title="hb_buffer_set_user_data ()">hb_buffer_set_user_data</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span> *
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-user-data" title="hb_buffer_get_user_data ()">hb_buffer_get_user_data</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t"><span class="returnvalue">hb_glyph_info_t</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-glyph-infos" title="hb_buffer_get_glyph_infos ()">hb_buffer_get_glyph_infos</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-glyph-position-t"><span class="returnvalue">hb_glyph_position_t</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-glyph-positions" title="hb_buffer_get_glyph_positions ()">hb_buffer_get_glyph_positions</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()">hb_buffer_set_replacement_codepoint</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="returnvalue">hb_codepoint_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-replacement-codepoint" title="hb_buffer_get_replacement_codepoint ()">hb_buffer_get_replacement_codepoint</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-normalize-glyphs" title="hb_buffer_normalize_glyphs ()">hb_buffer_normalize_glyphs</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse" title="hb_buffer_reverse ()">hb_buffer_reverse</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse-range" title="hb_buffer_reverse_range ()">hb_buffer_reverse_range</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse-clusters" title="hb_buffer_reverse_clusters ()">hb_buffer_reverse_clusters</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">unsigned <span class="returnvalue">int</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()">hb_buffer_serialize_glyphs</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-deserialize-glyphs" title="hb_buffer_deserialize_glyphs ()">hb_buffer_deserialize_glyphs</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="returnvalue">hb_buffer_serialize_format_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-from-string" title="hb_buffer_serialize_format_from_string ()">hb_buffer_serialize_format_from_string</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">const <span class="returnvalue">char</span> *
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-to-string" title="hb_buffer_serialize_format_to_string ()">hb_buffer_serialize_format_to_string</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">const <span class="returnvalue">char</span> **
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-list-formats" title="hb_buffer_serialize_list_formats ()">hb_buffer_serialize_list_formats</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-equal" title="hb_segment_properties_equal ()">hb_segment_properties_equal</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">unsigned <span class="returnvalue">int</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-hash" title="hb_segment_properties_hash ()">hb_segment_properties_hash</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-message-func" title="hb_buffer_set_message_func ()">hb_buffer_set_message_func</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-</td>
-<td class="function_name">
-<span class="c_punctuation">(</span><a class="link" href="harfbuzz-Buffers.html#hb-buffer-message-func-t" title="hb_buffer_message_func_t ()">*hb_buffer_message_func_t</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<a name="hb-buffer-t"></a><a name="hb-glyph-info-t"></a><a name="hb-glyph-position-t"></a><a name="hb-segment-properties-t"></a><div class="refsect1">
-<a name="harfbuzz-Buffers.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="name">
-<col class="description">
-</colgroup>
-<tbody>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#HB-SEGMENT-PROPERTIES-DEFAULT:CAPS" title="HB_SEGMENT_PROPERTIES_DEFAULT">HB_SEGMENT_PROPERTIES_DEFAULT</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS" title="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT">HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT</a></td>
-</tr>
-<tr>
-<td class="typedef_keyword">typedef</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t">hb_buffer_t</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword"> </td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t-struct" title="hb_glyph_info_t">hb_glyph_info_t</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword"> </td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-glyph-position-t-struct" title="hb_glyph_position_t">hb_glyph_position_t</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t">hb_buffer_content_type_t</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t">hb_buffer_flags_t</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t">hb_buffer_cluster_level_t</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword"> </td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t-struct" title="hb_segment_properties_t">hb_segment_properties_t</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t">hb_buffer_serialize_format_t</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t">hb_buffer_serialize_flags_t</a></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-Buffers.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
- <span class="lineart">├──</span> hb_buffer_t
- <span class="lineart">├──</span> hb_glyph_info_t
- <span class="lineart">├──</span> hb_glyph_position_t
- <span class="lineart">╰──</span> hb_segment_properties_t
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
- <span class="lineart">├──</span> hb_buffer_cluster_level_t
- <span class="lineart">├──</span> hb_buffer_content_type_t
- <span class="lineart">╰──</span> hb_buffer_serialize_format_t
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GFlags</a>
- <span class="lineart">├──</span> hb_buffer_flags_t
- <span class="lineart">╰──</span> hb_buffer_serialize_flags_t
-</pre>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-Buffers.includes"></a><h2>Includes</h2>
-<pre class="synopsis">#include &lt;hb.h&gt;
-</pre>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-Buffers.description"></a><h2>Description</h2>
-<p>Buffers serve dual role in HarfBuzz; they hold the input characters that are
-passed <a class="link" href="harfbuzz-Shaping.html#hb-shape" title="hb_shape ()"><code class="function">hb_shape()</code></a>, and after shaping they hold the output glyphs.</p>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-Buffers.functions_details"></a><h2>Functions</h2>
-<div class="refsect2">
-<a name="hb-buffer-create"></a><h3>hb_buffer_create ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
-hb_buffer_create (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Creates a new <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> with all properties to defaults.</p>
-<p><span class="annotation">[Xconstructor]</span></p>
-<div class="refsect3">
-<a name="hb-buffer-create.returns"></a><h4>Returns</h4>
-<p>A newly allocated <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> with a reference count of 1. The initial
-reference count should be released with <a class="link" href="harfbuzz-Buffers.html#hb-buffer-destroy" title="hb_buffer_destroy ()"><code class="function">hb_buffer_destroy()</code></a> when you are done
-using the <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>. This function never returns <code class="literal">NULL</code>. If memory cannot
-be allocated, a special <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> object will be returned on which
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-allocation-successful" title="hb_buffer_allocation_successful ()"><code class="function">hb_buffer_allocation_successful()</code></a> returns <code class="literal">false</code>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-reference"></a><h3>hb_buffer_reference ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
-hb_buffer_reference (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>Increases the reference count on <em class="parameter"><code>buffer</code></em>
- by one. This prevents <em class="parameter"><code>buffer</code></em>
- from
-being destroyed until a matching call to <a class="link" href="harfbuzz-Buffers.html#hb-buffer-destroy" title="hb_buffer_destroy ()"><code class="function">hb_buffer_destroy()</code></a> is made.</p>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
-<div class="refsect3">
-<a name="hb-buffer-reference.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-buffer-reference.returns"></a><h4>Returns</h4>
-<p>The referenced <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-get-empty"></a><h3>hb_buffer_get_empty ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
-hb_buffer_get_empty (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<div class="refsect3">
-<a name="hb-buffer-get-empty.returns"></a><h4>Returns</h4>
-<p>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-destroy"></a><h3>hb_buffer_destroy ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>Deallocate the <em class="parameter"><code>buffer</code></em>
-.
-Decreases the reference count on <em class="parameter"><code>buffer</code></em>
- by one. If the result is zero, then
-<em class="parameter"><code>buffer</code></em>
- and all associated resources are freed. See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-reference" title="hb_buffer_reference ()"><code class="function">hb_buffer_reference()</code></a>.</p>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
-<div class="refsect3">
-<a name="hb-buffer-destroy.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-reset"></a><h3>hb_buffer_reset ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_reset (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>Resets the buffer to its initial status, as if it was just newly created
-with <a class="link" href="harfbuzz-Buffers.html#hb-buffer-create" title="hb_buffer_create ()"><code class="function">hb_buffer_create()</code></a>.</p>
-<div class="refsect3">
-<a name="hb-buffer-reset.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-clear-contents"></a><h3>hb_buffer_clear_contents ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_clear_contents (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>Similar to <a class="link" href="harfbuzz-Buffers.html#hb-buffer-reset" title="hb_buffer_reset ()"><code class="function">hb_buffer_reset()</code></a>, but does not clear the Unicode functions and
-the replacement code point.</p>
-<div class="refsect3">
-<a name="hb-buffer-clear-contents.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-11.html#api-index-0.9.11">0.9.11</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-pre-allocate"></a><h3>hb_buffer_pre_allocate ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-hb_buffer_pre_allocate (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> size</code></em>);</pre>
-<p>Pre allocates memory for <em class="parameter"><code>buffer</code></em>
- to fit at least <em class="parameter"><code>size</code></em>
- number of items.</p>
-<div class="refsect3">
-<a name="hb-buffer-pre-allocate.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>number of items to pre allocate.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-buffer-pre-allocate.returns"></a><h4>Returns</h4>
-<p><code class="literal">true</code> if <em class="parameter"><code>buffer</code></em>
-memory allocation succeeded, <code class="literal">false</code> otherwise.</p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-allocation-successful"></a><h3>hb_buffer_allocation_successful ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-hb_buffer_allocation_successful (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>Check if allocating memory for the buffer succeeded.</p>
-<div class="refsect3">
-<a name="hb-buffer-allocation-successful.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-buffer-allocation-successful.returns"></a><h4>Returns</h4>
-<p><code class="literal">true</code> if <em class="parameter"><code>buffer</code></em>
-memory allocation succeeded, <code class="literal">false</code> otherwise.</p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-add"></a><h3>hb_buffer_add ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_add (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> codepoint</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> cluster</code></em>);</pre>
-<p>Appends a character with the Unicode value of <em class="parameter"><code>codepoint</code></em>
- to <em class="parameter"><code>buffer</code></em>
-, and
-gives it the initial cluster value of <em class="parameter"><code>cluster</code></em>
-. Clusters can be any thing
-the client wants, they are usually used to refer to the index of the
-character in the input text stream and are output in
-<span class="type">hb_glyph_info_t.cluster</span> field.</p>
-<p>This function does not check the validity of <em class="parameter"><code>codepoint</code></em>
-, it is up to the
-caller to ensure it is a valid Unicode code point.</p>
-<div class="refsect3">
-<a name="hb-buffer-add.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>codepoint</p></td>
-<td class="parameter_description"><p>a Unicode code point.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>cluster</p></td>
-<td class="parameter_description"><p>the cluster value of <em class="parameter"><code>codepoint</code></em>
-.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-add-codepoints"></a><h3>hb_buffer_add_codepoints ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_add_codepoints (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *text</code></em>,
- <em class="parameter"><code><span class="type">int</span> text_length</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
- <em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
-<p>Appends characters from <em class="parameter"><code>text</code></em>
- array to <em class="parameter"><code>buffer</code></em>
-. The <em class="parameter"><code>item_offset</code></em>
- is the
-position of the first character from <em class="parameter"><code>text</code></em>
- that will be appended, and
-<em class="parameter"><code>item_length</code></em>
- is the number of character. When shaping part of a larger text
-(e.g. a run of text from a paragraph), instead of passing just the substring
-corresponding to the run, it is preferable to pass the whole
-paragraph and specify the run start and length as <em class="parameter"><code>item_offset</code></em>
- and
-<em class="parameter"><code>item_length</code></em>
-, respectively, to give HarfBuzz the full context to be able,
-for example, to do cross-run Arabic shaping or properly handle combining
-marks at stat of run.</p>
-<p>This function does not check the validity of <em class="parameter"><code>text</code></em>
-, it is up to the caller
-to ensure it contains a valid Unicode code points.</p>
-<div class="refsect3">
-<a name="hb-buffer-add-codepoints.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>a <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> to append characters to.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>text</p></td>
-<td class="parameter_description"><p> an array of Unicode code points to append. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>text_length</p></td>
-<td class="parameter_description"><p>the length of the <em class="parameter"><code>text</code></em>
-, or -1 if it is <code class="literal">NULL</code> terminated.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>item_offset</p></td>
-<td class="parameter_description"><p>the offset of the first code point to add to the <em class="parameter"><code>buffer</code></em>
-.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>item_length</p></td>
-<td class="parameter_description"><p>the number of code points to add to the <em class="parameter"><code>buffer</code></em>
-, or -1 for the
-end of <em class="parameter"><code>text</code></em>
-(assuming it is <code class="literal">NULL</code> terminated).</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-31.html#api-index-0.9.31">0.9.31</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-add-utf32"></a><h3>hb_buffer_add_utf32 ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_add_utf32 (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>const <span class="type">uint32_t</span> *text</code></em>,
- <em class="parameter"><code><span class="type">int</span> text_length</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
- <em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()"><code class="function">hb_buffer_add_codepoints()</code></a>.</p>
-<p>Replaces invalid UTF-32 characters with the <em class="parameter"><code>buffer</code></em>
- replacement code point,
-see <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()"><code class="function">hb_buffer_set_replacement_codepoint()</code></a>.</p>
-<div class="refsect3">
-<a name="hb-buffer-add-utf32.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>text</p></td>
-<td class="parameter_description"><p> an array of UTF-32 characters to append. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>text_length</p></td>
-<td class="parameter_description"><p>the length of the <em class="parameter"><code>text</code></em>
-, or -1 if it is <code class="literal">NULL</code> terminated.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>item_offset</p></td>
-<td class="parameter_description"><p>the offset of the first character to add to the <em class="parameter"><code>buffer</code></em>
-.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>item_length</p></td>
-<td class="parameter_description"><p>the number of characters to add to the <em class="parameter"><code>buffer</code></em>
-, or -1 for the
-end of <em class="parameter"><code>text</code></em>
-(assuming it is <code class="literal">NULL</code> terminated).</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-add-utf16"></a><h3>hb_buffer_add_utf16 ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_add_utf16 (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>const <span class="type">uint16_t</span> *text</code></em>,
- <em class="parameter"><code><span class="type">int</span> text_length</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
- <em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()"><code class="function">hb_buffer_add_codepoints()</code></a>.</p>
-<p>Replaces invalid UTF-16 characters with the <em class="parameter"><code>buffer</code></em>
- replacement code point,
-see <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()"><code class="function">hb_buffer_set_replacement_codepoint()</code></a>.</p>
-<div class="refsect3">
-<a name="hb-buffer-add-utf16.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>text</p></td>
-<td class="parameter_description"><p> an array of UTF-16 characters to append. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>text_length</p></td>
-<td class="parameter_description"><p>the length of the <em class="parameter"><code>text</code></em>
-, or -1 if it is <code class="literal">NULL</code> terminated.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>item_offset</p></td>
-<td class="parameter_description"><p>the offset of the first character to add to the <em class="parameter"><code>buffer</code></em>
-.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>item_length</p></td>
-<td class="parameter_description"><p>the number of characters to add to the <em class="parameter"><code>buffer</code></em>
-, or -1 for the
-end of <em class="parameter"><code>text</code></em>
-(assuming it is <code class="literal">NULL</code> terminated).</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-add-utf8"></a><h3>hb_buffer_add_utf8 ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_add_utf8 (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>const <span class="type">char</span> *text</code></em>,
- <em class="parameter"><code><span class="type">int</span> text_length</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
- <em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()"><code class="function">hb_buffer_add_codepoints()</code></a>.</p>
-<p>Replaces invalid UTF-8 characters with the <em class="parameter"><code>buffer</code></em>
- replacement code point,
-see <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()"><code class="function">hb_buffer_set_replacement_codepoint()</code></a>.</p>
-<div class="refsect3">
-<a name="hb-buffer-add-utf8.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>text</p></td>
-<td class="parameter_description"><p> an array of UTF-8
-characters to append. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>text_length</p></td>
-<td class="parameter_description"><p>the length of the <em class="parameter"><code>text</code></em>
-, or -1 if it is <code class="literal">NULL</code> terminated.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>item_offset</p></td>
-<td class="parameter_description"><p>the offset of the first character to add to the <em class="parameter"><code>buffer</code></em>
-.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>item_length</p></td>
-<td class="parameter_description"><p>the number of characters to add to the <em class="parameter"><code>buffer</code></em>
-, or -1 for the
-end of <em class="parameter"><code>text</code></em>
-(assuming it is <code class="literal">NULL</code> terminated).</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-add-latin1"></a><h3>hb_buffer_add_latin1 ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_add_latin1 (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>const <span class="type">uint8_t</span> *text</code></em>,
- <em class="parameter"><code><span class="type">int</span> text_length</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
- <em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
-<p>Similar to <a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()"><code class="function">hb_buffer_add_codepoints()</code></a>, but allows only access to first 256
-Unicode code points that can fit in 8-bit strings.</p>
-<div class="note">Has nothing to do with non-Unicode Latin-1 encoding.</div>
-<div class="refsect3">
-<a name="hb-buffer-add-latin1.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>text</p></td>
-<td class="parameter_description"><p> an array of UTF-8
-characters to append. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>text_length</p></td>
-<td class="parameter_description"><p>the length of the <em class="parameter"><code>text</code></em>
-, or -1 if it is <code class="literal">NULL</code> terminated.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>item_offset</p></td>
-<td class="parameter_description"><p>the offset of the first character to add to the <em class="parameter"><code>buffer</code></em>
-.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>item_length</p></td>
-<td class="parameter_description"><p>the number of characters to add to the <em class="parameter"><code>buffer</code></em>
-, or -1 for the
-end of <em class="parameter"><code>text</code></em>
-(assuming it is <code class="literal">NULL</code> terminated).</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-39.html#api-index-0.9.39">0.9.39</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-set-content-type"></a><h3>hb_buffer_set_content_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_content_type (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t"><span class="type">hb_buffer_content_type_t</span></a> content_type</code></em>);</pre>
-<p>Sets the type of <em class="parameter"><code>buffer</code></em>
- contents, buffers are either empty, contain
-characters (before shaping) or glyphs (the result of shaping).</p>
-<div class="refsect3">
-<a name="hb-buffer-set-content-type.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>content_type</p></td>
-<td class="parameter_description"><p>the type of buffer contents to set</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-5.html#api-index-0.9.5">0.9.5</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-get-content-type"></a><h3>hb_buffer_get_content_type ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t"><span class="returnvalue">hb_buffer_content_type_t</span></a>
-hb_buffer_get_content_type (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>see <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-content-type" title="hb_buffer_set_content_type ()"><code class="function">hb_buffer_set_content_type()</code></a>.</p>
-<div class="refsect3">
-<a name="hb-buffer-get-content-type.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-buffer-get-content-type.returns"></a><h4>Returns</h4>
-<p>The type of <em class="parameter"><code>buffer</code></em>
-contents.</p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-5.html#api-index-0.9.5">0.9.5</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-set-direction"></a><h3>hb_buffer_set_direction ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_direction (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> direction</code></em>);</pre>
-<p>Set the text flow direction of the buffer. No shaping can happen without
-setting <em class="parameter"><code>buffer</code></em>
- direction, and it controls the visual direction for the
-output glyphs; for RTL direction the glyphs will be reversed. Many layout
-features depend on the proper setting of the direction, for example,
-reversing RTL text before shaping, then shaping with LTR direction is not
-the same as keeping the text in logical order and shaping with RTL
-direction.</p>
-<div class="refsect3">
-<a name="hb-buffer-set-direction.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>direction</p></td>
-<td class="parameter_description"><p>the <a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> of the <em class="parameter"><code>buffer</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-get-direction"></a><h3>hb_buffer_get_direction ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="returnvalue">hb_direction_t</span></a>
-hb_buffer_get_direction (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()"><code class="function">hb_buffer_set_direction()</code></a></p>
-<div class="refsect3">
-<a name="hb-buffer-get-direction.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-buffer-get-direction.returns"></a><h4>Returns</h4>
-<p>The direction of the <em class="parameter"><code>buffer</code></em>
-.</p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-set-script"></a><h3>hb_buffer_set_script ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_script (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> script</code></em>);</pre>
-<p>Sets the script of <em class="parameter"><code>buffer</code></em>
- to <em class="parameter"><code>script</code></em>
-.</p>
-<p>Script is crucial for choosing the proper shaping behaviour for scripts that
-require it (e.g. Arabic) and the which OpenType features defined in the font
-to be applied.</p>
-<p>You can pass one of the predefined <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> values, or use
-<a class="link" href="harfbuzz-hb-common.html#hb-script-from-string" title="hb_script_from_string ()"><code class="function">hb_script_from_string()</code></a> or <a class="link" href="harfbuzz-hb-common.html#hb-script-from-iso15924-tag" title="hb_script_from_iso15924_tag ()"><code class="function">hb_script_from_iso15924_tag()</code></a> to get the
-corresponding script from an ISO 15924 script tag.</p>
-<div class="refsect3">
-<a name="hb-buffer-set-script.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>script</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> to set.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-get-script"></a><h3>hb_buffer_get_script ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
-hb_buffer_get_script (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-script" title="hb_buffer_set_script ()"><code class="function">hb_buffer_set_script()</code></a>.</p>
-<div class="refsect3">
-<a name="hb-buffer-get-script.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-buffer-get-script.returns"></a><h4>Returns</h4>
-<p>The <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> of the <em class="parameter"><code>buffer</code></em>
-.</p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-set-language"></a><h3>hb_buffer_set_language ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_language (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> language</code></em>);</pre>
-<p>Sets the language of <em class="parameter"><code>buffer</code></em>
- to <em class="parameter"><code>language</code></em>
-.</p>
-<p>Languages are crucial for selecting which OpenType feature to apply to the
-buffer which can result in applying language-specific behaviour. Languages
-are orthogonal to the scripts, and though they are related, they are
-different concepts and should not be confused with each other.</p>
-<p>Use <a class="link" href="harfbuzz-hb-common.html#hb-language-from-string" title="hb_language_from_string ()"><code class="function">hb_language_from_string()</code></a> to convert from ISO 639 language codes to
-<a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a>.</p>
-<div class="refsect3">
-<a name="hb-buffer-set-language.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>language</p></td>
-<td class="parameter_description"><p>an hb_language_t to set.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-get-language"></a><h3>hb_buffer_get_language ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
-hb_buffer_get_language (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-language" title="hb_buffer_set_language ()"><code class="function">hb_buffer_set_language()</code></a>.</p>
-<div class="refsect3">
-<a name="hb-buffer-get-language.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-buffer-get-language.returns"></a><h4>Returns</h4>
-<p>The <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> of the buffer. Must not be freed by the caller. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-set-flags"></a><h3>hb_buffer_set_flags ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_flags (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="type">hb_buffer_flags_t</span></a> flags</code></em>);</pre>
-<p>Sets <em class="parameter"><code>buffer</code></em>
- flags to <em class="parameter"><code>flags</code></em>
-. See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="type">hb_buffer_flags_t</span></a>.</p>
-<div class="refsect3">
-<a name="hb-buffer-set-flags.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>flags</p></td>
-<td class="parameter_description"><p>the buffer flags to set.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-get-flags"></a><h3>hb_buffer_get_flags ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="returnvalue">hb_buffer_flags_t</span></a>
-hb_buffer_get_flags (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-flags" title="hb_buffer_set_flags ()"><code class="function">hb_buffer_set_flags()</code></a>.</p>
-<div class="refsect3">
-<a name="hb-buffer-get-flags.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-buffer-get-flags.returns"></a><h4>Returns</h4>
-<p>The <em class="parameter"><code>buffer</code></em>
-flags.</p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-set-cluster-level"></a><h3>hb_buffer_set_cluster_level ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_cluster_level (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t"><span class="type">hb_buffer_cluster_level_t</span></a> cluster_level</code></em>);</pre>
-<div class="refsect3">
-<a name="hb-buffer-set-cluster-level.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-42.html#api-index-0.9.42">0.9.42</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-get-cluster-level"></a><h3>hb_buffer_get_cluster_level ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t"><span class="returnvalue">hb_buffer_cluster_level_t</span></a>
-hb_buffer_get_cluster_level (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<div class="refsect3">
-<a name="hb-buffer-get-cluster-level.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-42.html#api-index-0.9.42">0.9.42</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-set-length"></a><h3>hb_buffer_set_length ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-hb_buffer_set_length (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> length</code></em>);</pre>
-<p>Similar to <a class="link" href="harfbuzz-Buffers.html#hb-buffer-pre-allocate" title="hb_buffer_pre_allocate ()"><code class="function">hb_buffer_pre_allocate()</code></a>, but clears any new items added at the
-end.</p>
-<div class="refsect3">
-<a name="hb-buffer-set-length.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>length</p></td>
-<td class="parameter_description"><p>the new length of <em class="parameter"><code>buffer</code></em>
-.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-buffer-set-length.returns"></a><h4>Returns</h4>
-<p><code class="literal">true</code> if <em class="parameter"><code>buffer</code></em>
-memory allocation succeeded, <code class="literal">false</code> otherwise.</p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-get-length"></a><h3>hb_buffer_get_length ()</h3>
-<pre class="programlisting">unsigned <span class="returnvalue">int</span>
-hb_buffer_get_length (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>Returns the number of items in the buffer.</p>
-<div class="refsect3">
-<a name="hb-buffer-get-length.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-buffer-get-length.returns"></a><h4>Returns</h4>
-<p>The <em class="parameter"><code>buffer</code></em>
-length.
-The value valid as long as buffer has not been modified.</p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-set-segment-properties"></a><h3>hb_buffer_set_segment_properties ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_segment_properties (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>);</pre>
-<p>Sets the segment properties of the buffer, a shortcut for calling
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()"><code class="function">hb_buffer_set_direction()</code></a>, <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-script" title="hb_buffer_set_script ()"><code class="function">hb_buffer_set_script()</code></a> and
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-language" title="hb_buffer_set_language ()"><code class="function">hb_buffer_set_language()</code></a> individually.</p>
-<div class="refsect3">
-<a name="hb-buffer-set-segment-properties.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>props</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> to use.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-get-segment-properties"></a><h3>hb_buffer_get_segment_properties ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_get_segment_properties (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>);</pre>
-<p>Sets <em class="parameter"><code>props</code></em>
- to the <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> of <em class="parameter"><code>buffer</code></em>
-.</p>
-<div class="refsect3">
-<a name="hb-buffer-get-segment-properties.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>props</p></td>
-<td class="parameter_description"><p> the output <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-guess-segment-properties"></a><h3>hb_buffer_guess_segment_properties ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_guess_segment_properties (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>Sets unset buffer segment properties based on buffer Unicode
-contents. If buffer is not empty, it must have content type
-<a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-CONTENT-TYPE-UNICODE:CAPS"><code class="literal">HB_BUFFER_CONTENT_TYPE_UNICODE</code></a>.</p>
-<p>If buffer script is not set (ie. is <a class="link" href="harfbuzz-hb-common.html#HB-SCRIPT-INVALID:CAPS"><code class="literal">HB_SCRIPT_INVALID</code></a>), it
-will be set to the Unicode script of the first character in
-the buffer that has a script other than <a class="link" href="harfbuzz-hb-common.html#HB-SCRIPT-COMMON:CAPS"><code class="literal">HB_SCRIPT_COMMON</code></a>,
-<a class="link" href="harfbuzz-hb-common.html#HB-SCRIPT-INHERITED:CAPS"><code class="literal">HB_SCRIPT_INHERITED</code></a>, and <a class="link" href="harfbuzz-hb-common.html#HB-SCRIPT-UNKNOWN:CAPS"><code class="literal">HB_SCRIPT_UNKNOWN</code></a>.</p>
-<p>Next, if buffer direction is not set (ie. is <a class="link" href="harfbuzz-hb-common.html#HB-DIRECTION-INVALID:CAPS"><code class="literal">HB_DIRECTION_INVALID</code></a>),
-it will be set to the natural horizontal direction of the
-buffer script as returned by <a class="link" href="harfbuzz-hb-common.html#hb-script-get-horizontal-direction" title="hb_script_get_horizontal_direction ()"><code class="function">hb_script_get_horizontal_direction()</code></a>.</p>
-<p>Finally, if buffer language is not set (ie. is <a class="link" href="harfbuzz-hb-common.html#HB-LANGUAGE-INVALID:CAPS" title="HB_LANGUAGE_INVALID"><code class="literal">HB_LANGUAGE_INVALID</code></a>),
-it will be set to the process's default language as returned by
-<a class="link" href="harfbuzz-hb-common.html#hb-language-get-default" title="hb_language_get_default ()"><code class="function">hb_language_get_default()</code></a>. This may change in the future by
-taking buffer script into consideration when choosing a language.</p>
-<div class="refsect3">
-<a name="hb-buffer-guess-segment-properties.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-set-unicode-funcs"></a><h3>hb_buffer_set_unicode_funcs ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_unicode_funcs (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *unicode_funcs</code></em>);</pre>
-<div class="refsect3">
-<a name="hb-buffer-set-unicode-funcs.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-get-unicode-funcs"></a><h3>hb_buffer_get_unicode_funcs ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="returnvalue">hb_unicode_funcs_t</span></a> *
-hb_buffer_get_unicode_funcs (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<div class="refsect3">
-<a name="hb-buffer-get-unicode-funcs.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-set-user-data"></a><h3>hb_buffer_set_user_data ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-hb_buffer_set_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>,
- <em class="parameter"><code><span class="type">void</span> *data</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="type">hb_bool_t</span></a> replace</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
-<div class="refsect3">
-<a name="hb-buffer-set-user-data.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-get-user-data"></a><h3>hb_buffer_get_user_data ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> *
-hb_buffer_get_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
-<div class="refsect3">
-<a name="hb-buffer-get-user-data.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-get-glyph-infos"></a><h3>hb_buffer_get_glyph_infos ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t"><span class="returnvalue">hb_glyph_info_t</span></a> *
-hb_buffer_get_glyph_infos (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> *length</code></em>);</pre>
-<p>Returns <em class="parameter"><code>buffer</code></em>
- glyph information array. Returned pointer
-is valid as long as <em class="parameter"><code>buffer</code></em>
- contents are not modified.</p>
-<div class="refsect3">
-<a name="hb-buffer-get-glyph-infos.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>length</p></td>
-<td class="parameter_description"><p> output array length. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-buffer-get-glyph-infos.returns"></a><h4>Returns</h4>
-<p>The <em class="parameter"><code>buffer</code></em>
-glyph information array.
-The value valid as long as buffer has not been modified. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=length]</span></p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-get-glyph-positions"></a><h3>hb_buffer_get_glyph_positions ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-glyph-position-t"><span class="returnvalue">hb_glyph_position_t</span></a> *
-hb_buffer_get_glyph_positions (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> *length</code></em>);</pre>
-<p>Returns <em class="parameter"><code>buffer</code></em>
- glyph position array. Returned pointer
-is valid as long as <em class="parameter"><code>buffer</code></em>
- contents are not modified.</p>
-<div class="refsect3">
-<a name="hb-buffer-get-glyph-positions.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>length</p></td>
-<td class="parameter_description"><p> output length. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-buffer-get-glyph-positions.returns"></a><h4>Returns</h4>
-<p>The <em class="parameter"><code>buffer</code></em>
-glyph position array.
-The value valid as long as buffer has not been modified. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=length]</span></p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-set-replacement-codepoint"></a><h3>hb_buffer_set_replacement_codepoint ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_replacement_codepoint (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> replacement</code></em>);</pre>
-<p>Sets the <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> that replaces invalid entries for a given encoding
-when adding text to <em class="parameter"><code>buffer</code></em>
-.</p>
-<p>Default is <a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS" title="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT"><code class="literal">HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT</code></a>.</p>
-<div class="refsect3">
-<a name="hb-buffer-set-replacement-codepoint.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>replacement</p></td>
-<td class="parameter_description"><p>the replacement <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-31.html#api-index-0.9.31">0.9.31</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-get-replacement-codepoint"></a><h3>hb_buffer_get_replacement_codepoint ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="returnvalue">hb_codepoint_t</span></a>
-hb_buffer_get_replacement_codepoint (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()"><code class="function">hb_buffer_set_replacement_codepoint()</code></a>.</p>
-<div class="refsect3">
-<a name="hb-buffer-get-replacement-codepoint.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-buffer-get-replacement-codepoint.returns"></a><h4>Returns</h4>
-<p>The <em class="parameter"><code>buffer</code></em>
-replacement <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a>.</p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-31.html#api-index-0.9.31">0.9.31</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-normalize-glyphs"></a><h3>hb_buffer_normalize_glyphs ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_normalize_glyphs (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>Reorders a glyph buffer to have canonical in-cluster glyph order / position.
-The resulting clusters should behave identical to pre-reordering clusters.</p>
-<div class="note">This has nothing to do with Unicode normalization.</div>
-<div class="refsect3">
-<a name="hb-buffer-normalize-glyphs.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-reverse"></a><h3>hb_buffer_reverse ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_reverse (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>Reverses buffer contents.</p>
-<div class="refsect3">
-<a name="hb-buffer-reverse.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-reverse-range"></a><h3>hb_buffer_reverse_range ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_reverse_range (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> start</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> end</code></em>);</pre>
-<p>Reverses buffer contents between start to end.</p>
-<div class="refsect3">
-<a name="hb-buffer-reverse-range.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>start</p></td>
-<td class="parameter_description"><p>start index.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>end</p></td>
-<td class="parameter_description"><p>end index.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-41.html#api-index-0.9.41">0.9.41</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-reverse-clusters"></a><h3>hb_buffer_reverse_clusters ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_reverse_clusters (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>Reverses buffer clusters. That is, the buffer contents are
-reversed, then each cluster (consecutive items having the
-same cluster number) are reversed again.</p>
-<div class="refsect3">
-<a name="hb-buffer-reverse-clusters.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-serialize-glyphs"></a><h3>hb_buffer_serialize_glyphs ()</h3>
-<pre class="programlisting">unsigned <span class="returnvalue">int</span>
-hb_buffer_serialize_glyphs (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> start</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> end</code></em>,
- <em class="parameter"><code><span class="type">char</span> *buf</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> buf_size</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> *buf_consumed</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t"><span class="type">hb_buffer_serialize_flags_t</span></a> flags</code></em>);</pre>
-<p>Serializes <em class="parameter"><code>buffer</code></em>
- into a textual representation of its glyph content,
-useful for showing the contents of the buffer, for example during debugging.
-There are currently two supported serialization formats:</p>
-<div class="refsect3">
-<a name="id-1.3.3.5.12.45.5"></a><h4>text</h4>
-<p>A human-readable, plain text format.
-The serialized glyphs will look something like:</p>
-<p><code class="literal">
-[uni0651=0@518,0+0|uni0628=0+1897]
-</code></p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
-<li class="listitem"><p>The serialized glyphs are delimited with <code class="literal">[</code> and <code class="literal">]</code>.</p></li>
-<li class="listitem"><p>Glyphs are separated with <code class="literal">|</code></p></li>
-<li class="listitem">
-<p>Each glyph starts with glyph name, or glyph index if
-<a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-NO-GLYPH-NAMES:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES</span></a> flag is set. Then,</p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
-<li class="listitem"><p>If <a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-NO-CLUSTERS:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS</span></a> is not set, <code class="literal">=</code> then <span class="type">hb_glyph_info_t.cluster</span>.</p></li>
-<li class="listitem">
-<p>If <a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-NO-POSITIONS:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS</span></a> is not set, the <a class="link" href="harfbuzz-Buffers.html#hb-glyph-position-t"><span class="type">hb_glyph_position_t</span></a> in the format:</p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; ">
-<li class="listitem"><p>If both <span class="type">hb_glyph_position_t.x_offset</span> and <span class="type">hb_glyph_position_t.y_offset</span> are not 0, <code class="literal">@x_offset,y_offset</code>. Then,</p></li>
-<li class="listitem"><p><code class="literal">+x_advance</code>, then <code class="literal">,y_advance</code> if <span class="type">hb_glyph_position_t.y_advance</span> is not 0. Then,</p></li>
-</ul></div>
-</li>
-<li class="listitem"><p>If <a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-GLYPH-EXTENTS:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS</span></a> is set, the
-<span class="type">hb_glyph_extents_t</span> in the format
-<code class="literal">&lt;x_bearing,y_bearing,width,height&gt;</code></p></li>
-</ul></div>
-</li>
-</ul></div>
-</div>
-<div class="refsect3">
-<a name="id-1.3.3.5.12.45.6"></a><h4>json</h4>
-<p>TODO.</p>
-</div>
-<div class="refsect3">
-<a name="hb-buffer-serialize-glyphs.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> buffer.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>start</p></td>
-<td class="parameter_description"><p>the first item in <em class="parameter"><code>buffer</code></em>
-to serialize.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>end</p></td>
-<td class="parameter_description"><p>the last item in <em class="parameter"><code>buffer</code></em>
-to serialize.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>buf</p></td>
-<td class="parameter_description"><p> output string to
-write serialized buffer into. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=buf_size][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>buf_size</p></td>
-<td class="parameter_description"><p>the size of <em class="parameter"><code>buf</code></em>
-.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>buf_consumed</p></td>
-<td class="parameter_description"><p> if not <code class="literal">NULL</code>, will be set to the number of byes written into <em class="parameter"><code>buf</code></em>
-. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>font</p></td>
-<td class="parameter_description"><p> the <a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> used to shape this buffer, needed to
-read glyph names and extents. If <code class="literal">NULL</code>, and empty font will be used. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>format</p></td>
-<td class="parameter_description"><p>the <a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> to use for formatting the output.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>flags</p></td>
-<td class="parameter_description"><p>the <a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t"><span class="type">hb_buffer_serialize_flags_t</span></a> that control what glyph properties
-to serialize.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-buffer-serialize-glyphs.returns"></a><h4>Returns</h4>
-<p>The number of serialized items.</p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-deserialize-glyphs"></a><h3>hb_buffer_deserialize_glyphs ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-hb_buffer_deserialize_glyphs (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>const <span class="type">char</span> *buf</code></em>,
- <em class="parameter"><code><span class="type">int</span> buf_len</code></em>,
- <em class="parameter"><code>const <span class="type">char</span> **end_ptr</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>);</pre>
-<div class="refsect3">
-<a name="hb-buffer-deserialize-glyphs.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> buffer.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>buf</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=buf_len]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>end_ptr</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-serialize-format-from-string"></a><h3>hb_buffer_serialize_format_from_string ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="returnvalue">hb_buffer_serialize_format_t</span></a>
-hb_buffer_serialize_format_from_string
- (<em class="parameter"><code>const <span class="type">char</span> *str</code></em>,
- <em class="parameter"><code><span class="type">int</span> len</code></em>);</pre>
-<p>Parses a string into an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a>. Does not check if
-<em class="parameter"><code>str</code></em>
- is a valid buffer serialization format, use
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-list-formats" title="hb_buffer_serialize_list_formats ()"><code class="function">hb_buffer_serialize_list_formats()</code></a> to get the list of supported formats.</p>
-<div class="refsect3">
-<a name="hb-buffer-serialize-format-from-string.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>str</p></td>
-<td class="parameter_description"><p> a string to parse. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>len</p></td>
-<td class="parameter_description"><p>length of <em class="parameter"><code>str</code></em>
-, or -1 if string is <code class="literal">NULL</code> terminated</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-buffer-serialize-format-from-string.returns"></a><h4>Returns</h4>
-<p>The parsed <a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a>.</p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-serialize-format-to-string"></a><h3>hb_buffer_serialize_format_to_string ()</h3>
-<pre class="programlisting">const <span class="returnvalue">char</span> *
-hb_buffer_serialize_format_to_string (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>);</pre>
-<p>Converts <em class="parameter"><code>format</code></em>
- to the string corresponding it, or <code class="literal">NULL</code> if it is not a valid
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a>.</p>
-<div class="refsect3">
-<a name="hb-buffer-serialize-format-to-string.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>format</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> to convert.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-buffer-serialize-format-to-string.returns"></a><h4>Returns</h4>
-<p>A <code class="literal">NULL</code> terminated string corresponding to <em class="parameter"><code>format</code></em>
-. Should not be freed. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-serialize-list-formats"></a><h3>hb_buffer_serialize_list_formats ()</h3>
-<pre class="programlisting">const <span class="returnvalue">char</span> **
-hb_buffer_serialize_list_formats (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Returns a list of supported buffer serialization formats.</p>
-<div class="refsect3">
-<a name="hb-buffer-serialize-list-formats.returns"></a><h4>Returns</h4>
-<p>A string array of buffer serialization formats. Should not be freed. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-segment-properties-equal"></a><h3>hb_segment_properties_equal ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-hb_segment_properties_equal (<em class="parameter"><code>const <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *a</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *b</code></em>);</pre>
-<p>Checks the equality of two <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a>'s.</p>
-<div class="refsect3">
-<a name="hb-segment-properties-equal.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>a</p></td>
-<td class="parameter_description"><p>first <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> to compare.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>b</p></td>
-<td class="parameter_description"><p>second <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> to compare.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-segment-properties-equal.returns"></a><h4>Returns</h4>
-<p><code class="literal">true</code> if all properties of <em class="parameter"><code>a</code></em>
-equal those of <em class="parameter"><code>b</code></em>
-, false otherwise. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-segment-properties-hash"></a><h3>hb_segment_properties_hash ()</h3>
-<pre class="programlisting">unsigned <span class="returnvalue">int</span>
-hb_segment_properties_hash (<em class="parameter"><code>const <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *p</code></em>);</pre>
-<p>Creates a hash representing <em class="parameter"><code>p</code></em>
-.</p>
-<div class="refsect3">
-<a name="hb-segment-properties-hash.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>p</p></td>
-<td class="parameter_description"><p><a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> to hash.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-segment-properties-hash.returns"></a><h4>Returns</h4>
-<p>A hash of <em class="parameter"><code>p</code></em>
-.</p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-set-message-func"></a><h3>hb_buffer_set_message_func ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_message_func (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-message-func-t" title="hb_buffer_message_func_t ()"><span class="type">hb_buffer_message_func_t</span></a> func</code></em>,
- <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
-<div class="refsect3">
-<a name="hb-buffer-set-message-func.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-1-1-3.html#api-index-1.1.3">1.1.3</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-message-func-t"></a><h3>hb_buffer_message_func_t ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-<span class="c_punctuation">(</span>*hb_buffer_message_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code>const <span class="type">char</span> *message</code></em>,
- <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
-</div>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-Buffers.other_details"></a><h2>Types and Values</h2>
-<div class="refsect2">
-<a name="HB-SEGMENT-PROPERTIES-DEFAULT:CAPS"></a><h3>HB_SEGMENT_PROPERTIES_DEFAULT</h3>
-<pre class="programlisting">#define HB_SEGMENT_PROPERTIES_DEFAULT</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS"></a><h3>HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT</h3>
-<pre class="programlisting">#define HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT 0xFFFDu
-</pre>
-<p>The default code point for replacing invalid characters in a given encoding.
-Set to U+FFFD REPLACEMENT CHARACTER.</p>
-<p class="since">Since: <a class="link" href="api-index-0-9-31.html#api-index-0.9.31">0.9.31</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-t"></a><h3>hb_buffer_t</h3>
-<pre class="programlisting">typedef struct hb_buffer_t hb_buffer_t;
-</pre>
-<p>The main structure holding the input text and its properties before shaping,
-and output glyphs and their information after shaping.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-glyph-info-t-struct"></a><h3>hb_glyph_info_t</h3>
-<pre class="programlisting">typedef struct {
- hb_codepoint_t codepoint;
- hb_mask_t mask;
- uint32_t cluster;
-} hb_glyph_info_t;
-</pre>
-<p>The <a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t"><span class="type">hb_glyph_info_t</span></a> is the structure that holds information about the
-glyphs and their relation to input text.</p>
-<div class="refsect3">
-<a name="hb-glyph-info-t.members"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> <em class="structfield"><code><a name="hb-glyph-info-t-struct.codepoint"></a>codepoint</code></em>;</p></td>
-<td class="struct_member_description"><p>either a Unicode code point (before shaping) or a glyph index
-(after shaping).</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-mask-t" title="hb_mask_t"><span class="type">hb_mask_t</span></a> <em class="structfield"><code><a name="hb-glyph-info-t-struct.mask"></a>mask</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><span class="type">uint32_t</span> <em class="structfield"><code><a name="hb-glyph-info-t-struct.cluster"></a>cluster</code></em>;</p></td>
-<td class="struct_member_description"><p>the index of the character in the original text that corresponds
-to this <a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t"><span class="type">hb_glyph_info_t</span></a>, or whatever the client passes to
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add" title="hb_buffer_add ()"><code class="function">hb_buffer_add()</code></a>. More than one <a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t"><span class="type">hb_glyph_info_t</span></a> can have the same
-<em class="parameter"><code>cluster</code></em>
-value, if they resulted from the same character (e.g. one
-to many glyph substitution), and when more than one character gets
-merged in the same glyph (e.g. many to one glyph substitution) the
-<a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t"><span class="type">hb_glyph_info_t</span></a> will have the smallest cluster value of them.
-By default some characters are merged into the same cluster
-(e.g. combining marks have the same cluster as their bases)
-even if they are separate glyphs, <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-cluster-level" title="hb_buffer_set_cluster_level ()"><code class="function">hb_buffer_set_cluster_level()</code></a>
-allow selecting more fine-grained cluster handling.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-glyph-position-t-struct"></a><h3>hb_glyph_position_t</h3>
-<pre class="programlisting">typedef struct {
- hb_position_t x_advance;
- hb_position_t y_advance;
- hb_position_t x_offset;
- hb_position_t y_offset;
-} hb_glyph_position_t;
-</pre>
-<p>The <a class="link" href="harfbuzz-Buffers.html#hb-glyph-position-t"><span class="type">hb_glyph_position_t</span></a> is the structure that holds the positions of the
-glyph in both horizontal and vertical directions. All positions in
-<a class="link" href="harfbuzz-Buffers.html#hb-glyph-position-t"><span class="type">hb_glyph_position_t</span></a> are relative to the current point.</p>
-<div class="refsect3">
-<a name="hb-glyph-position-t.members"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> <em class="structfield"><code><a name="hb-glyph-position-t-struct.x-advance"></a>x_advance</code></em>;</p></td>
-<td class="struct_member_description"><p>how much the line advances after drawing this glyph when setting
-text in horizontal direction.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> <em class="structfield"><code><a name="hb-glyph-position-t-struct.y-advance"></a>y_advance</code></em>;</p></td>
-<td class="struct_member_description"><p>how much the line advances after drawing this glyph when setting
-text in vertical direction.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> <em class="structfield"><code><a name="hb-glyph-position-t-struct.x-offset"></a>x_offset</code></em>;</p></td>
-<td class="struct_member_description"><p>how much the glyph moves on the X-axis before drawing it, this
-should not affect how much the line advances.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> <em class="structfield"><code><a name="hb-glyph-position-t-struct.y-offset"></a>y_offset</code></em>;</p></td>
-<td class="struct_member_description"><p>how much the glyph moves on the Y-axis before drawing it, this
-should not affect how much the line advances.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-content-type-t"></a><h3>enum hb_buffer_content_type_t</h3>
-<div class="refsect3">
-<a name="hb-buffer-content-type-t.members"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-CONTENT-TYPE-INVALID:CAPS"></a>HB_BUFFER_CONTENT_TYPE_INVALID</p></td>
-<td class="enum_member_description">
-<p>Initial value for new buffer.</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-CONTENT-TYPE-UNICODE:CAPS"></a>HB_BUFFER_CONTENT_TYPE_UNICODE</p></td>
-<td class="enum_member_description">
-<p>The buffer contains input characters (before shaping).</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-CONTENT-TYPE-GLYPHS:CAPS"></a>HB_BUFFER_CONTENT_TYPE_GLYPHS</p></td>
-<td class="enum_member_description">
-<p>The buffer contains output glyphs (after shaping).</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-flags-t"></a><h3>enum hb_buffer_flags_t</h3>
-<div class="refsect3">
-<a name="hb-buffer-flags-t.members"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-DEFAULT:CAPS"></a>HB_BUFFER_FLAG_DEFAULT</p></td>
-<td class="enum_member_description">
-<p>the default buffer flag.</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-BOT:CAPS"></a>HB_BUFFER_FLAG_BOT</p></td>
-<td class="enum_member_description">
-<p>flag indicating that special handling of the beginning
- of text paragraph can be applied to this buffer. Should usually
- be set, unless you are passing to the buffer only part
- of the text without the full context.</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-EOT:CAPS"></a>HB_BUFFER_FLAG_EOT</p></td>
-<td class="enum_member_description">
-<p>flag indicating that special handling of the end of text
- paragraph can be applied to this buffer, similar to
- <em class="parameter"><code>HB_BUFFER_FLAG_EOT</code></em>
-.</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-PRESERVE-DEFAULT-IGNORABLES:CAPS"></a>HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES</p></td>
-<td class="enum_member_description">
-<p> flag indication that character with Default_Ignorable
- Unicode property should use the corresponding glyph
- from the font, instead of hiding them (currently done
- by replacing them with the space glyph and zeroing the
- advance width.)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-20.html#api-index-0.9.20">0.9.20</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-cluster-level-t"></a><h3>enum hb_buffer_cluster_level_t</h3>
-<div class="refsect3">
-<a name="hb-buffer-cluster-level-t.members"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-CLUSTER-LEVEL-MONOTONE-GRAPHEMES:CAPS"></a>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-CLUSTER-LEVEL-MONOTONE-CHARACTERS:CAPS"></a>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-CLUSTER-LEVEL-CHARACTERS:CAPS"></a>HB_BUFFER_CLUSTER_LEVEL_CHARACTERS</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-CLUSTER-LEVEL-DEFAULT:CAPS"></a>HB_BUFFER_CLUSTER_LEVEL_DEFAULT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-segment-properties-t-struct"></a><h3>hb_segment_properties_t</h3>
-<pre class="programlisting">typedef struct {
- hb_direction_t direction;
- hb_script_t script;
- hb_language_t language;
-} hb_segment_properties_t;
-</pre>
-<p>The structure that holds various text properties of an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>. Can be
-set and retrieved using <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-segment-properties" title="hb_buffer_set_segment_properties ()"><code class="function">hb_buffer_set_segment_properties()</code></a> and
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-segment-properties" title="hb_buffer_get_segment_properties ()"><code class="function">hb_buffer_get_segment_properties()</code></a>, respectively.</p>
-<div class="refsect3">
-<a name="hb-segment-properties-t.members"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> <em class="structfield"><code><a name="hb-segment-properties-t-struct.direction"></a>direction</code></em>;</p></td>
-<td class="struct_member_description"><p>the <a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> of the buffer, see <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()"><code class="function">hb_buffer_set_direction()</code></a>.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> <em class="structfield"><code><a name="hb-segment-properties-t-struct.script"></a>script</code></em>;</p></td>
-<td class="struct_member_description"><p>the <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> of the buffer, see <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-script" title="hb_buffer_set_script ()"><code class="function">hb_buffer_set_script()</code></a>.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> <em class="structfield"><code><a name="hb-segment-properties-t-struct.language"></a>language</code></em>;</p></td>
-<td class="struct_member_description"><p>the <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> of the buffer, see <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-language" title="hb_buffer_set_language ()"><code class="function">hb_buffer_set_language()</code></a>.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-serialize-format-t"></a><h3>enum hb_buffer_serialize_format_t</h3>
-<p>The buffer serialization and de-serialization format used in
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()"><code class="function">hb_buffer_serialize_glyphs()</code></a> and <a class="link" href="harfbuzz-Buffers.html#hb-buffer-deserialize-glyphs" title="hb_buffer_deserialize_glyphs ()"><code class="function">hb_buffer_deserialize_glyphs()</code></a>.</p>
-<div class="refsect3">
-<a name="hb-buffer-serialize-format-t.members"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FORMAT-TEXT:CAPS"></a>HB_BUFFER_SERIALIZE_FORMAT_TEXT</p></td>
-<td class="enum_member_description">
-<p>a human-readable, plain text format.</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FORMAT-JSON:CAPS"></a>HB_BUFFER_SERIALIZE_FORMAT_JSON</p></td>
-<td class="enum_member_description">
-<p>a machine-readable JSON format.</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FORMAT-INVALID:CAPS"></a>HB_BUFFER_SERIALIZE_FORMAT_INVALID</p></td>
-<td class="enum_member_description">
-<p>invalid format.</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-buffer-serialize-flags-t"></a><h3>enum hb_buffer_serialize_flags_t</h3>
-<p>Flags that control what glyph information are serialized in <a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()"><code class="function">hb_buffer_serialize_glyphs()</code></a>.</p>
-<div class="refsect3">
-<a name="hb-buffer-serialize-flags-t.members"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FLAG-DEFAULT:CAPS"></a>HB_BUFFER_SERIALIZE_FLAG_DEFAULT</p></td>
-<td class="enum_member_description">
-<p>serialize glyph names, clusters and positions.</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FLAG-NO-CLUSTERS:CAPS"></a>HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS</p></td>
-<td class="enum_member_description">
-<p>do not serialize glyph cluster.</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FLAG-NO-POSITIONS:CAPS"></a>HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS</p></td>
-<td class="enum_member_description">
-<p>do not serialize glyph position information.</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FLAG-NO-GLYPH-NAMES:CAPS"></a>HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES</p></td>
-<td class="enum_member_description">
-<p>do no serialize glyph name.</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FLAG-GLYPH-EXTENTS:CAPS"></a>HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS</p></td>
-<td class="enum_member_description">
-<p>serialize glyph extents.</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-20.html#api-index-0.9.20">0.9.20</a></p>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-Shaping.html b/docs/html/harfbuzz-Shaping.html
deleted file mode 100644
index 3e35150..0000000
--- a/docs/html/harfbuzz-Shaping.html
+++ /dev/null
@@ -1,347 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Shaping: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
-<link rel="prev" href="harfbuzz-hb-font.html" title="hb-font">
-<link rel="next" href="harfbuzz-hb-version.html" title="hb-version">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts">
-<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
- <a href="#harfbuzz-Shaping.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
- <a href="#harfbuzz-Shaping.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
-</td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-font.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-version.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="harfbuzz-Shaping"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="harfbuzz-Shaping.top_of_page"></a>Shaping</span></h2>
-<p>Shaping — Conversion of text strings into positioned glyphs</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="harfbuzz-Shaping.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="functions_return">
-<col class="functions_name">
-</colgroup>
-<tbody>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Shaping.html#hb-feature-from-string" title="hb_feature_from_string ()">hb_feature_from_string</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Shaping.html#hb-feature-to-string" title="hb_feature_to_string ()">hb_feature_to_string</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Shaping.html#hb-shape" title="hb_shape ()">hb_shape</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Shaping.html#hb-shape-full" title="hb_shape_full ()">hb_shape_full</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">const <span class="returnvalue">char</span> **
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-Shaping.html#hb-shape-list-shapers" title="hb_shape_list_shapers ()">hb_shape_list_shapers</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<a name="hb-feature-t"></a><div class="refsect1">
-<a name="harfbuzz-Shaping.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="name">
-<col class="description">
-</colgroup>
-<tbody><tr>
-<td class="datatype_keyword"> </td>
-<td class="function_name"><a class="link" href="harfbuzz-Shaping.html#hb-feature-t-struct" title="hb_feature_t">hb_feature_t</a></td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-Shaping.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
- <span class="lineart">╰──</span> hb_feature_t
-</pre>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-Shaping.includes"></a><h2>Includes</h2>
-<pre class="synopsis">#include &lt;hb.h&gt;
-</pre>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-Shaping.description"></a><h2>Description</h2>
-<p>Shaping is the central operation of HarfBuzz. Shaping operates on buffers,
-which are sequences of Unicode characters that use the same font and have
-the same text direction, script and language. After shaping the buffer
-contains the output glyphs and their positions.</p>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-Shaping.functions_details"></a><h2>Functions</h2>
-<div class="refsect2">
-<a name="hb-feature-from-string"></a><h3>hb_feature_from_string ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-hb_feature_from_string (<em class="parameter"><code>const <span class="type">char</span> *str</code></em>,
- <em class="parameter"><code><span class="type">int</span> len</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *feature</code></em>);</pre>
-<p>Parses a string into a <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a>.</p>
-<p>TODO: document the syntax here.</p>
-<div class="refsect3">
-<a name="hb-feature-from-string.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>str</p></td>
-<td class="parameter_description"><p> a string to parse. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>len</p></td>
-<td class="parameter_description"><p>length of <em class="parameter"><code>str</code></em>
-, or -1 if string is <code class="literal">NULL</code> terminated</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>feature</p></td>
-<td class="parameter_description"><p> the <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> to initialize with the parsed values. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-feature-from-string.returns"></a><h4>Returns</h4>
-<p><code class="literal">true</code> if <em class="parameter"><code>str</code></em>
-is successfully parsed, <code class="literal">false</code> otherwise.</p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-5.html#api-index-0.9.5">0.9.5</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-feature-to-string"></a><h3>hb_feature_to_string ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_feature_to_string (<em class="parameter"><code><a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *feature</code></em>,
- <em class="parameter"><code><span class="type">char</span> *buf</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> size</code></em>);</pre>
-<p>Converts a <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> into a <code class="literal">NULL</code>-terminated string in the format
-understood by <a class="link" href="harfbuzz-Shaping.html#hb-feature-from-string" title="hb_feature_from_string ()"><code class="function">hb_feature_from_string()</code></a>. The client in responsible for
-allocating big enough size for <em class="parameter"><code>buf</code></em>
-, 128 bytes is more than enough.</p>
-<div class="refsect3">
-<a name="hb-feature-to-string.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>feature</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> to convert</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>buf</p></td>
-<td class="parameter_description"><p> output string. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=size][<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>the allocated size of <em class="parameter"><code>buf</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-5.html#api-index-0.9.5">0.9.5</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-shape"></a><h3>hb_shape ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_shape (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *features</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> num_features</code></em>);</pre>
-<p>Shapes <em class="parameter"><code>buffer</code></em>
- using <em class="parameter"><code>font</code></em>
- turning its Unicode characters content to
-positioned glyphs. If <em class="parameter"><code>features</code></em>
- is not <code class="literal">NULL</code>, it will be used to control the
-features applied during shaping.</p>
-<div class="refsect3">
-<a name="hb-shape.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>font</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> to use for shaping</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> to shape</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>features</p></td>
-<td class="parameter_description"><p> an array of user
-specified <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> or <code class="literal">NULL</code>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=num_features][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>num_features</p></td>
-<td class="parameter_description"><p>the length of <em class="parameter"><code>features</code></em>
-array</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-shape.returns"></a><h4>Returns</h4>
-<p> <code class="literal">FALSE</code> if all shapers failed, <code class="literal">TRUE</code> otherwise</p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-shape-full"></a><h3>hb_shape_full ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-hb_shape_full (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *features</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> num_features</code></em>,
- <em class="parameter"><code>const <span class="type">char</span> * const *shaper_list</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Shaping.html#hb-shape" title="hb_shape ()"><code class="function">hb_shape()</code></a> for details. If <em class="parameter"><code>shaper_list</code></em>
- is not <code class="literal">NULL</code>, the specified
-shapers will be used in the given order, otherwise the default shapers list
-will be used.</p>
-<div class="refsect3">
-<a name="hb-shape-full.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>font</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> to use for shaping</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> to shape</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>features</p></td>
-<td class="parameter_description"><p> an array of user
-specified <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> or <code class="literal">NULL</code>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=num_features][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>num_features</p></td>
-<td class="parameter_description"><p>the length of <em class="parameter"><code>features</code></em>
-array</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>shaper_list</p></td>
-<td class="parameter_description"><p> a <code class="literal">NULL</code>-terminated
-array of shapers to use or <code class="literal">NULL</code>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-shape-full.returns"></a><h4>Returns</h4>
-<p> <code class="literal">FALSE</code> if all shapers failed, <code class="literal">TRUE</code> otherwise</p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-shape-list-shapers"></a><h3>hb_shape_list_shapers ()</h3>
-<pre class="programlisting">const <span class="returnvalue">char</span> **
-hb_shape_list_shapers (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Retrieves the list of shapers supported by HarfBuzz.</p>
-<div class="refsect3">
-<a name="hb-shape-list-shapers.returns"></a><h4>Returns</h4>
-<p> an array of
-constant strings. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1]</span></p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-Shaping.other_details"></a><h2>Types and Values</h2>
-<div class="refsect2">
-<a name="hb-feature-t-struct"></a><h3>hb_feature_t</h3>
-<pre class="programlisting">typedef struct {
- hb_tag_t tag;
- uint32_t value;
- unsigned int start;
- unsigned int end;
-} hb_feature_t;
-</pre>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-gobject.html b/docs/html/harfbuzz-hb-gobject.html
deleted file mode 100644
index 6dfcd08..0000000
--- a/docs/html/harfbuzz-hb-gobject.html
+++ /dev/null
@@ -1,651 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-gobject: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
-<link rel="prev" href="harfbuzz-hb-coretext.html" title="hb-coretext">
-<link rel="next" href="object-tree.html" title="Object Hierarchy">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts">
-<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
- <a href="#harfbuzz-hb-gobject.description" class="shortcut">Description</a></span>
-</td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-coretext.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="object-tree.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="harfbuzz-hb-gobject"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="harfbuzz-hb-gobject.top_of_page"></a>hb-gobject</span></h2>
-<p>hb-gobject</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="harfbuzz-hb-gobject.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="functions_return">
-<col class="functions_name">
-</colgroup>
-<tbody>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-blob-get-type" title="hb_gobject_blob_get_type ()">hb_gobject_blob_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-buffer-content-type-get-type" title="hb_gobject_buffer_content_type_get_type ()">hb_gobject_buffer_content_type_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-buffer-flags-get-type" title="hb_gobject_buffer_flags_get_type ()">hb_gobject_buffer_flags_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-buffer-get-type" title="hb_gobject_buffer_get_type ()">hb_gobject_buffer_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-buffer-serialize-flags-get-type" title="hb_gobject_buffer_serialize_flags_get_type ()">hb_gobject_buffer_serialize_flags_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-buffer-serialize-format-get-type" title="hb_gobject_buffer_serialize_format_get_type ()">hb_gobject_buffer_serialize_format_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-direction-get-type" title="hb_gobject_direction_get_type ()">hb_gobject_direction_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-face-get-type" title="hb_gobject_face_get_type ()">hb_gobject_face_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-font-funcs-get-type" title="hb_gobject_font_funcs_get_type ()">hb_gobject_font_funcs_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-font-get-type" title="hb_gobject_font_get_type ()">hb_gobject_font_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-memory-mode-get-type" title="hb_gobject_memory_mode_get_type ()">hb_gobject_memory_mode_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-ot-layout-glyph-class-get-type" title="hb_gobject_ot_layout_glyph_class_get_type ()">hb_gobject_ot_layout_glyph_class_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-script-get-type" title="hb_gobject_script_get_type ()">hb_gobject_script_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-shape-plan-get-type" title="hb_gobject_shape_plan_get_type ()">hb_gobject_shape_plan_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-unicode-combining-class-get-type" title="hb_gobject_unicode_combining_class_get_type ()">hb_gobject_unicode_combining_class_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-unicode-funcs-get-type" title="hb_gobject_unicode_funcs_get_type ()">hb_gobject_unicode_funcs_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-unicode-general-category-get-type" title="hb_gobject_unicode_general_category_get_type ()">hb_gobject_unicode_general_category_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-buffer-cluster-level-get-type" title="hb_gobject_buffer_cluster_level_get_type ()">hb_gobject_buffer_cluster_level_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-feature-get-type" title="hb_gobject_feature_get_type ()">hb_gobject_feature_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-glyph-info-get-type" title="hb_gobject_glyph_info_get_type ()">hb_gobject_glyph_info_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-glyph-position-get-type" title="hb_gobject_glyph_position_get_type ()">hb_gobject_glyph_position_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-segment-properties-get-type" title="hb_gobject_segment_properties_get_type ()">hb_gobject_segment_properties_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-set-get-type" title="hb_gobject_set_get_type ()">hb_gobject_set_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GType</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-user-data-key-get-type" title="hb_gobject_user_data_key_get_type ()">hb_gobject_user_data_key_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb-gobject.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="name">
-<col class="description">
-</colgroup>
-<tbody>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BLOB:CAPS" title="HB_GOBJECT_TYPE_BLOB">HB_GOBJECT_TYPE_BLOB</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER:CAPS" title="HB_GOBJECT_TYPE_BUFFER">HB_GOBJECT_TYPE_BUFFER</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER-CONTENT-TYPE:CAPS" title="HB_GOBJECT_TYPE_BUFFER_CONTENT_TYPE">HB_GOBJECT_TYPE_BUFFER_CONTENT_TYPE</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER-FLAGS:CAPS" title="HB_GOBJECT_TYPE_BUFFER_FLAGS">HB_GOBJECT_TYPE_BUFFER_FLAGS</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER-SERIALIZE-FLAGS:CAPS" title="HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FLAGS">HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FLAGS</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER-SERIALIZE-FORMAT:CAPS" title="HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FORMAT">HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FORMAT</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-DIRECTION:CAPS" title="HB_GOBJECT_TYPE_DIRECTION">HB_GOBJECT_TYPE_DIRECTION</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-FACE:CAPS" title="HB_GOBJECT_TYPE_FACE">HB_GOBJECT_TYPE_FACE</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-FONT:CAPS" title="HB_GOBJECT_TYPE_FONT">HB_GOBJECT_TYPE_FONT</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-FONT-FUNCS:CAPS" title="HB_GOBJECT_TYPE_FONT_FUNCS">HB_GOBJECT_TYPE_FONT_FUNCS</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-MEMORY-MODE:CAPS" title="HB_GOBJECT_TYPE_MEMORY_MODE">HB_GOBJECT_TYPE_MEMORY_MODE</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-OT-LAYOUT-GLYPH-CLASS:CAPS" title="HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS">HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-SCRIPT:CAPS" title="HB_GOBJECT_TYPE_SCRIPT">HB_GOBJECT_TYPE_SCRIPT</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-SHAPE-PLAN:CAPS" title="HB_GOBJECT_TYPE_SHAPE_PLAN">HB_GOBJECT_TYPE_SHAPE_PLAN</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-UNICODE-COMBINING-CLASS:CAPS" title="HB_GOBJECT_TYPE_UNICODE_COMBINING_CLASS">HB_GOBJECT_TYPE_UNICODE_COMBINING_CLASS</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-UNICODE-FUNCS:CAPS" title="HB_GOBJECT_TYPE_UNICODE_FUNCS">HB_GOBJECT_TYPE_UNICODE_FUNCS</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-UNICODE-GENERAL-CATEGORY:CAPS" title="HB_GOBJECT_TYPE_UNICODE_GENERAL_CATEGORY">HB_GOBJECT_TYPE_UNICODE_GENERAL_CATEGORY</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER-CLUSTER-LEVEL:CAPS" title="HB_GOBJECT_TYPE_BUFFER_CLUSTER_LEVEL">HB_GOBJECT_TYPE_BUFFER_CLUSTER_LEVEL</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-FEATURE:CAPS" title="HB_GOBJECT_TYPE_FEATURE">HB_GOBJECT_TYPE_FEATURE</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-GLYPH-INFO:CAPS" title="HB_GOBJECT_TYPE_GLYPH_INFO">HB_GOBJECT_TYPE_GLYPH_INFO</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-GLYPH-POSITION:CAPS" title="HB_GOBJECT_TYPE_GLYPH_POSITION">HB_GOBJECT_TYPE_GLYPH_POSITION</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-SEGMENT-PROPERTIES:CAPS" title="HB_GOBJECT_TYPE_SEGMENT_PROPERTIES">HB_GOBJECT_TYPE_SEGMENT_PROPERTIES</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-SET:CAPS" title="HB_GOBJECT_TYPE_SET">HB_GOBJECT_TYPE_SET</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-USER-DATA-KEY:CAPS" title="HB_GOBJECT_TYPE_USER_DATA_KEY">HB_GOBJECT_TYPE_USER_DATA_KEY</a></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb-gobject.description"></a><h2>Description</h2>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb-gobject.functions_details"></a><h2>Functions</h2>
-<div class="refsect2">
-<a name="hb-gobject-blob-get-type"></a><h3>hb_gobject_blob_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_blob_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-buffer-content-type-get-type"></a><h3>hb_gobject_buffer_content_type_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_buffer_content_type_get_type
- (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-buffer-flags-get-type"></a><h3>hb_gobject_buffer_flags_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_buffer_flags_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-buffer-get-type"></a><h3>hb_gobject_buffer_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_buffer_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-buffer-serialize-flags-get-type"></a><h3>hb_gobject_buffer_serialize_flags_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_buffer_serialize_flags_get_type
- (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-buffer-serialize-format-get-type"></a><h3>hb_gobject_buffer_serialize_format_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_buffer_serialize_format_get_type
- (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-direction-get-type"></a><h3>hb_gobject_direction_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_direction_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-face-get-type"></a><h3>hb_gobject_face_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_face_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-font-funcs-get-type"></a><h3>hb_gobject_font_funcs_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_font_funcs_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-font-get-type"></a><h3>hb_gobject_font_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_font_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-memory-mode-get-type"></a><h3>hb_gobject_memory_mode_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_memory_mode_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-ot-layout-glyph-class-get-type"></a><h3>hb_gobject_ot_layout_glyph_class_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_ot_layout_glyph_class_get_type
- (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-script-get-type"></a><h3>hb_gobject_script_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_script_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-shape-plan-get-type"></a><h3>hb_gobject_shape_plan_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_shape_plan_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-unicode-combining-class-get-type"></a><h3>hb_gobject_unicode_combining_class_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_unicode_combining_class_get_type
- (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-unicode-funcs-get-type"></a><h3>hb_gobject_unicode_funcs_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_unicode_funcs_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-unicode-general-category-get-type"></a><h3>hb_gobject_unicode_general_category_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_unicode_general_category_get_type
- (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-buffer-cluster-level-get-type"></a><h3>hb_gobject_buffer_cluster_level_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_buffer_cluster_level_get_type
- (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-feature-get-type"></a><h3>hb_gobject_feature_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_feature_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-glyph-info-get-type"></a><h3>hb_gobject_glyph_info_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_glyph_info_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-glyph-position-get-type"></a><h3>hb_gobject_glyph_position_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_glyph_position_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-segment-properties-get-type"></a><h3>hb_gobject_segment_properties_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_segment_properties_get_type
- (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-set-get-type"></a><h3>hb_gobject_set_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_set_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-gobject-user-data-key-get-type"></a><h3>hb_gobject_user_data_key_get_type ()</h3>
-<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_user_data_key_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb-gobject.other_details"></a><h2>Types and Values</h2>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-BLOB:CAPS"></a><h3>HB_GOBJECT_TYPE_BLOB</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_BLOB (hb_gobject_blob_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-BUFFER:CAPS"></a><h3>HB_GOBJECT_TYPE_BUFFER</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_BUFFER (hb_gobject_buffer_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-BUFFER-CONTENT-TYPE:CAPS"></a><h3>HB_GOBJECT_TYPE_BUFFER_CONTENT_TYPE</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_BUFFER_CONTENT_TYPE (hb_gobject_buffer_content_type_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-BUFFER-FLAGS:CAPS"></a><h3>HB_GOBJECT_TYPE_BUFFER_FLAGS</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_BUFFER_FLAGS (hb_gobject_buffer_flags_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-BUFFER-SERIALIZE-FLAGS:CAPS"></a><h3>HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FLAGS</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FLAGS (hb_gobject_buffer_serialize_flags_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-BUFFER-SERIALIZE-FORMAT:CAPS"></a><h3>HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FORMAT</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FORMAT (hb_gobject_buffer_serialize_format_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-DIRECTION:CAPS"></a><h3>HB_GOBJECT_TYPE_DIRECTION</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_DIRECTION (hb_gobject_direction_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-FACE:CAPS"></a><h3>HB_GOBJECT_TYPE_FACE</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_FACE (hb_gobject_face_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-FONT:CAPS"></a><h3>HB_GOBJECT_TYPE_FONT</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_FONT (hb_gobject_font_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-FONT-FUNCS:CAPS"></a><h3>HB_GOBJECT_TYPE_FONT_FUNCS</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_FONT_FUNCS (hb_gobject_font_funcs_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-MEMORY-MODE:CAPS"></a><h3>HB_GOBJECT_TYPE_MEMORY_MODE</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_MEMORY_MODE (hb_gobject_memory_mode_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-OT-LAYOUT-GLYPH-CLASS:CAPS"></a><h3>HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS (hb_gobject_ot_layout_glyph_class_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-SCRIPT:CAPS"></a><h3>HB_GOBJECT_TYPE_SCRIPT</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_SCRIPT (hb_gobject_script_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-SHAPE-PLAN:CAPS"></a><h3>HB_GOBJECT_TYPE_SHAPE_PLAN</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_SHAPE_PLAN (hb_gobject_shape_plan_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-UNICODE-COMBINING-CLASS:CAPS"></a><h3>HB_GOBJECT_TYPE_UNICODE_COMBINING_CLASS</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_UNICODE_COMBINING_CLASS (hb_gobject_unicode_combining_class_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-UNICODE-FUNCS:CAPS"></a><h3>HB_GOBJECT_TYPE_UNICODE_FUNCS</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_UNICODE_FUNCS (hb_gobject_unicode_funcs_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-UNICODE-GENERAL-CATEGORY:CAPS"></a><h3>HB_GOBJECT_TYPE_UNICODE_GENERAL_CATEGORY</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_UNICODE_GENERAL_CATEGORY (hb_gobject_unicode_general_category_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-BUFFER-CLUSTER-LEVEL:CAPS"></a><h3>HB_GOBJECT_TYPE_BUFFER_CLUSTER_LEVEL</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_BUFFER_CLUSTER_LEVEL (hb_gobject_buffer_cluster_level_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-FEATURE:CAPS"></a><h3>HB_GOBJECT_TYPE_FEATURE</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_FEATURE (hb_gobject_feature_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-GLYPH-INFO:CAPS"></a><h3>HB_GOBJECT_TYPE_GLYPH_INFO</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_GLYPH_INFO (hb_gobject_glyph_info_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-GLYPH-POSITION:CAPS"></a><h3>HB_GOBJECT_TYPE_GLYPH_POSITION</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_GLYPH_POSITION (hb_gobject_glyph_position_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-SEGMENT-PROPERTIES:CAPS"></a><h3>HB_GOBJECT_TYPE_SEGMENT_PROPERTIES</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_SEGMENT_PROPERTIES (hb_gobject_segment_properties_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-SET:CAPS"></a><h3>HB_GOBJECT_TYPE_SET</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_SET (hb_gobject_set_get_type ())
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-GOBJECT-TYPE-USER-DATA-KEY:CAPS"></a><h3>HB_GOBJECT_TYPE_USER_DATA_KEY</h3>
-<pre class="programlisting">#define HB_GOBJECT_TYPE_USER_DATA_KEY (hb_gobject_user_data_key_get_type ())
-</pre>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-ot-font.html b/docs/html/harfbuzz-hb-ot-font.html
deleted file mode 100644
index 289d871..0000000
--- a/docs/html/harfbuzz-hb-ot-font.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-ot-font: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
-<link rel="prev" href="harfbuzz-hb-ot-tag.html" title="hb-ot-tag">
-<link rel="next" href="harfbuzz-hb-ot-shape.html" title="hb-ot-shape">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts">
-<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
- <a href="#harfbuzz-hb-ot-font.description" class="shortcut">Description</a></span>
-</td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-ot-tag.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-ot-shape.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="harfbuzz-hb-ot-font"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="harfbuzz-hb-ot-font.top_of_page"></a>hb-ot-font</span></h2>
-<p>hb-ot-font</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="harfbuzz-hb-ot-font.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="functions_return">
-<col class="functions_name">
-</colgroup>
-<tbody><tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-ot-font.html#hb-ot-font-set-funcs" title="hb_ot_font_set_funcs ()">hb_ot_font_set_funcs</a> <span class="c_punctuation">()</span>
-</td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb-ot-font.description"></a><h2>Description</h2>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb-ot-font.functions_details"></a><h2>Functions</h2>
-<div class="refsect2">
-<a name="hb-ot-font-set-funcs"></a><h3>hb_ot_font_set_funcs ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_ot_font_set_funcs (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-28.html#api-index-0.9.28">0.9.28</a></p>
-</div>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb-ot-font.other_details"></a><h2>Types and Values</h2>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-ot-shape.html b/docs/html/harfbuzz-hb-ot-shape.html
deleted file mode 100644
index fa22099..0000000
--- a/docs/html/harfbuzz-hb-ot-shape.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-ot-shape: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
-<link rel="prev" href="harfbuzz-hb-ot-font.html" title="hb-ot-font">
-<link rel="next" href="harfbuzz-hb-shape-plan.html" title="hb-shape-plan">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts">
-<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
- <a href="#harfbuzz-hb-ot-shape.description" class="shortcut">Description</a></span>
-</td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-ot-font.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-shape-plan.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="harfbuzz-hb-ot-shape"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="harfbuzz-hb-ot-shape.top_of_page"></a>hb-ot-shape</span></h2>
-<p>hb-ot-shape</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="harfbuzz-hb-ot-shape.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="functions_return">
-<col class="functions_name">
-</colgroup>
-<tbody><tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-ot-shape.html#hb-ot-shape-glyphs-closure" title="hb_ot_shape_glyphs_closure ()">hb_ot_shape_glyphs_closure</a> <span class="c_punctuation">()</span>
-</td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb-ot-shape.description"></a><h2>Description</h2>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb-ot-shape.functions_details"></a><h2>Functions</h2>
-<div class="refsect2">
-<a name="hb-ot-shape-glyphs-closure"></a><h3>hb_ot_shape_glyphs_closure ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_ot_shape_glyphs_closure (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *features</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> num_features</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *glyphs</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb-ot-shape.other_details"></a><h2>Types and Values</h2>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz.devhelp2 b/docs/html/harfbuzz.devhelp2
deleted file mode 100644
index 15ffc29..0000000
--- a/docs/html/harfbuzz.devhelp2
+++ /dev/null
@@ -1,771 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<book xmlns="http://www.devhelp.net/book" title="HarfBuzz Manual" link="index.html" author="" name="harfbuzz" version="2" language="c">
- <chapters>
- <sub name="User's manual" link="pt01.html">
- <sub name="What is Harfbuzz?" link="what-is-harfbuzz.html">
- <sub name="Why do I need it?" link="what-is-harfbuzz.html#why-do-i-need-it"/>
- <sub name="Why is it called Harfbuzz?" link="why-is-it-called-harfbuzz.html"/>
- </sub>
- <sub name="Install Harfbuzz" link="install-harfbuzz.html">
- <sub name="Download" link="install-harfbuzz.html#download"/>
- <sub name="Building" link="building.html"/>
- </sub>
- <sub name="Hello, Harfbuzz" link="hello-harfbuzz.html">
- <sub name="What Harfbuzz doesn't do" link="hello-harfbuzz.html#what-harfbuzz-doesnt-do"/>
- </sub>
- <sub name="Buffers, language, script and direction" link="buffers-language-script-and-direction.html">
- <sub name="Creating and destroying buffers" link="buffers-language-script-and-direction.html#creating-and-destroying-buffers"/>
- <sub name="Adding text to the buffer" link="adding-text-to-the-buffer.html"/>
- <sub name="Setting buffer properties" link="setting-buffer-properties.html"/>
- <sub name="What about the other scripts?" link="what-about-the-other-scripts.html"/>
- <sub name="Customizing Unicode functions" link="customizing-unicode-functions.html"/>
- </sub>
- <sub name="Fonts and faces" link="fonts-and-faces.html">
- <sub name="Using FreeType" link="fonts-and-faces.html#using-freetype"/>
- <sub name="Using Harfbuzz's native OpenType implementation" link="using-harfbuzzs-native-opentype-implementation.html"/>
- <sub name="Using your own font functions" link="using-your-own-font-functions.html"/>
- </sub>
- <sub name="Shaping and shape plans" link="shaping-and-shape-plans.html">
- <sub name="OpenType features" link="shaping-and-shape-plans.html#opentype-features"/>
- <sub name="Plans and caching" link="plans-and-caching.html"/>
- </sub>
- <sub name="Glyph information" link="pt01.html#glyph-information"/>
- </sub>
- <sub name="Reference manual" link="pt02.html">
- <sub name="Harfbuzz API" link="ch07.html">
- <sub name="hb" link="harfbuzz-hb.html"/>
- <sub name="hb-common" link="harfbuzz-hb-common.html"/>
- <sub name="hb-unicode" link="harfbuzz-hb-unicode.html"/>
- <sub name="Buffers" link="harfbuzz-Buffers.html"/>
- <sub name="hb-blob" link="harfbuzz-hb-blob.html"/>
- <sub name="hb-face" link="harfbuzz-hb-face.html"/>
- <sub name="hb-font" link="harfbuzz-hb-font.html"/>
- <sub name="Shaping" link="harfbuzz-Shaping.html"/>
- <sub name="hb-version" link="harfbuzz-hb-version.html"/>
- <sub name="hb-deprecated" link="harfbuzz-hb-deprecated.html"/>
- <sub name="hb-set" link="harfbuzz-hb-set.html"/>
- <sub name="hb-ot" link="harfbuzz-hb-ot.html"/>
- <sub name="hb-ot-layout" link="harfbuzz-hb-ot-layout.html"/>
- <sub name="hb-ot-tag" link="harfbuzz-hb-ot-tag.html"/>
- <sub name="hb-ot-font" link="harfbuzz-hb-ot-font.html"/>
- <sub name="hb-ot-shape" link="harfbuzz-hb-ot-shape.html"/>
- <sub name="hb-shape-plan" link="harfbuzz-hb-shape-plan.html"/>
- <sub name="hb-glib" link="harfbuzz-hb-glib.html"/>
- <sub name="hb-icu" link="harfbuzz-hb-icu.html"/>
- <sub name="hb-ft" link="harfbuzz-hb-ft.html"/>
- <sub name="hb-graphite2" link="harfbuzz-hb-graphite2.html"/>
- <sub name="hb-uniscribe" link="harfbuzz-hb-uniscribe.html"/>
- <sub name="hb-coretext" link="harfbuzz-hb-coretext.html"/>
- <sub name="hb-gobject" link="harfbuzz-hb-gobject.html"/>
- </sub>
- <sub name="Object Hierarchy" link="object-tree.html"/>
- <sub name="API Index" link="api-index-full.html"/>
- <sub name="Index of new symbols in 0.9.2" link="api-index-0-9-2.html"/>
- <sub name="Index of new symbols in 0.9.5" link="api-index-0-9-5.html"/>
- <sub name="Index of new symbols in 0.9.7" link="api-index-0-9-7.html"/>
- <sub name="Index of new symbols in 0.9.8" link="api-index-0-9-8.html"/>
- <sub name="Index of new symbols in 0.9.10" link="api-index-0-9-10.html"/>
- <sub name="Index of new symbols in 0.9.11" link="api-index-0-9-11.html"/>
- <sub name="Index of new symbols in 0.9.20" link="api-index-0-9-20.html"/>
- <sub name="Index of new symbols in 0.9.22" link="api-index-0-9-22.html"/>
- <sub name="Index of new symbols in 0.9.28" link="api-index-0-9-28.html"/>
- <sub name="Index of new symbols in 0.9.30" link="api-index-0-9-30.html"/>
- <sub name="Index of new symbols in 0.9.31" link="api-index-0-9-31.html"/>
- <sub name="Index of new symbols in 0.9.38" link="api-index-0-9-38.html"/>
- <sub name="Index of new symbols in 0.9.39" link="api-index-0-9-39.html"/>
- <sub name="Index of new symbols in 0.9.41" link="api-index-0-9-41.html"/>
- <sub name="Index of new symbols in 0.9.42" link="api-index-0-9-42.html"/>
- <sub name="Index of new symbols in 1.0.5" link="api-index-1-0-5.html"/>
- <sub name="Index of new symbols in 1.1.2" link="api-index-1-1-2.html"/>
- <sub name="Index of new symbols in 1.1.3" link="api-index-1-1-3.html"/>
- <sub name="Index of deprecated API" link="deprecated-api-index.html"/>
- <sub name="Annotation Glossary" link="annotation-glossary.html"/>
- </sub>
- </chapters>
- <functions>
- <keyword type="function" name="hb_tag_from_string ()" link="harfbuzz-hb-common.html#hb-tag-from-string" since="0.9.2"/>
- <keyword type="function" name="hb_tag_to_string ()" link="harfbuzz-hb-common.html#hb-tag-to-string" since="0.9.5"/>
- <keyword type="function" name="hb_direction_from_string ()" link="harfbuzz-hb-common.html#hb-direction-from-string" since="0.9.2"/>
- <keyword type="function" name="hb_direction_to_string ()" link="harfbuzz-hb-common.html#hb-direction-to-string" since="0.9.2"/>
- <keyword type="function" name="hb_script_from_iso15924_tag ()" link="harfbuzz-hb-common.html#hb-script-from-iso15924-tag" since="0.9.2"/>
- <keyword type="function" name="hb_script_from_string ()" link="harfbuzz-hb-common.html#hb-script-from-string" since="0.9.2"/>
- <keyword type="function" name="hb_script_to_iso15924_tag ()" link="harfbuzz-hb-common.html#hb-script-to-iso15924-tag" since="0.9.2"/>
- <keyword type="function" name="hb_script_get_horizontal_direction ()" link="harfbuzz-hb-common.html#hb-script-get-horizontal-direction" since="0.9.2"/>
- <keyword type="function" name="hb_language_from_string ()" link="harfbuzz-hb-common.html#hb-language-from-string" since="0.9.2"/>
- <keyword type="function" name="hb_language_to_string ()" link="harfbuzz-hb-common.html#hb-language-to-string" since="0.9.2"/>
- <keyword type="function" name="hb_language_get_default ()" link="harfbuzz-hb-common.html#hb-language-get-default" since="0.9.2"/>
- <keyword type="function" name="hb_destroy_func_t ()" link="harfbuzz-hb-common.html#hb-destroy-func-t"/>
- <keyword type="macro" name="HB_TAG()" link="harfbuzz-hb-common.html#HB-TAG:CAPS"/>
- <keyword type="macro" name="HB_UNTAG()" link="harfbuzz-hb-common.html#HB-UNTAG:CAPS"/>
- <keyword type="macro" name="HB_DIRECTION_REVERSE()" link="harfbuzz-hb-common.html#HB-DIRECTION-REVERSE:CAPS"/>
- <keyword type="macro" name="HB_DIRECTION_IS_BACKWARD()" link="harfbuzz-hb-common.html#HB-DIRECTION-IS-BACKWARD:CAPS"/>
- <keyword type="macro" name="HB_DIRECTION_IS_FORWARD()" link="harfbuzz-hb-common.html#HB-DIRECTION-IS-FORWARD:CAPS"/>
- <keyword type="macro" name="HB_DIRECTION_IS_HORIZONTAL()" link="harfbuzz-hb-common.html#HB-DIRECTION-IS-HORIZONTAL:CAPS"/>
- <keyword type="macro" name="HB_DIRECTION_IS_VALID()" link="harfbuzz-hb-common.html#HB-DIRECTION-IS-VALID:CAPS"/>
- <keyword type="macro" name="HB_DIRECTION_IS_VERTICAL()" link="harfbuzz-hb-common.html#HB-DIRECTION-IS-VERTICAL:CAPS"/>
- <keyword type="typedef" name="hb_bool_t" link="harfbuzz-hb-common.html#hb-bool-t"/>
- <keyword type="typedef" name="hb_codepoint_t" link="harfbuzz-hb-common.html#hb-codepoint-t"/>
- <keyword type="enum" name="enum hb_direction_t" link="harfbuzz-hb-common.html#hb-direction-t"/>
- <keyword type="typedef" name="hb_language_t" link="harfbuzz-hb-common.html#hb-language-t"/>
- <keyword type="typedef" name="hb_mask_t" link="harfbuzz-hb-common.html#hb-mask-t"/>
- <keyword type="typedef" name="hb_position_t" link="harfbuzz-hb-common.html#hb-position-t"/>
- <keyword type="typedef" name="hb_tag_t" link="harfbuzz-hb-common.html#hb-tag-t"/>
- <keyword type="enum" name="enum hb_script_t" link="harfbuzz-hb-common.html#hb-script-t"/>
- <keyword type="struct" name="hb_user_data_key_t" link="harfbuzz-hb-common.html#hb-user-data-key-t-struct"/>
- <keyword type="union" name="hb_var_int_t" link="harfbuzz-hb-common.html#hb-var-int-t"/>
- <keyword type="macro" name="HB_TAG_NONE" link="harfbuzz-hb-common.html#HB-TAG-NONE:CAPS"/>
- <keyword type="macro" name="HB_TAG_MAX" link="harfbuzz-hb-common.html#HB-TAG-MAX:CAPS"/>
- <keyword type="macro" name="HB_TAG_MAX_SIGNED" link="harfbuzz-hb-common.html#HB-TAG-MAX-SIGNED:CAPS"/>
- <keyword type="macro" name="HB_LANGUAGE_INVALID" link="harfbuzz-hb-common.html#HB-LANGUAGE-INVALID:CAPS"/>
- <keyword type="function" name="hb_unicode_combining_class ()" link="harfbuzz-hb-unicode.html#hb-unicode-combining-class" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_combining_class_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-combining-class-func-t"/>
- <keyword type="function" name="hb_unicode_compose ()" link="harfbuzz-hb-unicode.html#hb-unicode-compose" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_compose_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-compose-func-t"/>
- <keyword type="function" name="hb_unicode_decompose ()" link="harfbuzz-hb-unicode.html#hb-unicode-decompose" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_decompose_compatibility ()" link="harfbuzz-hb-unicode.html#hb-unicode-decompose-compatibility" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_decompose_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-decompose-func-t"/>
- <keyword type="function" name="hb_unicode_eastasian_width ()" link="harfbuzz-hb-unicode.html#hb-unicode-eastasian-width" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_create ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-create" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_destroy ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-destroy" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_get_default ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-default"/>
- <keyword type="function" name="hb_unicode_funcs_get_empty ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-empty" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_get_parent ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-parent" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_get_user_data ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-user-data" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_is_immutable ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-is-immutable" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_make_immutable ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-make-immutable" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_reference ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-reference" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_combining_class_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-combining-class-func" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_compose_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-compose-func" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_decompose_compatibility_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-decompose-compatibility-func" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_decompose_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-decompose-func" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_eastasian_width_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-eastasian-width-func" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_general_category_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-general-category-func" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_mirroring_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-mirroring-func" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_script_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-script-func" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_user_data ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-user-data" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_general_category ()" link="harfbuzz-hb-unicode.html#hb-unicode-general-category" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_general_category_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-general-category-func-t"/>
- <keyword type="function" name="hb_unicode_mirroring ()" link="harfbuzz-hb-unicode.html#hb-unicode-mirroring" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_mirroring_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-mirroring-func-t"/>
- <keyword type="function" name="hb_unicode_script ()" link="harfbuzz-hb-unicode.html#hb-unicode-script" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_script_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-script-func-t"/>
- <keyword type="macro" name="HB_UNICODE_MAX_DECOMPOSITION_LEN" link="harfbuzz-hb-unicode.html#HB-UNICODE-MAX-DECOMPOSITION-LEN:CAPS"/>
- <keyword type="enum" name="enum hb_unicode_combining_class_t" link="harfbuzz-hb-unicode.html#hb-unicode-combining-class-t"/>
- <keyword type="typedef" name="hb_unicode_funcs_t" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"/>
- <keyword type="enum" name="enum hb_unicode_general_category_t" link="harfbuzz-hb-unicode.html#hb-unicode-general-category-t"/>
- <keyword type="function" name="hb_buffer_create ()" link="harfbuzz-Buffers.html#hb-buffer-create" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_reference ()" link="harfbuzz-Buffers.html#hb-buffer-reference" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_empty ()" link="harfbuzz-Buffers.html#hb-buffer-get-empty" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_destroy ()" link="harfbuzz-Buffers.html#hb-buffer-destroy" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_reset ()" link="harfbuzz-Buffers.html#hb-buffer-reset" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_clear_contents ()" link="harfbuzz-Buffers.html#hb-buffer-clear-contents" since="0.9.11"/>
- <keyword type="function" name="hb_buffer_pre_allocate ()" link="harfbuzz-Buffers.html#hb-buffer-pre-allocate" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_allocation_successful ()" link="harfbuzz-Buffers.html#hb-buffer-allocation-successful" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_add ()" link="harfbuzz-Buffers.html#hb-buffer-add" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_add_codepoints ()" link="harfbuzz-Buffers.html#hb-buffer-add-codepoints" since="0.9.31"/>
- <keyword type="function" name="hb_buffer_add_utf32 ()" link="harfbuzz-Buffers.html#hb-buffer-add-utf32" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_add_utf16 ()" link="harfbuzz-Buffers.html#hb-buffer-add-utf16" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_add_utf8 ()" link="harfbuzz-Buffers.html#hb-buffer-add-utf8" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_add_latin1 ()" link="harfbuzz-Buffers.html#hb-buffer-add-latin1" since="0.9.39"/>
- <keyword type="function" name="hb_buffer_set_content_type ()" link="harfbuzz-Buffers.html#hb-buffer-set-content-type" since="0.9.5"/>
- <keyword type="function" name="hb_buffer_get_content_type ()" link="harfbuzz-Buffers.html#hb-buffer-get-content-type" since="0.9.5"/>
- <keyword type="function" name="hb_buffer_set_direction ()" link="harfbuzz-Buffers.html#hb-buffer-set-direction" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_direction ()" link="harfbuzz-Buffers.html#hb-buffer-get-direction" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_set_script ()" link="harfbuzz-Buffers.html#hb-buffer-set-script" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_script ()" link="harfbuzz-Buffers.html#hb-buffer-get-script" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_set_language ()" link="harfbuzz-Buffers.html#hb-buffer-set-language" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_language ()" link="harfbuzz-Buffers.html#hb-buffer-get-language" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_set_flags ()" link="harfbuzz-Buffers.html#hb-buffer-set-flags" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_get_flags ()" link="harfbuzz-Buffers.html#hb-buffer-get-flags" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_set_cluster_level ()" link="harfbuzz-Buffers.html#hb-buffer-set-cluster-level" since="0.9.42"/>
- <keyword type="function" name="hb_buffer_get_cluster_level ()" link="harfbuzz-Buffers.html#hb-buffer-get-cluster-level" since="0.9.42"/>
- <keyword type="function" name="hb_buffer_set_length ()" link="harfbuzz-Buffers.html#hb-buffer-set-length" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_length ()" link="harfbuzz-Buffers.html#hb-buffer-get-length" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_set_segment_properties ()" link="harfbuzz-Buffers.html#hb-buffer-set-segment-properties" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_get_segment_properties ()" link="harfbuzz-Buffers.html#hb-buffer-get-segment-properties" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_guess_segment_properties ()" link="harfbuzz-Buffers.html#hb-buffer-guess-segment-properties" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_set_unicode_funcs ()" link="harfbuzz-Buffers.html#hb-buffer-set-unicode-funcs" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_unicode_funcs ()" link="harfbuzz-Buffers.html#hb-buffer-get-unicode-funcs" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_set_user_data ()" link="harfbuzz-Buffers.html#hb-buffer-set-user-data" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_user_data ()" link="harfbuzz-Buffers.html#hb-buffer-get-user-data" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_glyph_infos ()" link="harfbuzz-Buffers.html#hb-buffer-get-glyph-infos" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_glyph_positions ()" link="harfbuzz-Buffers.html#hb-buffer-get-glyph-positions" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_set_replacement_codepoint ()" link="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepoint" since="0.9.31"/>
- <keyword type="function" name="hb_buffer_get_replacement_codepoint ()" link="harfbuzz-Buffers.html#hb-buffer-get-replacement-codepoint" since="0.9.31"/>
- <keyword type="function" name="hb_buffer_normalize_glyphs ()" link="harfbuzz-Buffers.html#hb-buffer-normalize-glyphs" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_reverse ()" link="harfbuzz-Buffers.html#hb-buffer-reverse" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_reverse_range ()" link="harfbuzz-Buffers.html#hb-buffer-reverse-range" since="0.9.41"/>
- <keyword type="function" name="hb_buffer_reverse_clusters ()" link="harfbuzz-Buffers.html#hb-buffer-reverse-clusters" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_serialize_glyphs ()" link="harfbuzz-Buffers.html#hb-buffer-serialize-glyphs" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_deserialize_glyphs ()" link="harfbuzz-Buffers.html#hb-buffer-deserialize-glyphs" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_serialize_format_from_string ()" link="harfbuzz-Buffers.html#hb-buffer-serialize-format-from-string" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_serialize_format_to_string ()" link="harfbuzz-Buffers.html#hb-buffer-serialize-format-to-string" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_serialize_list_formats ()" link="harfbuzz-Buffers.html#hb-buffer-serialize-list-formats" since="0.9.7"/>
- <keyword type="function" name="hb_segment_properties_equal ()" link="harfbuzz-Buffers.html#hb-segment-properties-equal" since="0.9.7"/>
- <keyword type="function" name="hb_segment_properties_hash ()" link="harfbuzz-Buffers.html#hb-segment-properties-hash" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_set_message_func ()" link="harfbuzz-Buffers.html#hb-buffer-set-message-func" since="1.1.3"/>
- <keyword type="function" name="hb_buffer_message_func_t ()" link="harfbuzz-Buffers.html#hb-buffer-message-func-t"/>
- <keyword type="macro" name="HB_SEGMENT_PROPERTIES_DEFAULT" link="harfbuzz-Buffers.html#HB-SEGMENT-PROPERTIES-DEFAULT:CAPS"/>
- <keyword type="macro" name="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT" link="harfbuzz-Buffers.html#HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS" since="0.9.31"/>
- <keyword type="typedef" name="hb_buffer_t" link="harfbuzz-Buffers.html#hb-buffer-t"/>
- <keyword type="struct" name="hb_glyph_info_t" link="harfbuzz-Buffers.html#hb-glyph-info-t-struct"/>
- <keyword type="struct" name="hb_glyph_position_t" link="harfbuzz-Buffers.html#hb-glyph-position-t-struct"/>
- <keyword type="enum" name="enum hb_buffer_content_type_t" link="harfbuzz-Buffers.html#hb-buffer-content-type-t"/>
- <keyword type="enum" name="enum hb_buffer_flags_t" link="harfbuzz-Buffers.html#hb-buffer-flags-t" since="0.9.20"/>
- <keyword type="enum" name="enum hb_buffer_cluster_level_t" link="harfbuzz-Buffers.html#hb-buffer-cluster-level-t"/>
- <keyword type="struct" name="hb_segment_properties_t" link="harfbuzz-Buffers.html#hb-segment-properties-t-struct"/>
- <keyword type="enum" name="enum hb_buffer_serialize_format_t" link="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" since="0.9.2"/>
- <keyword type="enum" name="enum hb_buffer_serialize_flags_t" link="harfbuzz-Buffers.html#hb-buffer-serialize-flags-t" since="0.9.20"/>
- <keyword type="function" name="hb_blob_create ()" link="harfbuzz-hb-blob.html#hb-blob-create" since="0.9.2"/>
- <keyword type="function" name="hb_blob_create_sub_blob ()" link="harfbuzz-hb-blob.html#hb-blob-create-sub-blob" since="0.9.2"/>
- <keyword type="function" name="hb_blob_destroy ()" link="harfbuzz-hb-blob.html#hb-blob-destroy" since="0.9.2"/>
- <keyword type="function" name="hb_blob_get_data ()" link="harfbuzz-hb-blob.html#hb-blob-get-data" since="0.9.2"/>
- <keyword type="function" name="hb_blob_get_data_writable ()" link="harfbuzz-hb-blob.html#hb-blob-get-data-writable" since="0.9.2"/>
- <keyword type="function" name="hb_blob_get_empty ()" link="harfbuzz-hb-blob.html#hb-blob-get-empty" since="0.9.2"/>
- <keyword type="function" name="hb_blob_get_length ()" link="harfbuzz-hb-blob.html#hb-blob-get-length" since="0.9.2"/>
- <keyword type="function" name="hb_blob_get_user_data ()" link="harfbuzz-hb-blob.html#hb-blob-get-user-data" since="0.9.2"/>
- <keyword type="function" name="hb_blob_is_immutable ()" link="harfbuzz-hb-blob.html#hb-blob-is-immutable" since="0.9.2"/>
- <keyword type="function" name="hb_blob_make_immutable ()" link="harfbuzz-hb-blob.html#hb-blob-make-immutable" since="0.9.2"/>
- <keyword type="function" name="hb_blob_reference ()" link="harfbuzz-hb-blob.html#hb-blob-reference" since="0.9.2"/>
- <keyword type="function" name="hb_blob_set_user_data ()" link="harfbuzz-hb-blob.html#hb-blob-set-user-data" since="0.9.2"/>
- <keyword type="typedef" name="hb_blob_t" link="harfbuzz-hb-blob.html#hb-blob-t"/>
- <keyword type="enum" name="enum hb_memory_mode_t" link="harfbuzz-hb-blob.html#hb-memory-mode-t"/>
- <keyword type="function" name="hb_face_create ()" link="harfbuzz-hb-face.html#hb-face-create" since="0.9.2"/>
- <keyword type="function" name="hb_face_create_for_tables ()" link="harfbuzz-hb-face.html#hb-face-create-for-tables" since="0.9.2"/>
- <keyword type="function" name="hb_face_destroy ()" link="harfbuzz-hb-face.html#hb-face-destroy" since="0.9.2"/>
- <keyword type="function" name="hb_face_get_empty ()" link="harfbuzz-hb-face.html#hb-face-get-empty" since="0.9.2"/>
- <keyword type="function" name="hb_face_get_glyph_count ()" link="harfbuzz-hb-face.html#hb-face-get-glyph-count" since="0.9.7"/>
- <keyword type="function" name="hb_face_get_index ()" link="harfbuzz-hb-face.html#hb-face-get-index" since="0.9.2"/>
- <keyword type="function" name="hb_face_get_upem ()" link="harfbuzz-hb-face.html#hb-face-get-upem" since="0.9.2"/>
- <keyword type="function" name="hb_face_get_user_data ()" link="harfbuzz-hb-face.html#hb-face-get-user-data" since="0.9.2"/>
- <keyword type="function" name="hb_face_is_immutable ()" link="harfbuzz-hb-face.html#hb-face-is-immutable" since="0.9.2"/>
- <keyword type="function" name="hb_face_make_immutable ()" link="harfbuzz-hb-face.html#hb-face-make-immutable" since="0.9.2"/>
- <keyword type="function" name="hb_face_reference ()" link="harfbuzz-hb-face.html#hb-face-reference" since="0.9.2"/>
- <keyword type="function" name="hb_face_reference_blob ()" link="harfbuzz-hb-face.html#hb-face-reference-blob" since="0.9.2"/>
- <keyword type="function" name="hb_face_reference_table ()" link="harfbuzz-hb-face.html#hb-face-reference-table" since="0.9.2"/>
- <keyword type="function" name="hb_face_set_glyph_count ()" link="harfbuzz-hb-face.html#hb-face-set-glyph-count" since="0.9.7"/>
- <keyword type="function" name="hb_face_set_index ()" link="harfbuzz-hb-face.html#hb-face-set-index" since="0.9.2"/>
- <keyword type="function" name="hb_face_set_upem ()" link="harfbuzz-hb-face.html#hb-face-set-upem" since="0.9.2"/>
- <keyword type="function" name="hb_face_set_user_data ()" link="harfbuzz-hb-face.html#hb-face-set-user-data" since="0.9.2"/>
- <keyword type="typedef" name="hb_face_t" link="harfbuzz-hb-face.html#hb-face-t"/>
- <keyword type="function" name="hb_font_add_glyph_origin_for_direction ()" link="harfbuzz-hb-font.html#hb-font-add-glyph-origin-for-direction" since="0.9.2"/>
- <keyword type="function" name="hb_font_create ()" link="harfbuzz-hb-font.html#hb-font-create" since="0.9.2"/>
- <keyword type="function" name="hb_font_create_sub_font ()" link="harfbuzz-hb-font.html#hb-font-create-sub-font" since="0.9.2"/>
- <keyword type="function" name="hb_font_destroy ()" link="harfbuzz-hb-font.html#hb-font-destroy" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_create ()" link="harfbuzz-hb-font.html#hb-font-funcs-create" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_destroy ()" link="harfbuzz-hb-font.html#hb-font-funcs-destroy" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_get_empty ()" link="harfbuzz-hb-font.html#hb-font-funcs-get-empty" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_get_user_data ()" link="harfbuzz-hb-font.html#hb-font-funcs-get-user-data" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_is_immutable ()" link="harfbuzz-hb-font.html#hb-font-funcs-is-immutable" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_make_immutable ()" link="harfbuzz-hb-font.html#hb-font-funcs-make-immutable" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_reference ()" link="harfbuzz-hb-font.html#hb-font-funcs-reference" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_set_glyph_contour_point_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-contour-point-func" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_set_glyph_extents_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-extents-func" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_set_glyph_from_name_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-from-name-func" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_set_glyph_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-func" deprecated="1.2.3" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_set_glyph_h_advance_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-advance-func" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_set_glyph_h_kerning_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-kerning-func" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_set_glyph_h_origin_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-origin-func" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_set_glyph_name_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-name-func" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_set_glyph_v_advance_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-advance-func" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_set_glyph_v_kerning_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-kerning-func" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_set_glyph_v_origin_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-origin-func" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_set_user_data ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-user-data" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_empty ()" link="harfbuzz-hb-font.html#hb-font-get-empty" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_face ()" link="harfbuzz-hb-font.html#hb-font-get-face" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph ()" link="harfbuzz-hb-font.html#hb-font-get-glyph" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_advance_for_direction ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-advance-for-direction" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_advance_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-advance-func-t"/>
- <keyword type="function" name="hb_font_get_glyph_contour_point ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-contour-point" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_contour_point_for_origin ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-contour-point-for-origin" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_contour_point_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-contour-point-func-t"/>
- <keyword type="function" name="hb_font_get_glyph_extents ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-extents" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_extents_for_origin ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-extents-for-origin" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_extents_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-extents-func-t"/>
- <keyword type="function" name="hb_font_get_glyph_from_name ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-from-name" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_from_name_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-from-name-func-t"/>
- <keyword type="function" name="hb_font_get_glyph_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-func-t" deprecated=""/>
- <keyword type="function" name="hb_font_get_glyph_h_advance ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-advance" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_h_kerning ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-kerning" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_h_origin ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-origin" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_kerning_for_direction ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-kerning-for-direction" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_kerning_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-kerning-func-t"/>
- <keyword type="function" name="hb_font_get_glyph_name ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-name" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_name_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-name-func-t"/>
- <keyword type="function" name="hb_font_get_glyph_origin_for_direction ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-origin-for-direction" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_origin_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-origin-func-t"/>
- <keyword type="function" name="hb_font_get_glyph_v_advance ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-advance" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_v_kerning ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-kerning" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_v_origin ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-origin" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_parent ()" link="harfbuzz-hb-font.html#hb-font-get-parent" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_ppem ()" link="harfbuzz-hb-font.html#hb-font-get-ppem" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_scale ()" link="harfbuzz-hb-font.html#hb-font-get-scale" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_user_data ()" link="harfbuzz-hb-font.html#hb-font-get-user-data" since="0.9.2"/>
- <keyword type="function" name="hb_font_glyph_from_string ()" link="harfbuzz-hb-font.html#hb-font-glyph-from-string" since="0.9.2"/>
- <keyword type="function" name="hb_font_glyph_to_string ()" link="harfbuzz-hb-font.html#hb-font-glyph-to-string" since="0.9.2"/>
- <keyword type="function" name="hb_font_is_immutable ()" link="harfbuzz-hb-font.html#hb-font-is-immutable" since="0.9.2"/>
- <keyword type="function" name="hb_font_make_immutable ()" link="harfbuzz-hb-font.html#hb-font-make-immutable" since="0.9.2"/>
- <keyword type="function" name="hb_font_reference ()" link="harfbuzz-hb-font.html#hb-font-reference" since="0.9.2"/>
- <keyword type="function" name="hb_font_set_funcs ()" link="harfbuzz-hb-font.html#hb-font-set-funcs" since="0.9.2"/>
- <keyword type="function" name="hb_font_set_funcs_data ()" link="harfbuzz-hb-font.html#hb-font-set-funcs-data" since="0.9.2"/>
- <keyword type="function" name="hb_font_set_ppem ()" link="harfbuzz-hb-font.html#hb-font-set-ppem" since="0.9.2"/>
- <keyword type="function" name="hb_font_set_scale ()" link="harfbuzz-hb-font.html#hb-font-set-scale" since="0.9.2"/>
- <keyword type="function" name="hb_font_set_user_data ()" link="harfbuzz-hb-font.html#hb-font-set-user-data" since="0.9.2"/>
- <keyword type="function" name="hb_font_subtract_glyph_origin_for_direction ()" link="harfbuzz-hb-font.html#hb-font-subtract-glyph-origin-for-direction" since="0.9.2"/>
- <keyword type="function" name="hb_reference_table_func_t ()" link="harfbuzz-hb-font.html#hb-reference-table-func-t"/>
- <keyword type="function" name="hb_font_funcs_set_font_h_extents_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-font-h-extents-func" since="1.1.2"/>
- <keyword type="function" name="hb_font_funcs_set_font_v_extents_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-font-v-extents-func" since="1.1.2"/>
- <keyword type="function" name="hb_font_get_extents_for_direction ()" link="harfbuzz-hb-font.html#hb-font-get-extents-for-direction" since="1.1.3"/>
- <keyword type="function" name="hb_font_get_font_extents_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-font-extents-func-t"/>
- <keyword type="function" name="hb_font_get_h_extents ()" link="harfbuzz-hb-font.html#hb-font-get-h-extents" since="1.1.3"/>
- <keyword type="function" name="hb_font_get_v_extents ()" link="harfbuzz-hb-font.html#hb-font-get-v-extents" since="1.1.3"/>
- <keyword type="function" name="hb_font_set_parent ()" link="harfbuzz-hb-font.html#hb-font-set-parent" since="1.0.5"/>
- <keyword type="typedef" name="hb_font_funcs_t" link="harfbuzz-hb-font.html#hb-font-funcs-t"/>
- <keyword type="typedef" name="hb_font_get_glyph_h_advance_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-advance-func-t"/>
- <keyword type="typedef" name="hb_font_get_glyph_h_kerning_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-kerning-func-t"/>
- <keyword type="typedef" name="hb_font_get_glyph_h_origin_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-origin-func-t"/>
- <keyword type="typedef" name="hb_font_get_glyph_v_advance_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-advance-func-t"/>
- <keyword type="typedef" name="hb_font_get_glyph_v_kerning_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-kerning-func-t"/>
- <keyword type="typedef" name="hb_font_get_glyph_v_origin_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-origin-func-t"/>
- <keyword type="typedef" name="hb_font_t" link="harfbuzz-hb-font.html#hb-font-t"/>
- <keyword type="typedef" name="hb_font_get_font_h_extents_func_t" link="harfbuzz-hb-font.html#hb-font-get-font-h-extents-func-t"/>
- <keyword type="typedef" name="hb_font_get_font_v_extents_func_t" link="harfbuzz-hb-font.html#hb-font-get-font-v-extents-func-t"/>
- <keyword type="function" name="hb_feature_from_string ()" link="harfbuzz-Shaping.html#hb-feature-from-string" since="0.9.5"/>
- <keyword type="function" name="hb_feature_to_string ()" link="harfbuzz-Shaping.html#hb-feature-to-string" since="0.9.5"/>
- <keyword type="function" name="hb_shape ()" link="harfbuzz-Shaping.html#hb-shape" since="0.9.2"/>
- <keyword type="function" name="hb_shape_full ()" link="harfbuzz-Shaping.html#hb-shape-full" since="0.9.2"/>
- <keyword type="function" name="hb_shape_list_shapers ()" link="harfbuzz-Shaping.html#hb-shape-list-shapers" since="0.9.2"/>
- <keyword type="struct" name="hb_feature_t" link="harfbuzz-Shaping.html#hb-feature-t-struct"/>
- <keyword type="macro" name="HB_VERSION_ATLEAST()" link="harfbuzz-hb-version.html#HB-VERSION-ATLEAST:CAPS"/>
- <keyword type="function" name="hb_version ()" link="harfbuzz-hb-version.html#hb-version" since="0.9.2"/>
- <keyword type="function" name="hb_version_atleast ()" link="harfbuzz-hb-version.html#hb-version-atleast" since="0.9.30"/>
- <keyword type="function" name="hb_version_string ()" link="harfbuzz-hb-version.html#hb-version-string" since="0.9.2"/>
- <keyword type="macro" name="HB_VERSION_MAJOR" link="harfbuzz-hb-version.html#HB-VERSION-MAJOR:CAPS"/>
- <keyword type="macro" name="HB_VERSION_MICRO" link="harfbuzz-hb-version.html#HB-VERSION-MICRO:CAPS"/>
- <keyword type="macro" name="HB_VERSION_MINOR" link="harfbuzz-hb-version.html#HB-VERSION-MINOR:CAPS"/>
- <keyword type="macro" name="HB_VERSION_STRING" link="harfbuzz-hb-version.html#HB-VERSION-STRING:CAPS"/>
- <keyword type="macro" name="HB_BUFFER_FLAGS_DEFAULT" link="harfbuzz-hb-deprecated.html#HB-BUFFER-FLAGS-DEFAULT:CAPS" deprecated=""/>
- <keyword type="macro" name="HB_BUFFER_SERIALIZE_FLAGS_DEFAULT" link="harfbuzz-hb-deprecated.html#HB-BUFFER-SERIALIZE-FLAGS-DEFAULT:CAPS" deprecated=""/>
- <keyword type="macro" name="HB_SCRIPT_CANADIAN_ABORIGINAL" link="harfbuzz-hb-deprecated.html#HB-SCRIPT-CANADIAN-ABORIGINAL:CAPS" deprecated=""/>
- <keyword type="function" name="hb_set_add ()" link="harfbuzz-hb-set.html#hb-set-add" since="0.9.2"/>
- <keyword type="function" name="hb_set_add_range ()" link="harfbuzz-hb-set.html#hb-set-add-range" since="0.9.7"/>
- <keyword type="function" name="hb_set_allocation_successful ()" link="harfbuzz-hb-set.html#hb-set-allocation-successful" since="0.9.2"/>
- <keyword type="function" name="hb_set_clear ()" link="harfbuzz-hb-set.html#hb-set-clear" since="0.9.2"/>
- <keyword type="function" name="hb_set_create ()" link="harfbuzz-hb-set.html#hb-set-create" since="0.9.2"/>
- <keyword type="function" name="hb_set_del ()" link="harfbuzz-hb-set.html#hb-set-del" since="0.9.2"/>
- <keyword type="function" name="hb_set_del_range ()" link="harfbuzz-hb-set.html#hb-set-del-range" since="0.9.7"/>
- <keyword type="function" name="hb_set_destroy ()" link="harfbuzz-hb-set.html#hb-set-destroy" since="0.9.2"/>
- <keyword type="function" name="hb_set_get_empty ()" link="harfbuzz-hb-set.html#hb-set-get-empty" since="0.9.2"/>
- <keyword type="function" name="hb_set_get_max ()" link="harfbuzz-hb-set.html#hb-set-get-max" since="0.9.7"/>
- <keyword type="function" name="hb_set_get_min ()" link="harfbuzz-hb-set.html#hb-set-get-min" since="0.9.7"/>
- <keyword type="function" name="hb_set_get_population ()" link="harfbuzz-hb-set.html#hb-set-get-population" since="0.9.7"/>
- <keyword type="function" name="hb_set_get_user_data ()" link="harfbuzz-hb-set.html#hb-set-get-user-data" since="0.9.2"/>
- <keyword type="function" name="hb_set_has ()" link="harfbuzz-hb-set.html#hb-set-has" since="0.9.2"/>
- <keyword type="function" name="hb_set_intersect ()" link="harfbuzz-hb-set.html#hb-set-intersect" since="0.9.2"/>
- <keyword type="function" name="hb_set_invert ()" link="harfbuzz-hb-set.html#hb-set-invert" since="0.9.10"/>
- <keyword type="function" name="hb_set_is_empty ()" link="harfbuzz-hb-set.html#hb-set-is-empty" since="0.9.7"/>
- <keyword type="function" name="hb_set_is_equal ()" link="harfbuzz-hb-set.html#hb-set-is-equal" since="0.9.7"/>
- <keyword type="function" name="hb_set_next ()" link="harfbuzz-hb-set.html#hb-set-next" since="0.9.2"/>
- <keyword type="function" name="hb_set_next_range ()" link="harfbuzz-hb-set.html#hb-set-next-range" since="0.9.7"/>
- <keyword type="function" name="hb_set_reference ()" link="harfbuzz-hb-set.html#hb-set-reference" since="0.9.2"/>
- <keyword type="function" name="hb_set_set ()" link="harfbuzz-hb-set.html#hb-set-set" since="0.9.2"/>
- <keyword type="function" name="hb_set_set_user_data ()" link="harfbuzz-hb-set.html#hb-set-set-user-data" since="0.9.2"/>
- <keyword type="function" name="hb_set_subtract ()" link="harfbuzz-hb-set.html#hb-set-subtract" since="0.9.2"/>
- <keyword type="function" name="hb_set_symmetric_difference ()" link="harfbuzz-hb-set.html#hb-set-symmetric-difference" since="0.9.2"/>
- <keyword type="function" name="hb_set_union ()" link="harfbuzz-hb-set.html#hb-set-union" since="0.9.2"/>
- <keyword type="macro" name="HB_SET_VALUE_INVALID" link="harfbuzz-hb-set.html#HB-SET-VALUE-INVALID:CAPS"/>
- <keyword type="typedef" name="hb_set_t" link="harfbuzz-hb-set.html#hb-set-t"/>
- <keyword type="function" name="hb_ot_layout_collect_lookups ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-collect-lookups" since="0.9.8"/>
- <keyword type="function" name="hb_ot_layout_feature_get_lookups ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-feature-get-lookups" since="0.9.7"/>
- <keyword type="function" name="hb_ot_layout_get_attach_points ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-get-attach-points"/>
- <keyword type="function" name="hb_ot_layout_get_glyph_class ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-get-glyph-class" since="0.9.7"/>
- <keyword type="function" name="hb_ot_layout_get_glyphs_in_class ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-get-glyphs-in-class" since="0.9.7"/>
- <keyword type="function" name="hb_ot_layout_get_ligature_carets ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-get-ligature-carets"/>
- <keyword type="function" name="hb_ot_layout_get_size_params ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-get-size-params" since="0.9.10"/>
- <keyword type="function" name="hb_ot_layout_glyph_sequence_func_t ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-glyph-sequence-func-t"/>
- <keyword type="function" name="hb_ot_layout_has_glyph_classes ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-has-glyph-classes"/>
- <keyword type="function" name="hb_ot_layout_has_positioning ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-has-positioning"/>
- <keyword type="function" name="hb_ot_layout_has_substitution ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-has-substitution"/>
- <keyword type="function" name="hb_ot_layout_language_find_feature ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-language-find-feature"/>
- <keyword type="function" name="hb_ot_layout_language_get_feature_indexes ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-language-get-feature-indexes"/>
- <keyword type="function" name="hb_ot_layout_language_get_feature_tags ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-language-get-feature-tags"/>
- <keyword type="function" name="hb_ot_layout_language_get_required_feature ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-language-get-required-feature" since="0.9.30"/>
- <keyword type="function" name="hb_ot_layout_lookup_collect_glyphs ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-lookup-collect-glyphs" since="0.9.7"/>
- <keyword type="function" name="hb_ot_layout_lookup_substitute_closure ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-lookup-substitute-closure" since="0.9.7"/>
- <keyword type="function" name="hb_ot_layout_lookup_would_substitute ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-lookup-would-substitute" since="0.9.7"/>
- <keyword type="function" name="hb_ot_layout_script_find_language ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-script-find-language"/>
- <keyword type="function" name="hb_ot_layout_script_get_language_tags ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-script-get-language-tags"/>
- <keyword type="function" name="hb_ot_layout_table_choose_script ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-choose-script"/>
- <keyword type="function" name="hb_ot_layout_table_find_script ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-find-script"/>
- <keyword type="function" name="hb_ot_layout_table_get_feature_tags ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-get-feature-tags"/>
- <keyword type="function" name="hb_ot_layout_table_get_script_tags ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-get-script-tags"/>
- <keyword type="function" name="hb_ot_layout_table_get_lookup_count ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-get-lookup-count" since="0.9.22"/>
- <keyword type="function" name="hb_ot_shape_plan_collect_lookups ()" link="harfbuzz-hb-ot-layout.html#hb-ot-shape-plan-collect-lookups" since="0.9.7"/>
- <keyword type="function" name="hb_ot_layout_language_get_required_feature_index ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-language-get-required-feature-index"/>
- <keyword type="macro" name="HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-DEFAULT-LANGUAGE-INDEX:CAPS"/>
- <keyword type="macro" name="HB_OT_LAYOUT_NO_FEATURE_INDEX" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-NO-FEATURE-INDEX:CAPS"/>
- <keyword type="macro" name="HB_OT_LAYOUT_NO_SCRIPT_INDEX" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-NO-SCRIPT-INDEX:CAPS"/>
- <keyword type="macro" name="HB_OT_TAG_GDEF" link="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GDEF:CAPS"/>
- <keyword type="macro" name="HB_OT_TAG_GPOS" link="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS"/>
- <keyword type="macro" name="HB_OT_TAG_GSUB" link="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS"/>
- <keyword type="macro" name="HB_OT_TAG_JSTF" link="harfbuzz-hb-ot-layout.html#HB-OT-TAG-JSTF:CAPS"/>
- <keyword type="enum" name="enum hb_ot_layout_glyph_class_t" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-glyph-class-t"/>
- <keyword type="function" name="hb_ot_tag_from_language ()" link="harfbuzz-hb-ot-tag.html#hb-ot-tag-from-language"/>
- <keyword type="function" name="hb_ot_tag_to_language ()" link="harfbuzz-hb-ot-tag.html#hb-ot-tag-to-language" since="0.9.2"/>
- <keyword type="function" name="hb_ot_tag_to_script ()" link="harfbuzz-hb-ot-tag.html#hb-ot-tag-to-script"/>
- <keyword type="function" name="hb_ot_tags_from_script ()" link="harfbuzz-hb-ot-tag.html#hb-ot-tags-from-script"/>
- <keyword type="macro" name="HB_OT_TAG_DEFAULT_LANGUAGE" link="harfbuzz-hb-ot-tag.html#HB-OT-TAG-DEFAULT-LANGUAGE:CAPS"/>
- <keyword type="macro" name="HB_OT_TAG_DEFAULT_SCRIPT" link="harfbuzz-hb-ot-tag.html#HB-OT-TAG-DEFAULT-SCRIPT:CAPS"/>
- <keyword type="function" name="hb_ot_font_set_funcs ()" link="harfbuzz-hb-ot-font.html#hb-ot-font-set-funcs" since="0.9.28"/>
- <keyword type="function" name="hb_ot_shape_glyphs_closure ()" link="harfbuzz-hb-ot-shape.html#hb-ot-shape-glyphs-closure" since="0.9.2"/>
- <keyword type="function" name="hb_shape_plan_create ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-create" since="0.9.7"/>
- <keyword type="function" name="hb_shape_plan_create_cached ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-create-cached" since="0.9.7"/>
- <keyword type="function" name="hb_shape_plan_destroy ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-destroy" since="0.9.7"/>
- <keyword type="function" name="hb_shape_plan_execute ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-execute" since="0.9.7"/>
- <keyword type="function" name="hb_shape_plan_get_empty ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-get-empty" since="0.9.7"/>
- <keyword type="function" name="hb_shape_plan_get_shaper ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-get-shaper" since="0.9.7"/>
- <keyword type="function" name="hb_shape_plan_get_user_data ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-get-user-data" since="0.9.7"/>
- <keyword type="function" name="hb_shape_plan_reference ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-reference" since="0.9.7"/>
- <keyword type="function" name="hb_shape_plan_set_user_data ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-set-user-data" since="0.9.7"/>
- <keyword type="typedef" name="hb_shape_plan_t" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"/>
- <keyword type="function" name="hb_glib_get_unicode_funcs ()" link="harfbuzz-hb-glib.html#hb-glib-get-unicode-funcs"/>
- <keyword type="function" name="hb_glib_script_from_script ()" link="harfbuzz-hb-glib.html#hb-glib-script-from-script"/>
- <keyword type="function" name="hb_glib_script_to_script ()" link="harfbuzz-hb-glib.html#hb-glib-script-to-script"/>
- <keyword type="function" name="hb_glib_blob_create ()" link="harfbuzz-hb-glib.html#hb-glib-blob-create" since="0.9.38"/>
- <keyword type="function" name="hb_icu_get_unicode_funcs ()" link="harfbuzz-hb-icu.html#hb-icu-get-unicode-funcs"/>
- <keyword type="function" name="hb_icu_script_from_script ()" link="harfbuzz-hb-icu.html#hb-icu-script-from-script"/>
- <keyword type="function" name="hb_icu_script_to_script ()" link="harfbuzz-hb-icu.html#hb-icu-script-to-script"/>
- <keyword type="function" name="hb_ft_face_create ()" link="harfbuzz-hb-ft.html#hb-ft-face-create" since="0.9.2"/>
- <keyword type="function" name="hb_ft_face_create_cached ()" link="harfbuzz-hb-ft.html#hb-ft-face-create-cached" since="0.9.2"/>
- <keyword type="function" name="hb_ft_face_create_referenced ()" link="harfbuzz-hb-ft.html#hb-ft-face-create-referenced" since="0.9.38"/>
- <keyword type="function" name="hb_ft_font_create ()" link="harfbuzz-hb-ft.html#hb-ft-font-create" since="0.9.2"/>
- <keyword type="function" name="hb_ft_font_create_referenced ()" link="harfbuzz-hb-ft.html#hb-ft-font-create-referenced" since="0.9.38"/>
- <keyword type="function" name="hb_ft_font_get_face ()" link="harfbuzz-hb-ft.html#hb-ft-font-get-face"/>
- <keyword type="function" name="hb_ft_font_set_load_flags ()" link="harfbuzz-hb-ft.html#hb-ft-font-set-load-flags" since="1.0.5"/>
- <keyword type="function" name="hb_ft_font_get_load_flags ()" link="harfbuzz-hb-ft.html#hb-ft-font-get-load-flags" since="1.0.5"/>
- <keyword type="function" name="hb_ft_font_set_funcs ()" link="harfbuzz-hb-ft.html#hb-ft-font-set-funcs"/>
- <keyword type="function" name="hb_graphite2_face_get_gr_face ()" link="harfbuzz-hb-graphite2.html#hb-graphite2-face-get-gr-face"/>
- <keyword type="function" name="hb_graphite2_font_get_gr_font ()" link="harfbuzz-hb-graphite2.html#hb-graphite2-font-get-gr-font"/>
- <keyword type="macro" name="HB_GRAPHITE2_TAG_SILF" link="harfbuzz-hb-graphite2.html#HB-GRAPHITE2-TAG-SILF:CAPS"/>
- <keyword type="function" name="hb_uniscribe_font_get_hfont ()" link="harfbuzz-hb-uniscribe.html#hb-uniscribe-font-get-hfont"/>
- <keyword type="function" name="hb_uniscribe_font_get_logfontw ()" link="harfbuzz-hb-uniscribe.html#hb-uniscribe-font-get-logfontw"/>
- <keyword type="function" name="hb_coretext_face_create ()" link="harfbuzz-hb-coretext.html#hb-coretext-face-create"/>
- <keyword type="function" name="hb_coretext_face_get_cg_font ()" link="harfbuzz-hb-coretext.html#hb-coretext-face-get-cg-font"/>
- <keyword type="function" name="hb_coretext_font_get_ct_font ()" link="harfbuzz-hb-coretext.html#hb-coretext-font-get-ct-font"/>
- <keyword type="macro" name="HB_CORETEXT_TAG_MORT" link="harfbuzz-hb-coretext.html#HB-CORETEXT-TAG-MORT:CAPS"/>
- <keyword type="macro" name="HB_CORETEXT_TAG_MORX" link="harfbuzz-hb-coretext.html#HB-CORETEXT-TAG-MORX:CAPS"/>
- <keyword type="function" name="hb_gobject_blob_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-blob-get-type"/>
- <keyword type="function" name="hb_gobject_buffer_content_type_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-buffer-content-type-get-type"/>
- <keyword type="function" name="hb_gobject_buffer_flags_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-buffer-flags-get-type"/>
- <keyword type="function" name="hb_gobject_buffer_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-buffer-get-type"/>
- <keyword type="function" name="hb_gobject_buffer_serialize_flags_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-buffer-serialize-flags-get-type"/>
- <keyword type="function" name="hb_gobject_buffer_serialize_format_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-buffer-serialize-format-get-type"/>
- <keyword type="function" name="hb_gobject_direction_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-direction-get-type"/>
- <keyword type="function" name="hb_gobject_face_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-face-get-type"/>
- <keyword type="function" name="hb_gobject_font_funcs_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-font-funcs-get-type"/>
- <keyword type="function" name="hb_gobject_font_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-font-get-type"/>
- <keyword type="function" name="hb_gobject_memory_mode_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-memory-mode-get-type"/>
- <keyword type="function" name="hb_gobject_ot_layout_glyph_class_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-ot-layout-glyph-class-get-type"/>
- <keyword type="function" name="hb_gobject_script_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-script-get-type"/>
- <keyword type="function" name="hb_gobject_shape_plan_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-shape-plan-get-type"/>
- <keyword type="function" name="hb_gobject_unicode_combining_class_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-unicode-combining-class-get-type"/>
- <keyword type="function" name="hb_gobject_unicode_funcs_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-unicode-funcs-get-type"/>
- <keyword type="function" name="hb_gobject_unicode_general_category_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-unicode-general-category-get-type"/>
- <keyword type="function" name="hb_gobject_buffer_cluster_level_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-buffer-cluster-level-get-type"/>
- <keyword type="function" name="hb_gobject_feature_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-feature-get-type"/>
- <keyword type="function" name="hb_gobject_glyph_info_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-glyph-info-get-type"/>
- <keyword type="function" name="hb_gobject_glyph_position_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-glyph-position-get-type"/>
- <keyword type="function" name="hb_gobject_segment_properties_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-segment-properties-get-type"/>
- <keyword type="function" name="hb_gobject_set_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-set-get-type"/>
- <keyword type="function" name="hb_gobject_user_data_key_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-user-data-key-get-type"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_BLOB" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BLOB:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_BUFFER" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_BUFFER_CONTENT_TYPE" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER-CONTENT-TYPE:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_BUFFER_FLAGS" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER-FLAGS:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FLAGS" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER-SERIALIZE-FLAGS:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FORMAT" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER-SERIALIZE-FORMAT:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_DIRECTION" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-DIRECTION:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_FACE" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-FACE:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_FONT" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-FONT:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_FONT_FUNCS" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-FONT-FUNCS:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_MEMORY_MODE" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-MEMORY-MODE:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-OT-LAYOUT-GLYPH-CLASS:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_SCRIPT" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-SCRIPT:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_SHAPE_PLAN" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-SHAPE-PLAN:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_UNICODE_COMBINING_CLASS" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-UNICODE-COMBINING-CLASS:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_UNICODE_FUNCS" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-UNICODE-FUNCS:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_UNICODE_GENERAL_CATEGORY" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-UNICODE-GENERAL-CATEGORY:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_BUFFER_CLUSTER_LEVEL" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER-CLUSTER-LEVEL:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_FEATURE" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-FEATURE:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_GLYPH_INFO" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-GLYPH-INFO:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_GLYPH_POSITION" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-GLYPH-POSITION:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_SEGMENT_PROPERTIES" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-SEGMENT-PROPERTIES:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_SET" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-SET:CAPS"/>
- <keyword type="macro" name="HB_GOBJECT_TYPE_USER_DATA_KEY" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-USER-DATA-KEY:CAPS"/>
- <keyword type="constant" name="HB_DIRECTION_INVALID" link="harfbuzz-hb-common.html#HB-DIRECTION-INVALID:CAPS"/>
- <keyword type="constant" name="HB_DIRECTION_LTR" link="harfbuzz-hb-common.html#HB-DIRECTION-LTR:CAPS"/>
- <keyword type="constant" name="HB_DIRECTION_RTL" link="harfbuzz-hb-common.html#HB-DIRECTION-RTL:CAPS"/>
- <keyword type="constant" name="HB_DIRECTION_TTB" link="harfbuzz-hb-common.html#HB-DIRECTION-TTB:CAPS"/>
- <keyword type="constant" name="HB_DIRECTION_BTT" link="harfbuzz-hb-common.html#HB-DIRECTION-BTT:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_COMMON" link="harfbuzz-hb-common.html#HB-SCRIPT-COMMON:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_INHERITED" link="harfbuzz-hb-common.html#HB-SCRIPT-INHERITED:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_UNKNOWN" link="harfbuzz-hb-common.html#HB-SCRIPT-UNKNOWN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_ARABIC" link="harfbuzz-hb-common.html#HB-SCRIPT-ARABIC:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_ARMENIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-ARMENIAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_BENGALI" link="harfbuzz-hb-common.html#HB-SCRIPT-BENGALI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_CYRILLIC" link="harfbuzz-hb-common.html#HB-SCRIPT-CYRILLIC:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_DEVANAGARI" link="harfbuzz-hb-common.html#HB-SCRIPT-DEVANAGARI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_GEORGIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-GEORGIAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_GREEK" link="harfbuzz-hb-common.html#HB-SCRIPT-GREEK:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_GUJARATI" link="harfbuzz-hb-common.html#HB-SCRIPT-GUJARATI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_GURMUKHI" link="harfbuzz-hb-common.html#HB-SCRIPT-GURMUKHI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_HANGUL" link="harfbuzz-hb-common.html#HB-SCRIPT-HANGUL:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_HAN" link="harfbuzz-hb-common.html#HB-SCRIPT-HAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_HEBREW" link="harfbuzz-hb-common.html#HB-SCRIPT-HEBREW:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_HIRAGANA" link="harfbuzz-hb-common.html#HB-SCRIPT-HIRAGANA:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_KANNADA" link="harfbuzz-hb-common.html#HB-SCRIPT-KANNADA:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_KATAKANA" link="harfbuzz-hb-common.html#HB-SCRIPT-KATAKANA:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_LAO" link="harfbuzz-hb-common.html#HB-SCRIPT-LAO:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_LATIN" link="harfbuzz-hb-common.html#HB-SCRIPT-LATIN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_MALAYALAM" link="harfbuzz-hb-common.html#HB-SCRIPT-MALAYALAM:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_ORIYA" link="harfbuzz-hb-common.html#HB-SCRIPT-ORIYA:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_TAMIL" link="harfbuzz-hb-common.html#HB-SCRIPT-TAMIL:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_TELUGU" link="harfbuzz-hb-common.html#HB-SCRIPT-TELUGU:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_THAI" link="harfbuzz-hb-common.html#HB-SCRIPT-THAI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_TIBETAN" link="harfbuzz-hb-common.html#HB-SCRIPT-TIBETAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_BOPOMOFO" link="harfbuzz-hb-common.html#HB-SCRIPT-BOPOMOFO:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_BRAILLE" link="harfbuzz-hb-common.html#HB-SCRIPT-BRAILLE:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_CANADIAN_SYLLABICS" link="harfbuzz-hb-common.html#HB-SCRIPT-CANADIAN-SYLLABICS:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_CHEROKEE" link="harfbuzz-hb-common.html#HB-SCRIPT-CHEROKEE:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_ETHIOPIC" link="harfbuzz-hb-common.html#HB-SCRIPT-ETHIOPIC:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_KHMER" link="harfbuzz-hb-common.html#HB-SCRIPT-KHMER:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_MONGOLIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-MONGOLIAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_MYANMAR" link="harfbuzz-hb-common.html#HB-SCRIPT-MYANMAR:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_OGHAM" link="harfbuzz-hb-common.html#HB-SCRIPT-OGHAM:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_RUNIC" link="harfbuzz-hb-common.html#HB-SCRIPT-RUNIC:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_SINHALA" link="harfbuzz-hb-common.html#HB-SCRIPT-SINHALA:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_SYRIAC" link="harfbuzz-hb-common.html#HB-SCRIPT-SYRIAC:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_THAANA" link="harfbuzz-hb-common.html#HB-SCRIPT-THAANA:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_YI" link="harfbuzz-hb-common.html#HB-SCRIPT-YI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_DESERET" link="harfbuzz-hb-common.html#HB-SCRIPT-DESERET:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_GOTHIC" link="harfbuzz-hb-common.html#HB-SCRIPT-GOTHIC:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_OLD_ITALIC" link="harfbuzz-hb-common.html#HB-SCRIPT-OLD-ITALIC:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_BUHID" link="harfbuzz-hb-common.html#HB-SCRIPT-BUHID:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_HANUNOO" link="harfbuzz-hb-common.html#HB-SCRIPT-HANUNOO:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_TAGALOG" link="harfbuzz-hb-common.html#HB-SCRIPT-TAGALOG:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_TAGBANWA" link="harfbuzz-hb-common.html#HB-SCRIPT-TAGBANWA:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_CYPRIOT" link="harfbuzz-hb-common.html#HB-SCRIPT-CYPRIOT:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_LIMBU" link="harfbuzz-hb-common.html#HB-SCRIPT-LIMBU:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_LINEAR_B" link="harfbuzz-hb-common.html#HB-SCRIPT-LINEAR-B:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_OSMANYA" link="harfbuzz-hb-common.html#HB-SCRIPT-OSMANYA:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_SHAVIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-SHAVIAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_TAI_LE" link="harfbuzz-hb-common.html#HB-SCRIPT-TAI-LE:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_UGARITIC" link="harfbuzz-hb-common.html#HB-SCRIPT-UGARITIC:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_BUGINESE" link="harfbuzz-hb-common.html#HB-SCRIPT-BUGINESE:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_COPTIC" link="harfbuzz-hb-common.html#HB-SCRIPT-COPTIC:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_GLAGOLITIC" link="harfbuzz-hb-common.html#HB-SCRIPT-GLAGOLITIC:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_KHAROSHTHI" link="harfbuzz-hb-common.html#HB-SCRIPT-KHAROSHTHI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_NEW_TAI_LUE" link="harfbuzz-hb-common.html#HB-SCRIPT-NEW-TAI-LUE:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_OLD_PERSIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-OLD-PERSIAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_SYLOTI_NAGRI" link="harfbuzz-hb-common.html#HB-SCRIPT-SYLOTI-NAGRI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_TIFINAGH" link="harfbuzz-hb-common.html#HB-SCRIPT-TIFINAGH:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_BALINESE" link="harfbuzz-hb-common.html#HB-SCRIPT-BALINESE:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_CUNEIFORM" link="harfbuzz-hb-common.html#HB-SCRIPT-CUNEIFORM:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_NKO" link="harfbuzz-hb-common.html#HB-SCRIPT-NKO:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_PHAGS_PA" link="harfbuzz-hb-common.html#HB-SCRIPT-PHAGS-PA:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_PHOENICIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-PHOENICIAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_CARIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-CARIAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_CHAM" link="harfbuzz-hb-common.html#HB-SCRIPT-CHAM:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_KAYAH_LI" link="harfbuzz-hb-common.html#HB-SCRIPT-KAYAH-LI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_LEPCHA" link="harfbuzz-hb-common.html#HB-SCRIPT-LEPCHA:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_LYCIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-LYCIAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_LYDIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-LYDIAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_OL_CHIKI" link="harfbuzz-hb-common.html#HB-SCRIPT-OL-CHIKI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_REJANG" link="harfbuzz-hb-common.html#HB-SCRIPT-REJANG:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_SAURASHTRA" link="harfbuzz-hb-common.html#HB-SCRIPT-SAURASHTRA:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_SUNDANESE" link="harfbuzz-hb-common.html#HB-SCRIPT-SUNDANESE:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_VAI" link="harfbuzz-hb-common.html#HB-SCRIPT-VAI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_AVESTAN" link="harfbuzz-hb-common.html#HB-SCRIPT-AVESTAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_BAMUM" link="harfbuzz-hb-common.html#HB-SCRIPT-BAMUM:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_EGYPTIAN_HIEROGLYPHS" link="harfbuzz-hb-common.html#HB-SCRIPT-EGYPTIAN-HIEROGLYPHS:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_IMPERIAL_ARAMAIC" link="harfbuzz-hb-common.html#HB-SCRIPT-IMPERIAL-ARAMAIC:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_INSCRIPTIONAL_PAHLAVI" link="harfbuzz-hb-common.html#HB-SCRIPT-INSCRIPTIONAL-PAHLAVI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_INSCRIPTIONAL_PARTHIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-INSCRIPTIONAL-PARTHIAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_JAVANESE" link="harfbuzz-hb-common.html#HB-SCRIPT-JAVANESE:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_KAITHI" link="harfbuzz-hb-common.html#HB-SCRIPT-KAITHI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_LISU" link="harfbuzz-hb-common.html#HB-SCRIPT-LISU:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_MEETEI_MAYEK" link="harfbuzz-hb-common.html#HB-SCRIPT-MEETEI-MAYEK:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_OLD_SOUTH_ARABIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-OLD-SOUTH-ARABIAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_OLD_TURKIC" link="harfbuzz-hb-common.html#HB-SCRIPT-OLD-TURKIC:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_SAMARITAN" link="harfbuzz-hb-common.html#HB-SCRIPT-SAMARITAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_TAI_THAM" link="harfbuzz-hb-common.html#HB-SCRIPT-TAI-THAM:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_TAI_VIET" link="harfbuzz-hb-common.html#HB-SCRIPT-TAI-VIET:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_BATAK" link="harfbuzz-hb-common.html#HB-SCRIPT-BATAK:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_BRAHMI" link="harfbuzz-hb-common.html#HB-SCRIPT-BRAHMI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_MANDAIC" link="harfbuzz-hb-common.html#HB-SCRIPT-MANDAIC:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_CHAKMA" link="harfbuzz-hb-common.html#HB-SCRIPT-CHAKMA:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_MEROITIC_CURSIVE" link="harfbuzz-hb-common.html#HB-SCRIPT-MEROITIC-CURSIVE:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_MEROITIC_HIEROGLYPHS" link="harfbuzz-hb-common.html#HB-SCRIPT-MEROITIC-HIEROGLYPHS:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_MIAO" link="harfbuzz-hb-common.html#HB-SCRIPT-MIAO:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_SHARADA" link="harfbuzz-hb-common.html#HB-SCRIPT-SHARADA:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_SORA_SOMPENG" link="harfbuzz-hb-common.html#HB-SCRIPT-SORA-SOMPENG:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_TAKRI" link="harfbuzz-hb-common.html#HB-SCRIPT-TAKRI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_BASSA_VAH" link="harfbuzz-hb-common.html#HB-SCRIPT-BASSA-VAH:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_CAUCASIAN_ALBANIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-CAUCASIAN-ALBANIAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_DUPLOYAN" link="harfbuzz-hb-common.html#HB-SCRIPT-DUPLOYAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_ELBASAN" link="harfbuzz-hb-common.html#HB-SCRIPT-ELBASAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_GRANTHA" link="harfbuzz-hb-common.html#HB-SCRIPT-GRANTHA:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_KHOJKI" link="harfbuzz-hb-common.html#HB-SCRIPT-KHOJKI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_KHUDAWADI" link="harfbuzz-hb-common.html#HB-SCRIPT-KHUDAWADI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_LINEAR_A" link="harfbuzz-hb-common.html#HB-SCRIPT-LINEAR-A:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_MAHAJANI" link="harfbuzz-hb-common.html#HB-SCRIPT-MAHAJANI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_MANICHAEAN" link="harfbuzz-hb-common.html#HB-SCRIPT-MANICHAEAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_MENDE_KIKAKUI" link="harfbuzz-hb-common.html#HB-SCRIPT-MENDE-KIKAKUI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_MODI" link="harfbuzz-hb-common.html#HB-SCRIPT-MODI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_MRO" link="harfbuzz-hb-common.html#HB-SCRIPT-MRO:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_NABATAEAN" link="harfbuzz-hb-common.html#HB-SCRIPT-NABATAEAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_OLD_NORTH_ARABIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-OLD-NORTH-ARABIAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_OLD_PERMIC" link="harfbuzz-hb-common.html#HB-SCRIPT-OLD-PERMIC:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_PAHAWH_HMONG" link="harfbuzz-hb-common.html#HB-SCRIPT-PAHAWH-HMONG:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_PALMYRENE" link="harfbuzz-hb-common.html#HB-SCRIPT-PALMYRENE:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_PAU_CIN_HAU" link="harfbuzz-hb-common.html#HB-SCRIPT-PAU-CIN-HAU:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_PSALTER_PAHLAVI" link="harfbuzz-hb-common.html#HB-SCRIPT-PSALTER-PAHLAVI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_SIDDHAM" link="harfbuzz-hb-common.html#HB-SCRIPT-SIDDHAM:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_TIRHUTA" link="harfbuzz-hb-common.html#HB-SCRIPT-TIRHUTA:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_WARANG_CITI" link="harfbuzz-hb-common.html#HB-SCRIPT-WARANG-CITI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_AHOM" link="harfbuzz-hb-common.html#HB-SCRIPT-AHOM:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_ANATOLIAN_HIEROGLYPHS" link="harfbuzz-hb-common.html#HB-SCRIPT-ANATOLIAN-HIEROGLYPHS:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_HATRAN" link="harfbuzz-hb-common.html#HB-SCRIPT-HATRAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_MULTANI" link="harfbuzz-hb-common.html#HB-SCRIPT-MULTANI:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_OLD_HUNGARIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-OLD-HUNGARIAN:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_SIGNWRITING" link="harfbuzz-hb-common.html#HB-SCRIPT-SIGNWRITING:CAPS"/>
- <keyword type="constant" name="HB_SCRIPT_INVALID" link="harfbuzz-hb-common.html#HB-SCRIPT-INVALID:CAPS"/>
- <keyword type="constant" name="_HB_SCRIPT_MAX_VALUE" link="harfbuzz-hb-common.html#HB-SCRIPT-MAX-VALUE:CAPS"/>
- <keyword type="constant" name="_HB_SCRIPT_MAX_VALUE_SIGNED" link="harfbuzz-hb-common.html#HB-SCRIPT-MAX-VALUE-SIGNED:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_NOT_REORDERED" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-NOT-REORDERED:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_OVERLAY" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-OVERLAY:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_NUKTA" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-NUKTA:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_KANA_VOICING" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-KANA-VOICING:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_VIRAMA" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-VIRAMA:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC10" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC10:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC11" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC11:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC12" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC12:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC13" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC13:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC14" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC14:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC15" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC15:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC16" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC16:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC17" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC17:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC18" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC18:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC19" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC19:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC20" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC20:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC21" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC21:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC22" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC22:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC23" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC23:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC24" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC24:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC25" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC25:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC26" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC26:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC27" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC27:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC28" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC28:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC29" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC29:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC30" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC30:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC31" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC31:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC32" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC32:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC33" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC33:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC34" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC34:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC35" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC35:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC36" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC36:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC84" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC84:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC91" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC91:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC103" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC103:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC107" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC107:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC118" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC118:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC122" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC122:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC129" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC129:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC130" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC130:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_CCC133" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-CCC133:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-ATTACHED-BELOW-LEFT:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-ATTACHED-BELOW:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-ATTACHED-ABOVE:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-ATTACHED-ABOVE-RIGHT:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_BELOW_LEFT" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-BELOW-LEFT:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_BELOW" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-BELOW:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-BELOW-RIGHT:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_LEFT" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-LEFT:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_RIGHT" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-RIGHT:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-ABOVE-LEFT:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_ABOVE" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-ABOVE:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-ABOVE-RIGHT:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-DOUBLE-BELOW:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-DOUBLE-ABOVE:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-IOTA-SUBSCRIPT:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_COMBINING_CLASS_INVALID" link="harfbuzz-hb-unicode.html#HB-UNICODE-COMBINING-CLASS-INVALID:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_CONTROL" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-CONTROL:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_FORMAT" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-FORMAT:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-UNASSIGNED:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-PRIVATE-USE:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_SURROGATE" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-SURROGATE:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-LOWERCASE-LETTER:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-MODIFIER-LETTER:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-OTHER-LETTER:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-TITLECASE-LETTER:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-UPPERCASE-LETTER:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-SPACING-MARK:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-ENCLOSING-MARK:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-NON-SPACING-MARK:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-DECIMAL-NUMBER:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-LETTER-NUMBER:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-OTHER-NUMBER:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-CONNECT-PUNCTUATION:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-DASH-PUNCTUATION:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-CLOSE-PUNCTUATION:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-FINAL-PUNCTUATION:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-INITIAL-PUNCTUATION:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-OTHER-PUNCTUATION:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-OPEN-PUNCTUATION:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-CURRENCY-SYMBOL:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-MODIFIER-SYMBOL:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-MATH-SYMBOL:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-OTHER-SYMBOL:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-LINE-SEPARATOR:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-PARAGRAPH-SEPARATOR:CAPS"/>
- <keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-SPACE-SEPARATOR:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_CONTENT_TYPE_INVALID" link="harfbuzz-Buffers.html#HB-BUFFER-CONTENT-TYPE-INVALID:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_CONTENT_TYPE_UNICODE" link="harfbuzz-Buffers.html#HB-BUFFER-CONTENT-TYPE-UNICODE:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_CONTENT_TYPE_GLYPHS" link="harfbuzz-Buffers.html#HB-BUFFER-CONTENT-TYPE-GLYPHS:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_FLAG_DEFAULT" link="harfbuzz-Buffers.html#HB-BUFFER-FLAG-DEFAULT:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_FLAG_BOT" link="harfbuzz-Buffers.html#HB-BUFFER-FLAG-BOT:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_FLAG_EOT" link="harfbuzz-Buffers.html#HB-BUFFER-FLAG-EOT:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES" link="harfbuzz-Buffers.html#HB-BUFFER-FLAG-PRESERVE-DEFAULT-IGNORABLES:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES" link="harfbuzz-Buffers.html#HB-BUFFER-CLUSTER-LEVEL-MONOTONE-GRAPHEMES:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS" link="harfbuzz-Buffers.html#HB-BUFFER-CLUSTER-LEVEL-MONOTONE-CHARACTERS:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_CLUSTER_LEVEL_CHARACTERS" link="harfbuzz-Buffers.html#HB-BUFFER-CLUSTER-LEVEL-CHARACTERS:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_CLUSTER_LEVEL_DEFAULT" link="harfbuzz-Buffers.html#HB-BUFFER-CLUSTER-LEVEL-DEFAULT:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FORMAT_TEXT" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FORMAT-TEXT:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FORMAT_JSON" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FORMAT-JSON:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FORMAT_INVALID" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FORMAT-INVALID:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_DEFAULT" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-DEFAULT:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-NO-CLUSTERS:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-NO-POSITIONS:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-NO-GLYPH-NAMES:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-GLYPH-EXTENTS:CAPS"/>
- <keyword type="constant" name="HB_MEMORY_MODE_DUPLICATE" link="harfbuzz-hb-blob.html#HB-MEMORY-MODE-DUPLICATE:CAPS"/>
- <keyword type="constant" name="HB_MEMORY_MODE_READONLY" link="harfbuzz-hb-blob.html#HB-MEMORY-MODE-READONLY:CAPS"/>
- <keyword type="constant" name="HB_MEMORY_MODE_WRITABLE" link="harfbuzz-hb-blob.html#HB-MEMORY-MODE-WRITABLE:CAPS"/>
- <keyword type="constant" name="HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE" link="harfbuzz-hb-blob.html#HB-MEMORY-MODE-READONLY-MAY-MAKE-WRITABLE:CAPS"/>
- <keyword type="constant" name="HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-GLYPH-CLASS-UNCLASSIFIED:CAPS"/>
- <keyword type="constant" name="HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-GLYPH-CLASS-BASE-GLYPH:CAPS"/>
- <keyword type="constant" name="HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-GLYPH-CLASS-LIGATURE:CAPS"/>
- <keyword type="constant" name="HB_OT_LAYOUT_GLYPH_CLASS_MARK" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-GLYPH-CLASS-MARK:CAPS"/>
- <keyword type="constant" name="HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-GLYPH-CLASS-COMPONENT:CAPS"/>
- <keyword type="member" name="hb-glyph-info-t-struct.codepoint" link="harfbuzz-Buffers.html#hb-glyph-info-t-struct.codepoint"/>
- <keyword type="member" name="hb-glyph-info-t-struct.mask" link="harfbuzz-Buffers.html#hb-glyph-info-t-struct.mask"/>
- <keyword type="member" name="hb-glyph-info-t-struct.cluster" link="harfbuzz-Buffers.html#hb-glyph-info-t-struct.cluster"/>
- <keyword type="member" name="hb-glyph-position-t-struct.x-advance" link="harfbuzz-Buffers.html#hb-glyph-position-t-struct.x-advance"/>
- <keyword type="member" name="hb-glyph-position-t-struct.y-advance" link="harfbuzz-Buffers.html#hb-glyph-position-t-struct.y-advance"/>
- <keyword type="member" name="hb-glyph-position-t-struct.x-offset" link="harfbuzz-Buffers.html#hb-glyph-position-t-struct.x-offset"/>
- <keyword type="member" name="hb-glyph-position-t-struct.y-offset" link="harfbuzz-Buffers.html#hb-glyph-position-t-struct.y-offset"/>
- <keyword type="member" name="hb-segment-properties-t-struct.direction" link="harfbuzz-Buffers.html#hb-segment-properties-t-struct.direction"/>
- <keyword type="member" name="hb-segment-properties-t-struct.script" link="harfbuzz-Buffers.html#hb-segment-properties-t-struct.script"/>
- <keyword type="member" name="hb-segment-properties-t-struct.language" link="harfbuzz-Buffers.html#hb-segment-properties-t-struct.language"/>
- </functions>
-</book>
diff --git a/docs/html/hello-harfbuzz.html b/docs/html/hello-harfbuzz.html
deleted file mode 100644
index c665efc..0000000
--- a/docs/html/hello-harfbuzz.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Hello, Harfbuzz: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt01.html" title="Part I. User's manual">
-<link rel="prev" href="building.html" title="Building">
-<link rel="next" href="buffers-language-script-and-direction.html" title="Buffers, language, script and direction">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="building.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="buffers-language-script-and-direction.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="chapter">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="hello-harfbuzz"></a>Hello, Harfbuzz</h2></div></div></div>
-<div class="toc"><dl class="toc"><dt><span class="section"><a href="hello-harfbuzz.html#what-harfbuzz-doesnt-do">What Harfbuzz doesn't do</a></span></dt></dl></div>
-<p>
- Here's the simplest Harfbuzz that can possibly work. We will improve
- it later.
- </p>
-<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
- Create a buffer and put your text in it.
- </p></li></ol></div>
-<pre class="programlisting">
- #include &lt;hb.h&gt;
- hb_buffer_t *buf;
- buf = hb_buffer_create();
- hb_buffer_add_utf8(buf, text, strlen(text), 0, strlen(text));
-</pre>
-<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="2"><p>
- Guess the script, language and direction of the buffer.
- </p></li></ol></div>
-<pre class="programlisting">
- hb_buffer_guess_segment_properties(buf);
-</pre>
-<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="3"><p>
- Create a face and a font, using FreeType for now.
- </p></li></ol></div>
-<pre class="programlisting">
- #include &lt;hb-ft.h&gt;
- FT_New_Face(ft_library, font_path, index, &amp;face)
- hb_font_t *font = hb_ft_font_create(face);
-</pre>
-<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="4"><p>
- Shape!
- </p></li></ol></div>
-<pre class="programlisting">
- hb_shape(font, buf, NULL, 0);
-</pre>
-<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="5"><p>
- Get the glyph and position information.
- </p></li></ol></div>
-<pre class="programlisting">
- hb_glyph_info_t *glyph_info = hb_buffer_get_glyph_infos(buf, &amp;glyph_count);
- hb_glyph_position_t *glyph_pos = hb_buffer_get_glyph_positions(buf, &amp;glyph_count);
-</pre>
-<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="6"><p>
- Iterate over each glyph.
- </p></li></ol></div>
-<pre class="programlisting">
- for (i = 0; i &lt; glyph_count; ++i) {
- glyphid = glyph_info[i].codepoint;
- x_offset = glyph_pos[i].x_offset / 64.0;
- y_offset = glyph_pos[i].y_offset / 64.0;
- x_advance = glyph_pos[i].x_advance / 64.0;
- y_advance = glyph_pos[i].y_advance / 64.0;
- draw_glyph(glyphid, cursor_x + x_offset, cursor_y + y_offset);
- cursor_x += x_advance;
- cursor_y += y_advance;
- }
-</pre>
-<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="7"><p>
- Tidy up.
- </p></li></ol></div>
-<pre class="programlisting">
- hb_buffer_destroy(buf);
- hb_font_destroy(hb_ft_font);
-</pre>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="what-harfbuzz-doesnt-do"></a>What Harfbuzz doesn't do</h2></div></div></div>
-<p>
- The code above will take a UTF8 string, shape it, and give you the
- information required to lay it out correctly on a single
- horizontal (or vertical) line using the font provided. That is the
- extent of Harfbuzz's responsibility.
- </p>
-<p>
- If you are implementing a text layout engine you may have other
- responsibilities, that Harfbuzz will not help you with:
- </p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
-<li class="listitem">
-<p>
- Harfbuzz won't help you with bidirectionality. If you want to
- lay out text with mixed Hebrew and English, you will need to
- ensure that the buffer provided to Harfbuzz has those
- characters in the correct layout order. This will be different
- from the logical order in which the Unicode text is stored. In
- other words, the user will hit the keys in the following
- sequence:
- </p>
-<pre class="programlisting">
-A B C [space] ג ב א [space] D E F
- </pre>
-<p>
- but will expect to see in the output:
- </p>
-<pre class="programlisting">
-ABC אבג DEF
- </pre>
-<p>
- This reordering is called <span class="emphasis"><em>bidi processing</em></span>
- ("bidi" is short for bidirectional), and there's an
- algorithm as an annex to the Unicode Standard which tells you how
- to reorder a string from logical order into presentation order.
- Before sending your string to Harfbuzz, you may need to apply the
- bidi algorithm to it. Libraries such as ICU and fribidi can do
- this for you.
- </p>
-</li>
-<li class="listitem"><p>
- Harfbuzz won't help you with text that contains different font
- properties. For instance, if you have the string "a
- <span class="emphasis"><em>huge</em></span> breakfast", and you expect
- "huge" to be italic, you will need to send three
- strings to Harfbuzz: <code class="literal">a</code>, in your Roman font;
- <code class="literal">huge</code> using your italic font; and
- <code class="literal">breakfast</code> using your Roman font again.
- Similarly if you change font, font size, script, language or
- direction within your string, you will need to shape each run
- independently and then output them independently. Harfbuzz
- expects to shape a run of characters sharing the same
- properties.
- </p></li>
-<li class="listitem">
-<p>
- Harfbuzz won't help you with line breaking, hyphenation or
- justification. As mentioned above, it lays out the string
- along a <span class="emphasis"><em>single line</em></span> of, notionally,
- infinite length. If you want to find out where the potential
- word, sentence and line break points are in your text, you
- could use the ICU library's break iterator functions.
- </p>
-<p>
- Harfbuzz can tell you how wide a shaped piece of text is, which is
- useful input to a justification algorithm, but it knows nothing
- about paragraphs, lines or line lengths. Nor will it adjust the
- space between words to fit them proportionally into a line. If you
- want to layout text in paragraphs, you will probably want to send
- each word of your text to Harfbuzz to determine its shaped width
- after glyph substitutions, then work out how many words will fit
- on a line, and then finally output each word of the line separated
- by a space of the correct size to fully justify the paragraph.
- </p>
-</li>
-</ul></div>
-<p>
- As a layout engine implementor, Harfbuzz will help you with the
- interface between your text and your font, and that's something
- that you'll need - what you then do with the glyphs that your font
- returns is up to you. The example we saw above enough to get us
- started using Harfbuzz. Now we are going to use the remainder of
- Harfbuzz's API to refine that example and improve our text shaping
- capabilities.
- </p>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/index.html b/docs/html/index.html
deleted file mode 100644
index fbf4dcd..0000000
--- a/docs/html/index.html
+++ /dev/null
@@ -1,190 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>HarfBuzz Manual: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<meta name="description" content="HarfBuzz HarfBuzz is an OpenType text shaping engine. The current HarfBuzz codebase, formerly known as harfbuzz-ng, is versioned 1.x.x and is stable and under active maintenance. This is what is used in latest versions of Firefox, GNOME, ChromeOS, Chrome, LibreOffice, XeTeX, Android, and KDE, among other places. The canonical source tree is available here. Also available on github. See for release tarballs. The old HarfBuzz codebase, these days known as harfbuzz-old, was derived from FreeType, Pango, and Qt and is available here. It is not actively developed or maintained, and is extremely buggy. All users are encouraged to switch over to the new HarfBuzz as soon as possible. There are no release tarballs of old HarfBuzz whatsoever.">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="next" href="pt01.html" title="Part I. User's manual">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<div class="book">
-<div class="titlepage">
-<div>
-<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">HarfBuzz Manual</p></th></tr></table></div>
-<div><div class="abstract">
-<p class="title"><b>HarfBuzz</b></p>
-<div align="center"><img src="HarfBuzz.png" align="middle"></div>
-<p>
- HarfBuzz is an <a class="ulink" href="http://www.microsoft.com/typography/otspec/" target="_top">OpenType</a>
- text shaping engine.
- </p>
-<p>
- The current HarfBuzz codebase, formerly known as harfbuzz-ng, is
- versioned 1.x.x and is stable and under active maintenance. This is
- what is used in latest versions of Firefox, GNOME, ChromeOS, Chrome,
- LibreOffice, XeTeX, Android, and KDE, among other places. The canonical
- source tree is available
- <a class="ulink" href="http://cgit.freedesktop.org/harfbuzz/" target="_top">here</a>.
- Also available on
- <a class="ulink" href="https://github.com/behdad/harfbuzz" target="_top">github</a>.
- See <a class="xref" href="install-harfbuzz.html#download" title="Download">Download</a> for release tarballs.
- </p>
-<p>
- The old HarfBuzz codebase, these days known as harfbuzz-old, was
- derived from <a class="ulink" href="http://freetype.org/" target="_top">FreeType</a>,
- <a class="ulink" href="http://pango.org/" target="_top">Pango</a>, and
- <a class="ulink" href="http://qt-project.org/" target="_top">Qt</a> and is available
- <a class="ulink" href="http://cgit.freedesktop.org/harfbuzz.old/" target="_top">here</a>.
- It is not actively developed or maintained, and is extremely buggy. All
- users are encouraged to switch over to the new HarfBuzz as soon as
- possible. There are no release tarballs of old HarfBuzz whatsoever.
- </p>
-</div></div>
-</div>
-<hr>
-</div>
-<div class="toc"><dl class="toc">
-<dt><span class="part"><a href="pt01.html">I. User's manual</a></span></dt>
-<dd><dl>
-<dt><span class="chapter"><a href="what-is-harfbuzz.html">What is Harfbuzz?</a></span></dt>
-<dd><dl>
-<dt><span class="section"><a href="what-is-harfbuzz.html#why-do-i-need-it">Why do I need it?</a></span></dt>
-<dt><span class="section"><a href="why-is-it-called-harfbuzz.html">Why is it called Harfbuzz?</a></span></dt>
-</dl></dd>
-<dt><span class="chapter"><a href="install-harfbuzz.html">Install Harfbuzz</a></span></dt>
-<dd><dl>
-<dt><span class="section"><a href="install-harfbuzz.html#download">Download</a></span></dt>
-<dt><span class="section"><a href="building.html">Building</a></span></dt>
-</dl></dd>
-<dt><span class="chapter"><a href="hello-harfbuzz.html">Hello, Harfbuzz</a></span></dt>
-<dd><dl><dt><span class="section"><a href="hello-harfbuzz.html#what-harfbuzz-doesnt-do">What Harfbuzz doesn't do</a></span></dt></dl></dd>
-<dt><span class="chapter"><a href="buffers-language-script-and-direction.html">Buffers, language, script and direction</a></span></dt>
-<dd><dl>
-<dt><span class="section"><a href="buffers-language-script-and-direction.html#creating-and-destroying-buffers">Creating and destroying buffers</a></span></dt>
-<dt><span class="section"><a href="adding-text-to-the-buffer.html">Adding text to the buffer</a></span></dt>
-<dt><span class="section"><a href="setting-buffer-properties.html">Setting buffer properties</a></span></dt>
-<dt><span class="section"><a href="what-about-the-other-scripts.html">What about the other scripts?</a></span></dt>
-<dt><span class="section"><a href="customizing-unicode-functions.html">Customizing Unicode functions</a></span></dt>
-</dl></dd>
-<dt><span class="chapter"><a href="fonts-and-faces.html">Fonts and faces</a></span></dt>
-<dd><dl>
-<dt><span class="section"><a href="fonts-and-faces.html#using-freetype">Using FreeType</a></span></dt>
-<dt><span class="section"><a href="using-harfbuzzs-native-opentype-implementation.html">Using Harfbuzz's native OpenType implementation</a></span></dt>
-<dt><span class="section"><a href="using-your-own-font-functions.html">Using your own font functions</a></span></dt>
-</dl></dd>
-<dt><span class="chapter"><a href="shaping-and-shape-plans.html">Shaping and shape plans</a></span></dt>
-<dd><dl>
-<dt><span class="section"><a href="shaping-and-shape-plans.html#opentype-features">OpenType features</a></span></dt>
-<dt><span class="section"><a href="plans-and-caching.html">Plans and caching</a></span></dt>
-</dl></dd>
-</dl></dd>
-<dt><span class="part"><a href="pt02.html">II. Reference manual</a></span></dt>
-<dd><dl>
-<dt><span class="chapter"><a href="ch07.html">Harfbuzz API</a></span></dt>
-<dd><dl>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb.html">hb</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-common.html">hb-common</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-unicode.html">hb-unicode</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-Buffers.html">Buffers</a></span><span class="refpurpose"> — Input and output buffers</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-blob.html">hb-blob</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-face.html">hb-face</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-font.html">hb-font</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-Shaping.html">Shaping</a></span><span class="refpurpose"> — Conversion of text strings into positioned glyphs</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-version.html">hb-version</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-deprecated.html">hb-deprecated</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-set.html">hb-set</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot.html">hb-ot</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-layout.html">hb-ot-layout</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-tag.html">hb-ot-tag</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-font.html">hb-ot-font</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-shape.html">hb-ot-shape</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-shape-plan.html">hb-shape-plan</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-glib.html">hb-glib</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-icu.html">hb-icu</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ft.html">hb-ft</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-graphite2.html">hb-graphite2</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-uniscribe.html">hb-uniscribe</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-coretext.html">hb-coretext</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-gobject.html">hb-gobject</a></span><span class="refpurpose"></span>
-</dt>
-</dl></dd>
-<dt><span class="chapter"><a href="object-tree.html">Object Hierarchy</a></span></dt>
-<dt><span class="index"><a href="api-index-full.html">API Index</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-2.html">Index of new symbols in 0.9.2</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-5.html">Index of new symbols in 0.9.5</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-7.html">Index of new symbols in 0.9.7</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-8.html">Index of new symbols in 0.9.8</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-10.html">Index of new symbols in 0.9.10</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-11.html">Index of new symbols in 0.9.11</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-20.html">Index of new symbols in 0.9.20</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-22.html">Index of new symbols in 0.9.22</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-28.html">Index of new symbols in 0.9.28</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-30.html">Index of new symbols in 0.9.30</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-31.html">Index of new symbols in 0.9.31</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-38.html">Index of new symbols in 0.9.38</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-39.html">Index of new symbols in 0.9.39</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-41.html">Index of new symbols in 0.9.41</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-42.html">Index of new symbols in 0.9.42</a></span></dt>
-<dt><span class="index"><a href="api-index-1-0-5.html">Index of new symbols in 1.0.5</a></span></dt>
-<dt><span class="index"><a href="api-index-1-1-2.html">Index of new symbols in 1.1.2</a></span></dt>
-<dt><span class="index"><a href="api-index-1-1-3.html">Index of new symbols in 1.1.3</a></span></dt>
-<dt><span class="index"><a href="deprecated-api-index.html">Index of deprecated API</a></span></dt>
-<dt><span class="glossary"><a href="annotation-glossary.html">Annotation Glossary</a></span></dt>
-</dl></dd>
-</dl></div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/install-harfbuzz.html b/docs/html/install-harfbuzz.html
deleted file mode 100644
index 10017eb..0000000
--- a/docs/html/install-harfbuzz.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Install Harfbuzz: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt01.html" title="Part I. User's manual">
-<link rel="prev" href="why-is-it-called-harfbuzz.html" title="Why is it called Harfbuzz?">
-<link rel="next" href="building.html" title="Building">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="why-is-it-called-harfbuzz.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="building.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="chapter">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="install-harfbuzz"></a>Install Harfbuzz</h2></div></div></div>
-<div class="toc"><dl class="toc">
-<dt><span class="section"><a href="install-harfbuzz.html#download">Download</a></span></dt>
-<dt><span class="section"><a href="building.html">Building</a></span></dt>
-</dl></div>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="download"></a>Download</h2></div></div></div>
-<p>
- For tarball releases of HarfBuzz, look
- <a class="ulink" href="http://www.freedesktop.org/software/harfbuzz/release/" target="_top">here</a>.
- At the same place you will
- also find Win32 binary bundles that include libharfbuzz DLL, hb-view.exe,
- hb-shape.exe, and all dependencies.
- </p>
-<p>
- The canonical source tree is available
- <a class="ulink" href="http://cgit.freedesktop.org/harfbuzz/" target="_top">here</a>.
- Also available on <a class="ulink" href="https://github.com/behdad/harfbuzz" target="_top">github</a>.
- </p>
-<p>
- The API that comes with <code class="filename">hb.h</code> will
- not change incompatibly. Other, peripheral, headers are more likely to go
- through minor modifications, but again, will do our best to never change
- API in an incompatible way. We will never break the ABI.
- </p>
-<p>
- If you are not sure whether Pango or HarfBuzz is right for you, read
- <a class="ulink" href="http://mces.blogspot.in/2009/11/pango-vs-harfbuzz.html" target="_top">this</a>.
- </p>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/plans-and-caching.html b/docs/html/plans-and-caching.html
deleted file mode 100644
index 8ab4e97..0000000
--- a/docs/html/plans-and-caching.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Plans and caching: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="shaping-and-shape-plans.html" title="Shaping and shape plans">
-<link rel="prev" href="shaping-and-shape-plans.html" title="Shaping and shape plans">
-<link rel="next" href="pt02.html" title="Part II. Reference manual">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="shaping-and-shape-plans.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="shaping-and-shape-plans.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="pt02.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="plans-and-caching"></a>Plans and caching</h2></div></div></div>
-<p>
- </p>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/pt01.html b/docs/html/pt01.html
deleted file mode 100644
index e49ad58..0000000
--- a/docs/html/pt01.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Part I. User's manual: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="index.html" title="HarfBuzz Manual">
-<link rel="prev" href="index.html" title="HarfBuzz Manual">
-<link rel="next" href="what-is-harfbuzz.html" title="What is Harfbuzz?">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
-<td><a accesskey="p" href="index.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="what-is-harfbuzz.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="part">
-<div class="titlepage"><div><div><h1 class="title">
-<a name="id-1.2"></a>Part I. User's manual</h1></div></div></div>
-<div class="toc">
-<p><b>Table of Contents</b></p>
-<dl class="toc">
-<dt><span class="chapter"><a href="what-is-harfbuzz.html">What is Harfbuzz?</a></span></dt>
-<dd><dl>
-<dt><span class="section"><a href="what-is-harfbuzz.html#why-do-i-need-it">Why do I need it?</a></span></dt>
-<dt><span class="section"><a href="why-is-it-called-harfbuzz.html">Why is it called Harfbuzz?</a></span></dt>
-</dl></dd>
-<dt><span class="chapter"><a href="install-harfbuzz.html">Install Harfbuzz</a></span></dt>
-<dd><dl>
-<dt><span class="section"><a href="install-harfbuzz.html#download">Download</a></span></dt>
-<dt><span class="section"><a href="building.html">Building</a></span></dt>
-</dl></dd>
-<dt><span class="chapter"><a href="hello-harfbuzz.html">Hello, Harfbuzz</a></span></dt>
-<dd><dl><dt><span class="section"><a href="hello-harfbuzz.html#what-harfbuzz-doesnt-do">What Harfbuzz doesn't do</a></span></dt></dl></dd>
-<dt><span class="chapter"><a href="buffers-language-script-and-direction.html">Buffers, language, script and direction</a></span></dt>
-<dd><dl>
-<dt><span class="section"><a href="buffers-language-script-and-direction.html#creating-and-destroying-buffers">Creating and destroying buffers</a></span></dt>
-<dt><span class="section"><a href="adding-text-to-the-buffer.html">Adding text to the buffer</a></span></dt>
-<dt><span class="section"><a href="setting-buffer-properties.html">Setting buffer properties</a></span></dt>
-<dt><span class="section"><a href="what-about-the-other-scripts.html">What about the other scripts?</a></span></dt>
-<dt><span class="section"><a href="customizing-unicode-functions.html">Customizing Unicode functions</a></span></dt>
-</dl></dd>
-<dt><span class="chapter"><a href="fonts-and-faces.html">Fonts and faces</a></span></dt>
-<dd><dl>
-<dt><span class="section"><a href="fonts-and-faces.html#using-freetype">Using FreeType</a></span></dt>
-<dt><span class="section"><a href="using-harfbuzzs-native-opentype-implementation.html">Using Harfbuzz's native OpenType implementation</a></span></dt>
-<dt><span class="section"><a href="using-your-own-font-functions.html">Using your own font functions</a></span></dt>
-</dl></dd>
-<dt><span class="chapter"><a href="shaping-and-shape-plans.html">Shaping and shape plans</a></span></dt>
-<dd><dl>
-<dt><span class="section"><a href="shaping-and-shape-plans.html#opentype-features">OpenType features</a></span></dt>
-<dt><span class="section"><a href="plans-and-caching.html">Plans and caching</a></span></dt>
-</dl></dd>
-</dl>
-</div>
-<div class="sect1">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="glyph-information"></a>Glyph information</h2></div></div></div>
-<div class="sect2">
-<div class="titlepage"><div><div><h3 class="title">
-<a name="names-and-numbers"></a>Names and numbers</h3></div></div></div>
-<p>
- </p>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/pt02.html b/docs/html/pt02.html
deleted file mode 100644
index f5580c5..0000000
--- a/docs/html/pt02.html
+++ /dev/null
@@ -1,138 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Part II. Reference manual: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="index.html" title="HarfBuzz Manual">
-<link rel="prev" href="plans-and-caching.html" title="Plans and caching">
-<link rel="next" href="ch07.html" title="Harfbuzz API">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
-<td><a accesskey="p" href="plans-and-caching.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="ch07.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="part">
-<div class="titlepage"><div>
-<div><h1 class="title">
-<a name="id-1.3"></a>Part II. Reference manual</h1></div>
-<div><p class="releaseinfo">
- This document is for HarfBuzz 1.2.7
-.
-
- </p></div>
-</div></div>
-<div class="toc">
-<p><b>Table of Contents</b></p>
-<dl class="toc">
-<dt><span class="chapter"><a href="ch07.html">Harfbuzz API</a></span></dt>
-<dd><dl>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb.html">hb</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-common.html">hb-common</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-unicode.html">hb-unicode</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-Buffers.html">Buffers</a></span><span class="refpurpose"> — Input and output buffers</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-blob.html">hb-blob</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-face.html">hb-face</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-font.html">hb-font</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-Shaping.html">Shaping</a></span><span class="refpurpose"> — Conversion of text strings into positioned glyphs</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-version.html">hb-version</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-deprecated.html">hb-deprecated</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-set.html">hb-set</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot.html">hb-ot</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-layout.html">hb-ot-layout</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-tag.html">hb-ot-tag</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-font.html">hb-ot-font</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-shape.html">hb-ot-shape</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-shape-plan.html">hb-shape-plan</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-glib.html">hb-glib</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-icu.html">hb-icu</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ft.html">hb-ft</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-graphite2.html">hb-graphite2</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-uniscribe.html">hb-uniscribe</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-coretext.html">hb-coretext</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-gobject.html">hb-gobject</a></span><span class="refpurpose"></span>
-</dt>
-</dl></dd>
-<dt><span class="chapter"><a href="object-tree.html">Object Hierarchy</a></span></dt>
-<dt><span class="index"><a href="api-index-full.html">API Index</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-2.html">Index of new symbols in 0.9.2</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-5.html">Index of new symbols in 0.9.5</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-7.html">Index of new symbols in 0.9.7</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-8.html">Index of new symbols in 0.9.8</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-10.html">Index of new symbols in 0.9.10</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-11.html">Index of new symbols in 0.9.11</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-20.html">Index of new symbols in 0.9.20</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-22.html">Index of new symbols in 0.9.22</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-28.html">Index of new symbols in 0.9.28</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-30.html">Index of new symbols in 0.9.30</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-31.html">Index of new symbols in 0.9.31</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-38.html">Index of new symbols in 0.9.38</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-39.html">Index of new symbols in 0.9.39</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-41.html">Index of new symbols in 0.9.41</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-42.html">Index of new symbols in 0.9.42</a></span></dt>
-<dt><span class="index"><a href="api-index-1-0-5.html">Index of new symbols in 1.0.5</a></span></dt>
-<dt><span class="index"><a href="api-index-1-1-2.html">Index of new symbols in 1.1.2</a></span></dt>
-<dt><span class="index"><a href="api-index-1-1-3.html">Index of new symbols in 1.1.3</a></span></dt>
-<dt><span class="index"><a href="deprecated-api-index.html">Index of deprecated API</a></span></dt>
-<dt><span class="glossary"><a href="annotation-glossary.html">Annotation Glossary</a></span></dt>
-</dl>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/setting-buffer-properties.html b/docs/html/setting-buffer-properties.html
deleted file mode 100644
index 0c1cc60..0000000
--- a/docs/html/setting-buffer-properties.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Setting buffer properties: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="buffers-language-script-and-direction.html" title="Buffers, language, script and direction">
-<link rel="prev" href="adding-text-to-the-buffer.html" title="Adding text to the buffer">
-<link rel="next" href="what-about-the-other-scripts.html" title="What about the other scripts?">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="buffers-language-script-and-direction.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="adding-text-to-the-buffer.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="what-about-the-other-scripts.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="setting-buffer-properties"></a>Setting buffer properties</h2></div></div></div>
-<p>
- </p>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/shaping-and-shape-plans.html b/docs/html/shaping-and-shape-plans.html
deleted file mode 100644
index 04bffbb..0000000
--- a/docs/html/shaping-and-shape-plans.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Shaping and shape plans: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt01.html" title="Part I. User's manual">
-<link rel="prev" href="using-your-own-font-functions.html" title="Using your own font functions">
-<link rel="next" href="plans-and-caching.html" title="Plans and caching">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="using-your-own-font-functions.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="plans-and-caching.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="chapter">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="shaping-and-shape-plans"></a>Shaping and shape plans</h2></div></div></div>
-<div class="toc"><dl class="toc">
-<dt><span class="section"><a href="shaping-and-shape-plans.html#opentype-features">OpenType features</a></span></dt>
-<dt><span class="section"><a href="plans-and-caching.html">Plans and caching</a></span></dt>
-</dl></div>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="opentype-features"></a>OpenType features</h2></div></div></div>
-<p>
- </p>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/using-harfbuzzs-native-opentype-implementation.html b/docs/html/using-harfbuzzs-native-opentype-implementation.html
deleted file mode 100644
index 1980ba8..0000000
--- a/docs/html/using-harfbuzzs-native-opentype-implementation.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Using Harfbuzz's native OpenType implementation: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="fonts-and-faces.html" title="Fonts and faces">
-<link rel="prev" href="fonts-and-faces.html" title="Fonts and faces">
-<link rel="next" href="using-your-own-font-functions.html" title="Using your own font functions">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="fonts-and-faces.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="fonts-and-faces.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="using-your-own-font-functions.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="using-harfbuzzs-native-opentype-implementation"></a>Using Harfbuzz's native OpenType implementation</h2></div></div></div>
-<p>
- </p>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/using-your-own-font-functions.html b/docs/html/using-your-own-font-functions.html
deleted file mode 100644
index b1e94d8..0000000
--- a/docs/html/using-your-own-font-functions.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Using your own font functions: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="fonts-and-faces.html" title="Fonts and faces">
-<link rel="prev" href="using-harfbuzzs-native-opentype-implementation.html" title="Using Harfbuzz's native OpenType implementation">
-<link rel="next" href="shaping-and-shape-plans.html" title="Shaping and shape plans">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="fonts-and-faces.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="using-harfbuzzs-native-opentype-implementation.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="shaping-and-shape-plans.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="using-your-own-font-functions"></a>Using your own font functions</h2></div></div></div>
-<p>
- </p>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/what-about-the-other-scripts.html b/docs/html/what-about-the-other-scripts.html
deleted file mode 100644
index 0550e73..0000000
--- a/docs/html/what-about-the-other-scripts.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>What about the other scripts?: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="buffers-language-script-and-direction.html" title="Buffers, language, script and direction">
-<link rel="prev" href="setting-buffer-properties.html" title="Setting buffer properties">
-<link rel="next" href="customizing-unicode-functions.html" title="Customizing Unicode functions">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="buffers-language-script-and-direction.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="setting-buffer-properties.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="customizing-unicode-functions.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="what-about-the-other-scripts"></a>What about the other scripts?</h2></div></div></div>
-<p>
- </p>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/what-is-harfbuzz.html b/docs/html/what-is-harfbuzz.html
deleted file mode 100644
index d791d47..0000000
--- a/docs/html/what-is-harfbuzz.html
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>What is Harfbuzz?: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt01.html" title="Part I. User's manual">
-<link rel="prev" href="pt01.html" title="Part I. User's manual">
-<link rel="next" href="why-is-it-called-harfbuzz.html" title="Why is it called Harfbuzz?">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="pt01.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="why-is-it-called-harfbuzz.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="chapter">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="what-is-harfbuzz"></a>What is Harfbuzz?</h2></div></div></div>
-<div class="toc"><dl class="toc">
-<dt><span class="section"><a href="what-is-harfbuzz.html#why-do-i-need-it">Why do I need it?</a></span></dt>
-<dt><span class="section"><a href="why-is-it-called-harfbuzz.html">Why is it called Harfbuzz?</a></span></dt>
-</dl></div>
-<p>
- Harfbuzz is a <span class="emphasis"><em>text shaping engine</em></span>. It solves
- the problem of selecting and positioning glyphs from a font given a
- Unicode string.
- </p>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="why-do-i-need-it"></a>Why do I need it?</h2></div></div></div>
-<p>
- Text shaping is an integral part of preparing text for display. It
- is a fairly low level operation; Harfbuzz is used directly by
- graphic rendering libraries such as Pango, and the layout engines
- in Firefox, LibreOffice and Chromium. Unless you are
- <span class="emphasis"><em>writing</em></span> one of these layout engines yourself,
- you will probably not need to use Harfbuzz - normally higher level
- libraries will turn text into glyphs for you.
- </p>
-<p>
- However, if you <span class="emphasis"><em>are</em></span> writing a layout engine
- or graphics library yourself, you will need to perform text
- shaping, and this is where Harfbuzz can help you. Here are some
- reasons why you need it:
- </p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
-<li class="listitem"><p>
- OpenType fonts contain a set of glyphs, indexed by glyph ID.
- The glyph ID within the font does not necessarily relate to a
- Unicode codepoint. For instance, some fonts have the letter
- "a" as glyph ID 1. To pull the right glyph out of
- the font in order to display it, you need to consult a table
- within the font (the "cmap" table) which maps
- Unicode codepoints to glyph IDs. Text shaping turns codepoints
- into glyph IDs.
- </p></li>
-<li class="listitem"><p>
- Many OpenType fonts contain ligatures: combinations of
- characters which are rendered together. For instance, it's
- common for the <code class="literal">fi</code> combination to appear in
- print as the single ligature "fi". Whether you should
- render text as <code class="literal">fi</code> or "fi" does not
- depend on the input text, but on the capabilities of the font
- and the level of ligature application you wish to perform.
- Text shaping involves querying the font's ligature tables and
- determining what substitutions should be made.
- </p></li>
-<li class="listitem"><p>
- While ligatures like "fi" are typographic
- refinements, some languages <span class="emphasis"><em>require</em></span> such
- substitutions to be made in order to display text correctly.
- In Tamil, when the letter "TTA" (ட) letter is
- followed by "U" (உ), the combination should appear
- as the single glyph "டு". The sequence of Unicode
- characters "டஉ" needs to be rendered as a single
- glyph from the font - text shaping chooses the correct glyph
- from the sequence of characters provided.
- </p></li>
-<li class="listitem"><p>
- Similarly, each Arabic character has four different variants:
- within a font, there will be glyphs for the initial, medial,
- final, and isolated forms of each letter. Unicode only encodes
- one codepoint per character, and so a Unicode string will not
- tell you which glyph to use. Text shaping chooses the correct
- form of the letter and returns the correct glyph from the font
- that you need to render.
- </p></li>
-<li class="listitem"><p>
- Other languages have marks and accents which need to be
- rendered in certain positions around a base character. For
- instance, the Moldovan language has the Cyrillic letter
- "zhe" (ж) with a breve accent, like so: ӂ. Some
- fonts will contain this character as an individual glyph,
- whereas other fonts will not contain a zhe-with-breve glyph
- but expect the rendering engine to form the character by
- overlaying the two glyphs ж and ˘. Where you should draw the
- combining breve depends on the height of the preceding glyph.
- Again, for Arabic, the correct positioning of vowel marks
- depends on the height of the character on which you are
- placing the mark. Text shaping tells you whether you have a
- precomposed glyph within your font or if you need to compose a
- glyph yourself out of combining marks, and if so, where to
- position those marks.
- </p></li>
-</ul></div>
-<p>
- If this is something that you need to do, then you need a text
- shaping engine: you could use Uniscribe if you are using Windows;
- you could use CoreText on OS X; or you could use Harfbuzz. In the
- rest of this manual, we are going to assume that you are the
- implementor of a text layout engine.
- </p>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/why-is-it-called-harfbuzz.html b/docs/html/why-is-it-called-harfbuzz.html
deleted file mode 100644
index afe00b0..0000000
--- a/docs/html/why-is-it-called-harfbuzz.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Why is it called Harfbuzz?: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="what-is-harfbuzz.html" title="What is Harfbuzz?">
-<link rel="prev" href="what-is-harfbuzz.html" title="What is Harfbuzz?">
-<link rel="next" href="install-harfbuzz.html" title="Install Harfbuzz">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="what-is-harfbuzz.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="what-is-harfbuzz.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="install-harfbuzz.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="why-is-it-called-harfbuzz"></a>Why is it called Harfbuzz?</h2></div></div></div>
-<p>
- Harfbuzz began its life as text shaping code within the FreeType
- project, (and you will see references to the FreeType authors
- within the source code copyright declarations) but was then
- abstracted out to its own project. This project is maintained by
- Behdad Esfahbod, and named Harfbuzz. Originally, it was a shaping
- engine for OpenType fonts - "Harfbuzz" is the Persian
- for "open type".
- </p>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/reference/Makefile.am b/docs/reference/Makefile.am
new file mode 100644
index 0000000..f7a4ad6
--- /dev/null
+++ b/docs/reference/Makefile.am
@@ -0,0 +1,111 @@
+# Process this file with automake to produce Makefile.in
+
+# We require automake 1.6 at least.
+AUTOMAKE_OPTIONS = 1.6
+
+# This is a blank Makefile.am for using gtk-doc.
+# Copy this to your project's API docs directory and modify the variables to
+# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
+# of using the various options.
+
+# The name of the module, e.g. 'glib'.
+DOC_MODULE=harfbuzz
+
+# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
+#DOC_MODULE_VERSION=$(HB_VERSION_MAJOR)
+
+# The top-level SGML file. You can change this if you want to.
+DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml
+
+# Directories containing the source code.
+# gtk-doc will search all .c and .h files beneath these paths
+# for inline comments documenting functions and macros.
+# e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk
+DOC_SOURCE_DIR=$(top_srcdir)/src $(top_builddir)/src
+
+# Extra options to pass to gtkdoc-scangobj. Not normally needed.
+SCANGOBJ_OPTIONS=
+
+# Extra options to supply to gtkdoc-scan.
+# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
+SCAN_OPTIONS=--rebuild-types --deprecated-guards="HB_DISABLE_DEPRECATED"
+
+# Header files or dirs to ignore when scanning. Use base file/dir names
+# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code
+IGNORE_HFILES=`cd $(top_srcdir)/src; find . -path './hb-*/*.h' | sed 's@^.*/@@'`
+if HAVE_GOBJECT
+else
+IGNORE_HFILES+=hb-gobject.h hb-gobject-enums.h hb-gobject-structs.h
+endif
+
+# Extra options to supply to gtkdoc-mkdb.
+# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
+MKDB_OPTIONS=--source-suffixes=h,cc --xml-mode --output-format=xml --ignore-files="$(IGNORE_HFILES)"
+
+# Extra options to supply to gtkdoc-mktmpl
+# e.g. MKTMPL_OPTIONS=--only-section-tmpl
+MKTMPL_OPTIONS=
+
+# Extra options to supply to gtkdoc-mkhtml
+MKHTML_OPTIONS=
+
+# Extra options to supply to gtkdoc-fixref. Not normally needed.
+# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
+FIXXREF_OPTIONS=
+
+# Used for dependencies. The docs will be rebuilt if any of these change.
+# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
+# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
+HFILE_GLOB=$(top_srcdir)/src/hb.h $(top_srcdir)/src/hb-*.h
+CFILE_GLOB=$(top_srcdir)/src/hb-*.cc
+
+# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
+# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
+EXTRA_HFILES=$(top_builddir)/src/hb-version.h
+
+# Images to copy into HTML directory.
+# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
+HTML_IMAGES=
+
+# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
+# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
+content_files= version.xml
+
+# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
+# These files must be listed here *and* in content_files
+# e.g. expand_content_files=running.sgml
+expand_content_files=
+
+# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
+# Only needed if you are using gtkdoc-scangobj to dynamically query widget
+# signals and properties.
+# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
+# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
+GTKDOC_CFLAGS=
+GTKDOC_LIBS=$(top_builddir)/src/libharfbuzz.la
+if HAVE_GOBJECT
+GTKDOC_LIBS+=$(top_builddir)/src/libharfbuzz-gobject.la
+endif
+
+# This includes the standard gtk-doc make rules, copied by gtkdocize.
+include $(top_srcdir)/gtk-doc.make
+
+# Other files to distribute
+# e.g. EXTRA_DIST += version.xml.in
+EXTRA_DIST += version.xml.in
+
+# Files not to distribute
+# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
+# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
+#DISTCLEANFILES +=
+
+# Comment this out if you want 'make check' to test you doc status
+# and run some sanity checks
+if ENABLE_GTK_DOC
+TESTS_ENVIRONMENT = cd $(srcdir) && \
+ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
+ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir)
+#TESTS = $(GTKDOC_CHECK)
+endif
+
+-include $(top_srcdir)/git.mk
diff --git a/docs/reference/Makefile.in b/docs/reference/Makefile.in
new file mode 100644
index 0000000..d090c74
--- /dev/null
+++ b/docs/reference/Makefile.in
@@ -0,0 +1,852 @@
+# Makefile.in generated by automake 1.14 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Process this file with automake to produce Makefile.in
+
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@HAVE_GOBJECT_FALSE@am__append_1 = hb-gobject.h hb-gobject-enums.h hb-gobject-structs.h
+@HAVE_GOBJECT_TRUE@am__append_2 = $(top_builddir)/src/libharfbuzz-gobject.la
+DIST_COMMON = $(top_srcdir)/gtk-doc.make $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(srcdir)/version.xml.in
+subdir = docs/reference
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
+ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = version.xml
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_FT_CFLAGS = @CAIRO_FT_CFLAGS@
+CAIRO_FT_LIBS = @CAIRO_FT_LIBS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CORETEXT_CFLAGS = @CORETEXT_CFLAGS@
+CORETEXT_LIBS = @CORETEXT_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
+FREETYPE_LIBS = @FREETYPE_LIBS@
+GIT = @GIT@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GOBJECT_CFLAGS = @GOBJECT_CFLAGS@
+GOBJECT_LIBS = @GOBJECT_LIBS@
+GRAPHITE2_CFLAGS = @GRAPHITE2_CFLAGS@
+GRAPHITE2_LIBS = @GRAPHITE2_LIBS@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HB_LIBTOOL_VERSION_INFO = @HB_LIBTOOL_VERSION_INFO@
+HB_VERSION = @HB_VERSION@
+HB_VERSION_MAJOR = @HB_VERSION_MAJOR@
+HB_VERSION_MICRO = @HB_VERSION_MICRO@
+HB_VERSION_MINOR = @HB_VERSION_MINOR@
+HTML_DIR = @HTML_DIR@
+ICU_CFLAGS = @ICU_CFLAGS@
+ICU_CONFIG = @ICU_CONFIG@
+ICU_LIBS = @ICU_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
+INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
+INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
+INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
+INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
+INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+RAGEL = @RAGEL@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+UNISCRIBE_CFLAGS = @UNISCRIBE_CFLAGS@
+UNISCRIBE_LIBS = @UNISCRIBE_LIBS@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# We require automake 1.6 at least.
+AUTOMAKE_OPTIONS = 1.6
+
+# This is a blank Makefile.am for using gtk-doc.
+# Copy this to your project's API docs directory and modify the variables to
+# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
+# of using the various options.
+
+# The name of the module, e.g. 'glib'.
+DOC_MODULE = harfbuzz
+
+# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
+#DOC_MODULE_VERSION=$(HB_VERSION_MAJOR)
+
+# The top-level SGML file. You can change this if you want to.
+DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.xml
+
+# Directories containing the source code.
+# gtk-doc will search all .c and .h files beneath these paths
+# for inline comments documenting functions and macros.
+# e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk
+DOC_SOURCE_DIR = $(top_srcdir)/src $(top_builddir)/src
+
+# Extra options to pass to gtkdoc-scangobj. Not normally needed.
+SCANGOBJ_OPTIONS =
+
+# Extra options to supply to gtkdoc-scan.
+# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
+SCAN_OPTIONS = --rebuild-types --deprecated-guards="HB_DISABLE_DEPRECATED"
+
+# Header files or dirs to ignore when scanning. Use base file/dir names
+# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code
+IGNORE_HFILES = `cd $(top_srcdir)/src; find . -path './hb-*/*.h' | sed \
+ 's@^.*/@@'` $(am__append_1)
+
+# Extra options to supply to gtkdoc-mkdb.
+# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
+MKDB_OPTIONS = --source-suffixes=h,cc --xml-mode --output-format=xml --ignore-files="$(IGNORE_HFILES)"
+
+# Extra options to supply to gtkdoc-mktmpl
+# e.g. MKTMPL_OPTIONS=--only-section-tmpl
+MKTMPL_OPTIONS =
+
+# Extra options to supply to gtkdoc-mkhtml
+MKHTML_OPTIONS =
+
+# Extra options to supply to gtkdoc-fixref. Not normally needed.
+# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
+FIXXREF_OPTIONS =
+
+# Used for dependencies. The docs will be rebuilt if any of these change.
+# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
+# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
+HFILE_GLOB = $(top_srcdir)/src/hb.h $(top_srcdir)/src/hb-*.h
+CFILE_GLOB = $(top_srcdir)/src/hb-*.cc
+
+# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
+# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
+EXTRA_HFILES = $(top_builddir)/src/hb-version.h
+
+# Images to copy into HTML directory.
+# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
+HTML_IMAGES =
+
+# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
+# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
+content_files = version.xml
+
+# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
+# These files must be listed here *and* in content_files
+# e.g. expand_content_files=running.sgml
+expand_content_files =
+
+# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
+# Only needed if you are using gtkdoc-scangobj to dynamically query widget
+# signals and properties.
+# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
+# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
+GTKDOC_CFLAGS =
+GTKDOC_LIBS = $(top_builddir)/src/libharfbuzz.la $(am__append_2)
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN =
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE)
+SETUP_FILES = \
+ $(content_files) \
+ $(DOC_MAIN_SGML_FILE) \
+ $(DOC_MODULE)-sections.txt \
+ $(DOC_MODULE)-overrides.txt
+
+
+# This includes the standard gtk-doc make rules, copied by gtkdocize.
+
+# Other files to distribute
+# e.g. EXTRA_DIST += version.xml.in
+EXTRA_DIST = $(HTML_IMAGES) $(SETUP_FILES) version.xml.in
+DOC_STAMPS = setup-build.stamp scan-build.stamp sgml-build.stamp \
+ html-build.stamp pdf-build.stamp \
+ sgml.stamp html.stamp pdf.stamp
+
+SCANOBJ_FILES = \
+ $(DOC_MODULE).args \
+ $(DOC_MODULE).hierarchy \
+ $(DOC_MODULE).interfaces \
+ $(DOC_MODULE).prerequisites \
+ $(DOC_MODULE).signals
+
+REPORT_FILES = \
+ $(DOC_MODULE)-undocumented.txt \
+ $(DOC_MODULE)-undeclared.txt \
+ $(DOC_MODULE)-unused.txt
+
+CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) gtkdoc-check.test
+@GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP =
+@GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp
+@GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP =
+@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp
+
+#### setup ####
+GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_$(V))
+GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build";
+
+#### scan ####
+GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_$(V))
+GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files";
+GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_$(V))
+GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects";
+
+#### xml ####
+GTK_DOC_V_XML = $(GTK_DOC_V_XML_$(V))
+GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_XML_0 = @echo " DOC Building XML";
+
+#### html ####
+GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_$(V))
+GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_HTML_0 = @echo " DOC Building HTML";
+GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_$(V))
+GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references";
+
+#### pdf ####
+GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_$(V))
+GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY))
+GTK_DOC_V_PDF_0 = @echo " DOC Building PDF";
+
+# Files not to distribute
+# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
+# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
+#DISTCLEANFILES +=
+
+# Comment this out if you want 'make check' to test you doc status
+# and run some sanity checks
+@ENABLE_GTK_DOC_TRUE@TESTS_ENVIRONMENT = cd $(srcdir) && \
+@ENABLE_GTK_DOC_TRUE@ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
+@ENABLE_GTK_DOC_TRUE@ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir)
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits docs/reference/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnits docs/reference/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/gtk-doc.make:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+version.xml: $(top_builddir)/config.status $(srcdir)/version.xml.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-hook
+check-am: all-am
+check: check-am
+@ENABLE_GTK_DOC_FALSE@all-local:
+all-am: Makefile all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-local
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+ maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-local
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+ clean-libtool clean-local cscopelist-am ctags-am dist-hook \
+ distclean distclean-generic distclean-libtool distclean-local \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-data-local \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ maintainer-clean-local mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
+ uninstall-am uninstall-local
+
+
+gtkdoc-check.test: Makefile
+ $(AM_V_GEN)echo "#!/bin/sh -e" > $@; \
+ echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \
+ chmod +x $@
+
+all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
+.PHONY: all-gtk-doc
+
+@ENABLE_GTK_DOC_TRUE@all-local: all-gtk-doc
+
+docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
+
+$(REPORT_FILES): sgml-build.stamp
+
+setup-build.stamp:
+ -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \
+ if test "x$$files" != "x" ; then \
+ for file in $$files ; do \
+ destdir=`dirname $(abs_builddir)/$$file`; \
+ test -d "$$destdir" || mkdir -p "$$destdir"; \
+ test -f $(abs_srcdir)/$$file && \
+ cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \
+ done; \
+ fi; \
+ fi
+ $(AM_V_at)touch setup-build.stamp
+
+scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB)
+ $(GTK_DOC_V_SCAN)_source_dir='' ; \
+ for i in $(DOC_SOURCE_DIR) ; do \
+ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+ done ; \
+ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES)
+ $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \
+ scanobj_options=""; \
+ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ scanobj_options="--verbose"; \
+ fi; \
+ fi; \
+ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \
+ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \
+ else \
+ for i in $(SCANOBJ_FILES) ; do \
+ test -f $$i || touch $$i ; \
+ done \
+ fi
+ $(AM_V_at)touch scan-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
+ @true
+
+sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files)
+ $(GTK_DOC_V_XML)_source_dir='' ; \
+ for i in $(DOC_SOURCE_DIR) ; do \
+ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+ done ; \
+ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS)
+ $(AM_V_at)touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+ @true
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \
+ mkhtml_options=""; \
+ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ mkhtml_options="$$mkhtml_options --verbose"; \
+ fi; \
+ fi; \
+ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \
+ if test "$(?)" = "0"; then \
+ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \
+ fi; \
+ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+ -@test "x$(HTML_IMAGES)" = "x" || \
+ for file in $(HTML_IMAGES) ; do \
+ if test -f $(abs_srcdir)/$$file ; then \
+ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \
+ fi; \
+ if test -f $(abs_builddir)/$$file ; then \
+ cp $(abs_builddir)/$$file $(abs_builddir)/html; \
+ fi; \
+ done;
+ $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+ $(AM_V_at)touch html-build.stamp
+
+pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \
+ mkpdf_options=""; \
+ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \
+ if test "$(?)" = "0"; then \
+ if test "x$(V)" = "x1"; then \
+ mkpdf_options="$$mkpdf_options --verbose"; \
+ fi; \
+ fi; \
+ if test "x$(HTML_IMAGES)" != "x"; then \
+ for img in $(HTML_IMAGES); do \
+ part=`dirname $$img`; \
+ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \
+ if test $$? != 0; then \
+ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \
+ fi; \
+ done; \
+ fi; \
+ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS)
+ $(AM_V_at)touch pdf-build.stamp
+
+##############
+
+clean-local:
+ @rm -f *~ *.bak
+ @rm -rf .libs
+ @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-types" ; then \
+ rm -f $(DOC_MODULE).types; \
+ fi
+
+distclean-local:
+ @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \
+ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+ @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+ rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \
+ fi
+
+maintainer-clean-local:
+ @rm -rf xml html
+
+install-data-local:
+ @installfiles=`echo $(builddir)/html/*`; \
+ if test "$$installfiles" = '$(builddir)/html/*'; \
+ then echo 1>&2 'Nothing to install' ; \
+ else \
+ if test -n "$(DOC_MODULE_VERSION)"; then \
+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+ else \
+ installdir="$(DESTDIR)$(TARGET_DIR)"; \
+ fi; \
+ $(mkinstalldirs) $${installdir} ; \
+ for i in $$installfiles; do \
+ echo ' $(INSTALL_DATA) '$$i ; \
+ $(INSTALL_DATA) $$i $${installdir}; \
+ done; \
+ if test -n "$(DOC_MODULE_VERSION)"; then \
+ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
+ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
+ fi; \
+ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \
+ fi
+
+uninstall-local:
+ @if test -n "$(DOC_MODULE_VERSION)"; then \
+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+ else \
+ installdir="$(DESTDIR)$(TARGET_DIR)"; \
+ fi; \
+ rm -rf $${installdir}
+
+#
+# Require gtk-doc when making dist
+#
+@HAVE_GTK_DOC_TRUE@dist-check-gtkdoc: docs
+@HAVE_GTK_DOC_FALSE@dist-check-gtkdoc:
+@HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc is needed to run 'make dist'. ***"
+@HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc was not found when 'configure' ran. ***"
+@HAVE_GTK_DOC_FALSE@ @echo "*** please install gtk-doc and rerun 'configure'. ***"
+@HAVE_GTK_DOC_FALSE@ @false
+
+dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local
+ @mkdir $(distdir)/html
+ @cp ./html/* $(distdir)/html
+ @-cp ./$(DOC_MODULE).pdf $(distdir)/
+ @-cp ./$(DOC_MODULE).types $(distdir)/
+ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/
+ @cd $(distdir) && rm -f $(DISTCLEANFILES)
+ @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html
+
+.PHONY : dist-hook-local docs
+#TESTS = $(GTKDOC_CHECK)
+
+-include $(top_srcdir)/git.mk
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/docs/reference/harfbuzz-docs.xml b/docs/reference/harfbuzz-docs.xml
new file mode 100644
index 0000000..2731fab
--- /dev/null
+++ b/docs/reference/harfbuzz-docs.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+ <!ENTITY version SYSTEM "version.xml">
+]>
+<book id="index">
+ <bookinfo>
+ <title>HarfBuzz Reference Manual</title>
+ <releaseinfo>
+ for HarfBuzz &version;.
+ <!--The latest version of this documentation can be found on-line at
+ <ulink role="online-location" url="http://[SERVER]/libharfbuzz/index.html">http://[SERVER]/libharfbuzz/</ulink>.-->
+ </releaseinfo>
+ </bookinfo>
+
+ <chapter>
+ <title>[Insert title here]</title>
+ <xi:include href="xml/hb.xml"/>
+ <xi:include href="xml/hb-common.xml"/>
+ <xi:include href="xml/hb-unicode.xml"/>
+ <xi:include href="xml/hb-buffer.xml"/>
+ <xi:include href="xml/hb-blob.xml"/>
+ <xi:include href="xml/hb-face.xml"/>
+ <xi:include href="xml/hb-font.xml"/>
+ <xi:include href="xml/hb-shape.xml"/>
+
+ <xi:include href="xml/hb-version.xml"/>
+ <xi:include href="xml/hb-deprecated.xml"/>
+
+ <xi:include href="xml/hb-set.xml"/>
+
+ <xi:include href="xml/hb-ot.xml"/>
+ <xi:include href="xml/hb-ot-layout.xml"/>
+ <xi:include href="xml/hb-ot-tag.xml"/>
+
+ <xi:include href="xml/hb-shape-plan.xml"/>
+
+ <xi:include href="xml/hb-glib.xml"/>
+ <xi:include href="xml/hb-icu.xml"/>
+
+ <xi:include href="xml/hb-ft.xml"/>
+
+ <xi:include href="xml/hb-graphite2.xml"/>
+ <xi:include href="xml/hb-uniscribe.xml"/>
+ <xi:include href="xml/hb-coretext.xml"/>
+
+ <xi:include href="xml/hb-gobject.xml"/>
+
+ </chapter>
+ <chapter id="object-tree">
+ <title>Object Hierarchy</title>
+ <xi:include href="xml/tree_index.sgml"/>
+ </chapter>
+ <index id="api-index-full">
+ <title>API Index</title>
+ <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
+ </index>
+ <index id="deprecated-api-index" role="deprecated">
+ <title>Index of deprecated API</title>
+ <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
+ </index>
+
+ <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
+</book>
diff --git a/docs/harfbuzz-overrides.txt b/docs/reference/harfbuzz-overrides.txt
index e69de29..e69de29 100644
--- a/docs/harfbuzz-overrides.txt
+++ b/docs/reference/harfbuzz-overrides.txt
diff --git a/docs/harfbuzz-sections.txt b/docs/reference/harfbuzz-sections.txt
index e0dc23d..b112047 100644
--- a/docs/harfbuzz-sections.txt
+++ b/docs/reference/harfbuzz-sections.txt
@@ -2,7 +2,6 @@
<FILE>hb</FILE>
<SUBSECTION Private>
HB_H_IN
-HB_EXTERN
</SECTION>
<SECTION>
@@ -26,106 +25,97 @@ hb_memory_mode_t
<SECTION>
<FILE>hb-buffer</FILE>
HB_SEGMENT_PROPERTIES_DEFAULT
-HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT
-hb_buffer_create
-hb_buffer_reference
-hb_buffer_get_empty
-hb_buffer_destroy
-hb_buffer_reset
-hb_buffer_clear_contents
-hb_buffer_pre_allocate
-hb_buffer_allocation_successful
hb_buffer_add
-hb_buffer_add_codepoints
-hb_buffer_add_utf32
hb_buffer_add_utf16
+hb_buffer_add_utf32
hb_buffer_add_utf8
-hb_buffer_add_latin1
-hb_buffer_set_content_type
+hb_buffer_add_codepoints
+hb_buffer_allocation_successful
+hb_buffer_clear_contents
+hb_buffer_content_type_t
+hb_buffer_create
+hb_buffer_deserialize_glyphs
+hb_buffer_destroy
+hb_buffer_flags_t
hb_buffer_get_content_type
-hb_buffer_set_direction
hb_buffer_get_direction
-hb_buffer_set_script
-hb_buffer_get_script
-hb_buffer_set_language
-hb_buffer_get_language
-hb_buffer_set_flags
+hb_buffer_get_empty
hb_buffer_get_flags
-hb_buffer_set_cluster_level
-hb_buffer_get_cluster_level
-hb_buffer_set_length
+hb_buffer_get_glyph_infos
+hb_buffer_get_glyph_positions
+hb_buffer_get_language
hb_buffer_get_length
-hb_buffer_set_segment_properties
+hb_buffer_get_replacement_codepoint
+hb_buffer_get_script
hb_buffer_get_segment_properties
-hb_buffer_guess_segment_properties
-hb_buffer_set_unicode_funcs
hb_buffer_get_unicode_funcs
-hb_buffer_set_user_data
hb_buffer_get_user_data
-hb_buffer_get_glyph_infos
-hb_buffer_get_glyph_positions
-hb_buffer_set_replacement_codepoint
-hb_buffer_get_replacement_codepoint
+hb_buffer_guess_segment_properties
hb_buffer_normalize_glyphs
+hb_buffer_pre_allocate
+hb_buffer_reference
+hb_buffer_reset
hb_buffer_reverse
-hb_buffer_reverse_range
hb_buffer_reverse_clusters
-hb_buffer_serialize_glyphs
-hb_buffer_deserialize_glyphs
+hb_buffer_serialize_flags_t
hb_buffer_serialize_format_from_string
+hb_buffer_serialize_format_t
hb_buffer_serialize_format_to_string
+hb_buffer_serialize_glyphs
hb_buffer_serialize_list_formats
-hb_segment_properties_equal
-hb_segment_properties_hash
-hb_buffer_set_message_func
+hb_buffer_set_content_type
+hb_buffer_set_direction
+hb_buffer_set_flags
+hb_buffer_set_language
+hb_buffer_set_length
+hb_buffer_set_replacement_codepoint
+hb_buffer_set_script
+hb_buffer_set_segment_properties
+hb_buffer_set_unicode_funcs
+hb_buffer_set_user_data
hb_buffer_t
hb_glyph_info_t
hb_glyph_position_t
-hb_buffer_content_type_t
-hb_buffer_flags_t
-hb_buffer_cluster_level_t
+hb_segment_properties_equal
+hb_segment_properties_hash
hb_segment_properties_t
-hb_buffer_serialize_format_t
-hb_buffer_serialize_flags_t
-hb_buffer_message_func_t
</SECTION>
<SECTION>
<FILE>hb-common</FILE>
-hb_tag_from_string
-hb_tag_to_string
-hb_direction_from_string
-hb_direction_to_string
-hb_script_from_iso15924_tag
-hb_script_from_string
-hb_script_to_iso15924_tag
-hb_script_get_horizontal_direction
-hb_language_from_string
-hb_language_to_string
-hb_language_get_default
+HB_DIRECTION_REVERSE
+HB_LANGUAGE_INVALID
+HB_TAG
+HB_TAG_NONE
+HB_TAG_MAX
+HB_UNTAG
hb_bool_t
hb_codepoint_t
hb_destroy_func_t
+hb_direction_from_string
hb_direction_t
+hb_direction_to_string
+hb_language_from_string
+hb_language_get_default
hb_language_t
+hb_language_to_string
hb_mask_t
hb_position_t
-hb_tag_t
+hb_script_from_iso15924_tag
+hb_script_from_string
+hb_script_get_horizontal_direction
hb_script_t
+hb_script_to_iso15924_tag
+hb_tag_from_string
+hb_tag_t
+hb_tag_to_string
hb_user_data_key_t
hb_var_int_t
-HB_TAG
-HB_TAG_NONE
-HB_TAG_MAX
-HB_TAG_MAX_SIGNED
-HB_UNTAG
-HB_DIRECTION_REVERSE
HB_DIRECTION_IS_BACKWARD
HB_DIRECTION_IS_FORWARD
HB_DIRECTION_IS_HORIZONTAL
HB_DIRECTION_IS_VALID
HB_DIRECTION_IS_VERTICAL
-HB_LANGUAGE_INVALID
<SUBSECTION Private>
HB_BEGIN_DECLS
HB_END_DECLS
@@ -252,27 +242,14 @@ hb_font_set_user_data
hb_font_subtract_glyph_origin_for_direction
hb_font_t
hb_reference_table_func_t
-hb_font_funcs_set_font_h_extents_func
-hb_font_funcs_set_font_v_extents_func
-hb_font_get_extents_for_direction
-hb_font_get_font_extents_func_t
-hb_font_get_font_h_extents_func_t
-hb_font_get_font_v_extents_func_t
-hb_font_get_h_extents
-hb_font_get_v_extents
-hb_font_set_parent
</SECTION>
<SECTION>
<FILE>hb-ft</FILE>
hb_ft_face_create
hb_ft_face_create_cached
-hb_ft_face_create_referenced
hb_ft_font_create
-hb_ft_font_create_referenced
hb_ft_font_get_face
-hb_ft_font_set_load_flags
-hb_ft_font_get_load_flags
hb_ft_font_set_funcs
</SECTION>
@@ -281,7 +258,6 @@ hb_ft_font_set_funcs
hb_glib_get_unicode_funcs
hb_glib_script_from_script
hb_glib_script_to_script
-hb_glib_blob_create
</SECTION>
<SECTION>
@@ -303,13 +279,6 @@ HB_GOBJECT_TYPE_SHAPE_PLAN
HB_GOBJECT_TYPE_UNICODE_COMBINING_CLASS
HB_GOBJECT_TYPE_UNICODE_FUNCS
HB_GOBJECT_TYPE_UNICODE_GENERAL_CATEGORY
-HB_GOBJECT_TYPE_BUFFER_CLUSTER_LEVEL
-HB_GOBJECT_TYPE_FEATURE
-HB_GOBJECT_TYPE_GLYPH_INFO
-HB_GOBJECT_TYPE_GLYPH_POSITION
-HB_GOBJECT_TYPE_SEGMENT_PROPERTIES
-HB_GOBJECT_TYPE_SET
-HB_GOBJECT_TYPE_USER_DATA_KEY
hb_gobject_blob_get_type
hb_gobject_buffer_content_type_get_type
hb_gobject_buffer_flags_get_type
@@ -327,13 +296,6 @@ hb_gobject_shape_plan_get_type
hb_gobject_unicode_combining_class_get_type
hb_gobject_unicode_funcs_get_type
hb_gobject_unicode_general_category_get_type
-hb_gobject_buffer_cluster_level_get_type
-hb_gobject_feature_get_type
-hb_gobject_glyph_info_get_type
-hb_gobject_glyph_position_get_type
-hb_gobject_segment_properties_get_type
-hb_gobject_set_get_type
-hb_gobject_user_data_key_get_type
<SUBSECTION Private>
HB_GOBJECT_H_IN
</SECTION>
@@ -381,7 +343,6 @@ HB_OT_LAYOUT_NO_SCRIPT_INDEX
HB_OT_TAG_GDEF
HB_OT_TAG_GPOS
HB_OT_TAG_GSUB
-HB_OT_TAG_JSTF
hb_ot_layout_collect_lookups
hb_ot_layout_feature_get_lookups
hb_ot_layout_get_attach_points
@@ -409,7 +370,6 @@ hb_ot_layout_table_get_feature_tags
hb_ot_layout_table_get_script_tags
hb_ot_layout_table_get_lookup_count
hb_ot_shape_plan_collect_lookups
-hb_ot_layout_language_get_required_feature_index
<SUBSECTION Private>
Xhb_ot_layout_lookup_enumerate_sequences
Xhb_ot_layout_lookup_position
@@ -530,12 +490,12 @@ hb_uniscribe_font_get_logfontw
<SECTION>
<FILE>hb-version</FILE>
-HB_VERSION_ATLEAST
+HB_VERSION_CHECK
HB_VERSION_MAJOR
HB_VERSION_MICRO
HB_VERSION_MINOR
HB_VERSION_STRING
hb_version
-hb_version_atleast
+hb_version_check
hb_version_string
</SECTION>
diff --git a/docs/reference/harfbuzz.types b/docs/reference/harfbuzz.types
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/docs/reference/harfbuzz.types
diff --git a/docs/reference/html/annotation-glossary.html b/docs/reference/html/annotation-glossary.html
new file mode 100644
index 0000000..1afb91d
--- /dev/null
+++ b/docs/reference/html/annotation-glossary.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Annotation Glossary</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="prev" href="deprecated-api-index.html" title="Index of deprecated API">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"><span id="nav_glossary"><a class="shortcut" href="#glsA">A</a>
+  <span class="dim">|</span> 
+ <a class="shortcut" href="#glsC">C</a>
+  <span class="dim">|</span> 
+ <a class="shortcut" href="#glsD">D</a>
+  <span class="dim">|</span> 
+ <a class="shortcut" href="#glsE">E</a>
+  <span class="dim">|</span> 
+ <a class="shortcut" href="#glsI">I</a>
+  <span class="dim">|</span> 
+ <a class="shortcut" href="#glsO">O</a>
+  <span class="dim">|</span> 
+ <a class="shortcut" href="#glsS">S</a>
+  <span class="dim">|</span> 
+ <a class="shortcut" href="#glsT">T</a></span></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
+<td><a accesskey="p" href="deprecated-api-index.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><img src="right-insensitive.png" width="16" height="16" border="0"></td>
+</tr></table>
+<div class="glossary">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="annotation-glossary"></a>Annotation Glossary</h2></div></div></div>
+<a name="glsA"></a><h3 class="title">A</h3>
+<dt>
+<a name="annotation-glossterm-array"></a>array</dt>
+<dd><p>Parameter points to an array of items.</p></dd>
+<a name="glsC"></a><h3 class="title">C</h3>
+<dt>
+<a name="annotation-glossterm-closure"></a>closure</dt>
+<dd><p>This parameter is a 'user_data', for callbacks; many bindings can pass NULL here.</p></dd>
+<a name="glsD"></a><h3 class="title">D</h3>
+<dt>
+<a name="annotation-glossterm-destroy"></a>destroy</dt>
+<dd><p>This parameter is a 'destroy_data', for callbacks.</p></dd>
+<a name="glsE"></a><h3 class="title">E</h3>
+<dt>
+<a name="annotation-glossterm-element-type"></a>element-type</dt>
+<dd><p>Generics and defining elements of containers and arrays.</p></dd>
+<a name="glsI"></a><h3 class="title">I</h3>
+<dt>
+<a name="annotation-glossterm-inout"></a>inout</dt>
+<dd><p>Parameter for input and for returning results. Default is <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>.</p></dd>
+<a name="glsO"></a><h3 class="title">O</h3>
+<dt>
+<a name="annotation-glossterm-out"></a>out</dt>
+<dd><p>Parameter for returning results. Default is <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>.</p></dd>
+<a name="glsS"></a><h3 class="title">S</h3>
+<dt>
+<a name="annotation-glossterm-scope%20notified"></a>scope notified</dt>
+<dd><p>The callback is valid until the GDestroyNotify argument is called.</p></dd>
+<a name="glsT"></a><h3 class="title">T</h3>
+<dt>
+<a name="annotation-glossterm-transfer%20full"></a>transfer full</dt>
+<dd><p>Free data after the code is done.</p></dd>
+<dt>
+<a name="annotation-glossterm-transfer%20none"></a>transfer none</dt>
+<dd><p>Don't free data after the code is done.</p></dd>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/api-index-full.html b/docs/reference/html/api-index-full.html
index b82641b..bb4c5a0 100644
--- a/docs/html/api-index-full.html
+++ b/docs/reference/html/api-index-full.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>API Index: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
+<title>API Index</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="index.html" title="HarfBuzz Reference Manual">
<link rel="prev" href="object-tree.html" title="Object Hierarchy">
-<link rel="next" href="api-index-0-9-2.html" title="Index of new symbols in 0.9.2">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<link rel="next" href="deprecated-api-index.html" title="Index of deprecated API">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -43,9 +43,9 @@
 <span class="dim">|</span> 
<a class="shortcut" href="#idxV">V</a></span></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
<td><a accesskey="p" href="object-tree.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-2.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="deprecated-api-index.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
@@ -108,55 +108,47 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add" title="hb_buffer_add ()">hb_buffer_add</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add" title="hb_buffer_add ()">hb_buffer_add</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()">hb_buffer_add_codepoints</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()">hb_buffer_add_codepoints</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-latin1" title="hb_buffer_add_latin1 ()">hb_buffer_add_latin1</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf16" title="hb_buffer_add_utf16 ()">hb_buffer_add_utf16</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf16" title="hb_buffer_add_utf16 ()">hb_buffer_add_utf16</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf32" title="hb_buffer_add_utf32 ()">hb_buffer_add_utf32</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf32" title="hb_buffer_add_utf32 ()">hb_buffer_add_utf32</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf8" title="hb_buffer_add_utf8 ()">hb_buffer_add_utf8</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf8" title="hb_buffer_add_utf8 ()">hb_buffer_add_utf8</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-allocation-successful" title="hb_buffer_allocation_successful ()">hb_buffer_allocation_successful</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-allocation-successful" title="hb_buffer_allocation_successful ()">hb_buffer_allocation_successful</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-clear-contents" title="hb_buffer_clear_contents ()">hb_buffer_clear_contents</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-clear-contents" title="hb_buffer_clear_contents ()">hb_buffer_clear_contents</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t">hb_buffer_content_type_t</a>, enum in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t">hb_buffer_cluster_level_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-create" title="hb_buffer_create ()">hb_buffer_create</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t">hb_buffer_content_type_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-deserialize-glyphs" title="hb_buffer_deserialize_glyphs ()">hb_buffer_deserialize_glyphs</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-create" title="hb_buffer_create ()">hb_buffer_create</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-deserialize-glyphs" title="hb_buffer_deserialize_glyphs ()">hb_buffer_deserialize_glyphs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-destroy" title="hb_buffer_destroy ()">hb_buffer_destroy</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-destroy" title="hb_buffer_destroy ()">hb_buffer_destroy</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
@@ -164,103 +156,87 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t">hb_buffer_flags_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-cluster-level" title="hb_buffer_get_cluster_level ()">hb_buffer_get_cluster_level</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-content-type" title="hb_buffer_get_content_type ()">hb_buffer_get_content_type</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-direction" title="hb_buffer_get_direction ()">hb_buffer_get_direction</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t">hb_buffer_flags_t</a>, enum in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-empty" title="hb_buffer_get_empty ()">hb_buffer_get_empty</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-content-type" title="hb_buffer_get_content_type ()">hb_buffer_get_content_type</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-flags" title="hb_buffer_get_flags ()">hb_buffer_get_flags</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-direction" title="hb_buffer_get_direction ()">hb_buffer_get_direction</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-glyph-infos" title="hb_buffer_get_glyph_infos ()">hb_buffer_get_glyph_infos</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-empty" title="hb_buffer_get_empty ()">hb_buffer_get_empty</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-glyph-positions" title="hb_buffer_get_glyph_positions ()">hb_buffer_get_glyph_positions</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-flags" title="hb_buffer_get_flags ()">hb_buffer_get_flags</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-language" title="hb_buffer_get_language ()">hb_buffer_get_language</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-glyph-infos" title="hb_buffer_get_glyph_infos ()">hb_buffer_get_glyph_infos</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-length" title="hb_buffer_get_length ()">hb_buffer_get_length</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-glyph-positions" title="hb_buffer_get_glyph_positions ()">hb_buffer_get_glyph_positions</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-replacement-codepoint" title="hb_buffer_get_replacement_codepoint ()">hb_buffer_get_replacement_codepoint</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-language" title="hb_buffer_get_language ()">hb_buffer_get_language</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-script" title="hb_buffer_get_script ()">hb_buffer_get_script</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-length" title="hb_buffer_get_length ()">hb_buffer_get_length</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-segment-properties" title="hb_buffer_get_segment_properties ()">hb_buffer_get_segment_properties</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-replacement-codepoint" title="hb_buffer_get_replacement_codepoint ()">hb_buffer_get_replacement_codepoint</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-unicode-funcs" title="hb_buffer_get_unicode_funcs ()">hb_buffer_get_unicode_funcs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-script" title="hb_buffer_get_script ()">hb_buffer_get_script</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-user-data" title="hb_buffer_get_user_data ()">hb_buffer_get_user_data</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-segment-properties" title="hb_buffer_get_segment_properties ()">hb_buffer_get_segment_properties</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-guess-segment-properties" title="hb_buffer_guess_segment_properties ()">hb_buffer_guess_segment_properties</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-unicode-funcs" title="hb_buffer_get_unicode_funcs ()">hb_buffer_get_unicode_funcs</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-message-func-t" title="hb_buffer_message_func_t ()">hb_buffer_message_func_t</a>, user_function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-user-data" title="hb_buffer_get_user_data ()">hb_buffer_get_user_data</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-normalize-glyphs" title="hb_buffer_normalize_glyphs ()">hb_buffer_normalize_glyphs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-guess-segment-properties" title="hb_buffer_guess_segment_properties ()">hb_buffer_guess_segment_properties</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-pre-allocate" title="hb_buffer_pre_allocate ()">hb_buffer_pre_allocate</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-normalize-glyphs" title="hb_buffer_normalize_glyphs ()">hb_buffer_normalize_glyphs</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reference" title="hb_buffer_reference ()">hb_buffer_reference</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-pre-allocate" title="hb_buffer_pre_allocate ()">hb_buffer_pre_allocate</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS" title="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT">HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT</a>, macro in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reference" title="hb_buffer_reference ()">hb_buffer_reference</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reset" title="hb_buffer_reset ()">hb_buffer_reset</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reset" title="hb_buffer_reset ()">hb_buffer_reset</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse" title="hb_buffer_reverse ()">hb_buffer_reverse</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reverse" title="hb_buffer_reverse ()">hb_buffer_reverse</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse-clusters" title="hb_buffer_reverse_clusters ()">hb_buffer_reverse_clusters</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse-range" title="hb_buffer_reverse_range ()">hb_buffer_reverse_range</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reverse-clusters" title="hb_buffer_reverse_clusters ()">hb_buffer_reverse_clusters</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
@@ -268,79 +244,71 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t">hb_buffer_serialize_flags_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-from-string" title="hb_buffer_serialize_format_from_string ()">hb_buffer_serialize_format_from_string</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t">hb_buffer_serialize_format_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t">hb_buffer_serialize_flags_t</a>, enum in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-to-string" title="hb_buffer_serialize_format_to_string ()">hb_buffer_serialize_format_to_string</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-from-string" title="hb_buffer_serialize_format_from_string ()">hb_buffer_serialize_format_from_string</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()">hb_buffer_serialize_glyphs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t">hb_buffer_serialize_format_t</a>, enum in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-list-formats" title="hb_buffer_serialize_list_formats ()">hb_buffer_serialize_list_formats</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-to-string" title="hb_buffer_serialize_format_to_string ()">hb_buffer_serialize_format_to_string</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-cluster-level" title="hb_buffer_set_cluster_level ()">hb_buffer_set_cluster_level</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()">hb_buffer_serialize_glyphs</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-content-type" title="hb_buffer_set_content_type ()">hb_buffer_set_content_type</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-list-formats" title="hb_buffer_serialize_list_formats ()">hb_buffer_serialize_list_formats</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()">hb_buffer_set_direction</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-content-type" title="hb_buffer_set_content_type ()">hb_buffer_set_content_type</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-flags" title="hb_buffer_set_flags ()">hb_buffer_set_flags</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()">hb_buffer_set_direction</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-language" title="hb_buffer_set_language ()">hb_buffer_set_language</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-flags" title="hb_buffer_set_flags ()">hb_buffer_set_flags</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-length" title="hb_buffer_set_length ()">hb_buffer_set_length</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-language" title="hb_buffer_set_language ()">hb_buffer_set_language</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-message-func" title="hb_buffer_set_message_func ()">hb_buffer_set_message_func</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-length" title="hb_buffer_set_length ()">hb_buffer_set_length</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()">hb_buffer_set_replacement_codepoint</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()">hb_buffer_set_replacement_codepoint</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-script" title="hb_buffer_set_script ()">hb_buffer_set_script</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-script" title="hb_buffer_set_script ()">hb_buffer_set_script</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-segment-properties" title="hb_buffer_set_segment_properties ()">hb_buffer_set_segment_properties</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-segment-properties" title="hb_buffer_set_segment_properties ()">hb_buffer_set_segment_properties</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-unicode-funcs" title="hb_buffer_set_unicode_funcs ()">hb_buffer_set_unicode_funcs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-unicode-funcs" title="hb_buffer_set_unicode_funcs ()">hb_buffer_set_unicode_funcs</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-user-data" title="hb_buffer_set_user_data ()">hb_buffer_set_user_data</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-user-data" title="hb_buffer_set_user_data ()">hb_buffer_set_user_data</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-t">hb_buffer_t</a>, typedef in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t">hb_buffer_t</a>, typedef in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<a name="idxC"></a><h3 class="title">C</h3>
@@ -483,15 +451,15 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-feature-from-string" title="hb_feature_from_string ()">hb_feature_from_string</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
+<a class="link" href="harfbuzz-hb-shape.html#hb-feature-from-string" title="hb_feature_from_string ()">hb_feature_from_string</a>, function in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-feature-t-struct" title="hb_feature_t">hb_feature_t</a>, struct in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
+<a class="link" href="harfbuzz-hb-shape.html#hb-feature-t-struct" title="hb_feature_t">hb_feature_t</a>, struct in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-feature-to-string" title="hb_feature_to_string ()">hb_feature_to_string</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
+<a class="link" href="harfbuzz-hb-shape.html#hb-feature-to-string" title="hb_feature_to_string ()">hb_feature_to_string</a>, function in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
</dt>
<dd></dd>
<dt>
@@ -539,14 +507,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-font-h-extents-func" title="hb_font_funcs_set_font_h_extents_func ()">hb_font_funcs_set_font_h_extents_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-font-v-extents-func" title="hb_font_funcs_set_font_v_extents_func ()">hb_font_funcs_set_font_v_extents_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-contour-point-func" title="hb_font_funcs_set_glyph_contour_point_func ()">hb_font_funcs_set_glyph_contour_point_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
</dt>
<dd></dd>
@@ -603,26 +563,10 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-extents-for-direction" title="hb_font_get_extents_for_direction ()">hb_font_get_extents_for_direction</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-font.html#hb-font-get-face" title="hb_font_get_face ()">hb_font_get_face</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-font-extents-func-t" title="hb_font_get_font_extents_func_t ()">hb_font_get_font_extents_func_t</a>, user_function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-font-h-extents-func-t" title="hb_font_get_font_h_extents_func_t">hb_font_get_font_h_extents_func_t</a>, typedef in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-font-v-extents-func-t" title="hb_font_get_font_v_extents_func_t">hb_font_get_font_v_extents_func_t</a>, typedef in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph" title="hb_font_get_glyph ()">hb_font_get_glyph</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
</dt>
<dd></dd>
@@ -743,10 +687,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-h-extents" title="hb_font_get_h_extents ()">hb_font_get_h_extents</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-font.html#hb-font-get-parent" title="hb_font_get_parent ()">hb_font_get_parent</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
</dt>
<dd></dd>
@@ -763,10 +703,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-v-extents" title="hb_font_get_v_extents ()">hb_font_get_v_extents</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-font.html#hb-font-glyph-from-string" title="hb_font_glyph_from_string ()">hb_font_glyph_from_string</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
</dt>
<dd></dd>
@@ -795,10 +731,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-set-parent" title="hb_font_set_parent ()">hb_font_set_parent</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-font.html#hb-font-set-ppem" title="hb_font_set_ppem ()">hb_font_set_ppem</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
</dt>
<dd></dd>
@@ -827,39 +759,19 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-ft.html#hb-ft-face-create-referenced" title="hb_ft_face_create_referenced ()">hb_ft_face_create_referenced</a>, function in <a class="link" href="harfbuzz-hb-ft.html" title="hb-ft">hb-ft</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-ft.html#hb-ft-font-create" title="hb_ft_font_create ()">hb_ft_font_create</a>, function in <a class="link" href="harfbuzz-hb-ft.html" title="hb-ft">hb-ft</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-ft.html#hb-ft-font-create-referenced" title="hb_ft_font_create_referenced ()">hb_ft_font_create_referenced</a>, function in <a class="link" href="harfbuzz-hb-ft.html" title="hb-ft">hb-ft</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-ft.html#hb-ft-font-get-face" title="hb_ft_font_get_face ()">hb_ft_font_get_face</a>, function in <a class="link" href="harfbuzz-hb-ft.html" title="hb-ft">hb-ft</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-ft.html#hb-ft-font-get-load-flags" title="hb_ft_font_get_load_flags ()">hb_ft_font_get_load_flags</a>, function in <a class="link" href="harfbuzz-hb-ft.html" title="hb-ft">hb-ft</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-ft.html#hb-ft-font-set-funcs" title="hb_ft_font_set_funcs ()">hb_ft_font_set_funcs</a>, function in <a class="link" href="harfbuzz-hb-ft.html" title="hb-ft">hb-ft</a>
</dt>
<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-ft.html#hb-ft-font-set-load-flags" title="hb_ft_font_set_load_flags ()">hb_ft_font_set_load_flags</a>, function in <a class="link" href="harfbuzz-hb-ft.html" title="hb-ft">hb-ft</a>
-</dt>
-<dd></dd>
<a name="idxG"></a><h3 class="title">G</h3>
<dt>
-<a class="link" href="harfbuzz-hb-glib.html#hb-glib-blob-create" title="hb_glib_blob_create ()">hb_glib_blob_create</a>, function in <a class="link" href="harfbuzz-hb-glib.html" title="hb-glib">hb-glib</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-glib.html#hb-glib-get-unicode-funcs" title="hb_glib_get_unicode_funcs ()">hb_glib_get_unicode_funcs</a>, function in <a class="link" href="harfbuzz-hb-glib.html" title="hb-glib">hb-glib</a>
</dt>
<dd></dd>
@@ -872,203 +784,11 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t-struct" title="hb_glyph_info_t">hb_glyph_info_t</a>, struct in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-glyph-position-t-struct" title="hb_glyph_position_t">hb_glyph_position_t</a>, struct in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-blob-get-type" title="hb_gobject_blob_get_type ()">hb_gobject_blob_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-buffer-cluster-level-get-type" title="hb_gobject_buffer_cluster_level_get_type ()">hb_gobject_buffer_cluster_level_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-buffer-content-type-get-type" title="hb_gobject_buffer_content_type_get_type ()">hb_gobject_buffer_content_type_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-buffer-flags-get-type" title="hb_gobject_buffer_flags_get_type ()">hb_gobject_buffer_flags_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-buffer-get-type" title="hb_gobject_buffer_get_type ()">hb_gobject_buffer_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-buffer-serialize-flags-get-type" title="hb_gobject_buffer_serialize_flags_get_type ()">hb_gobject_buffer_serialize_flags_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-buffer-serialize-format-get-type" title="hb_gobject_buffer_serialize_format_get_type ()">hb_gobject_buffer_serialize_format_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-direction-get-type" title="hb_gobject_direction_get_type ()">hb_gobject_direction_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-face-get-type" title="hb_gobject_face_get_type ()">hb_gobject_face_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-feature-get-type" title="hb_gobject_feature_get_type ()">hb_gobject_feature_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t-struct" title="hb_glyph_info_t">hb_glyph_info_t</a>, struct in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-font-funcs-get-type" title="hb_gobject_font_funcs_get_type ()">hb_gobject_font_funcs_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-font-get-type" title="hb_gobject_font_get_type ()">hb_gobject_font_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-glyph-info-get-type" title="hb_gobject_glyph_info_get_type ()">hb_gobject_glyph_info_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-glyph-position-get-type" title="hb_gobject_glyph_position_get_type ()">hb_gobject_glyph_position_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-memory-mode-get-type" title="hb_gobject_memory_mode_get_type ()">hb_gobject_memory_mode_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-ot-layout-glyph-class-get-type" title="hb_gobject_ot_layout_glyph_class_get_type ()">hb_gobject_ot_layout_glyph_class_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-script-get-type" title="hb_gobject_script_get_type ()">hb_gobject_script_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-segment-properties-get-type" title="hb_gobject_segment_properties_get_type ()">hb_gobject_segment_properties_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-set-get-type" title="hb_gobject_set_get_type ()">hb_gobject_set_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-shape-plan-get-type" title="hb_gobject_shape_plan_get_type ()">hb_gobject_shape_plan_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BLOB:CAPS" title="HB_GOBJECT_TYPE_BLOB">HB_GOBJECT_TYPE_BLOB</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER:CAPS" title="HB_GOBJECT_TYPE_BUFFER">HB_GOBJECT_TYPE_BUFFER</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER-CLUSTER-LEVEL:CAPS" title="HB_GOBJECT_TYPE_BUFFER_CLUSTER_LEVEL">HB_GOBJECT_TYPE_BUFFER_CLUSTER_LEVEL</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER-CONTENT-TYPE:CAPS" title="HB_GOBJECT_TYPE_BUFFER_CONTENT_TYPE">HB_GOBJECT_TYPE_BUFFER_CONTENT_TYPE</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER-FLAGS:CAPS" title="HB_GOBJECT_TYPE_BUFFER_FLAGS">HB_GOBJECT_TYPE_BUFFER_FLAGS</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER-SERIALIZE-FLAGS:CAPS" title="HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FLAGS">HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FLAGS</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-BUFFER-SERIALIZE-FORMAT:CAPS" title="HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FORMAT">HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FORMAT</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-DIRECTION:CAPS" title="HB_GOBJECT_TYPE_DIRECTION">HB_GOBJECT_TYPE_DIRECTION</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-FACE:CAPS" title="HB_GOBJECT_TYPE_FACE">HB_GOBJECT_TYPE_FACE</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-FEATURE:CAPS" title="HB_GOBJECT_TYPE_FEATURE">HB_GOBJECT_TYPE_FEATURE</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-FONT:CAPS" title="HB_GOBJECT_TYPE_FONT">HB_GOBJECT_TYPE_FONT</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-FONT-FUNCS:CAPS" title="HB_GOBJECT_TYPE_FONT_FUNCS">HB_GOBJECT_TYPE_FONT_FUNCS</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-GLYPH-INFO:CAPS" title="HB_GOBJECT_TYPE_GLYPH_INFO">HB_GOBJECT_TYPE_GLYPH_INFO</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-GLYPH-POSITION:CAPS" title="HB_GOBJECT_TYPE_GLYPH_POSITION">HB_GOBJECT_TYPE_GLYPH_POSITION</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-MEMORY-MODE:CAPS" title="HB_GOBJECT_TYPE_MEMORY_MODE">HB_GOBJECT_TYPE_MEMORY_MODE</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-OT-LAYOUT-GLYPH-CLASS:CAPS" title="HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS">HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-SCRIPT:CAPS" title="HB_GOBJECT_TYPE_SCRIPT">HB_GOBJECT_TYPE_SCRIPT</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-SEGMENT-PROPERTIES:CAPS" title="HB_GOBJECT_TYPE_SEGMENT_PROPERTIES">HB_GOBJECT_TYPE_SEGMENT_PROPERTIES</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-SET:CAPS" title="HB_GOBJECT_TYPE_SET">HB_GOBJECT_TYPE_SET</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-SHAPE-PLAN:CAPS" title="HB_GOBJECT_TYPE_SHAPE_PLAN">HB_GOBJECT_TYPE_SHAPE_PLAN</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-UNICODE-COMBINING-CLASS:CAPS" title="HB_GOBJECT_TYPE_UNICODE_COMBINING_CLASS">HB_GOBJECT_TYPE_UNICODE_COMBINING_CLASS</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-UNICODE-FUNCS:CAPS" title="HB_GOBJECT_TYPE_UNICODE_FUNCS">HB_GOBJECT_TYPE_UNICODE_FUNCS</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-UNICODE-GENERAL-CATEGORY:CAPS" title="HB_GOBJECT_TYPE_UNICODE_GENERAL_CATEGORY">HB_GOBJECT_TYPE_UNICODE_GENERAL_CATEGORY</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-USER-DATA-KEY:CAPS" title="HB_GOBJECT_TYPE_USER_DATA_KEY">HB_GOBJECT_TYPE_USER_DATA_KEY</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-unicode-combining-class-get-type" title="hb_gobject_unicode_combining_class_get_type ()">hb_gobject_unicode_combining_class_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-unicode-funcs-get-type" title="hb_gobject_unicode_funcs_get_type ()">hb_gobject_unicode_funcs_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-unicode-general-category-get-type" title="hb_gobject_unicode_general_category_get_type ()">hb_gobject_unicode_general_category_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-user-data-key-get-type" title="hb_gobject_user_data_key_get_type ()">hb_gobject_user_data_key_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t-struct" title="hb_glyph_position_t">hb_glyph_position_t</a>, struct in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
@@ -1110,7 +830,7 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t">hb_language_t</a>, typedef in <a class="link" href="harfbuzz-hb-common.html" title="hb-common">hb-common</a>
+<a class="link" href="harfbuzz-hb-common.html#hb-language-t">hb_language_t</a>, typedef in <a class="link" href="harfbuzz-hb-common.html" title="hb-common">hb-common</a>
</dt>
<dd></dd>
<dt>
@@ -1128,7 +848,7 @@
<dd></dd>
<a name="idxO"></a><h3 class="title">O</h3>
<dt>
-<a class="link" href="harfbuzz-hb-ot-font.html#hb-ot-font-set-funcs" title="hb_ot_font_set_funcs ()">hb_ot_font_set_funcs</a>, function in <a class="link" href="harfbuzz-hb-ot-font.html" title="hb-ot-font">hb-ot-font</a>
+hb_ot_font_set_funcs, function in hb-ot-font
</dt>
<dd></dd>
<dt>
@@ -1200,10 +920,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-language-get-required-feature-index" title="hb_ot_layout_language_get_required_feature_index ()">hb_ot_layout_language_get_required_feature_index</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-lookup-collect-glyphs" title="hb_ot_layout_lookup_collect_glyphs ()">hb_ot_layout_lookup_collect_glyphs</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
</dt>
<dd></dd>
@@ -1252,7 +968,7 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-ot-shape.html#hb-ot-shape-glyphs-closure" title="hb_ot_shape_glyphs_closure ()">hb_ot_shape_glyphs_closure</a>, function in <a class="link" href="harfbuzz-hb-ot-shape.html" title="hb-ot-shape">hb-ot-shape</a>
+hb_ot_shape_glyphs_closure, function in hb-ot-shape
</dt>
<dd></dd>
<dt>
@@ -1288,10 +1004,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-JSTF:CAPS" title="HB_OT_TAG_JSTF">HB_OT_TAG_JSTF</a>, macro in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-ot-tag.html#hb-ot-tag-to-language" title="hb_ot_tag_to_language ()">hb_ot_tag_to_language</a>, function in <a class="link" href="harfbuzz-hb-ot-tag.html" title="hb-ot-tag">hb-ot-tag</a>
</dt>
<dd></dd>
@@ -1335,19 +1047,19 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#HB-SEGMENT-PROPERTIES-DEFAULT:CAPS" title="HB_SEGMENT_PROPERTIES_DEFAULT">HB_SEGMENT_PROPERTIES_DEFAULT</a>, macro in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#HB-SEGMENT-PROPERTIES-DEFAULT:CAPS" title="HB_SEGMENT_PROPERTIES_DEFAULT">HB_SEGMENT_PROPERTIES_DEFAULT</a>, macro in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-equal" title="hb_segment_properties_equal ()">hb_segment_properties_equal</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-equal" title="hb_segment_properties_equal ()">hb_segment_properties_equal</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-hash" title="hb_segment_properties_hash ()">hb_segment_properties_hash</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-hash" title="hb_segment_properties_hash ()">hb_segment_properties_hash</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t-struct" title="hb_segment_properties_t">hb_segment_properties_t</a>, struct in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t-struct" title="hb_segment_properties_t">hb_segment_properties_t</a>, struct in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
@@ -1463,15 +1175,15 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-shape" title="hb_shape ()">hb_shape</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
+<a class="link" href="harfbuzz-hb-shape.html#hb-shape" title="hb_shape ()">hb_shape</a>, function in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-shape-full" title="hb_shape_full ()">hb_shape_full</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
+<a class="link" href="harfbuzz-hb-shape.html#hb-shape-full" title="hb_shape_full ()">hb_shape_full</a>, function in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-shape-list-shapers" title="hb_shape_list_shapers ()">hb_shape_list_shapers</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
+<a class="link" href="harfbuzz-hb-shape.html#hb-shape-list-shapers" title="hb_shape_list_shapers ()">hb_shape_list_shapers</a>, function in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
</dt>
<dd></dd>
<dt>
@@ -1528,10 +1240,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-common.html#HB-TAG-MAX-SIGNED:CAPS" title="HB_TAG_MAX_SIGNED">HB_TAG_MAX_SIGNED</a>, macro in <a class="link" href="harfbuzz-hb-common.html" title="hb-common">hb-common</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-common.html#HB-TAG-NONE:CAPS" title="HB_TAG_NONE">HB_TAG_NONE</a>, macro in <a class="link" href="harfbuzz-hb-common.html" title="hb-common">hb-common</a>
</dt>
<dd></dd>
@@ -1714,14 +1422,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-version.html#HB-VERSION-ATLEAST:CAPS" title="HB_VERSION_ATLEAST()">HB_VERSION_ATLEAST</a>, macro in <a class="link" href="harfbuzz-hb-version.html" title="hb-version">hb-version</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-version.html#hb-version-atleast" title="hb_version_atleast ()">hb_version_atleast</a>, function in <a class="link" href="harfbuzz-hb-version.html" title="hb-version">hb-version</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-version.html#HB-VERSION-MAJOR:CAPS" title="HB_VERSION_MAJOR">HB_VERSION_MAJOR</a>, macro in <a class="link" href="harfbuzz-hb-version.html" title="hb-version">hb-version</a>
</dt>
<dd></dd>
@@ -1743,6 +1443,7 @@
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/ch07.html b/docs/reference/html/ch01.html
index 69fe962..a86abae 100644
--- a/docs/html/ch07.html
+++ b/docs/reference/html/ch01.html
@@ -2,27 +2,27 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Harfbuzz API: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="pt02.html" title="Part II. Reference manual">
+<title>[Insert title here]</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="prev" href="index.html" title="HarfBuzz Reference Manual">
<link rel="next" href="harfbuzz-hb.html" title="hb">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="pt02.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
+<td><a accesskey="p" href="index.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
-<a name="id-1.3.3"></a>Harfbuzz API</h2></div></div></div>
-<div class="toc"><dl class="toc">
+<a name="idp8290832"></a>[Insert title here]</h2></div></div></div>
+<div class="toc"><dl>
<dt>
<span class="refentrytitle"><a href="harfbuzz-hb.html">hb</a></span><span class="refpurpose"></span>
</dt>
@@ -33,7 +33,7 @@
<span class="refentrytitle"><a href="harfbuzz-hb-unicode.html">hb-unicode</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-Buffers.html">Buffers</a></span><span class="refpurpose"> — Input and output buffers</span>
+<span class="refentrytitle"><a href="harfbuzz-hb-buffer.html">hb-buffer</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="harfbuzz-hb-blob.html">hb-blob</a></span><span class="refpurpose"></span>
@@ -45,7 +45,7 @@
<span class="refentrytitle"><a href="harfbuzz-hb-font.html">hb-font</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-Shaping.html">Shaping</a></span><span class="refpurpose"> — Conversion of text strings into positioned glyphs</span>
+<span class="refentrytitle"><a href="harfbuzz-hb-shape.html">hb-shape</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="harfbuzz-hb-version.html">hb-version</a></span><span class="refpurpose"></span>
@@ -66,12 +66,6 @@
<span class="refentrytitle"><a href="harfbuzz-hb-ot-tag.html">hb-ot-tag</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-font.html">hb-ot-font</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-shape.html">hb-ot-shape</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
<span class="refentrytitle"><a href="harfbuzz-hb-shape-plan.html">hb-shape-plan</a></span><span class="refpurpose"></span>
</dt>
<dt>
@@ -98,6 +92,7 @@
</dl></div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/deprecated-api-index.html b/docs/reference/html/deprecated-api-index.html
index 5b5bfbc..3ccc21a 100644
--- a/docs/html/deprecated-api-index.html
+++ b/docs/reference/html/deprecated-api-index.html
@@ -2,25 +2,23 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index of deprecated API: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-1-1-3.html" title="Index of new symbols in 1.1.3">
+<title>Index of deprecated API</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="prev" href="api-index-full.html" title="API Index">
<link rel="next" href="annotation-glossary.html" title="Annotation Glossary">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</a>
 <span class="dim">|</span> 
- <a class="shortcut" href="#idxF">F</a>
-  <span class="dim">|</span> 
<a class="shortcut" href="#idxS">S</a></span></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-1-1-3.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
+<td><a accesskey="p" href="api-index-full.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="annotation-glossary.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
@@ -35,15 +33,6 @@
<a class="link" href="harfbuzz-hb-deprecated.html#HB-BUFFER-SERIALIZE-FLAGS-DEFAULT:CAPS" title="HB_BUFFER_SERIALIZE_FLAGS_DEFAULT">HB_BUFFER_SERIALIZE_FLAGS_DEFAULT</a>, macro in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
-<a name="idxF"></a><h3 class="title">F</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-func" title="hb_font_funcs_set_glyph_func ()">hb_font_funcs_set_glyph_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-func-t" title="hb_font_get_glyph_func_t ()">hb_font_get_glyph_func_t</a>, user_function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
-</dt>
-<dd></dd>
<a name="idxS"></a><h3 class="title">S</h3>
<dt>
<a class="link" href="harfbuzz-hb-deprecated.html#HB-SCRIPT-CANADIAN-ABORIGINAL:CAPS" title="HB_SCRIPT_CANADIAN_ABORIGINAL">HB_SCRIPT_CANADIAN_ABORIGINAL</a>, macro in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
@@ -51,6 +40,7 @@
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-blob.html b/docs/reference/html/harfbuzz-hb-blob.html
index fa54243..b7f9a12 100644
--- a/docs/html/harfbuzz-hb-blob.html
+++ b/docs/reference/html/harfbuzz-hb-blob.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-blob: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
-<link rel="prev" href="harfbuzz-Buffers.html" title="Buffers">
+<title>hb-blob</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
+<link rel="prev" href="harfbuzz-hb-buffer.html" title="hb-buffer">
<link rel="next" href="harfbuzz-hb-face.html" title="hb-face">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,8 +19,8 @@
<a href="#harfbuzz-hb-blob.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-Buffers.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-buffer.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb-face.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
@@ -158,14 +158,16 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-blob.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+<pre class="screen"> GBoxed
<span class="lineart">╰──</span> hb_blob_t
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
+ GEnum
<span class="lineart">╰──</span> hb_memory_mode_t
</pre>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-blob.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-blob.functions_details"></a><h2>Functions</h2>
@@ -182,9 +184,8 @@ hb_blob_create (<em class="parameter"><code>const <span class="type">char</span>
parameter is used
to negotiate ownership and lifecycle of <em class="parameter"><code>data</code></em>
.</p>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-blob-create.parameters"></a><h4>Parameters</h4>
+<a name="idp17456912"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -225,12 +226,13 @@ is not needed anymore.</p></td>
</table></div>
</div>
<div class="refsect3">
-<a name="hb-blob-create.returns"></a><h4>Returns</h4>
+<a name="idp18906304"></a><h4>Returns</h4>
<p> New blob, or the empty blob if something failed or if <em class="parameter"><code>length</code></em>
is
zero. Destroy with <a class="link" href="harfbuzz-hb-blob.html#hb-blob-destroy" title="hb_blob_destroy ()"><code class="function">hb_blob_destroy()</code></a>.</p>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -248,7 +250,7 @@ is.</p>
<p>Makes <em class="parameter"><code>parent</code></em>
immutable.</p>
<div class="refsect3">
-<a name="hb-blob-create-sub-blob.parameters"></a><h4>Parameters</h4>
+<a name="idp13979952"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -276,15 +278,16 @@ is.</p>
</table></div>
</div>
<div class="refsect3">
-<a name="hb-blob-create-sub-blob.returns"></a><h4>Returns</h4>
+<a name="idp20653328"></a><h4>Returns</h4>
<p> New blob, or the empty blob if something failed or if
<em class="parameter"><code>length</code></em>
is zero or <em class="parameter"><code>offset</code></em>
is beyond the end of <em class="parameter"><code>parent</code></em>
's data. Destroy
with <a class="link" href="harfbuzz-hb-blob.html#hb-blob-destroy" title="hb_blob_destroy ()"><code class="function">hb_blob_destroy()</code></a>.</p>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -297,9 +300,8 @@ hb_blob_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-b
, freeing all memory, possibly calling the destroy-callback the blob
was created for if it has not been called already.</p>
<p>See TODO:link object types for more information.</p>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-blob-destroy.parameters"></a><h4>Parameters</h4>
+<a name="idp21977536"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -313,7 +315,7 @@ was created for if it has not been called already.</p>
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -322,7 +324,7 @@ was created for if it has not been called already.</p>
hb_blob_get_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t"><span class="type">hb_blob_t</span></a> *blob</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *length</code></em>);</pre>
<div class="refsect3">
-<a name="hb-blob-get-data.parameters"></a><h4>Parameters</h4>
+<a name="idp21995504"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -344,11 +346,11 @@ hb_blob_get_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
</table></div>
</div>
<div class="refsect3">
-<a name="hb-blob-get-data.returns"></a><h4>Returns</h4>
+<a name="idp22007616"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=length]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -361,7 +363,7 @@ return pointer to data.</p>
<p>Fails if blob has been made immutable, or if memory allocation
fails.</p>
<div class="refsect3">
-<a name="hb-blob-get-data-writable.parameters"></a><h4>Parameters</h4>
+<a name="idp22021568"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -383,12 +385,12 @@ fails.</p>
</table></div>
</div>
<div class="refsect3">
-<a name="hb-blob-get-data-writable.returns"></a><h4>Returns</h4>
+<a name="idp22033696"></a><h4>Returns</h4>
<p> Writable blob data,
or <code class="literal">NULL</code> if failed. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=length]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -398,11 +400,11 @@ hb_blob_get_empty (<em class="parameter"><code><span class="type">void</span></c
<p>Returns the singleton empty blob.</p>
<p>See TODO:link object types for more information.</p>
<div class="refsect3">
-<a name="hb-blob-get-empty.returns"></a><h4>Returns</h4>
+<a name="idp22046512"></a><h4>Returns</h4>
<p> the empty blob. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -410,7 +412,7 @@ hb_blob_get_empty (<em class="parameter"><code><span class="type">void</span></c
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
hb_blob_get_length (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t"><span class="type">hb_blob_t</span></a> *blob</code></em>);</pre>
<div class="refsect3">
-<a name="hb-blob-get-length.parameters"></a><h4>Parameters</h4>
+<a name="idp22057312"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -425,10 +427,11 @@ hb_blob_get_length (<em class="parameter"><code><a class="link" href="harfbuzz-h
</table></div>
</div>
<div class="refsect3">
-<a name="hb-blob-get-length.returns"></a><h4>Returns</h4>
+<a name="idp22065712"></a><h4>Returns</h4>
<p> the length of blob data in bytes.</p>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -436,9 +439,8 @@ hb_blob_get_length (<em class="parameter"><code><a class="link" href="harfbuzz-h
<pre class="programlisting"><span class="returnvalue">void</span> *
hb_blob_get_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t"><span class="type">hb_blob_t</span></a> *blob</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-blob-get-user-data.parameters"></a><h4>Parameters</h4>
+<a name="idp22076912"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -460,11 +462,11 @@ hb_blob_get_user_data (<em class="parameter"><code><a class="link" href="harfbuz
</table></div>
</div>
<div class="refsect3">
-<a name="hb-blob-get-user-data.returns"></a><h4>Returns</h4>
+<a name="idp22087920"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -472,7 +474,7 @@ hb_blob_get_user_data (<em class="parameter"><code><a class="link" href="harfbuz
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
hb_blob_is_immutable (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t"><span class="type">hb_blob_t</span></a> *blob</code></em>);</pre>
<div class="refsect3">
-<a name="hb-blob-is-immutable.parameters"></a><h4>Parameters</h4>
+<a name="idp22098576"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -487,10 +489,11 @@ hb_blob_is_immutable (<em class="parameter"><code><a class="link" href="harfbuzz
</table></div>
</div>
<div class="refsect3">
-<a name="hb-blob-is-immutable.returns"></a><h4>Returns</h4>
+<a name="idp21531488"></a><h4>Returns</h4>
<p> TODO</p>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -498,7 +501,7 @@ hb_blob_is_immutable (<em class="parameter"><code><a class="link" href="harfbuzz
<pre class="programlisting"><span class="returnvalue">void</span>
hb_blob_make_immutable (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t"><span class="type">hb_blob_t</span></a> *blob</code></em>);</pre>
<div class="refsect3">
-<a name="hb-blob-make-immutable.parameters"></a><h4>Parameters</h4>
+<a name="idp21541040"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -512,7 +515,7 @@ hb_blob_make_immutable (<em class="parameter"><code><a class="link" href="harfbu
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -522,9 +525,8 @@ hb_blob_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb
<p>Increases the reference count on <em class="parameter"><code>blob</code></em>
.</p>
<p>See TODO:link object types for more information.</p>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-blob-reference.parameters"></a><h4>Parameters</h4>
+<a name="idp21558896"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -539,11 +541,12 @@ hb_blob_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb
</table></div>
</div>
<div class="refsect3">
-<a name="hb-blob-reference.returns"></a><h4>Returns</h4>
+<a name="idp21567296"></a><h4>Returns</h4>
<p> <em class="parameter"><code>blob</code></em>
.</p>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -554,9 +557,8 @@ hb_blob_set_user_data (<em class="parameter"><code><a class="link" href="harfbuz
<em class="parameter"><code><span class="type">void</span> *data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="type">hb_bool_t</span></a> replace</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-blob-set-user-data.parameters"></a><h4>Parameters</h4>
+<a name="idp21584240"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -593,7 +595,11 @@ is not needed anymore.</p></td>
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp21603920"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
</div>
<div class="refsect1">
@@ -602,12 +608,16 @@ is not needed anymore.</p></td>
<a name="hb-blob-t"></a><h3>hb_blob_t</h3>
<pre class="programlisting">typedef struct hb_blob_t hb_blob_t;
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-memory-mode-t"></a><h3>enum hb_memory_mode_t</h3>
+<p>
+</p>
<div class="refsect3">
-<a name="hb-memory-mode-t.members"></a><h4>Members</h4>
+<a name="idp21615792"></a><h4>Members</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="300px" class="enum_members_name">
@@ -617,23 +627,23 @@ is not needed anymore.</p></td>
<tbody>
<tr>
<td class="enum_member_name"><p><a name="HB-MEMORY-MODE-DUPLICATE:CAPS"></a>HB_MEMORY_MODE_DUPLICATE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-MEMORY-MODE-READONLY:CAPS"></a>HB_MEMORY_MODE_READONLY</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-MEMORY-MODE-WRITABLE:CAPS"></a>HB_MEMORY_MODE_WRITABLE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-MEMORY-MODE-READONLY-MAY-MAKE-WRITABLE:CAPS"></a>HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
</table></div>
@@ -642,6 +652,7 @@ is not needed anymore.</p></td>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/reference/html/harfbuzz-hb-buffer.html b/docs/reference/html/harfbuzz-hb-buffer.html
new file mode 100644
index 0000000..0c32fc8
--- /dev/null
+++ b/docs/reference/html/harfbuzz-hb-buffer.html
@@ -0,0 +1,1780 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>hb-buffer</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
+<link rel="prev" href="harfbuzz-hb-unicode.html" title="hb-unicode">
+<link rel="next" href="harfbuzz-hb-blob.html" title="hb-blob">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#harfbuzz-hb-buffer.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+ <a href="#harfbuzz-hb-buffer.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-unicode.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-blob.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="harfbuzz-hb-buffer"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="harfbuzz-hb-buffer.top_of_page"></a>hb-buffer</span></h2>
+<p>hb-buffer</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="harfbuzz-hb-buffer.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add" title="hb_buffer_add ()">hb_buffer_add</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf16" title="hb_buffer_add_utf16 ()">hb_buffer_add_utf16</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf32" title="hb_buffer_add_utf32 ()">hb_buffer_add_utf32</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf8" title="hb_buffer_add_utf8 ()">hb_buffer_add_utf8</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()">hb_buffer_add_codepoints</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-allocation-successful" title="hb_buffer_allocation_successful ()">hb_buffer_allocation_successful</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-clear-contents" title="hb_buffer_clear_contents ()">hb_buffer_clear_contents</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-create" title="hb_buffer_create ()">hb_buffer_create</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-deserialize-glyphs" title="hb_buffer_deserialize_glyphs ()">hb_buffer_deserialize_glyphs</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-destroy" title="hb_buffer_destroy ()">hb_buffer_destroy</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t"><span class="returnvalue">hb_buffer_content_type_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-content-type" title="hb_buffer_get_content_type ()">hb_buffer_get_content_type</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="returnvalue">hb_direction_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-direction" title="hb_buffer_get_direction ()">hb_buffer_get_direction</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-empty" title="hb_buffer_get_empty ()">hb_buffer_get_empty</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="returnvalue">hb_buffer_flags_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-flags" title="hb_buffer_get_flags ()">hb_buffer_get_flags</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t"><span class="returnvalue">hb_glyph_info_t</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-glyph-infos" title="hb_buffer_get_glyph_infos ()">hb_buffer_get_glyph_infos</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t"><span class="returnvalue">hb_glyph_position_t</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-glyph-positions" title="hb_buffer_get_glyph_positions ()">hb_buffer_get_glyph_positions</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-language-t"><span class="returnvalue">hb_language_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-language" title="hb_buffer_get_language ()">hb_buffer_get_language</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">unsigned <span class="returnvalue">int</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-length" title="hb_buffer_get_length ()">hb_buffer_get_length</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="returnvalue">hb_codepoint_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-replacement-codepoint" title="hb_buffer_get_replacement_codepoint ()">hb_buffer_get_replacement_codepoint</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-script" title="hb_buffer_get_script ()">hb_buffer_get_script</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-segment-properties" title="hb_buffer_get_segment_properties ()">hb_buffer_get_segment_properties</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="returnvalue">hb_unicode_funcs_t</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-unicode-funcs" title="hb_buffer_get_unicode_funcs ()">hb_buffer_get_unicode_funcs</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span> *
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-user-data" title="hb_buffer_get_user_data ()">hb_buffer_get_user_data</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-guess-segment-properties" title="hb_buffer_guess_segment_properties ()">hb_buffer_guess_segment_properties</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-normalize-glyphs" title="hb_buffer_normalize_glyphs ()">hb_buffer_normalize_glyphs</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-pre-allocate" title="hb_buffer_pre_allocate ()">hb_buffer_pre_allocate</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reference" title="hb_buffer_reference ()">hb_buffer_reference</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reset" title="hb_buffer_reset ()">hb_buffer_reset</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reverse" title="hb_buffer_reverse ()">hb_buffer_reverse</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reverse-clusters" title="hb_buffer_reverse_clusters ()">hb_buffer_reverse_clusters</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="returnvalue">hb_buffer_serialize_format_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-from-string" title="hb_buffer_serialize_format_from_string ()">hb_buffer_serialize_format_from_string</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <span class="returnvalue">char</span> *
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-to-string" title="hb_buffer_serialize_format_to_string ()">hb_buffer_serialize_format_to_string</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">unsigned <span class="returnvalue">int</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()">hb_buffer_serialize_glyphs</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <span class="returnvalue">char</span> **
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-list-formats" title="hb_buffer_serialize_list_formats ()">hb_buffer_serialize_list_formats</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-content-type" title="hb_buffer_set_content_type ()">hb_buffer_set_content_type</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()">hb_buffer_set_direction</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-flags" title="hb_buffer_set_flags ()">hb_buffer_set_flags</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-language" title="hb_buffer_set_language ()">hb_buffer_set_language</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-length" title="hb_buffer_set_length ()">hb_buffer_set_length</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()">hb_buffer_set_replacement_codepoint</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-script" title="hb_buffer_set_script ()">hb_buffer_set_script</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-segment-properties" title="hb_buffer_set_segment_properties ()">hb_buffer_set_segment_properties</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-unicode-funcs" title="hb_buffer_set_unicode_funcs ()">hb_buffer_set_unicode_funcs</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-user-data" title="hb_buffer_set_user_data ()">hb_buffer_set_user_data</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-equal" title="hb_segment_properties_equal ()">hb_segment_properties_equal</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">unsigned <span class="returnvalue">int</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-hash" title="hb_segment_properties_hash ()">hb_segment_properties_hash</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="hb-buffer-t"></a><a name="hb-glyph-info-t"></a><a name="hb-glyph-position-t"></a><a name="hb-segment-properties-t"></a><div class="refsect1">
+<a name="harfbuzz-hb-buffer.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#HB-SEGMENT-PROPERTIES-DEFAULT:CAPS" title="HB_SEGMENT_PROPERTIES_DEFAULT">HB_SEGMENT_PROPERTIES_DEFAULT</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t">hb_buffer_content_type_t</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t">hb_buffer_flags_t</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t">hb_buffer_serialize_flags_t</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t">hb_buffer_serialize_format_t</a></td>
+</tr>
+<tr>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t">hb_buffer_t</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t-struct" title="hb_glyph_info_t">hb_glyph_info_t</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t-struct" title="hb_glyph_position_t">hb_glyph_position_t</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t-struct" title="hb_segment_properties_t">hb_segment_properties_t</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-buffer.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> GBoxed
+ <span class="lineart">├──</span> hb_buffer_t
+ <span class="lineart">├──</span> hb_glyph_info_t
+ <span class="lineart">├──</span> hb_glyph_position_t
+ <span class="lineart">╰──</span> hb_segment_properties_t
+ GEnum
+ <span class="lineart">├──</span> hb_buffer_content_type_t
+ <span class="lineart">╰──</span> hb_buffer_serialize_format_t
+ GFlags
+ <span class="lineart">├──</span> hb_buffer_flags_t
+ <span class="lineart">╰──</span> hb_buffer_serialize_flags_t
+</pre>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-buffer.description"></a><h2>Description</h2>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-buffer.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="hb-buffer-add"></a><h3>hb_buffer_add ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_add (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> codepoint</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> cluster</code></em>);</pre>
+<div class="refsect3">
+<a name="idp20358224"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-add-utf16"></a><h3>hb_buffer_add_utf16 ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_add_utf16 (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>const <span class="type">uint16_t</span> *text</code></em>,
+ <em class="parameter"><code><span class="type">int</span> text_length</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
+ <em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
+<div class="refsect3">
+<a name="idp20381120"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>text</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-add-utf32"></a><h3>hb_buffer_add_utf32 ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_add_utf32 (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>const <span class="type">uint32_t</span> *text</code></em>,
+ <em class="parameter"><code><span class="type">int</span> text_length</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
+ <em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
+<div class="refsect3">
+<a name="idp20407728"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>text</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-add-utf8"></a><h3>hb_buffer_add_utf8 ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_add_utf8 (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *text</code></em>,
+ <em class="parameter"><code><span class="type">int</span> text_length</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
+ <em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
+<div class="refsect3">
+<a name="idp20434256"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>text</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-add-codepoints"></a><h3>hb_buffer_add_codepoints ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_add_codepoints (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *text</code></em>,
+ <em class="parameter"><code><span class="type">int</span> text_length</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
+ <em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-allocation-successful"></a><h3>hb_buffer_allocation_successful ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
+hb_buffer_allocation_successful (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<div class="refsect3">
+<a name="idp20469136"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp20477536"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-clear-contents"></a><h3>hb_buffer_clear_contents ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_clear_contents (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<div class="refsect3">
+<a name="idp20486656"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-create"></a><h3>hb_buffer_create ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
+hb_buffer_create (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp20501968"></a><h4>Returns</h4>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-deserialize-glyphs"></a><h3>hb_buffer_deserialize_glyphs ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
+hb_buffer_deserialize_glyphs (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> *buf</code></em>,
+ <em class="parameter"><code><span class="type">int</span> buf_len</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> **end_ptr</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>);</pre>
+<div class="refsect3">
+<a name="idp20519024"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=buf_len]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>end_ptr</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp22130896"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-destroy"></a><h3>hb_buffer_destroy ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22138688"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-get-content-type"></a><h3>hb_buffer_get_content_type ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t"><span class="returnvalue">hb_buffer_content_type_t</span></a>
+hb_buffer_get_content_type (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22152720"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp22160224"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-get-direction"></a><h3>hb_buffer_get_direction ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="returnvalue">hb_direction_t</span></a>
+hb_buffer_get_direction (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22168016"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp22175520"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-get-empty"></a><h3>hb_buffer_get_empty ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
+hb_buffer_get_empty (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<div class="refsect3">
+<a name="idp22182768"></a><h4>Returns</h4>
+<p>. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-get-flags"></a><h3>hb_buffer_get_flags ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="returnvalue">hb_buffer_flags_t</span></a>
+hb_buffer_get_flags (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22191968"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp22199472"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-get-glyph-infos"></a><h3>hb_buffer_get_glyph_infos ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t"><span class="returnvalue">hb_glyph_info_t</span></a> *
+hb_buffer_get_glyph_infos (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *length</code></em>);</pre>
+<p>Returns buffer glyph information array. Returned pointer
+is valid as long as buffer contents are not modified.</p>
+<div class="refsect3">
+<a name="idp22209216"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>length</p></td>
+<td class="parameter_description"><p> output array length. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp22220048"></a><h4>Returns</h4>
+<p> buffer glyph information array. </p>
+<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=length]</span></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-get-glyph-positions"></a><h3>hb_buffer_get_glyph_positions ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t"><span class="returnvalue">hb_glyph_position_t</span></a> *
+hb_buffer_get_glyph_positions (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *length</code></em>);</pre>
+<p>Returns buffer glyph position array. Returned pointer
+is valid as long as buffer contents are not modified.</p>
+<div class="refsect3">
+<a name="idp22231760"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>length</p></td>
+<td class="parameter_description"><p> output length. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp22242592"></a><h4>Returns</h4>
+<p> buffer glyph position array. </p>
+<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=length]</span></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-get-language"></a><h3>hb_buffer_get_language ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-language-t"><span class="returnvalue">hb_language_t</span></a>
+hb_buffer_get_language (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22252224"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp22259728"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-get-length"></a><h3>hb_buffer_get_length ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span>
+hb_buffer_get_length (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<p>Returns the number of items in the buffer.</p>
+<div class="refsect3">
+<a name="idp22268096"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp22275600"></a><h4>Returns</h4>
+<p> buffer length.</p>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-get-replacement-codepoint"></a><h3>hb_buffer_get_replacement_codepoint ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="returnvalue">hb_codepoint_t</span></a>
+hb_buffer_get_replacement_codepoint (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-get-script"></a><h3>hb_buffer_get_script ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
+hb_buffer_get_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22290352"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp22297856"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-get-segment-properties"></a><h3>hb_buffer_get_segment_properties ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_get_segment_properties (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22307024"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-get-unicode-funcs"></a><h3>hb_buffer_get_unicode_funcs ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="returnvalue">hb_unicode_funcs_t</span></a> *
+hb_buffer_get_unicode_funcs (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22321056"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp22328560"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-get-user-data"></a><h3>hb_buffer_get_user_data ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> *
+hb_buffer_get_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22337728"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp22345232"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-guess-segment-properties"></a><h3>hb_buffer_guess_segment_properties ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_guess_segment_properties (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<p>Sets unset buffer segment properties based on buffer Unicode
+contents. If buffer is not empty, it must have content type
+<a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-CONTENT-TYPE-UNICODE:CAPS"><code class="literal">HB_BUFFER_CONTENT_TYPE_UNICODE</code></a>.</p>
+<p>If buffer script is not set (ie. is <a class="link" href="harfbuzz-hb-common.html#HB-SCRIPT-INVALID:CAPS"><code class="literal">HB_SCRIPT_INVALID</code></a>), it
+will be set to the Unicode script of the first character in
+the buffer that has a script other than <a class="link" href="harfbuzz-hb-common.html#HB-SCRIPT-COMMON:CAPS"><code class="literal">HB_SCRIPT_COMMON</code></a>,
+<a class="link" href="harfbuzz-hb-common.html#HB-SCRIPT-INHERITED:CAPS"><code class="literal">HB_SCRIPT_INHERITED</code></a>, and <a class="link" href="harfbuzz-hb-common.html#HB-SCRIPT-UNKNOWN:CAPS"><code class="literal">HB_SCRIPT_UNKNOWN</code></a>.</p>
+<p>Next, if buffer direction is not set (ie. is <a class="link" href="harfbuzz-hb-common.html#HB-DIRECTION-INVALID:CAPS"><code class="literal">HB_DIRECTION_INVALID</code></a>),
+it will be set to the natural horizontal direction of the
+buffer script as returned by <a class="link" href="harfbuzz-hb-common.html#hb-script-get-horizontal-direction" title="hb_script_get_horizontal_direction ()"><code class="function">hb_script_get_horizontal_direction()</code></a>.</p>
+<p>Finally, if buffer language is not set (ie. is <a class="link" href="harfbuzz-hb-common.html#HB-LANGUAGE-INVALID:CAPS" title="HB_LANGUAGE_INVALID"><code class="literal">HB_LANGUAGE_INVALID</code></a>),
+it will be set to the process's default language as returned by
+<a class="link" href="harfbuzz-hb-common.html#hb-language-get-default" title="hb_language_get_default ()"><code class="function">hb_language_get_default()</code></a>. This may change in the future by
+taking buffer script into consideration when choosing a language.</p>
+<div class="refsect3">
+<a name="idp22365040"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-normalize-glyphs"></a><h3>hb_buffer_normalize_glyphs ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_normalize_glyphs (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22379072"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-pre-allocate"></a><h3>hb_buffer_pre_allocate ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
+hb_buffer_pre_allocate (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> size</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22394624"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp22402128"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-reference"></a><h3>hb_buffer_reference ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
+hb_buffer_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22409920"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp22417424"></a><h4>Returns</h4>
+<p>. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-reset"></a><h3>hb_buffer_reset ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_reset (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22426624"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-reverse"></a><h3>hb_buffer_reverse ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_reverse (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<p>Reverses buffer contents.</p>
+<div class="refsect3">
+<a name="idp22441088"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-reverse-clusters"></a><h3>hb_buffer_reverse_clusters ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_reverse_clusters (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<p>Reverses buffer clusters. That is, the buffer contents are
+reversed, then each cluster (consecutive items having the
+same cluster number) are reversed again.</p>
+<div class="refsect3">
+<a name="idp22455728"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-serialize-format-from-string"></a><h3>hb_buffer_serialize_format_from_string ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="returnvalue">hb_buffer_serialize_format_t</span></a>
+hb_buffer_serialize_format_from_string
+ (<em class="parameter"><code>const <span class="type">char</span> *str</code></em>,
+ <em class="parameter"><code><span class="type">int</span> len</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22471280"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-serialize-format-to-string"></a><h3>hb_buffer_serialize_format_to_string ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> *
+hb_buffer_serialize_format_to_string (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22479216"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-serialize-glyphs"></a><h3>hb_buffer_serialize_glyphs ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span>
+hb_buffer_serialize_glyphs (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> start</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> end</code></em>,
+ <em class="parameter"><code><span class="type">char</span> *buf</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> buf_size</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *buf_consumed</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t"><span class="type">hb_buffer_serialize_flags_t</span></a> flags</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22498736"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=buf_size]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>buf_consumed</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp22512896"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-serialize-list-formats"></a><h3>hb_buffer_serialize_list_formats ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> **
+hb_buffer_serialize_list_formats (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<div class="refsect3">
+<a name="idp22520288"></a><h4>Returns</h4>
+<p>. </p>
+<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-set-content-type"></a><h3>hb_buffer_set_content_type ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_set_content_type (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t"><span class="type">hb_buffer_content_type_t</span></a> content_type</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22530864"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-set-direction"></a><h3>hb_buffer_set_direction ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_set_direction (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> direction</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22546272"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-set-flags"></a><h3>hb_buffer_set_flags ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_set_flags (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="type">hb_buffer_flags_t</span></a> flags</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22561680"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-set-language"></a><h3>hb_buffer_set_language ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_set_language (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-language-t"><span class="type">hb_language_t</span></a> language</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22577088"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-set-length"></a><h3>hb_buffer_set_length ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
+hb_buffer_set_length (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> length</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22592640"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp22600400"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-set-replacement-codepoint"></a><h3>hb_buffer_set_replacement_codepoint ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_set_replacement_codepoint (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> replacement</code></em>);</pre>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-set-script"></a><h3>hb_buffer_set_script ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_set_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> script</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22621216"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-set-segment-properties"></a><h3>hb_buffer_set_segment_properties ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_set_segment_properties (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22639536"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-set-unicode-funcs"></a><h3>hb_buffer_set_unicode_funcs ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_set_unicode_funcs (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *unicode_funcs</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22657648"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-set-user-data"></a><h3>hb_buffer_set_user_data ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
+hb_buffer_set_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="type">hb_bool_t</span></a> replace</code></em>);</pre>
+<div class="refsect3">
+<a name="idp22680784"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp22689184"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-segment-properties-equal"></a><h3>hb_segment_properties_equal ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
+hb_segment_properties_equal (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *a</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *b</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp22700656"></a><h4>Returns</h4>
+<p></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-segment-properties-hash"></a><h3>hb_segment_properties_hash ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span>
+hb_segment_properties_hash (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *p</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp22709792"></a><h4>Returns</h4>
+<p></p>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-buffer.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="HB-SEGMENT-PROPERTIES-DEFAULT:CAPS"></a><h3>HB_SEGMENT_PROPERTIES_DEFAULT</h3>
+<pre class="programlisting">#define HB_SEGMENT_PROPERTIES_DEFAULT</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-content-type-t"></a><h3>enum hb_buffer_content_type_t</h3>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp22721776"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="HB-BUFFER-CONTENT-TYPE-INVALID:CAPS"></a>HB_BUFFER_CONTENT_TYPE_INVALID</p></td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-BUFFER-CONTENT-TYPE-UNICODE:CAPS"></a>HB_BUFFER_CONTENT_TYPE_UNICODE</p></td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-BUFFER-CONTENT-TYPE-GLYPHS:CAPS"></a>HB_BUFFER_CONTENT_TYPE_GLYPHS</p></td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-flags-t"></a><h3>enum hb_buffer_flags_t</h3>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp22740960"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-DEFAULT:CAPS"></a>HB_BUFFER_FLAG_DEFAULT</p></td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-BOT:CAPS"></a>HB_BUFFER_FLAG_BOT</p></td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-EOT:CAPS"></a>HB_BUFFER_FLAG_EOT</p></td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-PRESERVE-DEFAULT-IGNORABLES:CAPS"></a>HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES</p></td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-serialize-flags-t"></a><h3>enum hb_buffer_serialize_flags_t</h3>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp22763504"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FLAG-DEFAULT:CAPS"></a>HB_BUFFER_SERIALIZE_FLAG_DEFAULT</p></td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FLAG-NO-CLUSTERS:CAPS"></a>HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS</p></td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FLAG-NO-POSITIONS:CAPS"></a>HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS</p></td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FLAG-NO-GLYPH-NAMES:CAPS"></a>HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES</p></td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-serialize-format-t"></a><h3>enum hb_buffer_serialize_format_t</h3>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp22786240"></a><h4>Members</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FORMAT-TEXT:CAPS"></a>HB_BUFFER_SERIALIZE_FORMAT_TEXT</p></td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FORMAT-JSON:CAPS"></a>HB_BUFFER_SERIALIZE_FORMAT_JSON</p></td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FORMAT-INVALID:CAPS"></a>HB_BUFFER_SERIALIZE_FORMAT_INVALID</p></td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-t"></a><h3>hb_buffer_t</h3>
+<pre class="programlisting">typedef struct hb_buffer_t hb_buffer_t;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-glyph-info-t-struct"></a><h3>hb_glyph_info_t</h3>
+<pre class="programlisting">typedef struct {
+ hb_codepoint_t codepoint;
+ hb_mask_t mask;
+ uint32_t cluster;
+} hb_glyph_info_t;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-glyph-position-t-struct"></a><h3>hb_glyph_position_t</h3>
+<pre class="programlisting">typedef struct {
+ hb_position_t x_advance;
+ hb_position_t y_advance;
+ hb_position_t x_offset;
+ hb_position_t y_offset;
+} hb_glyph_position_t;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-segment-properties-t-struct"></a><h3>hb_segment_properties_t</h3>
+<pre class="programlisting">typedef struct {
+ hb_direction_t direction;
+ hb_script_t script;
+ hb_language_t language;
+} hb_segment_properties_t;
+</pre>
+<p>
+</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-common.html b/docs/reference/html/harfbuzz-hb-common.html
index 064be6e..e2b1a8b 100644
--- a/docs/html/harfbuzz-hb-common.html
+++ b/docs/reference/html/harfbuzz-hb-common.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-common: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
+<title>hb-common</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
<link rel="prev" href="harfbuzz-hb.html" title="hb">
<link rel="next" href="harfbuzz-hb-unicode.html" title="hb-unicode">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,7 +19,7 @@
<a href="#harfbuzz-hb-common.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="harfbuzz-hb.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb-unicode.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
@@ -41,11 +41,25 @@
</colgroup>
<tbody>
<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="returnvalue">hb_tag_t</span></a>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-common.html#HB-DIRECTION-REVERSE:CAPS" title="HB_DIRECTION_REVERSE()">HB_DIRECTION_REVERSE</a><span class="c_punctuation">()</span>
</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-common.html#HB-LANGUAGE-INVALID:CAPS" title="HB_LANGUAGE_INVALID">HB_LANGUAGE_INVALID</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-common.html#hb-tag-from-string" title="hb_tag_from_string ()">hb_tag_from_string</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-common.html#HB-TAG:CAPS" title="HB_TAG()">HB_TAG</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-common.html#HB-UNTAG:CAPS" title="HB_UNTAG()">HB_UNTAG</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -53,7 +67,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-common.html#hb-tag-to-string" title="hb_tag_to_string ()">hb_tag_to_string</a> <span class="c_punctuation">()</span>
+<span class="c_punctuation">(</span><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()">*hb_destroy_func_t</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -73,83 +87,73 @@
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
+<a class="link" href="harfbuzz-hb-common.html#hb-language-t"><span class="returnvalue">hb_language_t</span></a>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-common.html#hb-script-from-iso15924-tag" title="hb_script_from_iso15924_tag ()">hb_script_from_iso15924_tag</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-common.html#hb-language-from-string" title="hb_language_from_string ()">hb_language_from_string</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
+<a class="link" href="harfbuzz-hb-common.html#hb-language-t"><span class="returnvalue">hb_language_t</span></a>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-common.html#hb-script-from-string" title="hb_script_from_string ()">hb_script_from_string</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-common.html#hb-language-get-default" title="hb_language_get_default ()">hb_language_get_default</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="returnvalue">hb_tag_t</span></a>
+<td class="function_type">const <span class="returnvalue">char</span> *
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-common.html#hb-script-to-iso15924-tag" title="hb_script_to_iso15924_tag ()">hb_script_to_iso15924_tag</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-common.html#hb-language-to-string" title="hb_language_to_string ()">hb_language_to_string</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="returnvalue">hb_direction_t</span></a>
+<a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-common.html#hb-script-get-horizontal-direction" title="hb_script_get_horizontal_direction ()">hb_script_get_horizontal_direction</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-common.html#hb-script-from-iso15924-tag" title="hb_script_from_iso15924_tag ()">hb_script_from_iso15924_tag</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
+<a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-common.html#hb-language-from-string" title="hb_language_from_string ()">hb_language_from_string</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-common.html#hb-script-from-string" title="hb_script_from_string ()">hb_script_from_string</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td class="function_type">const <span class="returnvalue">char</span> *
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="returnvalue">hb_direction_t</span></a>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-common.html#hb-language-to-string" title="hb_language_to_string ()">hb_language_to_string</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-common.html#hb-script-get-horizontal-direction" title="hb_script_get_horizontal_direction ()">hb_script_get_horizontal_direction</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
+<a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="returnvalue">hb_tag_t</span></a>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-common.html#hb-language-get-default" title="hb_language_get_default ()">hb_language_get_default</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-common.html#hb-script-to-iso15924-tag" title="hb_script_to_iso15924_tag ()">hb_script_to_iso15924_tag</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
-<span class="returnvalue">void</span>
+<a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="returnvalue">hb_tag_t</span></a>
</td>
<td class="function_name">
-<span class="c_punctuation">(</span><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()">*hb_destroy_func_t</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-common.html#HB-TAG:CAPS" title="HB_TAG()">HB_TAG</a><span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-common.html#hb-tag-from-string" title="hb_tag_from_string ()">hb_tag_from_string</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-common.html#HB-UNTAG:CAPS" title="HB_UNTAG()">HB_UNTAG</a><span class="c_punctuation">()</span>
+<td class="function_type">
+<span class="returnvalue">void</span>
</td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-common.html#HB-DIRECTION-REVERSE:CAPS" title="HB_DIRECTION_REVERSE()">HB_DIRECTION_REVERSE</a><span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-common.html#hb-tag-to-string" title="hb_tag_to_string ()">hb_tag_to_string</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -185,7 +189,7 @@
</tbody>
</table></div>
</div>
-<a name="hb-user-data-key-t"></a><div class="refsect1">
+<a name="hb-language-t"></a><a name="hb-user-data-key-t"></a><div class="refsect1">
<a name="harfbuzz-hb-common.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
@@ -194,6 +198,14 @@
</colgroup>
<tbody>
<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-common.html#HB-TAG-NONE:CAPS" title="HB_TAG_NONE">HB_TAG_NONE</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-common.html#HB-TAG-MAX:CAPS" title="HB_TAG_MAX">HB_TAG_MAX</a></td>
+</tr>
+<tr>
<td class="typedef_keyword">typedef</td>
<td class="function_name"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t">hb_bool_t</a></td>
</tr>
@@ -207,7 +219,7 @@
</tr>
<tr>
<td class="typedef_keyword">typedef</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t">hb_language_t</a></td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-common.html#hb-language-t">hb_language_t</a></td>
</tr>
<tr>
<td class="typedef_keyword">typedef</td>
@@ -218,14 +230,14 @@
<td class="function_name"><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t">hb_position_t</a></td>
</tr>
<tr>
-<td class="typedef_keyword">typedef</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t">hb_tag_t</a></td>
-</tr>
-<tr>
<td class="datatype_keyword">enum</td>
<td class="function_name"><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t">hb_script_t</a></td>
</tr>
<tr>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t">hb_tag_t</a></td>
+</tr>
+<tr>
<td class="datatype_keyword"> </td>
<td class="function_name"><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t-struct" title="hb_user_data_key_t">hb_user_data_key_t</a></td>
</tr>
@@ -233,83 +245,64 @@
<td class="datatype_keyword"> </td>
<td class="function_name"><a class="link" href="harfbuzz-hb-common.html#hb-var-int-t" title="hb_var_int_t">hb_var_int_t</a></td>
</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-common.html#HB-TAG-NONE:CAPS" title="HB_TAG_NONE">HB_TAG_NONE</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-common.html#HB-TAG-MAX:CAPS" title="HB_TAG_MAX">HB_TAG_MAX</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-common.html#HB-TAG-MAX-SIGNED:CAPS" title="HB_TAG_MAX_SIGNED">HB_TAG_MAX_SIGNED</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-common.html#HB-LANGUAGE-INVALID:CAPS" title="HB_LANGUAGE_INVALID">HB_LANGUAGE_INVALID</a></td>
-</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-common.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+<pre class="screen"> GBoxed
+ <span class="lineart">├──</span> hb_language_t
<span class="lineart">╰──</span> hb_user_data_key_t
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
+ GEnum
<span class="lineart">├──</span> hb_direction_t
<span class="lineart">╰──</span> hb_script_t
</pre>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-common.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-common.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
-<a name="hb-tag-from-string"></a><h3>hb_tag_from_string ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="returnvalue">hb_tag_t</span></a>
-hb_tag_from_string (<em class="parameter"><code>const <span class="type">char</span> *str</code></em>,
- <em class="parameter"><code><span class="type">int</span> len</code></em>);</pre>
-<div class="refsect3">
-<a name="hb-tag-from-string.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>str</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
-</tr></tbody>
-</table></div>
+<a name="HB-DIRECTION-REVERSE:CAPS"></a><h3>HB_DIRECTION_REVERSE()</h3>
+<pre class="programlisting">#define HB_DIRECTION_REVERSE(dir) ((hb_direction_t) (((unsigned int) (dir)) ^ 1))
+</pre>
+<p>
+</p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<hr>
+<div class="refsect2">
+<a name="HB-LANGUAGE-INVALID:CAPS"></a><h3>HB_LANGUAGE_INVALID</h3>
+<pre class="programlisting">#define HB_LANGUAGE_INVALID ((hb_language_t) NULL)
+</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
-<a name="hb-tag-to-string"></a><h3>hb_tag_to_string ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_tag_to_string (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> tag</code></em>,
- <em class="parameter"><code><span class="type">char</span> *buf</code></em>);</pre>
-<div class="refsect3">
-<a name="hb-tag-to-string.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buf</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> fixed-size=4]</span></td>
-</tr></tbody>
-</table></div>
+<a name="HB-TAG:CAPS"></a><h3>HB_TAG()</h3>
+<pre class="programlisting">#define HB_TAG(c1,c2,c3,c4) ((hb_tag_t)((((uint8_t)(c1))&lt;&lt;24)|(((uint8_t)(c2))&lt;&lt;16)|(((uint8_t)(c3))&lt;&lt;8)|((uint8_t)(c4))))
+</pre>
+<p>
+</p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-5.html#api-index-0.9.5">0.9.5</a></p>
+<hr>
+<div class="refsect2">
+<a name="HB-UNTAG:CAPS"></a><h3>HB_UNTAG()</h3>
+<pre class="programlisting">#define HB_UNTAG(tag) ((uint8_t)((tag)&gt;&gt;24)), ((uint8_t)((tag)&gt;&gt;16)), ((uint8_t)((tag)&gt;&gt;8)), ((uint8_t)(tag))
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-destroy-func-t"></a><h3>hb_destroy_func_t ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+<span class="c_punctuation">(</span>*hb_destroy_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
@@ -318,7 +311,7 @@ hb_tag_to_string (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
hb_direction_from_string (<em class="parameter"><code>const <span class="type">char</span> *str</code></em>,
<em class="parameter"><code><span class="type">int</span> len</code></em>);</pre>
<div class="refsect3">
-<a name="hb-direction-from-string.parameters"></a><h4>Parameters</h4>
+<a name="idp17685104"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -328,11 +321,15 @@ hb_direction_from_string (<em class="parameter"><code>const <span class="type">c
<tbody><tr>
<td class="parameter_name"><p>str</p></td>
<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len]</span></td>
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp17694608"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -340,20 +337,20 @@ hb_direction_from_string (<em class="parameter"><code>const <span class="type">c
<pre class="programlisting">const <span class="returnvalue">char</span> *
hb_direction_to_string (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> direction</code></em>);</pre>
<div class="refsect3">
-<a name="hb-direction-to-string.returns"></a><h4>Returns</h4>
+<a name="idp17703840"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
-<a name="hb-script-from-iso15924-tag"></a><h3>hb_script_from_iso15924_tag ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
-hb_script_from_iso15924_tag (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> tag</code></em>);</pre>
-<p>Converts an ISO 15924 script tag to a corresponding <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a>.</p>
+<a name="hb-language-from-string"></a><h3>hb_language_from_string ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-language-t"><span class="returnvalue">hb_language_t</span></a>
+hb_language_from_string (<em class="parameter"><code>const <span class="type">char</span> *str</code></em>,
+ <em class="parameter"><code><span class="type">int</span> len</code></em>);</pre>
<div class="refsect3">
-<a name="hb-script-from-iso15924-tag.parameters"></a><h4>Parameters</h4>
+<a name="idp17716368"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -361,66 +358,60 @@ hb_script_from_iso15924_tag (<em class="parameter"><code><a class="link" href="h
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
-<td class="parameter_name"><p>tag</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> representing an ISO 15924 tag.</p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len]</span></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
-<a name="hb-script-from-iso15924-tag.returns"></a><h4>Returns</h4>
-<p>An <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> corresponding to the ISO 15924 tag.</p>
+<a name="idp17725872"></a><h4>Returns</h4>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
-<a name="hb-script-from-string"></a><h3>hb_script_from_string ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
-hb_script_from_string (<em class="parameter"><code>const <span class="type">char</span> *str</code></em>,
- <em class="parameter"><code><span class="type">int</span> len</code></em>);</pre>
-<p>Converts a string <em class="parameter"><code>str</code></em>
- representing an ISO 15924 script tag to a
-corresponding <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a>. Shorthand for <a class="link" href="harfbuzz-hb-common.html#hb-tag-from-string" title="hb_tag_from_string ()"><code class="function">hb_tag_from_string()</code></a> then
-<a class="link" href="harfbuzz-hb-common.html#hb-script-from-iso15924-tag" title="hb_script_from_iso15924_tag ()"><code class="function">hb_script_from_iso15924_tag()</code></a>.</p>
+<a name="hb-language-get-default"></a><h3>hb_language_get_default ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-language-t"><span class="returnvalue">hb_language_t</span></a>
+hb_language_get_default (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<div class="refsect3">
-<a name="hb-script-from-string.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>str</p></td>
-<td class="parameter_description"><p> a string representing an
-ISO 15924 tag. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>len</p></td>
-<td class="parameter_description"><p>length of the <em class="parameter"><code>str</code></em>
-, or -1 if it is <code class="literal">NULL</code>-terminated.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
+<a name="idp17734384"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-language-to-string"></a><h3>hb_language_to_string ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> *
+hb_language_to_string (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-language-t"><span class="type">hb_language_t</span></a> language</code></em>);</pre>
+<div class="refsect3">
+<a name="idp17743616"></a><h4>Returns</h4>
+<p>. </p>
+<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
+<hr>
+<div class="refsect2">
+<a name="hb-script-from-iso15924-tag"></a><h3>hb_script_from_iso15924_tag ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
+hb_script_from_iso15924_tag (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> tag</code></em>);</pre>
<div class="refsect3">
-<a name="hb-script-from-string.returns"></a><h4>Returns</h4>
-<p>An <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> corresponding to the ISO 15924 tag.</p>
+<a name="idp17754336"></a><h4>Returns</h4>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
-<a name="hb-script-to-iso15924-tag"></a><h3>hb_script_to_iso15924_tag ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="returnvalue">hb_tag_t</span></a>
-hb_script_to_iso15924_tag (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> script</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-hb-common.html#hb-script-from-iso15924-tag" title="hb_script_from_iso15924_tag ()"><code class="function">hb_script_from_iso15924_tag()</code></a>.</p>
+<a name="hb-script-from-string"></a><h3>hb_script_from_string ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
+hb_script_from_string (<em class="parameter"><code>const <span class="type">char</span> *s</code></em>,
+ <em class="parameter"><code><span class="type">int</span> len</code></em>);</pre>
<div class="refsect3">
-<a name="hb-script-to-iso15924-tag.parameters"></a><h4>Parameters</h4>
+<a name="idp17765200"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -428,73 +419,75 @@ hb_script_to_iso15924_tag (<em class="parameter"><code><a class="link" href="har
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
-<td class="parameter_name"><p>script</p></td>
-<td class="parameter_description"><p>an <span class="type">hb_script_</span> to convert.</p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_name"><p>s</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len]</span></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
-<a name="hb-script-to-iso15924-tag.returns"></a><h4>Returns</h4>
-<p>An <a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> representing an ISO 15924 script tag.</p>
+<a name="idp17774704"></a><h4>Returns</h4>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-script-get-horizontal-direction"></a><h3>hb_script_get_horizontal_direction ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="returnvalue">hb_direction_t</span></a>
hb_script_get_horizontal_direction (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> script</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp17783824"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
-<a name="hb-language-from-string"></a><h3>hb_language_from_string ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
-hb_language_from_string (<em class="parameter"><code>const <span class="type">char</span> *str</code></em>,
- <em class="parameter"><code><span class="type">int</span> len</code></em>);</pre>
-<p>Converts <em class="parameter"><code>str</code></em>
- representing an ISO 639 language code to the corresponding
-<a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a>.</p>
+<a name="hb-script-to-iso15924-tag"></a><h3>hb_script_to_iso15924_tag ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="returnvalue">hb_tag_t</span></a>
+hb_script_to_iso15924_tag (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> script</code></em>);</pre>
<div class="refsect3">
-<a name="hb-language-from-string.parameters"></a><h4>Parameters</h4>
+<a name="idp17792944"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-tag-from-string"></a><h3>hb_tag_from_string ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="returnvalue">hb_tag_t</span></a>
+hb_tag_from_string (<em class="parameter"><code>const <span class="type">char</span> *str</code></em>,
+ <em class="parameter"><code><span class="type">int</span> len</code></em>);</pre>
+<div class="refsect3">
+<a name="idp17803760"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
-<tbody>
-<tr>
+<tbody><tr>
<td class="parameter_name"><p>str</p></td>
-<td class="parameter_description"><p> a string representing
-ISO 639 language code. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>len</p></td>
-<td class="parameter_description"><p>length of the <em class="parameter"><code>str</code></em>
-, or -1 if it is <code class="literal">NULL</code>-terminated.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len]</span></td>
+</tr></tbody>
</table></div>
</div>
<div class="refsect3">
-<a name="hb-language-from-string.returns"></a><h4>Returns</h4>
-<p>The <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> corresponding to the ISO 639 language code. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
+<a name="idp17813264"></a><h4>Returns</h4>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
-<a name="hb-language-to-string"></a><h3>hb_language_to_string ()</h3>
-<pre class="programlisting">const <span class="returnvalue">char</span> *
-hb_language_to_string (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> language</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-hb-common.html#hb-language-from-string" title="hb_language_from_string ()"><code class="function">hb_language_from_string()</code></a>.</p>
+<a name="hb-tag-to-string"></a><h3>hb_tag_to_string ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_tag_to_string (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> tag</code></em>,
+ <em class="parameter"><code><span class="type">char</span> *buf</code></em>);</pre>
<div class="refsect3">
-<a name="hb-language-to-string.parameters"></a><h4>Parameters</h4>
+<a name="idp17823904"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -502,106 +495,93 @@ hb_language_to_string (<em class="parameter"><code><a class="link" href="harfbuz
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
-<td class="parameter_name"><p>language</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> to convert.</p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> fixed-size=4]</span></td>
</tr></tbody>
</table></div>
</div>
-<div class="refsect3">
-<a name="hb-language-to-string.returns"></a><h4>Returns</h4>
-<p>A <code class="literal">NULL</code>-terminated string representing the <em class="parameter"><code>language</code></em>
-. Must not be freed by
-the caller. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-language-get-default"></a><h3>hb_language_get_default ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
-hb_language_get_default (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<div class="refsect3">
-<a name="hb-language-get-default.returns"></a><h4>Returns</h4>
-<p>. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-destroy-func-t"></a><h3>hb_destroy_func_t ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-<span class="c_punctuation">(</span>*hb_destroy_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-TAG:CAPS"></a><h3>HB_TAG()</h3>
-<pre class="programlisting">#define HB_TAG(c1,c2,c3,c4) ((hb_tag_t)((((uint8_t)(c1))&lt;&lt;24)|(((uint8_t)(c2))&lt;&lt;16)|(((uint8_t)(c3))&lt;&lt;8)|((uint8_t)(c4))))
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-UNTAG:CAPS"></a><h3>HB_UNTAG()</h3>
-<pre class="programlisting">#define HB_UNTAG(tag) ((uint8_t)((tag)&gt;&gt;24)), ((uint8_t)((tag)&gt;&gt;16)), ((uint8_t)((tag)&gt;&gt;8)), ((uint8_t)(tag))
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-DIRECTION-REVERSE:CAPS"></a><h3>HB_DIRECTION_REVERSE()</h3>
-<pre class="programlisting">#define HB_DIRECTION_REVERSE(dir) ((hb_direction_t) (((unsigned int) (dir)) ^ 1))
-</pre>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
<a name="HB-DIRECTION-IS-BACKWARD:CAPS"></a><h3>HB_DIRECTION_IS_BACKWARD()</h3>
<pre class="programlisting">#define HB_DIRECTION_IS_BACKWARD(dir) ((((unsigned int) (dir)) &amp; ~2U) == 5)
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="HB-DIRECTION-IS-FORWARD:CAPS"></a><h3>HB_DIRECTION_IS_FORWARD()</h3>
<pre class="programlisting">#define HB_DIRECTION_IS_FORWARD(dir) ((((unsigned int) (dir)) &amp; ~2U) == 4)
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="HB-DIRECTION-IS-HORIZONTAL:CAPS"></a><h3>HB_DIRECTION_IS_HORIZONTAL()</h3>
<pre class="programlisting">#define HB_DIRECTION_IS_HORIZONTAL(dir) ((((unsigned int) (dir)) &amp; ~1U) == 4)
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="HB-DIRECTION-IS-VALID:CAPS"></a><h3>HB_DIRECTION_IS_VALID()</h3>
<pre class="programlisting">#define HB_DIRECTION_IS_VALID(dir) ((((unsigned int) (dir)) &amp; ~3U) == 4)
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="HB-DIRECTION-IS-VERTICAL:CAPS"></a><h3>HB_DIRECTION_IS_VERTICAL()</h3>
<pre class="programlisting">#define HB_DIRECTION_IS_VERTICAL(dir) ((((unsigned int) (dir)) &amp; ~1U) == 6)
</pre>
+<p>
+</p>
</div>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-common.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
+<a name="HB-TAG-NONE:CAPS"></a><h3>HB_TAG_NONE</h3>
+<pre class="programlisting">#define HB_TAG_NONE HB_TAG(0,0,0,0)
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="HB-TAG-MAX:CAPS"></a><h3>HB_TAG_MAX</h3>
+<pre class="programlisting">#define HB_TAG_MAX HB_TAG(0xff,0xff,0xff,0xff)
+</pre>
+</div>
+<hr>
+<div class="refsect2">
<a name="hb-bool-t"></a><h3>hb_bool_t</h3>
<pre class="programlisting">typedef int hb_bool_t;
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-codepoint-t"></a><h3>hb_codepoint_t</h3>
<pre class="programlisting">typedef uint32_t hb_codepoint_t;
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-direction-t"></a><h3>enum hb_direction_t</h3>
+<p>
+</p>
<div class="refsect3">
-<a name="hb-direction-t.members"></a><h4>Members</h4>
+<a name="idp17879968"></a><h4>Members</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="300px" class="enum_members_name">
@@ -611,37 +591,27 @@ hb_language_get_default (<em class="parameter"><code><span class="type">void</sp
<tbody>
<tr>
<td class="enum_member_name"><p><a name="HB-DIRECTION-INVALID:CAPS"></a>HB_DIRECTION_INVALID</p></td>
-<td class="enum_member_description">
-<p>Initial, unset direction.</p>
-</td>
+<td class="enum_member_description"> </td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-DIRECTION-LTR:CAPS"></a>HB_DIRECTION_LTR</p></td>
-<td class="enum_member_description">
-<p>Text is set horizontally from left to right.</p>
-</td>
+<td class="enum_member_description"> </td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-DIRECTION-RTL:CAPS"></a>HB_DIRECTION_RTL</p></td>
-<td class="enum_member_description">
-<p>Text is set horizontally from right to left.</p>
-</td>
+<td class="enum_member_description"> </td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-DIRECTION-TTB:CAPS"></a>HB_DIRECTION_TTB</p></td>
-<td class="enum_member_description">
-<p>Text is set vertically from top to bottom.</p>
-</td>
+<td class="enum_member_description"> </td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-DIRECTION-BTT:CAPS"></a>HB_DIRECTION_BTT</p></td>
-<td class="enum_member_description">
-<p>Text is set vertically from bottom to top.</p>
-</td>
+<td class="enum_member_description"> </td>
<td class="enum_member_annotations"> </td>
</tr>
</tbody>
@@ -653,30 +623,32 @@ hb_language_get_default (<em class="parameter"><code><span class="type">void</sp
<a name="hb-language-t"></a><h3>hb_language_t</h3>
<pre class="programlisting">typedef const struct hb_language_impl_t *hb_language_t;
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-mask-t"></a><h3>hb_mask_t</h3>
<pre class="programlisting">typedef uint32_t hb_mask_t;
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-position-t"></a><h3>hb_position_t</h3>
<pre class="programlisting">typedef int32_t hb_position_t;
</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-tag-t"></a><h3>hb_tag_t</h3>
-<pre class="programlisting">typedef uint32_t hb_tag_t;
-</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-script-t"></a><h3>enum hb_script_t</h3>
+<p>
+</p>
<div class="refsect3">
-<a name="hb-script-t.members"></a><h4>Members</h4>
+<a name="idp17918336"></a><h4>Members</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="300px" class="enum_members_name">
@@ -686,518 +658,518 @@ hb_language_get_default (<em class="parameter"><code><span class="type">void</sp
<tbody>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-COMMON:CAPS"></a>HB_SCRIPT_COMMON</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-INHERITED:CAPS"></a>HB_SCRIPT_INHERITED</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-UNKNOWN:CAPS"></a>HB_SCRIPT_UNKNOWN</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-ARABIC:CAPS"></a>HB_SCRIPT_ARABIC</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-ARMENIAN:CAPS"></a>HB_SCRIPT_ARMENIAN</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-BENGALI:CAPS"></a>HB_SCRIPT_BENGALI</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-CYRILLIC:CAPS"></a>HB_SCRIPT_CYRILLIC</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-DEVANAGARI:CAPS"></a>HB_SCRIPT_DEVANAGARI</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-GEORGIAN:CAPS"></a>HB_SCRIPT_GEORGIAN</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-GREEK:CAPS"></a>HB_SCRIPT_GREEK</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-GUJARATI:CAPS"></a>HB_SCRIPT_GUJARATI</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-GURMUKHI:CAPS"></a>HB_SCRIPT_GURMUKHI</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-HANGUL:CAPS"></a>HB_SCRIPT_HANGUL</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-HAN:CAPS"></a>HB_SCRIPT_HAN</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-HEBREW:CAPS"></a>HB_SCRIPT_HEBREW</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-HIRAGANA:CAPS"></a>HB_SCRIPT_HIRAGANA</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-KANNADA:CAPS"></a>HB_SCRIPT_KANNADA</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-KATAKANA:CAPS"></a>HB_SCRIPT_KATAKANA</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-LAO:CAPS"></a>HB_SCRIPT_LAO</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-LATIN:CAPS"></a>HB_SCRIPT_LATIN</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-MALAYALAM:CAPS"></a>HB_SCRIPT_MALAYALAM</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-ORIYA:CAPS"></a>HB_SCRIPT_ORIYA</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-TAMIL:CAPS"></a>HB_SCRIPT_TAMIL</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-TELUGU:CAPS"></a>HB_SCRIPT_TELUGU</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-THAI:CAPS"></a>HB_SCRIPT_THAI</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-TIBETAN:CAPS"></a>HB_SCRIPT_TIBETAN</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-BOPOMOFO:CAPS"></a>HB_SCRIPT_BOPOMOFO</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-BRAILLE:CAPS"></a>HB_SCRIPT_BRAILLE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-CANADIAN-SYLLABICS:CAPS"></a>HB_SCRIPT_CANADIAN_SYLLABICS</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-CHEROKEE:CAPS"></a>HB_SCRIPT_CHEROKEE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-ETHIOPIC:CAPS"></a>HB_SCRIPT_ETHIOPIC</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-KHMER:CAPS"></a>HB_SCRIPT_KHMER</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-MONGOLIAN:CAPS"></a>HB_SCRIPT_MONGOLIAN</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-MYANMAR:CAPS"></a>HB_SCRIPT_MYANMAR</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-OGHAM:CAPS"></a>HB_SCRIPT_OGHAM</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-RUNIC:CAPS"></a>HB_SCRIPT_RUNIC</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-SINHALA:CAPS"></a>HB_SCRIPT_SINHALA</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-SYRIAC:CAPS"></a>HB_SCRIPT_SYRIAC</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-THAANA:CAPS"></a>HB_SCRIPT_THAANA</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-YI:CAPS"></a>HB_SCRIPT_YI</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-DESERET:CAPS"></a>HB_SCRIPT_DESERET</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-GOTHIC:CAPS"></a>HB_SCRIPT_GOTHIC</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-OLD-ITALIC:CAPS"></a>HB_SCRIPT_OLD_ITALIC</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-BUHID:CAPS"></a>HB_SCRIPT_BUHID</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-HANUNOO:CAPS"></a>HB_SCRIPT_HANUNOO</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-TAGALOG:CAPS"></a>HB_SCRIPT_TAGALOG</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-TAGBANWA:CAPS"></a>HB_SCRIPT_TAGBANWA</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-CYPRIOT:CAPS"></a>HB_SCRIPT_CYPRIOT</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-LIMBU:CAPS"></a>HB_SCRIPT_LIMBU</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-LINEAR-B:CAPS"></a>HB_SCRIPT_LINEAR_B</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-OSMANYA:CAPS"></a>HB_SCRIPT_OSMANYA</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-SHAVIAN:CAPS"></a>HB_SCRIPT_SHAVIAN</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-TAI-LE:CAPS"></a>HB_SCRIPT_TAI_LE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-UGARITIC:CAPS"></a>HB_SCRIPT_UGARITIC</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-BUGINESE:CAPS"></a>HB_SCRIPT_BUGINESE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-COPTIC:CAPS"></a>HB_SCRIPT_COPTIC</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-GLAGOLITIC:CAPS"></a>HB_SCRIPT_GLAGOLITIC</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-KHAROSHTHI:CAPS"></a>HB_SCRIPT_KHAROSHTHI</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-NEW-TAI-LUE:CAPS"></a>HB_SCRIPT_NEW_TAI_LUE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-OLD-PERSIAN:CAPS"></a>HB_SCRIPT_OLD_PERSIAN</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-SYLOTI-NAGRI:CAPS"></a>HB_SCRIPT_SYLOTI_NAGRI</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-TIFINAGH:CAPS"></a>HB_SCRIPT_TIFINAGH</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-BALINESE:CAPS"></a>HB_SCRIPT_BALINESE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-CUNEIFORM:CAPS"></a>HB_SCRIPT_CUNEIFORM</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-NKO:CAPS"></a>HB_SCRIPT_NKO</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-PHAGS-PA:CAPS"></a>HB_SCRIPT_PHAGS_PA</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-PHOENICIAN:CAPS"></a>HB_SCRIPT_PHOENICIAN</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-CARIAN:CAPS"></a>HB_SCRIPT_CARIAN</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-CHAM:CAPS"></a>HB_SCRIPT_CHAM</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-KAYAH-LI:CAPS"></a>HB_SCRIPT_KAYAH_LI</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-LEPCHA:CAPS"></a>HB_SCRIPT_LEPCHA</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-LYCIAN:CAPS"></a>HB_SCRIPT_LYCIAN</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-LYDIAN:CAPS"></a>HB_SCRIPT_LYDIAN</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-OL-CHIKI:CAPS"></a>HB_SCRIPT_OL_CHIKI</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-REJANG:CAPS"></a>HB_SCRIPT_REJANG</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-SAURASHTRA:CAPS"></a>HB_SCRIPT_SAURASHTRA</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-SUNDANESE:CAPS"></a>HB_SCRIPT_SUNDANESE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-VAI:CAPS"></a>HB_SCRIPT_VAI</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-AVESTAN:CAPS"></a>HB_SCRIPT_AVESTAN</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-BAMUM:CAPS"></a>HB_SCRIPT_BAMUM</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-EGYPTIAN-HIEROGLYPHS:CAPS"></a>HB_SCRIPT_EGYPTIAN_HIEROGLYPHS</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-IMPERIAL-ARAMAIC:CAPS"></a>HB_SCRIPT_IMPERIAL_ARAMAIC</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-INSCRIPTIONAL-PAHLAVI:CAPS"></a>HB_SCRIPT_INSCRIPTIONAL_PAHLAVI</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-INSCRIPTIONAL-PARTHIAN:CAPS"></a>HB_SCRIPT_INSCRIPTIONAL_PARTHIAN</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-JAVANESE:CAPS"></a>HB_SCRIPT_JAVANESE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-KAITHI:CAPS"></a>HB_SCRIPT_KAITHI</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-LISU:CAPS"></a>HB_SCRIPT_LISU</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-MEETEI-MAYEK:CAPS"></a>HB_SCRIPT_MEETEI_MAYEK</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-OLD-SOUTH-ARABIAN:CAPS"></a>HB_SCRIPT_OLD_SOUTH_ARABIAN</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-OLD-TURKIC:CAPS"></a>HB_SCRIPT_OLD_TURKIC</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-SAMARITAN:CAPS"></a>HB_SCRIPT_SAMARITAN</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-TAI-THAM:CAPS"></a>HB_SCRIPT_TAI_THAM</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-TAI-VIET:CAPS"></a>HB_SCRIPT_TAI_VIET</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-BATAK:CAPS"></a>HB_SCRIPT_BATAK</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-BRAHMI:CAPS"></a>HB_SCRIPT_BRAHMI</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-MANDAIC:CAPS"></a>HB_SCRIPT_MANDAIC</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-CHAKMA:CAPS"></a>HB_SCRIPT_CHAKMA</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-MEROITIC-CURSIVE:CAPS"></a>HB_SCRIPT_MEROITIC_CURSIVE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-MEROITIC-HIEROGLYPHS:CAPS"></a>HB_SCRIPT_MEROITIC_HIEROGLYPHS</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-MIAO:CAPS"></a>HB_SCRIPT_MIAO</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-SHARADA:CAPS"></a>HB_SCRIPT_SHARADA</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-SORA-SOMPENG:CAPS"></a>HB_SCRIPT_SORA_SOMPENG</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-TAKRI:CAPS"></a>HB_SCRIPT_TAKRI</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-BASSA-VAH:CAPS"></a>HB_SCRIPT_BASSA_VAH</p></td>
@@ -1315,39 +1287,9 @@ hb_language_get_default (<em class="parameter"><code><span class="type">void</sp
<td> </td>
</tr>
<tr>
-<td class="enum_member_name"><p><a name="HB-SCRIPT-AHOM:CAPS"></a>HB_SCRIPT_AHOM</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-SCRIPT-ANATOLIAN-HIEROGLYPHS:CAPS"></a>HB_SCRIPT_ANATOLIAN_HIEROGLYPHS</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-SCRIPT-HATRAN:CAPS"></a>HB_SCRIPT_HATRAN</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-SCRIPT-MULTANI:CAPS"></a>HB_SCRIPT_MULTANI</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-SCRIPT-OLD-HUNGARIAN:CAPS"></a>HB_SCRIPT_OLD_HUNGARIAN</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-SCRIPT-SIGNWRITING:CAPS"></a>HB_SCRIPT_SIGNWRITING</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-INVALID:CAPS"></a>HB_SCRIPT_INVALID</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-MAX-VALUE:CAPS"></a>_HB_SCRIPT_MAX_VALUE</p></td>
@@ -1365,42 +1307,31 @@ hb_language_get_default (<em class="parameter"><code><span class="type">void</sp
</div>
<hr>
<div class="refsect2">
-<a name="hb-user-data-key-t-struct"></a><h3>hb_user_data_key_t</h3>
-<pre class="programlisting">typedef struct {
-} hb_user_data_key_t;
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-var-int-t"></a><h3>hb_var_int_t</h3>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-TAG-NONE:CAPS"></a><h3>HB_TAG_NONE</h3>
-<pre class="programlisting">#define HB_TAG_NONE HB_TAG(0,0,0,0)
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-TAG-MAX:CAPS"></a><h3>HB_TAG_MAX</h3>
-<pre class="programlisting">#define HB_TAG_MAX HB_TAG(0xff,0xff,0xff,0xff)
+<a name="hb-tag-t"></a><h3>hb_tag_t</h3>
+<pre class="programlisting">typedef uint32_t hb_tag_t;
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
-<a name="HB-TAG-MAX-SIGNED:CAPS"></a><h3>HB_TAG_MAX_SIGNED</h3>
-<pre class="programlisting">#define HB_TAG_MAX_SIGNED HB_TAG(0x7f,0xff,0xff,0xff)
+<a name="hb-user-data-key-t-struct"></a><h3>hb_user_data_key_t</h3>
+<pre class="programlisting">typedef struct {
+} hb_user_data_key_t;
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
-<a name="HB-LANGUAGE-INVALID:CAPS"></a><h3>HB_LANGUAGE_INVALID</h3>
-<pre class="programlisting">#define HB_LANGUAGE_INVALID ((hb_language_t) NULL)
-</pre>
+<a name="hb-var-int-t"></a><h3>hb_var_int_t</h3>
+<p>
+</p>
</div>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-coretext.html b/docs/reference/html/harfbuzz-hb-coretext.html
index 68615e0..8d3ab15 100644
--- a/docs/html/harfbuzz-hb-coretext.html
+++ b/docs/reference/html/harfbuzz-hb-coretext.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-coretext: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
+<title>hb-coretext</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
<link rel="prev" href="harfbuzz-hb-uniscribe.html" title="hb-uniscribe">
<link rel="next" href="harfbuzz-hb-gobject.html" title="hb-gobject">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,7 +18,7 @@
<a href="#harfbuzz-hb-coretext.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="harfbuzz-hb-uniscribe.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb-gobject.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
@@ -87,6 +87,8 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-coretext.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-coretext.functions_details"></a><h2>Functions</h2>
@@ -100,12 +102,24 @@ hb_coretext_face_create (<em class="parameter"><code><span class="type">CGFontRe
<a name="hb-coretext-face-get-cg-font"></a><h3>hb_coretext_face_get_cg_font ()</h3>
<pre class="programlisting"><span class="returnvalue">CGFontRef</span>
hb_coretext_face_get_cg_font (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp14032320"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
<a name="hb-coretext-font-get-ct-font"></a><h3>hb_coretext_font_get_ct_font ()</h3>
<pre class="programlisting"><span class="returnvalue">CTFontRef</span>
hb_coretext_font_get_ct_font (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp19308640"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
</div>
<div class="refsect1">
@@ -124,6 +138,7 @@ hb_coretext_font_get_ct_font (<em class="parameter"><code><a class="link" href="
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-deprecated.html b/docs/reference/html/harfbuzz-hb-deprecated.html
index 13beba0..09961c1 100644
--- a/docs/html/harfbuzz-hb-deprecated.html
+++ b/docs/reference/html/harfbuzz-hb-deprecated.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-deprecated: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
+<title>hb-deprecated</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
<link rel="prev" href="harfbuzz-hb-version.html" title="hb-version">
<link rel="next" href="harfbuzz-hb-set.html" title="hb-set">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,7 +18,7 @@
<a href="#harfbuzz-hb-deprecated.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="harfbuzz-hb-version.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb-set.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
@@ -56,10 +56,11 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-deprecated.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-deprecated.functions_details"></a><h2>Functions</h2>
-<p></p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-deprecated.other_details"></a><h2>Types and Values</h2>
@@ -68,6 +69,8 @@
<pre class="programlisting">#define HB_BUFFER_FLAGS_DEFAULT HB_BUFFER_FLAG_DEFAULT
</pre>
<div class="warning"><p><code class="literal">HB_BUFFER_FLAGS_DEFAULT</code> is deprecated and should not be used in newly-written code.</p></div>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
@@ -75,6 +78,8 @@
<pre class="programlisting">#define HB_BUFFER_SERIALIZE_FLAGS_DEFAULT HB_BUFFER_SERIALIZE_FLAG_DEFAULT
</pre>
<div class="warning"><p><code class="literal">HB_BUFFER_SERIALIZE_FLAGS_DEFAULT</code> is deprecated and should not be used in newly-written code.</p></div>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
@@ -82,10 +87,13 @@
<pre class="programlisting">#define HB_SCRIPT_CANADIAN_ABORIGINAL HB_SCRIPT_CANADIAN_SYLLABICS
</pre>
<div class="warning"><p><code class="literal">HB_SCRIPT_CANADIAN_ABORIGINAL</code> is deprecated and should not be used in newly-written code.</p></div>
+<p>
+</p>
</div>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-face.html b/docs/reference/html/harfbuzz-hb-face.html
index ddc16d0..dc31c55 100644
--- a/docs/html/harfbuzz-hb-face.html
+++ b/docs/reference/html/harfbuzz-hb-face.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-face: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
+<title>hb-face</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
<link rel="prev" href="harfbuzz-hb-blob.html" title="hb-blob">
<link rel="next" href="harfbuzz-hb-font.html" title="hb-font">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,7 +19,7 @@
<a href="#harfbuzz-hb-face.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="harfbuzz-hb-blob.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb-font.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
@@ -191,12 +191,14 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-face.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+<pre class="screen"> GBoxed
<span class="lineart">╰──</span> hb_face_t
</pre>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-face.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-face.functions_details"></a><h2>Functions</h2>
@@ -205,13 +207,12 @@
<pre class="programlisting"><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="returnvalue">hb_face_t</span></a> *
hb_face_create (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t"><span class="type">hb_blob_t</span></a> *blob</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> index</code></em>);</pre>
-<p><span class="annotation">[Xconstructor]</span></p>
+<p>
+</p>
<div class="refsect3">
-<a name="hb-face-create.returns"></a><h4>Returns</h4>
-<p>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+<a name="idp20616992"></a><h4>Returns</h4>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
</div>
<hr>
<div class="refsect2">
@@ -221,7 +222,7 @@ hb_face_create_for_tables (<em class="parameter"><code><a class="link" href="har
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-face-create-for-tables.parameters"></a><h4>Parameters</h4>
+<a name="idp20628080"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -236,19 +237,19 @@ hb_face_create_for_tables (<em class="parameter"><code><a class="link" href="har
</table></div>
</div>
<div class="refsect3">
-<a name="hb-face-create-for-tables.returns"></a><h4>Returns</h4>
+<a name="idp22848528"></a><h4>Returns</h4>
<p> (transfer full)</p>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-face-destroy"></a><h3>hb_face_destroy ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
hb_face_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-face-destroy.parameters"></a><h4>Parameters</h4>
+<a name="idp22856752"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -262,7 +263,7 @@ hb_face_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-f
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -270,10 +271,11 @@ hb_face_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-f
<pre class="programlisting"><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="returnvalue">hb_face_t</span></a> *
hb_face_get_empty (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<div class="refsect3">
-<a name="hb-face-get-empty.returns"></a><h4>Returns</h4>
+<a name="idp22870240"></a><h4>Returns</h4>
<p> (transfer full)</p>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -281,7 +283,7 @@ hb_face_get_empty (<em class="parameter"><code><span class="type">void</span></c
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
hb_face_get_glyph_count (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
<div class="refsect3">
-<a name="hb-face-get-glyph-count.parameters"></a><h4>Parameters</h4>
+<a name="idp22878608"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -295,7 +297,11 @@ hb_face_get_glyph_count (<em class="parameter"><code><a class="link" href="harfb
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<div class="refsect3">
+<a name="idp22886112"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -303,7 +309,7 @@ hb_face_get_glyph_count (<em class="parameter"><code><a class="link" href="harfb
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
hb_face_get_index (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
<div class="refsect3">
-<a name="hb-face-get-index.parameters"></a><h4>Parameters</h4>
+<a name="idp22894048"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -317,7 +323,11 @@ hb_face_get_index (<em class="parameter"><code><a class="link" href="harfbuzz-hb
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp22901552"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -325,7 +335,7 @@ hb_face_get_index (<em class="parameter"><code><a class="link" href="harfbuzz-hb
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
hb_face_get_upem (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
<div class="refsect3">
-<a name="hb-face-get-upem.parameters"></a><h4>Parameters</h4>
+<a name="idp22909488"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -339,7 +349,11 @@ hb_face_get_upem (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp18604560"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -347,9 +361,8 @@ hb_face_get_upem (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
<pre class="programlisting"><span class="returnvalue">void</span> *
hb_face_get_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-face-get-user-data.parameters"></a><h4>Parameters</h4>
+<a name="idp15960320"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -364,11 +377,11 @@ hb_face_get_user_data (<em class="parameter"><code><a class="link" href="harfbuz
</table></div>
</div>
<div class="refsect3">
-<a name="hb-face-get-user-data.returns"></a><h4>Returns</h4>
+<a name="idp22913232"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -376,7 +389,7 @@ hb_face_get_user_data (<em class="parameter"><code><a class="link" href="harfbuz
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
hb_face_is_immutable (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
<div class="refsect3">
-<a name="hb-face-is-immutable.parameters"></a><h4>Parameters</h4>
+<a name="idp22920864"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -390,7 +403,11 @@ hb_face_is_immutable (<em class="parameter"><code><a class="link" href="harfbuzz
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp22926912"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -398,7 +415,7 @@ hb_face_is_immutable (<em class="parameter"><code><a class="link" href="harfbuzz
<pre class="programlisting"><span class="returnvalue">void</span>
hb_face_make_immutable (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
<div class="refsect3">
-<a name="hb-face-make-immutable.parameters"></a><h4>Parameters</h4>
+<a name="idp22933248"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -412,16 +429,15 @@ hb_face_make_immutable (<em class="parameter"><code><a class="link" href="harfbu
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-face-reference"></a><h3>hb_face_reference ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="returnvalue">hb_face_t</span></a> *
hb_face_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-face-reference.parameters"></a><h4>Parameters</h4>
+<a name="idp22944480"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -435,7 +451,11 @@ hb_face_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp22950528"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -443,7 +463,7 @@ hb_face_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb
<pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t"><span class="returnvalue">hb_blob_t</span></a> *
hb_face_reference_blob (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
<div class="refsect3">
-<a name="hb-face-reference-blob.parameters"></a><h4>Parameters</h4>
+<a name="idp22958208"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -458,11 +478,11 @@ hb_face_reference_blob (<em class="parameter"><code><a class="link" href="harfbu
</table></div>
</div>
<div class="refsect3">
-<a name="hb-face-reference-blob.returns"></a><h4>Returns</h4>
+<a name="idp22965712"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -471,7 +491,7 @@ hb_face_reference_blob (<em class="parameter"><code><a class="link" href="harfbu
hb_face_reference_table (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> tag</code></em>);</pre>
<div class="refsect3">
-<a name="hb-face-reference-table.parameters"></a><h4>Parameters</h4>
+<a name="idp22976288"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -486,11 +506,11 @@ hb_face_reference_table (<em class="parameter"><code><a class="link" href="harfb
</table></div>
</div>
<div class="refsect3">
-<a name="hb-face-reference-table.returns"></a><h4>Returns</h4>
+<a name="idp22983792"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -499,7 +519,7 @@ hb_face_reference_table (<em class="parameter"><code><a class="link" href="harfb
hb_face_set_glyph_count (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> glyph_count</code></em>);</pre>
<div class="refsect3">
-<a name="hb-face-set-glyph-count.parameters"></a><h4>Parameters</h4>
+<a name="idp22994512"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -513,7 +533,7 @@ hb_face_set_glyph_count (<em class="parameter"><code><a class="link" href="harfb
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -522,7 +542,7 @@ hb_face_set_glyph_count (<em class="parameter"><code><a class="link" href="harfb
hb_face_set_index (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> index</code></em>);</pre>
<div class="refsect3">
-<a name="hb-face-set-index.parameters"></a><h4>Parameters</h4>
+<a name="idp23010064"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -536,7 +556,7 @@ hb_face_set_index (<em class="parameter"><code><a class="link" href="harfbuzz-hb
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -545,7 +565,7 @@ hb_face_set_index (<em class="parameter"><code><a class="link" href="harfbuzz-hb
hb_face_set_upem (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> upem</code></em>);</pre>
<div class="refsect3">
-<a name="hb-face-set-upem.parameters"></a><h4>Parameters</h4>
+<a name="idp23025616"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -559,7 +579,7 @@ hb_face_set_upem (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -570,9 +590,8 @@ hb_face_set_user_data (<em class="parameter"><code><a class="link" href="harfbuz
<em class="parameter"><code><span class="type">void</span> *data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="type">hb_bool_t</span></a> replace</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-face-set-user-data.parameters"></a><h4>Parameters</h4>
+<a name="idp23045152"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -586,7 +605,11 @@ hb_face_set_user_data (<em class="parameter"><code><a class="link" href="harfbuz
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp23052656"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
</div>
<div class="refsect1">
@@ -595,10 +618,13 @@ hb_face_set_user_data (<em class="parameter"><code><a class="link" href="harfbuz
<a name="hb-face-t"></a><h3>hb_face_t</h3>
<pre class="programlisting">typedef struct hb_face_t hb_face_t;
</pre>
+<p>
+</p>
</div>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-font.html b/docs/reference/html/harfbuzz-hb-font.html
index 1a81a44..9596d54 100644
--- a/docs/html/harfbuzz-hb-font.html
+++ b/docs/reference/html/harfbuzz-hb-font.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-font: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
+<title>hb-font</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
<link rel="prev" href="harfbuzz-hb-face.html" title="hb-face">
-<link rel="next" href="harfbuzz-Shaping.html" title="Shaping">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<link rel="next" href="harfbuzz-hb-shape.html" title="hb-shape">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,9 +19,9 @@
<a href="#harfbuzz-hb-font.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="harfbuzz-hb-face.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-Shaping.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-shape.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-font"></a><div class="titlepage"></div>
@@ -560,62 +560,6 @@
<span class="c_punctuation">(</span><a class="link" href="harfbuzz-hb-font.html#hb-reference-table-func-t" title="hb_reference_table_func_t ()">*hb_reference_table_func_t</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-font-h-extents-func" title="hb_font_funcs_set_font_h_extents_func ()">hb_font_funcs_set_font_h_extents_func</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-font-v-extents-func" title="hb_font_funcs_set_font_v_extents_func ()">hb_font_funcs_set_font_v_extents_func</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-extents-for-direction" title="hb_font_get_extents_for_direction ()">hb_font_get_extents_for_direction</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-</td>
-<td class="function_name">
-<span class="c_punctuation">(</span><a class="link" href="harfbuzz-hb-font.html#hb-font-get-font-extents-func-t" title="hb_font_get_font_extents_func_t ()">*hb_font_get_font_extents_func_t</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-h-extents" title="hb_font_get_h_extents ()">hb_font_get_h_extents</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-v-extents" title="hb_font_get_v_extents ()">hb_font_get_v_extents</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-font.html#hb-font-set-parent" title="hb_font_set_parent ()">hb_font_set_parent</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
</tbody>
</table></div>
</div>
@@ -659,26 +603,20 @@
<td class="typedef_keyword">typedef</td>
<td class="function_name"><a class="link" href="harfbuzz-hb-font.html#hb-font-t">hb_font_t</a></td>
</tr>
-<tr>
-<td class="typedef_keyword">typedef</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-font.html#hb-font-get-font-h-extents-func-t" title="hb_font_get_font_h_extents_func_t">hb_font_get_font_h_extents_func_t</a></td>
-</tr>
-<tr>
-<td class="typedef_keyword">typedef</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-font.html#hb-font-get-font-v-extents-func-t" title="hb_font_get_font_v_extents_func_t">hb_font_get_font_v_extents_func_t</a></td>
-</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-font.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+<pre class="screen"> GBoxed
<span class="lineart">├──</span> hb_font_funcs_t
<span class="lineart">╰──</span> hb_font_t
</pre>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-font.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-font.functions_details"></a><h2>Functions</h2>
@@ -692,7 +630,7 @@ hb_font_add_glyph_origin_for_direction
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *x</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *y</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-add-glyph-origin-for-direction.parameters"></a><h4>Parameters</h4>
+<a name="idp24645120"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -718,35 +656,19 @@ hb_font_add_glyph_origin_for_direction
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-font-create"></a><h3>hb_font_create ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="returnvalue">hb_font_t</span></a> *
hb_font_create (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
-<p><span class="annotation">[Xconstructor]</span></p>
-<div class="refsect3">
-<a name="hb-font-create.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>face</p></td>
-<td class="parameter_description"><p>a face.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
+<p>
+</p>
<div class="refsect3">
-<a name="hb-font-create.returns"></a><h4>Returns</h4>
-<p>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+<a name="idp24665728"></a><h4>Returns</h4>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
</div>
<hr>
<div class="refsect2">
@@ -754,7 +676,7 @@ hb_font_create (<em class="parameter"><code><a class="link" href="harfbuzz-hb-fa
<pre class="programlisting"><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="returnvalue">hb_font_t</span></a> *
hb_font_create_sub_font (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *parent</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-create-sub-font.parameters"></a><h4>Parameters</h4>
+<a name="idp24672976"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -769,20 +691,19 @@ hb_font_create_sub_font (<em class="parameter"><code><a class="link" href="harfb
</table></div>
</div>
<div class="refsect3">
-<a name="hb-font-create-sub-font.returns"></a><h4>Returns</h4>
+<a name="idp24680480"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-font-destroy"></a><h3>hb_font_destroy ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
hb_font_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-font-destroy.parameters"></a><h4>Parameters</h4>
+<a name="idp24689680"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -796,29 +717,27 @@ hb_font_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-f
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-font-funcs-create"></a><h3>hb_font_funcs_create ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t"><span class="returnvalue">hb_font_funcs_t</span></a> *
hb_font_funcs_create (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p><span class="annotation">[Xconstructor]</span></p>
+<p>
+</p>
<div class="refsect3">
-<a name="hb-font-funcs-create.returns"></a><h4>Returns</h4>
-<p>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+<a name="idp24703088"></a><h4>Returns</h4>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="hb-font-funcs-destroy"></a><h3>hb_font_funcs_destroy ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
hb_font_funcs_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t"><span class="type">hb_font_funcs_t</span></a> *ffuncs</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-font-funcs-destroy.parameters"></a><h4>Parameters</h4>
+<a name="idp24710336"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -832,7 +751,7 @@ hb_font_funcs_destroy (<em class="parameter"><code><a class="link" href="harfbuz
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -840,11 +759,11 @@ hb_font_funcs_destroy (<em class="parameter"><code><a class="link" href="harfbuz
<pre class="programlisting"><a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t"><span class="returnvalue">hb_font_funcs_t</span></a> *
hb_font_funcs_get_empty (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-funcs-get-empty.returns"></a><h4>Returns</h4>
+<a name="idp24723824"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -852,9 +771,8 @@ hb_font_funcs_get_empty (<em class="parameter"><code><span class="type">void</sp
<pre class="programlisting"><span class="returnvalue">void</span> *
hb_font_funcs_get_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t"><span class="type">hb_font_funcs_t</span></a> *ffuncs</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-font-funcs-get-user-data.parameters"></a><h4>Parameters</h4>
+<a name="idp24734400"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -869,11 +787,11 @@ hb_font_funcs_get_user_data (<em class="parameter"><code><a class="link" href="h
</table></div>
</div>
<div class="refsect3">
-<a name="hb-font-funcs-get-user-data.returns"></a><h4>Returns</h4>
+<a name="idp24741904"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -881,7 +799,7 @@ hb_font_funcs_get_user_data (<em class="parameter"><code><a class="link" href="h
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
hb_font_funcs_is_immutable (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t"><span class="type">hb_font_funcs_t</span></a> *ffuncs</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-funcs-is-immutable.parameters"></a><h4>Parameters</h4>
+<a name="idp24751104"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -895,7 +813,11 @@ hb_font_funcs_is_immutable (<em class="parameter"><code><a class="link" href="ha
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp24759184"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -903,7 +825,7 @@ hb_font_funcs_is_immutable (<em class="parameter"><code><a class="link" href="ha
<pre class="programlisting"><span class="returnvalue">void</span>
hb_font_funcs_make_immutable (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t"><span class="type">hb_font_funcs_t</span></a> *ffuncs</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-funcs-make-immutable.parameters"></a><h4>Parameters</h4>
+<a name="idp24768624"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -917,16 +839,15 @@ hb_font_funcs_make_immutable (<em class="parameter"><code><a class="link" href="
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-font-funcs-reference"></a><h3>hb_font_funcs_reference ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t"><span class="returnvalue">hb_font_funcs_t</span></a> *
hb_font_funcs_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t"><span class="type">hb_font_funcs_t</span></a> *ffuncs</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-font-funcs-reference.parameters"></a><h4>Parameters</h4>
+<a name="idp24785040"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -940,7 +861,11 @@ hb_font_funcs_reference (<em class="parameter"><code><a class="link" href="harfb
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp24793440"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -952,7 +877,7 @@ hb_font_funcs_set_glyph_contour_point_func
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-funcs-set-glyph-contour-point-func.parameters"></a><h4>Parameters</h4>
+<a name="idp24808064"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -973,7 +898,7 @@ hb_font_funcs_set_glyph_contour_point_func
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -984,7 +909,7 @@ hb_font_funcs_set_glyph_extents_func (<em class="parameter"><code><a class="link
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-funcs-set-glyph-extents-func.parameters"></a><h4>Parameters</h4>
+<a name="idp24834320"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1005,7 +930,7 @@ hb_font_funcs_set_glyph_extents_func (<em class="parameter"><code><a class="link
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1017,28 +942,21 @@ hb_font_funcs_set_glyph_from_name_func
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-funcs-set-glyph-from-name-func.parameters"></a><h4>Parameters</h4>
+<a name="idp24860624"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
-<tbody>
-<tr>
+<tbody><tr>
<td class="parameter_name"><p>ffuncs</p></td>
<td class="parameter_description"><p>font functions.</p></td>
<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
-</tr>
-</tbody>
+</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1048,32 +966,22 @@ hb_font_funcs_set_glyph_func (<em class="parameter"><code><a class="link" href="
<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-func-t" title="hb_font_get_glyph_func_t ()"><span class="type">hb_font_get_glyph_func_t</span></a> func</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
-<div class="warning"><p><code class="literal">hb_font_funcs_set_glyph_func</code> has been deprecated since version 1.2.3 and should not be used in newly-written code.</p></div>
-<p>Deprecated. Use <code class="function">hb_font_funcs_set_nominal_glyph_func()</code> and
-<code class="function">hb_font_funcs_set_variation_glyph_func()</code> instead.</p>
<div class="refsect3">
-<a name="hb-font-funcs-set-glyph-func.parameters"></a><h4>Parameters</h4>
+<a name="idp24882160"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
-<tbody>
-<tr>
+<tbody><tr>
<td class="parameter_name"><p>ffuncs</p></td>
<td class="parameter_description"><p>font functions.</p></td>
<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
-</tr>
-</tbody>
+</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1085,7 +993,7 @@ hb_font_funcs_set_glyph_h_advance_func
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-funcs-set-glyph-h-advance-func.parameters"></a><h4>Parameters</h4>
+<a name="idp24903696"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1106,7 +1014,7 @@ hb_font_funcs_set_glyph_h_advance_func
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1118,7 +1026,7 @@ hb_font_funcs_set_glyph_h_kerning_func
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-funcs-set-glyph-h-kerning-func.parameters"></a><h4>Parameters</h4>
+<a name="idp24930000"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1139,7 +1047,7 @@ hb_font_funcs_set_glyph_h_kerning_func
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1150,7 +1058,7 @@ hb_font_funcs_set_glyph_h_origin_func (<em class="parameter"><code><a class="lin
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-funcs-set-glyph-h-origin-func.parameters"></a><h4>Parameters</h4>
+<a name="idp24956320"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1171,7 +1079,7 @@ hb_font_funcs_set_glyph_h_origin_func (<em class="parameter"><code><a class="lin
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1182,28 +1090,21 @@ hb_font_funcs_set_glyph_name_func (<em class="parameter"><code><a class="link" h
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-funcs-set-glyph-name-func.parameters"></a><h4>Parameters</h4>
+<a name="idp24982496"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
-<tbody>
-<tr>
+<tbody><tr>
<td class="parameter_name"><p>ffuncs</p></td>
<td class="parameter_description"><p>font functions.</p></td>
<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
-</tr>
-</tbody>
+</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1215,7 +1116,7 @@ hb_font_funcs_set_glyph_v_advance_func
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-funcs-set-glyph-v-advance-func.parameters"></a><h4>Parameters</h4>
+<a name="idp25004096"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1236,7 +1137,7 @@ hb_font_funcs_set_glyph_v_advance_func
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1248,7 +1149,7 @@ hb_font_funcs_set_glyph_v_kerning_func
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-funcs-set-glyph-v-kerning-func.parameters"></a><h4>Parameters</h4>
+<a name="idp25030400"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1269,7 +1170,7 @@ hb_font_funcs_set_glyph_v_kerning_func
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1280,7 +1181,7 @@ hb_font_funcs_set_glyph_v_origin_func (<em class="parameter"><code><a class="lin
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-funcs-set-glyph-v-origin-func.parameters"></a><h4>Parameters</h4>
+<a name="idp25056720"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1301,7 +1202,7 @@ hb_font_funcs_set_glyph_v_origin_func (<em class="parameter"><code><a class="lin
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1312,9 +1213,8 @@ hb_font_funcs_set_user_data (<em class="parameter"><code><a class="link" href="h
<em class="parameter"><code><span class="type">void</span> *data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="type">hb_bool_t</span></a> replace</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-font-funcs-set-user-data.parameters"></a><h4>Parameters</h4>
+<a name="idp25084624"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1328,7 +1228,11 @@ hb_font_funcs_set_user_data (<em class="parameter"><code><a class="link" href="h
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp25093024"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1336,10 +1240,11 @@ hb_font_funcs_set_user_data (<em class="parameter"><code><a class="link" href="h
<pre class="programlisting"><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="returnvalue">hb_font_t</span></a> *
hb_font_get_empty (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-empty.returns"></a><h4>Returns</h4>
+<a name="idp25101776"></a><h4>Returns</h4>
<p> (transfer full)</p>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1347,7 +1252,7 @@ hb_font_get_empty (<em class="parameter"><code><span class="type">void</span></c
<pre class="programlisting"><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="returnvalue">hb_face_t</span></a> *
hb_font_get_face (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-face.parameters"></a><h4>Parameters</h4>
+<a name="idp25111616"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1362,11 +1267,11 @@ hb_font_get_face (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
</table></div>
</div>
<div class="refsect3">
-<a name="hb-font-get-face.returns"></a><h4>Returns</h4>
+<a name="idp25120016"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1377,7 +1282,7 @@ hb_font_get_glyph (<em class="parameter"><code><a class="link" href="harfbuzz-hb
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> variation_selector</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *glyph</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph.parameters"></a><h4>Parameters</h4>
+<a name="idp25136000"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1398,7 +1303,11 @@ hb_font_get_glyph (<em class="parameter"><code><a class="link" href="harfbuzz-hb
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp25148112"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1411,7 +1320,7 @@ hb_font_get_glyph_advance_for_direction
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *x</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *y</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph-advance-for-direction.parameters"></a><h4>Parameters</h4>
+<a name="idp25164464"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1437,7 +1346,7 @@ hb_font_get_glyph_advance_for_direction
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1447,6 +1356,12 @@ hb_font_get_glyph_advance_for_direction
<em class="parameter"><code><span class="type">void</span> *font_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> glyph</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp25194864"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -1458,7 +1373,7 @@ hb_font_get_glyph_contour_point (<em class="parameter"><code><a class="link" hre
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *x</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *y</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph-contour-point.parameters"></a><h4>Parameters</h4>
+<a name="idp25210592"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1484,7 +1399,11 @@ hb_font_get_glyph_contour_point (<em class="parameter"><code><a class="link" hre
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp25226416"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1498,7 +1417,7 @@ hb_font_get_glyph_contour_point_for_origin
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *x</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *y</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph-contour-point-for-origin.parameters"></a><h4>Parameters</h4>
+<a name="idp25244640"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1524,7 +1443,11 @@ hb_font_get_glyph_contour_point_for_origin
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp25260464"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1538,6 +1461,12 @@ hb_font_get_glyph_contour_point_for_origin
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *x</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *y</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp25281728"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -1547,7 +1476,7 @@ hb_font_get_glyph_extents (<em class="parameter"><code><a class="link" href="har
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> glyph</code></em>,
<em class="parameter"><code><span class="type">hb_glyph_extents_t</span> *extents</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph-extents.parameters"></a><h4>Parameters</h4>
+<a name="idp25293952"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1568,7 +1497,11 @@ hb_font_get_glyph_extents (<em class="parameter"><code><a class="link" href="har
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp25306064"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1579,7 +1512,7 @@ hb_font_get_glyph_extents_for_origin (<em class="parameter"><code><a class="link
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> direction</code></em>,
<em class="parameter"><code><span class="type">hb_glyph_extents_t</span> *extents</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph-extents-for-origin.parameters"></a><h4>Parameters</h4>
+<a name="idp25320672"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1600,7 +1533,11 @@ hb_font_get_glyph_extents_for_origin (<em class="parameter"><code><a class="link
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp25332784"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1611,6 +1548,12 @@ hb_font_get_glyph_extents_for_origin (<em class="parameter"><code><a class="link
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> glyph</code></em>,
<em class="parameter"><code><span class="type">hb_glyph_extents_t</span> *extents</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp25350560"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -1621,7 +1564,7 @@ hb_font_get_glyph_from_name (<em class="parameter"><code><a class="link" href="h
<em class="parameter"><code><span class="type">int</span> len</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *glyph</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph-from-name.parameters"></a><h4>Parameters</h4>
+<a name="idp25364656"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1647,7 +1590,11 @@ hb_font_get_glyph_from_name (<em class="parameter"><code><a class="link" href="h
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp25380480"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1657,6 +1604,12 @@ hb_font_get_glyph_from_name (<em class="parameter"><code><a class="link" href="h
<em class="parameter"><code><span class="type">void</span> *font_data</code></em>,
<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
<em class="parameter"><code><span class="type">int</span> len</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp25396720"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -1668,7 +1621,12 @@ hb_font_get_glyph_from_name (<em class="parameter"><code><a class="link" href="h
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> variation_selector</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *glyph</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
-<div class="warning"><p><code class="literal">hb_font_get_glyph_func_t</code> is deprecated and should not be used in newly-written code.</p></div>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp25415520"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -1677,7 +1635,7 @@ hb_font_get_glyph_from_name (<em class="parameter"><code><a class="link" href="h
hb_font_get_glyph_h_advance (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> glyph</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph-h-advance.parameters"></a><h4>Parameters</h4>
+<a name="idp25426048"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1691,7 +1649,11 @@ hb_font_get_glyph_h_advance (<em class="parameter"><code><a class="link" href="h
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp25434448"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1701,7 +1663,7 @@ hb_font_get_glyph_h_kerning (<em class="parameter"><code><a class="link" href="h
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> left_glyph</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> right_glyph</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph-h-kerning.parameters"></a><h4>Parameters</h4>
+<a name="idp25447280"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1715,7 +1677,11 @@ hb_font_get_glyph_h_kerning (<em class="parameter"><code><a class="link" href="h
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp25455680"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1726,7 +1692,7 @@ hb_font_get_glyph_h_origin (<em class="parameter"><code><a class="link" href="ha
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *x</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *y</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph-h-origin.parameters"></a><h4>Parameters</h4>
+<a name="idp25470208"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1752,7 +1718,11 @@ hb_font_get_glyph_h_origin (<em class="parameter"><code><a class="link" href="ha
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp25486032"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1766,7 +1736,7 @@ hb_font_get_glyph_kerning_for_direction
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *x</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *y</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph-kerning-for-direction.parameters"></a><h4>Parameters</h4>
+<a name="idp25504080"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1792,7 +1762,7 @@ hb_font_get_glyph_kerning_for_direction
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1803,6 +1773,12 @@ hb_font_get_glyph_kerning_for_direction
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> first_glyph</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> second_glyph</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp25536256"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -1813,7 +1789,7 @@ hb_font_get_glyph_name (<em class="parameter"><code><a class="link" href="harfbu
<em class="parameter"><code><span class="type">char</span> *name</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> size</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph-name.parameters"></a><h4>Parameters</h4>
+<a name="idp25550288"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1834,7 +1810,11 @@ hb_font_get_glyph_name (<em class="parameter"><code><a class="link" href="harfbu
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp25562400"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1846,6 +1826,12 @@ hb_font_get_glyph_name (<em class="parameter"><code><a class="link" href="harfbu
<em class="parameter"><code><span class="type">char</span> *name</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> size</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp25581984"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -1858,7 +1844,7 @@ hb_font_get_glyph_origin_for_direction
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *x</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *y</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph-origin-for-direction.parameters"></a><h4>Parameters</h4>
+<a name="idp25597664"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1884,7 +1870,7 @@ hb_font_get_glyph_origin_for_direction
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1896,6 +1882,12 @@ hb_font_get_glyph_origin_for_direction
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *x</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *y</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp25631472"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -1904,7 +1896,7 @@ hb_font_get_glyph_origin_for_direction
hb_font_get_glyph_v_advance (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> glyph</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph-v-advance.parameters"></a><h4>Parameters</h4>
+<a name="idp25641936"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1918,7 +1910,11 @@ hb_font_get_glyph_v_advance (<em class="parameter"><code><a class="link" href="h
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp25650336"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1928,7 +1924,7 @@ hb_font_get_glyph_v_kerning (<em class="parameter"><code><a class="link" href="h
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> top_glyph</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> bottom_glyph</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph-v-kerning.parameters"></a><h4>Parameters</h4>
+<a name="idp25663104"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1942,7 +1938,11 @@ hb_font_get_glyph_v_kerning (<em class="parameter"><code><a class="link" href="h
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp25671504"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1953,7 +1953,7 @@ hb_font_get_glyph_v_origin (<em class="parameter"><code><a class="link" href="ha
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *x</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *y</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph-v-origin.parameters"></a><h4>Parameters</h4>
+<a name="idp25686032"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1979,7 +1979,11 @@ hb_font_get_glyph_v_origin (<em class="parameter"><code><a class="link" href="ha
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp25701856"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -1987,7 +1991,7 @@ hb_font_get_glyph_v_origin (<em class="parameter"><code><a class="link" href="ha
<pre class="programlisting"><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="returnvalue">hb_font_t</span></a> *
hb_font_get_parent (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-parent.parameters"></a><h4>Parameters</h4>
+<a name="idp25711216"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -2002,11 +2006,11 @@ hb_font_get_parent (<em class="parameter"><code><a class="link" href="harfbuzz-h
</table></div>
</div>
<div class="refsect3">
-<a name="hb-font-get-parent.returns"></a><h4>Returns</h4>
+<a name="idp25719616"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -2016,7 +2020,7 @@ hb_font_get_ppem (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
<em class="parameter"><code>unsigned <span class="type">int</span> *x_ppem</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *y_ppem</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-ppem.parameters"></a><h4>Parameters</h4>
+<a name="idp25734272"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -2042,7 +2046,7 @@ hb_font_get_ppem (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -2052,7 +2056,7 @@ hb_font_get_scale (<em class="parameter"><code><a class="link" href="harfbuzz-hb
<em class="parameter"><code><span class="type">int</span> *x_scale</code></em>,
<em class="parameter"><code><span class="type">int</span> *y_scale</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-scale.parameters"></a><h4>Parameters</h4>
+<a name="idp25761376"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -2078,7 +2082,7 @@ hb_font_get_scale (<em class="parameter"><code><a class="link" href="harfbuzz-hb
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -2086,9 +2090,8 @@ hb_font_get_scale (<em class="parameter"><code><a class="link" href="harfbuzz-hb
<pre class="programlisting"><span class="returnvalue">void</span> *
hb_font_get_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-font-get-user-data.parameters"></a><h4>Parameters</h4>
+<a name="idp25786848"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -2103,11 +2106,11 @@ hb_font_get_user_data (<em class="parameter"><code><a class="link" href="harfbuz
</table></div>
</div>
<div class="refsect3">
-<a name="hb-font-get-user-data.returns"></a><h4>Returns</h4>
+<a name="idp25795248"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -2118,7 +2121,7 @@ hb_font_glyph_from_string (<em class="parameter"><code><a class="link" href="har
<em class="parameter"><code><span class="type">int</span> len</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *glyph</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-glyph-from-string.parameters"></a><h4>Parameters</h4>
+<a name="idp25811552"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -2134,7 +2137,7 @@ hb_font_glyph_from_string (<em class="parameter"><code><a class="link" href="har
<tr>
<td class="parameter_name"><p>s</p></td>
<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>glyph</p></td>
@@ -2144,7 +2147,11 @@ hb_font_glyph_from_string (<em class="parameter"><code><a class="link" href="har
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp25827376"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -2155,7 +2162,7 @@ hb_font_glyph_to_string (<em class="parameter"><code><a class="link" href="harfb
<em class="parameter"><code><span class="type">char</span> *s</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> size</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-glyph-to-string.parameters"></a><h4>Parameters</h4>
+<a name="idp25842016"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -2176,7 +2183,7 @@ hb_font_glyph_to_string (<em class="parameter"><code><a class="link" href="harfb
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -2184,7 +2191,7 @@ hb_font_glyph_to_string (<em class="parameter"><code><a class="link" href="harfb
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
hb_font_is_immutable (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-is-immutable.parameters"></a><h4>Parameters</h4>
+<a name="idp25862080"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -2198,7 +2205,11 @@ hb_font_is_immutable (<em class="parameter"><code><a class="link" href="harfbuzz
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp25870480"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -2206,7 +2217,7 @@ hb_font_is_immutable (<em class="parameter"><code><a class="link" href="harfbuzz
<pre class="programlisting"><span class="returnvalue">void</span>
hb_font_make_immutable (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-make-immutable.parameters"></a><h4>Parameters</h4>
+<a name="idp25879856"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -2220,16 +2231,15 @@ hb_font_make_immutable (<em class="parameter"><code><a class="link" href="harfbu
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-font-reference"></a><h3>hb_font_reference ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="returnvalue">hb_font_t</span></a> *
hb_font_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-font-reference.parameters"></a><h4>Parameters</h4>
+<a name="idp25896192"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -2244,11 +2254,11 @@ hb_font_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb
</table></div>
</div>
<div class="refsect3">
-<a name="hb-font-reference.returns"></a><h4>Returns</h4>
+<a name="idp25904592"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -2259,7 +2269,7 @@ hb_font_set_funcs (<em class="parameter"><code><a class="link" href="harfbuzz-hb
<em class="parameter"><code><span class="type">void</span> *font_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-set-funcs.parameters"></a><h4>Parameters</h4>
+<a name="idp25920576"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -2280,7 +2290,7 @@ hb_font_set_funcs (<em class="parameter"><code><a class="link" href="harfbuzz-hb
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -2290,7 +2300,7 @@ hb_font_set_funcs_data (<em class="parameter"><code><a class="link" href="harfbu
<em class="parameter"><code><span class="type">void</span> *font_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-set-funcs-data.parameters"></a><h4>Parameters</h4>
+<a name="idp25945024"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -2311,7 +2321,7 @@ hb_font_set_funcs_data (<em class="parameter"><code><a class="link" href="harfbu
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -2321,7 +2331,7 @@ hb_font_set_ppem (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
<em class="parameter"><code>unsigned <span class="type">int</span> x_ppem</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> y_ppem</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-set-ppem.parameters"></a><h4>Parameters</h4>
+<a name="idp25969200"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -2335,7 +2345,7 @@ hb_font_set_ppem (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -2345,7 +2355,7 @@ hb_font_set_scale (<em class="parameter"><code><a class="link" href="harfbuzz-hb
<em class="parameter"><code><span class="type">int</span> x_scale</code></em>,
<em class="parameter"><code><span class="type">int</span> y_scale</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-set-scale.parameters"></a><h4>Parameters</h4>
+<a name="idp25988880"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -2359,7 +2369,7 @@ hb_font_set_scale (<em class="parameter"><code><a class="link" href="harfbuzz-hb
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -2370,9 +2380,8 @@ hb_font_set_user_data (<em class="parameter"><code><a class="link" href="harfbuz
<em class="parameter"><code><span class="type">void</span> *data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="type">hb_bool_t</span></a> replace</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-font-set-user-data.parameters"></a><h4>Parameters</h4>
+<a name="idp26012016"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -2386,7 +2395,11 @@ hb_font_set_user_data (<em class="parameter"><code><a class="link" href="harfbuz
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp26020416"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -2399,7 +2412,7 @@ hb_font_subtract_glyph_origin_for_direction
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *x</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *y</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-subtract-glyph-origin-for-direction.parameters"></a><h4>Parameters</h4>
+<a name="idp26036768"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -2425,7 +2438,7 @@ hb_font_subtract_glyph_origin_for_direction
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -2434,195 +2447,12 @@ hb_font_subtract_glyph_origin_for_direction
<span class="c_punctuation">(</span>*hb_reference_table_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> tag</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-font-funcs-set-font-h-extents-func"></a><h3>hb_font_funcs_set_font_h_extents_func ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_font_funcs_set_font_h_extents_func (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t"><span class="type">hb_font_funcs_t</span></a> *ffuncs</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-get-font-h-extents-func-t" title="hb_font_get_font_h_extents_func_t"><span class="type">hb_font_get_font_h_extents_func_t</span></a> func</code></em>,
- <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
-<div class="refsect3">
-<a name="hb-font-funcs-set-font-h-extents-func.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>ffuncs</p></td>
-<td class="parameter_description"><p>font functions.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-1-1-2.html#api-index-1.1.2">1.1.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-font-funcs-set-font-v-extents-func"></a><h3>hb_font_funcs_set_font_v_extents_func ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_font_funcs_set_font_v_extents_func (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t"><span class="type">hb_font_funcs_t</span></a> *ffuncs</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-get-font-v-extents-func-t" title="hb_font_get_font_v_extents_func_t"><span class="type">hb_font_get_font_v_extents_func_t</span></a> func</code></em>,
- <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
-<div class="refsect3">
-<a name="hb-font-funcs-set-font-v-extents-func.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>ffuncs</p></td>
-<td class="parameter_description"><p>font functions.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-1-1-2.html#api-index-1.1.2">1.1.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-font-get-extents-for-direction"></a><h3>hb_font_get_extents_for_direction ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_font_get_extents_for_direction (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> direction</code></em>,
- <em class="parameter"><code><span class="type">hb_font_extents_t</span> *extents</code></em>);</pre>
+<p>
+</p>
<div class="refsect3">
-<a name="hb-font-get-extents-for-direction.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>font</p></td>
-<td class="parameter_description"><p>a font.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
+<a name="idp26065488"></a><h4>Returns</h4>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-1-1-3.html#api-index-1.1.3">1.1.3</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-font-get-font-extents-func-t"></a><h3>hb_font_get_font_extents_func_t ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-<span class="c_punctuation">(</span>*hb_font_get_font_extents_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><span class="type">void</span> *font_data</code></em>,
- <em class="parameter"><code><span class="type">hb_font_extents_t</span> *metrics</code></em>,
- <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-font-get-h-extents"></a><h3>hb_font_get_h_extents ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-hb_font_get_h_extents (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><span class="type">hb_font_extents_t</span> *extents</code></em>);</pre>
-<div class="refsect3">
-<a name="hb-font-get-h-extents.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>font</p></td>
-<td class="parameter_description"><p>a font.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>extents</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-1-1-3.html#api-index-1.1.3">1.1.3</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-font-get-v-extents"></a><h3>hb_font_get_v_extents ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-hb_font_get_v_extents (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><span class="type">hb_font_extents_t</span> *extents</code></em>);</pre>
-<div class="refsect3">
-<a name="hb-font-get-v-extents.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>font</p></td>
-<td class="parameter_description"><p>a font.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>extents</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-1-1-3.html#api-index-1.1.3">1.1.3</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-font-set-parent"></a><h3>hb_font_set_parent ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_font_set_parent (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *parent</code></em>);</pre>
-<p>Sets parent font of <em class="parameter"><code>font</code></em>
-.</p>
-<div class="refsect3">
-<a name="hb-font-set-parent.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>font</p></td>
-<td class="parameter_description"><p>a font.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>parent</p></td>
-<td class="parameter_description"><p>new parent.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: <a class="link" href="api-index-1-0-5.html#api-index-1.0.5">1.0.5</a></p>
</div>
</div>
<div class="refsect1">
@@ -2631,64 +2461,69 @@ hb_font_set_parent (<em class="parameter"><code><a class="link" href="harfbuzz-h
<a name="hb-font-funcs-t"></a><h3>hb_font_funcs_t</h3>
<pre class="programlisting">typedef struct hb_font_funcs_t hb_font_funcs_t;
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-font-get-glyph-h-advance-func-t"></a><h3>hb_font_get_glyph_h_advance_func_t</h3>
<pre class="programlisting">typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_h_advance_func_t;
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-font-get-glyph-h-kerning-func-t"></a><h3>hb_font_get_glyph_h_kerning_func_t</h3>
<pre class="programlisting">typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_h_kerning_func_t;
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-font-get-glyph-h-origin-func-t"></a><h3>hb_font_get_glyph_h_origin_func_t</h3>
<pre class="programlisting">typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_h_origin_func_t;
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-font-get-glyph-v-advance-func-t"></a><h3>hb_font_get_glyph_v_advance_func_t</h3>
<pre class="programlisting">typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_v_advance_func_t;
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-font-get-glyph-v-kerning-func-t"></a><h3>hb_font_get_glyph_v_kerning_func_t</h3>
<pre class="programlisting">typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_v_kerning_func_t;
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-font-get-glyph-v-origin-func-t"></a><h3>hb_font_get_glyph_v_origin_func_t</h3>
<pre class="programlisting">typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_v_origin_func_t;
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-font-t"></a><h3>hb_font_t</h3>
<pre class="programlisting">typedef struct hb_font_t hb_font_t;
</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-font-get-font-h-extents-func-t"></a><h3>hb_font_get_font_h_extents_func_t</h3>
-<pre class="programlisting">typedef hb_font_get_font_extents_func_t hb_font_get_font_h_extents_func_t;
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-font-get-font-v-extents-func-t"></a><h3>hb_font_get_font_v_extents_func_t</h3>
-<pre class="programlisting">typedef hb_font_get_font_extents_func_t hb_font_get_font_v_extents_func_t;
-</pre>
+<p>
+</p>
</div>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-ft.html b/docs/reference/html/harfbuzz-hb-ft.html
index 66c83db..910af86 100644
--- a/docs/html/harfbuzz-hb-ft.html
+++ b/docs/reference/html/harfbuzz-hb-ft.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-ft: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
+<title>hb-ft</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
<link rel="prev" href="harfbuzz-hb-icu.html" title="hb-icu">
<link rel="next" href="harfbuzz-hb-graphite2.html" title="hb-graphite2">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,7 +18,7 @@
<a href="#harfbuzz-hb-ft.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="harfbuzz-hb-icu.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb-graphite2.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
@@ -57,14 +57,6 @@
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="returnvalue">hb_face_t</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-ft.html#hb-ft-face-create-referenced" title="hb_ft_face_create_referenced ()">hb_ft_face_create_referenced</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
<a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="returnvalue">hb_font_t</span></a> *
</td>
<td class="function_name">
@@ -73,14 +65,6 @@
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="returnvalue">hb_font_t</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-ft.html#hb-ft-font-create-referenced" title="hb_ft_font_create_referenced ()">hb_ft_font_create_referenced</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
<span class="returnvalue">FT_Face</span>
</td>
<td class="function_name">
@@ -92,22 +76,6 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-ft.html#hb-ft-font-set-load-flags" title="hb_ft_font_set_load_flags ()">hb_ft_font_set_load_flags</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">int</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-ft.html#hb-ft-font-get-load-flags" title="hb_ft_font_get_load_flags ()">hb_ft_font_get_load_flags</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
<a class="link" href="harfbuzz-hb-ft.html#hb-ft-font-set-funcs" title="hb_ft_font_set_funcs ()">hb_ft_font_set_funcs</a> <span class="c_punctuation">()</span>
</td>
</tr>
@@ -116,6 +84,8 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-ft.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-ft.functions_details"></a><h2>Functions</h2>
@@ -125,7 +95,7 @@
hb_ft_face_create (<em class="parameter"><code><span class="type">FT_Face</span> ft_face</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-ft-face-create.parameters"></a><h4>Parameters</h4>
+<a name="idp18589520"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -140,11 +110,11 @@ hb_ft_face_create (<em class="parameter"><code><span class="type">FT_Face</span>
</table></div>
</div>
<div class="refsect3">
-<a name="hb-ft-face-create.returns"></a><h4>Returns</h4>
+<a name="idp14983456"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -152,23 +122,11 @@ hb_ft_face_create (<em class="parameter"><code><span class="type">FT_Face</span>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="returnvalue">hb_face_t</span></a> *
hb_ft_face_create_cached (<em class="parameter"><code><span class="type">FT_Face</span> ft_face</code></em>);</pre>
<div class="refsect3">
-<a name="hb-ft-face-create-cached.returns"></a><h4>Returns</h4>
+<a name="idp16534320"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-ft-face-create-referenced"></a><h3>hb_ft_face_create_referenced ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="returnvalue">hb_face_t</span></a> *
-hb_ft_face_create_referenced (<em class="parameter"><code><span class="type">FT_Face</span> ft_face</code></em>);</pre>
-<div class="refsect3">
-<a name="hb-ft-face-create-referenced.returns"></a><h4>Returns</h4>
-<p>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-38.html#api-index-0.9.38">0.9.38</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -177,7 +135,7 @@ hb_ft_face_create_referenced (<em class="parameter"><code><span class="type">FT_
hb_ft_font_create (<em class="parameter"><code><span class="type">FT_Face</span> ft_face</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-ft-font-create.parameters"></a><h4>Parameters</h4>
+<a name="idp18930768"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -192,50 +150,31 @@ hb_ft_font_create (<em class="parameter"><code><span class="type">FT_Face</span>
</table></div>
</div>
<div class="refsect3">
-<a name="hb-ft-font-create.returns"></a><h4>Returns</h4>
+<a name="idp14801584"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-ft-font-create-referenced"></a><h3>hb_ft_font_create_referenced ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="returnvalue">hb_font_t</span></a> *
-hb_ft_font_create_referenced (<em class="parameter"><code><span class="type">FT_Face</span> ft_face</code></em>);</pre>
-<div class="refsect3">
-<a name="hb-ft-font-create-referenced.returns"></a><h4>Returns</h4>
-<p>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-38.html#api-index-0.9.38">0.9.38</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-ft-font-get-face"></a><h3>hb_ft_font_get_face ()</h3>
<pre class="programlisting"><span class="returnvalue">FT_Face</span>
hb_ft_font_get_face (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp26507392"></a><h4>Returns</h4>
+<p></p>
</div>
-<hr>
-<div class="refsect2">
-<a name="hb-ft-font-set-load-flags"></a><h3>hb_ft_font_set_load_flags ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_ft_font_set_load_flags (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><span class="type">int</span> load_flags</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-1-0-5.html#api-index-1.0.5">1.0.5</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-ft-font-get-load-flags"></a><h3>hb_ft_font_get_load_flags ()</h3>
-<pre class="programlisting"><span class="returnvalue">int</span>
-hb_ft_font_get_load_flags (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-1-0-5.html#api-index-1.0.5">1.0.5</a></p>
</div>
<hr>
<div class="refsect2">
<a name="hb-ft-font-set-funcs"></a><h3>hb_ft_font_set_funcs ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
hb_ft_font_set_funcs (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>);</pre>
+<p>
+</p>
</div>
</div>
<div class="refsect1">
@@ -243,6 +182,7 @@ hb_ft_font_set_funcs (<em class="parameter"><code><a class="link" href="harfbuzz
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-glib.html b/docs/reference/html/harfbuzz-hb-glib.html
index 342625c..03ab919 100644
--- a/docs/html/harfbuzz-hb-glib.html
+++ b/docs/reference/html/harfbuzz-hb-glib.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-glib: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
+<title>hb-glib</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
<link rel="prev" href="harfbuzz-hb-shape-plan.html" title="hb-shape-plan">
<link rel="next" href="harfbuzz-hb-icu.html" title="hb-icu">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,7 +18,7 @@
<a href="#harfbuzz-hb-glib.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="harfbuzz-hb-shape-plan.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb-icu.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
@@ -63,19 +63,13 @@
<a class="link" href="harfbuzz-hb-glib.html#hb-glib-script-to-script" title="hb_glib_script_to_script ()">hb_glib_script_to_script</a> <span class="c_punctuation">()</span>
</td>
</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-blob.html#hb-blob-t"><span class="returnvalue">hb_blob_t</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-glib.html#hb-glib-blob-create" title="hb_glib_blob_create ()">hb_glib_blob_create</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-glib.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-glib.functions_details"></a><h2>Functions</h2>
@@ -83,25 +77,36 @@
<a name="hb-glib-get-unicode-funcs"></a><h3>hb_glib_get_unicode_funcs ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="returnvalue">hb_unicode_funcs_t</span></a> *
hb_glib_get_unicode_funcs (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp18673488"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
<a name="hb-glib-script-from-script"></a><h3>hb_glib_script_from_script ()</h3>
<pre class="programlisting"><span class="returnvalue">GUnicodeScript</span>
hb_glib_script_from_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> script</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp19415904"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
<a name="hb-glib-script-to-script"></a><h3>hb_glib_script_to_script ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
hb_glib_script_to_script (<em class="parameter"><code><span class="type">GUnicodeScript</span> script</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp16666160"></a><h4>Returns</h4>
+<p></p>
</div>
-<hr>
-<div class="refsect2">
-<a name="hb-glib-blob-create"></a><h3>hb_glib_blob_create ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t"><span class="returnvalue">hb_blob_t</span></a> *
-hb_glib_blob_create (<em class="parameter"><code><span class="type">GBytes</span> *gbytes</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-38.html#api-index-0.9.38">0.9.38</a></p>
</div>
</div>
<div class="refsect1">
@@ -109,6 +114,7 @@ hb_glib_blob_create (<em class="parameter"><code><span class="type">GBytes</span
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/reference/html/harfbuzz-hb-gobject.html b/docs/reference/html/harfbuzz-hb-gobject.html
new file mode 100644
index 0000000..2d21692
--- /dev/null
+++ b/docs/reference/html/harfbuzz-hb-gobject.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>hb-gobject</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
+<link rel="prev" href="harfbuzz-hb-coretext.html" title="hb-coretext">
+<link rel="next" href="object-tree.html" title="Object Hierarchy">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#harfbuzz-hb-gobject.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-coretext.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="object-tree.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="harfbuzz-hb-gobject"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="harfbuzz-hb-gobject.top_of_page"></a>hb-gobject</span></h2>
+<p>hb-gobject</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="harfbuzz-hb-gobject.description"></a><h2>Description</h2>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-gobject.functions_details"></a><h2>Functions</h2>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-gobject.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-graphite2.html b/docs/reference/html/harfbuzz-hb-graphite2.html
index a19c83c..2c57cac 100644
--- a/docs/html/harfbuzz-hb-graphite2.html
+++ b/docs/reference/html/harfbuzz-hb-graphite2.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-graphite2: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
+<title>hb-graphite2</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
<link rel="prev" href="harfbuzz-hb-ft.html" title="hb-ft">
<link rel="next" href="harfbuzz-hb-uniscribe.html" title="hb-uniscribe">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,7 +18,7 @@
<a href="#harfbuzz-hb-graphite2.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="harfbuzz-hb-ft.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb-uniscribe.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
@@ -73,6 +73,8 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-graphite2.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-graphite2.functions_details"></a><h2>Functions</h2>
@@ -80,12 +82,24 @@
<a name="hb-graphite2-face-get-gr-face"></a><h3>hb_graphite2_face_get_gr_face ()</h3>
<pre class="programlisting"><span class="returnvalue">gr_face</span> *
hb_graphite2_face_get_gr_face (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp14441472"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
<a name="hb-graphite2-font-get-gr-font"></a><h3>hb_graphite2_font_get_gr_font ()</h3>
<pre class="programlisting"><span class="returnvalue">gr_font</span> *
hb_graphite2_font_get_gr_font (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp23104224"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
</div>
<div class="refsect1">
@@ -94,10 +108,13 @@ hb_graphite2_font_get_gr_font (<em class="parameter"><code><a class="link" href=
<a name="HB-GRAPHITE2-TAG-SILF:CAPS"></a><h3>HB_GRAPHITE2_TAG_SILF</h3>
<pre class="programlisting">#define HB_GRAPHITE2_TAG_SILF HB_TAG('S','i','l','f')
</pre>
+<p>
+</p>
</div>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-icu.html b/docs/reference/html/harfbuzz-hb-icu.html
index 906e91c..307aeb2 100644
--- a/docs/html/harfbuzz-hb-icu.html
+++ b/docs/reference/html/harfbuzz-hb-icu.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-icu: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
+<title>hb-icu</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
<link rel="prev" href="harfbuzz-hb-glib.html" title="hb-glib">
<link rel="next" href="harfbuzz-hb-ft.html" title="hb-ft">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,7 +18,7 @@
<a href="#harfbuzz-hb-icu.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="harfbuzz-hb-glib.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb-ft.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
@@ -68,6 +68,8 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-icu.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-icu.functions_details"></a><h2>Functions</h2>
@@ -75,18 +77,36 @@
<a name="hb-icu-get-unicode-funcs"></a><h3>hb_icu_get_unicode_funcs ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="returnvalue">hb_unicode_funcs_t</span></a> *
hb_icu_get_unicode_funcs (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp14126544"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
<a name="hb-icu-script-from-script"></a><h3>hb_icu_script_from_script ()</h3>
<pre class="programlisting"><span class="returnvalue">UScriptCode</span>
hb_icu_script_from_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> script</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp20698224"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
<a name="hb-icu-script-to-script"></a><h3>hb_icu_script_to_script ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
hb_icu_script_to_script (<em class="parameter"><code><span class="type">UScriptCode</span> script</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp16604368"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
</div>
<div class="refsect1">
@@ -94,6 +114,7 @@ hb_icu_script_to_script (<em class="parameter"><code><span class="type">UScriptC
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-ot-layout.html b/docs/reference/html/harfbuzz-hb-ot-layout.html
index 0da9306..d7231db 100644
--- a/docs/html/harfbuzz-hb-ot-layout.html
+++ b/docs/reference/html/harfbuzz-hb-ot-layout.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-ot-layout: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
+<title>hb-ot-layout</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
<link rel="prev" href="harfbuzz-hb-ot.html" title="hb-ot">
<link rel="next" href="harfbuzz-hb-ot-tag.html" title="hb-ot-tag">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,7 +19,7 @@
<a href="#harfbuzz-hb-ot-layout.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="harfbuzz-hb-ot.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb-ot-tag.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
@@ -239,14 +239,6 @@
<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-shape-plan-collect-lookups" title="hb_ot_shape_plan_collect_lookups ()">hb_ot_shape_plan_collect_lookups</a> <span class="c_punctuation">()</span>
</td>
</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-language-get-required-feature-index" title="hb_ot_layout_language_get_required_feature_index ()">hb_ot_layout_language_get_required_feature_index</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
</tbody>
</table></div>
</div>
@@ -283,10 +275,6 @@
<td class="function_name"><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB">HB_OT_TAG_GSUB</a></td>
</tr>
<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-JSTF:CAPS" title="HB_OT_TAG_JSTF">HB_OT_TAG_JSTF</a></td>
-</tr>
-<tr>
<td class="datatype_keyword">enum</td>
<td class="function_name"><a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-glyph-class-t" title="enum hb_ot_layout_glyph_class_t">hb_ot_layout_glyph_class_t</a></td>
</tr>
@@ -295,12 +283,14 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-ot-layout.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
+<pre class="screen"> GEnum
<span class="lineart">╰──</span> hb_ot_layout_glyph_class_t
</pre>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-ot-layout.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-ot-layout.functions_details"></a><h2>Functions</h2>
@@ -313,7 +303,8 @@ hb_ot_layout_collect_lookups (<em class="parameter"><code><a class="link" href="
<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *languages</code></em>,
<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *features</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *lookup_indexes</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-8.html#api-index-0.9.8">0.9.8</a></p>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
@@ -325,7 +316,12 @@ hb_ot_layout_feature_get_lookups (<em class="parameter"><code><a class="link" hr
<em class="parameter"><code>unsigned <span class="type">int</span> start_offset</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *lookup_count</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *lookup_indexes</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp26122576"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -336,6 +332,12 @@ hb_ot_layout_get_attach_points (<em class="parameter"><code><a class="link" href
<em class="parameter"><code>unsigned <span class="type">int</span> start_offset</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *point_count</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *point_array</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp26138240"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -343,7 +345,12 @@ hb_ot_layout_get_attach_points (<em class="parameter"><code><a class="link" href
<pre class="programlisting"><a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-glyph-class-t" title="enum hb_ot_layout_glyph_class_t"><span class="returnvalue">hb_ot_layout_glyph_class_t</span></a>
hb_ot_layout_get_glyph_class (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> glyph</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp26148336"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -352,7 +359,8 @@ hb_ot_layout_get_glyph_class (<em class="parameter"><code><a class="link" href="
hb_ot_layout_get_glyphs_in_class (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-glyph-class-t" title="enum hb_ot_layout_glyph_class_t"><span class="type">hb_ot_layout_glyph_class_t</span></a> klass</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *glyphs</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
@@ -364,6 +372,12 @@ hb_ot_layout_get_ligature_carets (<em class="parameter"><code><a class="link" hr
<em class="parameter"><code>unsigned <span class="type">int</span> start_offset</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *caret_count</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *caret_array</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp26175760"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -375,7 +389,12 @@ hb_ot_layout_get_size_params (<em class="parameter"><code><a class="link" href="
<em class="parameter"><code>unsigned <span class="type">int</span> *subfamily_name_id</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *range_start</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *range_end</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-10.html#api-index-0.9.10">0.9.10</a></p>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp26193232"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -386,24 +405,48 @@ hb_ot_layout_get_size_params (<em class="parameter"><code><a class="link" href="
<em class="parameter"><code>unsigned <span class="type">int</span> lookup_index</code></em>,
<em class="parameter"><code>const <span class="type">hb_ot_layout_glyph_sequence_t</span> *sequence</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp26209952"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
<a name="hb-ot-layout-has-glyph-classes"></a><h3>hb_ot_layout_has_glyph_classes ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
hb_ot_layout_has_glyph_classes (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp26218384"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
<a name="hb-ot-layout-has-positioning"></a><h3>hb_ot_layout_has_positioning ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
hb_ot_layout_has_positioning (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp26226816"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
<a name="hb-ot-layout-has-substitution"></a><h3>hb_ot_layout_has_substitution ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
hb_ot_layout_has_substitution (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp26235248"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -415,6 +458,12 @@ hb_ot_layout_language_find_feature (<em class="parameter"><code><a class="link"
<em class="parameter"><code>unsigned <span class="type">int</span> language_index</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> feature_tag</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *feature_index</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp26252368"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -428,6 +477,12 @@ hb_ot_layout_language_get_feature_indexes
<em class="parameter"><code>unsigned <span class="type">int</span> start_offset</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *feature_count</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *feature_indexes</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp26271360"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -441,6 +496,12 @@ hb_ot_layout_language_get_feature_tags
<em class="parameter"><code>unsigned <span class="type">int</span> start_offset</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *feature_count</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *feature_tags</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp26290368"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -453,7 +514,6 @@ hb_ot_layout_language_get_required_feature
<em class="parameter"><code>unsigned <span class="type">int</span> language_index</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *feature_index</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *feature_tag</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-30.html#api-index-0.9.30">0.9.30</a></p>
</div>
<hr>
<div class="refsect2">
@@ -466,7 +526,8 @@ hb_ot_layout_lookup_collect_glyphs (<em class="parameter"><code><a class="link"
<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *glyphs_input</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *glyphs_after</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *glyphs_output</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
@@ -476,7 +537,8 @@ hb_ot_layout_lookup_substitute_closure
(<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> lookup_index</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *glyphs</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
@@ -487,7 +549,12 @@ hb_ot_layout_lookup_would_substitute (<em class="parameter"><code><a class="link
<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *glyphs</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> glyphs_length</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="type">hb_bool_t</span></a> zero_context</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp26347808"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -498,6 +565,12 @@ hb_ot_layout_script_find_language (<em class="parameter"><code><a class="link" h
<em class="parameter"><code>unsigned <span class="type">int</span> script_index</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> language_tag</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *language_index</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp23893888"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -509,6 +582,12 @@ hb_ot_layout_script_get_language_tags (<em class="parameter"><code><a class="lin
<em class="parameter"><code>unsigned <span class="type">int</span> start_offset</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *language_count</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *language_tags</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp23910848"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -519,6 +598,12 @@ hb_ot_layout_table_choose_script (<em class="parameter"><code><a class="link" hr
<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *script_tags</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *script_index</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *chosen_script</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp23926160"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -528,6 +613,12 @@ hb_ot_layout_table_find_script (<em class="parameter"><code><a class="link" href
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> table_tag</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> script_tag</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *script_index</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp23939664"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -538,6 +629,12 @@ hb_ot_layout_table_get_feature_tags (<em class="parameter"><code><a class="link"
<em class="parameter"><code>unsigned <span class="type">int</span> start_offset</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *feature_count</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *feature_tags</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp23954912"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -548,6 +645,12 @@ hb_ot_layout_table_get_script_tags (<em class="parameter"><code><a class="link"
<em class="parameter"><code>unsigned <span class="type">int</span> start_offset</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *script_count</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *script_tags</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp23970400"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -555,7 +658,6 @@ hb_ot_layout_table_get_script_tags (<em class="parameter"><code><a class="link"
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
hb_ot_layout_table_get_lookup_count (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> table_tag</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-22.html#api-index-0.9.22">0.9.22</a></p>
</div>
<hr>
<div class="refsect2">
@@ -564,18 +666,8 @@ hb_ot_layout_table_get_lookup_count (<em class="parameter"><code><a class="link"
hb_ot_shape_plan_collect_lookups (<em class="parameter"><code><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"><span class="type">hb_shape_plan_t</span></a> *shape_plan</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> table_tag</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *lookup_indexes</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-ot-layout-language-get-required-feature-index"></a><h3>hb_ot_layout_language_get_required_feature_index ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-hb_ot_layout_language_get_required_feature_index
- (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> table_tag</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> script_index</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> language_index</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> *feature_index</code></em>);</pre>
+<p>
+</p>
</div>
</div>
<div class="refsect1">
@@ -584,48 +676,56 @@ hb_ot_layout_language_get_required_feature_index
<a name="HB-OT-LAYOUT-DEFAULT-LANGUAGE-INDEX:CAPS"></a><h3>HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX</h3>
<pre class="programlisting">#define HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX 0xFFFFu
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="HB-OT-LAYOUT-NO-FEATURE-INDEX:CAPS"></a><h3>HB_OT_LAYOUT_NO_FEATURE_INDEX</h3>
<pre class="programlisting">#define HB_OT_LAYOUT_NO_FEATURE_INDEX 0xFFFFu
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="HB-OT-LAYOUT-NO-SCRIPT-INDEX:CAPS"></a><h3>HB_OT_LAYOUT_NO_SCRIPT_INDEX</h3>
<pre class="programlisting">#define HB_OT_LAYOUT_NO_SCRIPT_INDEX 0xFFFFu
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="HB-OT-TAG-GDEF:CAPS"></a><h3>HB_OT_TAG_GDEF</h3>
<pre class="programlisting">#define HB_OT_TAG_GDEF HB_TAG('G','D','E','F')
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="HB-OT-TAG-GPOS:CAPS"></a><h3>HB_OT_TAG_GPOS</h3>
<pre class="programlisting">#define HB_OT_TAG_GPOS HB_TAG('G','P','O','S')
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="HB-OT-TAG-GSUB:CAPS"></a><h3>HB_OT_TAG_GSUB</h3>
<pre class="programlisting">#define HB_OT_TAG_GSUB HB_TAG('G','S','U','B')
</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-OT-TAG-JSTF:CAPS"></a><h3>HB_OT_TAG_JSTF</h3>
-<pre class="programlisting">#define HB_OT_TAG_JSTF HB_TAG('J','S','T','F')
-</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-ot-layout-glyph-class-t"></a><h3>enum hb_ot_layout_glyph_class_t</h3>
+<p>
+</p>
<div class="refsect3">
-<a name="hb-ot-layout-glyph-class-t.members"></a><h4>Members</h4>
+<a name="idp24022880"></a><h4>Members</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="300px" class="enum_members_name">
@@ -635,28 +735,28 @@ hb_ot_layout_language_get_required_feature_index
<tbody>
<tr>
<td class="enum_member_name"><p><a name="HB-OT-LAYOUT-GLYPH-CLASS-UNCLASSIFIED:CAPS"></a>HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-OT-LAYOUT-GLYPH-CLASS-BASE-GLYPH:CAPS"></a>HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-OT-LAYOUT-GLYPH-CLASS-LIGATURE:CAPS"></a>HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-OT-LAYOUT-GLYPH-CLASS-MARK:CAPS"></a>HB_OT_LAYOUT_GLYPH_CLASS_MARK</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-OT-LAYOUT-GLYPH-CLASS-COMPONENT:CAPS"></a>HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
</table></div>
@@ -665,6 +765,7 @@ hb_ot_layout_language_get_required_feature_index
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-ot-tag.html b/docs/reference/html/harfbuzz-hb-ot-tag.html
index ea49a15..058623f 100644
--- a/docs/html/harfbuzz-hb-ot-tag.html
+++ b/docs/reference/html/harfbuzz-hb-ot-tag.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-ot-tag: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
+<title>hb-ot-tag</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
<link rel="prev" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">
-<link rel="next" href="harfbuzz-hb-ot-font.html" title="hb-ot-font">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<link rel="next" href="harfbuzz-hb-shape-plan.html" title="hb-shape-plan">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,9 +18,9 @@
<a href="#harfbuzz-hb-ot-tag.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="harfbuzz-hb-ot-layout.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-ot-font.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-shape-plan.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-ot-tag"></a><div class="titlepage"></div>
@@ -49,7 +49,7 @@
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
+<a class="link" href="harfbuzz-hb-common.html#hb-language-t"><span class="returnvalue">hb_language_t</span></a>
</td>
<td class="function_name">
<a class="link" href="harfbuzz-hb-ot-tag.html#hb-ot-tag-to-language" title="hb_ot_tag_to_language ()">hb_ot_tag_to_language</a> <span class="c_punctuation">()</span>
@@ -95,31 +95,45 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-ot-tag.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-ot-tag.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
<a name="hb-ot-tag-from-language"></a><h3>hb_ot_tag_from_language ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="returnvalue">hb_tag_t</span></a>
-hb_ot_tag_from_language (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> language</code></em>);</pre>
+hb_ot_tag_from_language (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-language-t"><span class="type">hb_language_t</span></a> language</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp16597424"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
<a name="hb-ot-tag-to-language"></a><h3>hb_ot_tag_to_language ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-language-t"><span class="returnvalue">hb_language_t</span></a>
hb_ot_tag_to_language (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> tag</code></em>);</pre>
+<p>
+</p>
<div class="refsect3">
-<a name="hb-ot-tag-to-language.returns"></a><h4>Returns</h4>
-<p>. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
+<a name="idp15287904"></a><h4>Returns</h4>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="hb-ot-tag-to-script"></a><h3>hb_ot_tag_to_script ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
hb_ot_tag_to_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> tag</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp14593888"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -128,6 +142,8 @@ hb_ot_tag_to_script (<em class="parameter"><code><a class="link" href="harfbuzz-
hb_ot_tags_from_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> script</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *script_tag_1</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *script_tag_2</code></em>);</pre>
+<p>
+</p>
</div>
</div>
<div class="refsect1">
@@ -136,16 +152,21 @@ hb_ot_tags_from_script (<em class="parameter"><code><a class="link" href="harfbu
<a name="HB-OT-TAG-DEFAULT-LANGUAGE:CAPS"></a><h3>HB_OT_TAG_DEFAULT_LANGUAGE</h3>
<pre class="programlisting">#define HB_OT_TAG_DEFAULT_LANGUAGE HB_TAG ('d', 'f', 'l', 't')
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="HB-OT-TAG-DEFAULT-SCRIPT:CAPS"></a><h3>HB_OT_TAG_DEFAULT_SCRIPT</h3>
<pre class="programlisting">#define HB_OT_TAG_DEFAULT_SCRIPT HB_TAG ('D', 'F', 'L', 'T')
</pre>
+<p>
+</p>
</div>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-ot.html b/docs/reference/html/harfbuzz-hb-ot.html
index 00ecee7..9c48aad 100644
--- a/docs/html/harfbuzz-hb-ot.html
+++ b/docs/reference/html/harfbuzz-hb-ot.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-ot: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
+<title>hb-ot</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
<link rel="prev" href="harfbuzz-hb-set.html" title="hb-set">
<link rel="next" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,7 +18,7 @@
<a href="#harfbuzz-hb-ot.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="harfbuzz-hb-set.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb-ot-layout.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
@@ -33,16 +33,18 @@
</tr></table></div>
<div class="refsect1">
<a name="harfbuzz-hb-ot.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-ot.functions_details"></a><h2>Functions</h2>
-<p></p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-ot.other_details"></a><h2>Types and Values</h2>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-set.html b/docs/reference/html/harfbuzz-hb-set.html
index 7b57884..87ce9bf 100644
--- a/docs/html/harfbuzz-hb-set.html
+++ b/docs/reference/html/harfbuzz-hb-set.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-set: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
+<title>hb-set</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
<link rel="prev" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">
<link rel="next" href="harfbuzz-hb-ot.html" title="hb-ot">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,7 +19,7 @@
<a href="#harfbuzz-hb-set.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="harfbuzz-hb-deprecated.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb-ot.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
@@ -41,6 +41,10 @@
</colgroup>
<tbody>
<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-set.html#HB-SET-VALUE-INVALID:CAPS" title="HB_SET_VALUE_INVALID">HB_SET_VALUE_INVALID</a></td>
+</tr>
+<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
@@ -257,36 +261,38 @@
<col width="150px" class="name">
<col class="description">
</colgroup>
-<tbody>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-set.html#HB-SET-VALUE-INVALID:CAPS" title="HB_SET_VALUE_INVALID">HB_SET_VALUE_INVALID</a></td>
-</tr>
-<tr>
+<tbody><tr>
<td class="typedef_keyword">typedef</td>
<td class="function_name"><a class="link" href="harfbuzz-hb-set.html#hb-set-t">hb_set_t</a></td>
-</tr>
-</tbody>
+</tr></tbody>
</table></div>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-set.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+<pre class="screen"> GBoxed
<span class="lineart">╰──</span> hb_set_t
</pre>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-set.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-set.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
+<a name="HB-SET-VALUE-INVALID:CAPS"></a><h3>HB_SET_VALUE_INVALID</h3>
+<pre class="programlisting">#define HB_SET_VALUE_INVALID ((hb_codepoint_t) -1)
+</pre>
+</div>
+<hr>
+<div class="refsect2">
<a name="hb-set-add"></a><h3>hb_set_add ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
hb_set_add (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> codepoint</code></em>);</pre>
<div class="refsect3">
-<a name="hb-set-add.parameters"></a><h4>Parameters</h4>
+<a name="idp20721456"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -300,7 +306,7 @@ hb_set_add (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.ht
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -310,7 +316,7 @@ hb_set_add_range (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> first</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> last</code></em>);</pre>
<div class="refsect3">
-<a name="hb-set-add-range.parameters"></a><h4>Parameters</h4>
+<a name="idp23182976"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -324,7 +330,7 @@ hb_set_add_range (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -332,7 +338,7 @@ hb_set_add_range (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
hb_set_allocation_successful (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>);</pre>
<div class="refsect3">
-<a name="hb-set-allocation-successful.parameters"></a><h4>Parameters</h4>
+<a name="idp23199248"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -346,7 +352,11 @@ hb_set_allocation_successful (<em class="parameter"><code>const <a class="link"
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp23207648"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -354,7 +364,7 @@ hb_set_allocation_successful (<em class="parameter"><code>const <a class="link"
<pre class="programlisting"><span class="returnvalue">void</span>
hb_set_clear (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>);</pre>
<div class="refsect3">
-<a name="hb-set-clear.parameters"></a><h4>Parameters</h4>
+<a name="idp23216672"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -368,20 +378,19 @@ hb_set_clear (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-set-create"></a><h3>hb_set_create ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="returnvalue">hb_set_t</span></a> *
hb_set_create (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p><span class="annotation">[Xconstructor]</span></p>
+<p>
+</p>
<div class="refsect3">
-<a name="hb-set-create.returns"></a><h4>Returns</h4>
-<p>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+<a name="idp23231984"></a><h4>Returns</h4>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
</div>
<hr>
<div class="refsect2">
@@ -390,7 +399,7 @@ hb_set_create (<em class="parameter"><code><span class="type">void</span></code>
hb_set_del (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> codepoint</code></em>);</pre>
<div class="refsect3">
-<a name="hb-set-del.parameters"></a><h4>Parameters</h4>
+<a name="idp23242016"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -404,7 +413,7 @@ hb_set_del (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.ht
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -414,7 +423,7 @@ hb_set_del_range (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> first</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> last</code></em>);</pre>
<div class="refsect3">
-<a name="hb-set-del-range.parameters"></a><h4>Parameters</h4>
+<a name="idp23261248"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -428,16 +437,15 @@ hb_set_del_range (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-set-destroy"></a><h3>hb_set_destroy ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
hb_set_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-set-destroy.parameters"></a><h4>Parameters</h4>
+<a name="idp23277248"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -451,7 +459,7 @@ hb_set_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-se
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -459,11 +467,11 @@ hb_set_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-se
<pre class="programlisting"><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="returnvalue">hb_set_t</span></a> *
hb_set_get_empty (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<div class="refsect3">
-<a name="hb-set-get-empty.returns"></a><h4>Returns</h4>
+<a name="idp23292640"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -472,7 +480,7 @@ hb_set_get_empty (<em class="parameter"><code><span class="type">void</span></co
hb_set_get_max (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>);</pre>
<p>Finds the maximum number in the set.</p>
<div class="refsect3">
-<a name="hb-set-get-max.parameters"></a><h4>Parameters</h4>
+<a name="idp23303952"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -487,10 +495,11 @@ hb_set_get_max (<em class="parameter"><code>const <a class="link" href="harfbuzz
</table></div>
</div>
<div class="refsect3">
-<a name="hb-set-get-max.returns"></a><h4>Returns</h4>
+<a name="idp23312352"></a><h4>Returns</h4>
<p> minimum of the set, or <a class="link" href="harfbuzz-hb-set.html#HB-SET-VALUE-INVALID:CAPS" title="HB_SET_VALUE_INVALID"><code class="literal">HB_SET_VALUE_INVALID</code></a> if set is empty.</p>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -499,7 +508,7 @@ hb_set_get_max (<em class="parameter"><code>const <a class="link" href="harfbuzz
hb_set_get_min (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>);</pre>
<p>Finds the minimum number in the set.</p>
<div class="refsect3">
-<a name="hb-set-get-min.parameters"></a><h4>Parameters</h4>
+<a name="idp23323888"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -514,10 +523,11 @@ hb_set_get_min (<em class="parameter"><code>const <a class="link" href="harfbuzz
</table></div>
</div>
<div class="refsect3">
-<a name="hb-set-get-min.returns"></a><h4>Returns</h4>
+<a name="idp23332288"></a><h4>Returns</h4>
<p> minimum of the set, or <a class="link" href="harfbuzz-hb-set.html#HB-SET-VALUE-INVALID:CAPS" title="HB_SET_VALUE_INVALID"><code class="literal">HB_SET_VALUE_INVALID</code></a> if set is empty.</p>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -526,7 +536,7 @@ hb_set_get_min (<em class="parameter"><code>const <a class="link" href="harfbuzz
hb_set_get_population (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>);</pre>
<p>Returns the number of numbers in the set.</p>
<div class="refsect3">
-<a name="hb-set-get-population.parameters"></a><h4>Parameters</h4>
+<a name="idp23343984"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -541,10 +551,11 @@ hb_set_get_population (<em class="parameter"><code>const <a class="link" href="h
</table></div>
</div>
<div class="refsect3">
-<a name="hb-set-get-population.returns"></a><h4>Returns</h4>
+<a name="idp23352384"></a><h4>Returns</h4>
<p> set population.</p>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -552,9 +563,8 @@ hb_set_get_population (<em class="parameter"><code>const <a class="link" href="h
<pre class="programlisting"><span class="returnvalue">void</span> *
hb_set_get_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-set-get-user-data.parameters"></a><h4>Parameters</h4>
+<a name="idp23363568"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -569,11 +579,11 @@ hb_set_get_user_data (<em class="parameter"><code><a class="link" href="harfbuzz
</table></div>
</div>
<div class="refsect3">
-<a name="hb-set-get-user-data.returns"></a><h4>Returns</h4>
+<a name="idp23371968"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -582,7 +592,7 @@ hb_set_get_user_data (<em class="parameter"><code><a class="link" href="harfbuzz
hb_set_has (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> codepoint</code></em>);</pre>
<div class="refsect3">
-<a name="hb-set-has.parameters"></a><h4>Parameters</h4>
+<a name="idp23384384"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -596,7 +606,11 @@ hb_set_has (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp23392784"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -605,7 +619,7 @@ hb_set_has (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-
hb_set_intersect (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>,
<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *other</code></em>);</pre>
<div class="refsect3">
-<a name="hb-set-intersect.parameters"></a><h4>Parameters</h4>
+<a name="idp23403600"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -619,7 +633,7 @@ hb_set_intersect (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -627,7 +641,7 @@ hb_set_intersect (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
<pre class="programlisting"><span class="returnvalue">void</span>
hb_set_invert (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>);</pre>
<div class="refsect3">
-<a name="hb-set-invert.parameters"></a><h4>Parameters</h4>
+<a name="idp23419600"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -641,7 +655,7 @@ hb_set_invert (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-10.html#api-index-0.9.10">0.9.10</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -649,7 +663,7 @@ hb_set_invert (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
hb_set_is_empty (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>);</pre>
<div class="refsect3">
-<a name="hb-set-is-empty.parameters"></a><h4>Parameters</h4>
+<a name="idp26531232"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -663,7 +677,11 @@ hb_set_is_empty (<em class="parameter"><code>const <a class="link" href="harfbuz
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<div class="refsect3">
+<a name="idp26538736"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -672,7 +690,7 @@ hb_set_is_empty (<em class="parameter"><code>const <a class="link" href="harfbuz
hb_set_is_equal (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>,
<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *other</code></em>);</pre>
<div class="refsect3">
-<a name="hb-set-is-equal.parameters"></a><h4>Parameters</h4>
+<a name="idp26548192"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -686,7 +704,11 @@ hb_set_is_equal (<em class="parameter"><code>const <a class="link" href="harfbuz
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<div class="refsect3">
+<a name="idp26555696"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -695,7 +717,7 @@ hb_set_is_equal (<em class="parameter"><code>const <a class="link" href="harfbuz
hb_set_next (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *codepoint</code></em>);</pre>
<div class="refsect3">
-<a name="hb-set-next.parameters"></a><h4>Parameters</h4>
+<a name="idp26564896"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -717,10 +739,11 @@ hb_set_next (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb
</table></div>
</div>
<div class="refsect3">
-<a name="hb-set-next.returns"></a><h4>Returns</h4>
+<a name="idp26575728"></a><h4>Returns</h4>
<p> whether there was a next value.</p>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -734,7 +757,7 @@ hb_set_next_range (<em class="parameter"><code>const <a class="link" href="harfb
are greater than current value of <em class="parameter"><code>last</code></em>
.</p>
<div class="refsect3">
-<a name="hb-set-next-range.parameters"></a><h4>Parameters</h4>
+<a name="idp26588656"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -761,19 +784,19 @@ are greater than current value of <em class="parameter"><code>last</code></em>
</table></div>
</div>
<div class="refsect3">
-<a name="hb-set-next-range.returns"></a><h4>Returns</h4>
+<a name="idp26602816"></a><h4>Returns</h4>
<p> whether there was a next range.</p>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-set-reference"></a><h3>hb_set_reference ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="returnvalue">hb_set_t</span></a> *
hb_set_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-set-reference.parameters"></a><h4>Parameters</h4>
+<a name="idp26611040"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -788,11 +811,11 @@ hb_set_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
</table></div>
</div>
<div class="refsect3">
-<a name="hb-set-reference.returns"></a><h4>Returns</h4>
+<a name="idp26618544"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -801,7 +824,7 @@ hb_set_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
hb_set_set (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>,
<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *other</code></em>);</pre>
<div class="refsect3">
-<a name="hb-set-set.parameters"></a><h4>Parameters</h4>
+<a name="idp26629264"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -815,7 +838,7 @@ hb_set_set (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.ht
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -826,9 +849,8 @@ hb_set_set_user_data (<em class="parameter"><code><a class="link" href="harfbuzz
<em class="parameter"><code><span class="type">void</span> *data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="type">hb_bool_t</span></a> replace</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-set-set-user-data.parameters"></a><h4>Parameters</h4>
+<a name="idp26648800"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -850,7 +872,11 @@ hb_set_set_user_data (<em class="parameter"><code><a class="link" href="harfbuzz
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp26659200"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -859,7 +885,7 @@ hb_set_set_user_data (<em class="parameter"><code><a class="link" href="harfbuzz
hb_set_subtract (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>,
<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *other</code></em>);</pre>
<div class="refsect3">
-<a name="hb-set-subtract.parameters"></a><h4>Parameters</h4>
+<a name="idp26668512"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -873,7 +899,7 @@ hb_set_subtract (<em class="parameter"><code><a class="link" href="harfbuzz-hb-s
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -882,7 +908,7 @@ hb_set_subtract (<em class="parameter"><code><a class="link" href="harfbuzz-hb-s
hb_set_symmetric_difference (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>,
<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *other</code></em>);</pre>
<div class="refsect3">
-<a name="hb-set-symmetric-difference.parameters"></a><h4>Parameters</h4>
+<a name="idp26684064"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -896,7 +922,7 @@ hb_set_symmetric_difference (<em class="parameter"><code><a class="link" href="h
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -905,7 +931,7 @@ hb_set_symmetric_difference (<em class="parameter"><code><a class="link" href="h
hb_set_union (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>,
<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *other</code></em>);</pre>
<div class="refsect3">
-<a name="hb-set-union.parameters"></a><h4>Parameters</h4>
+<a name="idp26699616"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -919,25 +945,22 @@ hb_set_union (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-set.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
-<a name="HB-SET-VALUE-INVALID:CAPS"></a><h3>HB_SET_VALUE_INVALID</h3>
-<pre class="programlisting">#define HB_SET_VALUE_INVALID ((hb_codepoint_t) -1)
-</pre>
-</div>
-<hr>
-<div class="refsect2">
<a name="hb-set-t"></a><h3>hb_set_t</h3>
<pre class="programlisting">typedef struct hb_set_t hb_set_t;
</pre>
+<p>
+</p>
</div>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-shape-plan.html b/docs/reference/html/harfbuzz-hb-shape-plan.html
index aee3168..d612552 100644
--- a/docs/html/harfbuzz-hb-shape-plan.html
+++ b/docs/reference/html/harfbuzz-hb-shape-plan.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-shape-plan: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
-<link rel="prev" href="harfbuzz-hb-ot-shape.html" title="hb-ot-shape">
+<title>hb-shape-plan</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
+<link rel="prev" href="harfbuzz-hb-ot-tag.html" title="hb-ot-tag">
<link rel="next" href="harfbuzz-hb-glib.html" title="hb-glib">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,8 +19,8 @@
<a href="#harfbuzz-hb-shape-plan.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-ot-shape.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-ot-tag.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb-glib.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
@@ -129,12 +129,14 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-shape-plan.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+<pre class="screen"> GBoxed
<span class="lineart">╰──</span> hb_shape_plan_t
</pre>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-shape-plan.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-shape-plan.functions_details"></a><h2>Functions</h2>
@@ -142,51 +144,28 @@
<a name="hb-shape-plan-create"></a><h3>hb_shape_plan_create ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"><span class="returnvalue">hb_shape_plan_t</span></a> *
hb_shape_plan_create (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *user_features</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *user_features</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> num_user_features</code></em>,
<em class="parameter"><code>const <span class="type">char</span> * const *shaper_list</code></em>);</pre>
-<p><span class="annotation">[Xconstructor]</span></p>
+<p>
+</p>
<div class="refsect3">
-<a name="hb-shape-plan-create.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>user_features</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=num_user_features]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>shaper_list</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="hb-shape-plan-create.returns"></a><h4>Returns</h4>
-<p>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+<a name="idp14878704"></a><h4>Returns</h4>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
</div>
<hr>
<div class="refsect2">
<a name="hb-shape-plan-create-cached"></a><h3>hb_shape_plan_create_cached ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"><span class="returnvalue">hb_shape_plan_t</span></a> *
hb_shape_plan_create_cached (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *user_features</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *user_features</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> num_user_features</code></em>,
<em class="parameter"><code>const <span class="type">char</span> * const *shaper_list</code></em>);</pre>
<div class="refsect3">
-<a name="hb-shape-plan-create-cached.parameters"></a><h4>Parameters</h4>
+<a name="idp16920256"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -208,20 +187,19 @@ hb_shape_plan_create_cached (<em class="parameter"><code><a class="link" href="h
</table></div>
</div>
<div class="refsect3">
-<a name="hb-shape-plan-create-cached.returns"></a><h4>Returns</h4>
+<a name="idp14478448"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-shape-plan-destroy"></a><h3>hb_shape_plan_destroy ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
hb_shape_plan_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"><span class="type">hb_shape_plan_t</span></a> *shape_plan</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-shape-plan-destroy.parameters"></a><h4>Parameters</h4>
+<a name="idp16259760"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -235,7 +213,7 @@ hb_shape_plan_destroy (<em class="parameter"><code><a class="link" href="harfbuz
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -243,11 +221,11 @@ hb_shape_plan_destroy (<em class="parameter"><code><a class="link" href="harfbuz
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
hb_shape_plan_execute (<em class="parameter"><code><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"><span class="type">hb_shape_plan_t</span></a> *shape_plan</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *features</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *features</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> num_features</code></em>);</pre>
<div class="refsect3">
-<a name="hb-shape-plan-execute.parameters"></a><h4>Parameters</h4>
+<a name="idp24238496"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -278,7 +256,11 @@ hb_shape_plan_execute (<em class="parameter"><code><a class="link" href="harfbuz
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<div class="refsect3">
+<a name="idp23522512"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -286,11 +268,11 @@ hb_shape_plan_execute (<em class="parameter"><code><a class="link" href="harfbuz
<pre class="programlisting"><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"><span class="returnvalue">hb_shape_plan_t</span></a> *
hb_shape_plan_get_empty (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<div class="refsect3">
-<a name="hb-shape-plan-get-empty.returns"></a><h4>Returns</h4>
+<a name="idp23531024"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -298,7 +280,7 @@ hb_shape_plan_get_empty (<em class="parameter"><code><span class="type">void</sp
<pre class="programlisting">const <span class="returnvalue">char</span> *
hb_shape_plan_get_shaper (<em class="parameter"><code><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"><span class="type">hb_shape_plan_t</span></a> *shape_plan</code></em>);</pre>
<div class="refsect3">
-<a name="hb-shape-plan-get-shaper.parameters"></a><h4>Parameters</h4>
+<a name="idp23541920"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -313,11 +295,11 @@ hb_shape_plan_get_shaper (<em class="parameter"><code><a class="link" href="harf
</table></div>
</div>
<div class="refsect3">
-<a name="hb-shape-plan-get-shaper.returns"></a><h4>Returns</h4>
+<a name="idp23550320"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -325,9 +307,8 @@ hb_shape_plan_get_shaper (<em class="parameter"><code><a class="link" href="harf
<pre class="programlisting"><span class="returnvalue">void</span> *
hb_shape_plan_get_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"><span class="type">hb_shape_plan_t</span></a> *shape_plan</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-shape-plan-get-user-data.parameters"></a><h4>Parameters</h4>
+<a name="idp23562672"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -342,20 +323,19 @@ hb_shape_plan_get_user_data (<em class="parameter"><code><a class="link" href="h
</table></div>
</div>
<div class="refsect3">
-<a name="hb-shape-plan-get-user-data.returns"></a><h4>Returns</h4>
+<a name="idp23571072"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-shape-plan-reference"></a><h3>hb_shape_plan_reference ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"><span class="returnvalue">hb_shape_plan_t</span></a> *
hb_shape_plan_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"><span class="type">hb_shape_plan_t</span></a> *shape_plan</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-shape-plan-reference.parameters"></a><h4>Parameters</h4>
+<a name="idp23581792"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -370,11 +350,11 @@ hb_shape_plan_reference (<em class="parameter"><code><a class="link" href="harfb
</table></div>
</div>
<div class="refsect3">
-<a name="hb-shape-plan-reference.returns"></a><h4>Returns</h4>
+<a name="idp23590192"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -385,9 +365,8 @@ hb_shape_plan_set_user_data (<em class="parameter"><code><a class="link" href="h
<em class="parameter"><code><span class="type">void</span> *data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="type">hb_bool_t</span></a> replace</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-shape-plan-set-user-data.parameters"></a><h4>Parameters</h4>
+<a name="idp23607440"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -401,7 +380,11 @@ hb_shape_plan_set_user_data (<em class="parameter"><code><a class="link" href="h
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
+<div class="refsect3">
+<a name="idp23615840"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
</div>
<div class="refsect1">
@@ -410,10 +393,13 @@ hb_shape_plan_set_user_data (<em class="parameter"><code><a class="link" href="h
<a name="hb-shape-plan-t"></a><h3>hb_shape_plan_t</h3>
<pre class="programlisting">typedef struct hb_shape_plan_t hb_shape_plan_t;
</pre>
+<p>
+</p>
</div>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/reference/html/harfbuzz-hb-shape.html b/docs/reference/html/harfbuzz-hb-shape.html
new file mode 100644
index 0000000..c055347
--- /dev/null
+++ b/docs/reference/html/harfbuzz-hb-shape.html
@@ -0,0 +1,286 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>hb-shape</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
+<link rel="prev" href="harfbuzz-hb-font.html" title="hb-font">
+<link rel="next" href="harfbuzz-hb-version.html" title="hb-version">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#harfbuzz-hb-shape.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+ <a href="#harfbuzz-hb-shape.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-font.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-version.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="harfbuzz-hb-shape"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="harfbuzz-hb-shape.top_of_page"></a>hb-shape</span></h2>
+<p>hb-shape</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="harfbuzz-hb-shape.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-shape.html#hb-feature-from-string" title="hb_feature_from_string ()">hb_feature_from_string</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-shape.html#hb-feature-to-string" title="hb_feature_to_string ()">hb_feature_to_string</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-shape.html#hb-shape" title="hb_shape ()">hb_shape</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-shape.html#hb-shape-full" title="hb_shape_full ()">hb_shape_full</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <span class="returnvalue">char</span> **
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-shape.html#hb-shape-list-shapers" title="hb_shape_list_shapers ()">hb_shape_list_shapers</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="hb-feature-t"></a><div class="refsect1">
+<a name="harfbuzz-hb-shape.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-shape.html#hb-feature-t-struct" title="hb_feature_t">hb_feature_t</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-shape.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> GBoxed
+ <span class="lineart">╰──</span> hb_feature_t
+</pre>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-shape.description"></a><h2>Description</h2>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-shape.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="hb-feature-from-string"></a><h3>hb_feature_from_string ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
+hb_feature_from_string (<em class="parameter"><code>const <span class="type">char</span> *str</code></em>,
+ <em class="parameter"><code><span class="type">int</span> len</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *feature</code></em>);</pre>
+<div class="refsect3">
+<a name="idp18031264"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>feature</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][optional]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp17491264"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-feature-to-string"></a><h3>hb_feature_to_string ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_feature_to_string (<em class="parameter"><code><a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *feature</code></em>,
+ <em class="parameter"><code><span class="type">char</span> *buf</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> size</code></em>);</pre>
+<div class="refsect3">
+<a name="idp16212496"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=size]</span></td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-shape"></a><h3>hb_shape ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_shape (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *features</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> num_features</code></em>);</pre>
+<div class="refsect3">
+<a name="idp20849744"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>font</p></td>
+<td class="parameter_description"><p>a font.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>features</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=num_features]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-shape-full"></a><h3>hb_shape_full ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
+hb_shape_full (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *features</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> num_features</code></em>,
+ <em class="parameter"><code>const <span class="type">char</span> * const *shaper_list</code></em>);</pre>
+<div class="refsect3">
+<a name="idp20668592"></a><h4>Parameters</h4>
+<div class="informaltable"><table width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>font</p></td>
+<td class="parameter_description"><p>a font.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>features</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=num_features]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>shaper_list</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="idp24215408"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-shape-list-shapers"></a><h3>hb_shape_list_shapers ()</h3>
+<pre class="programlisting">const <span class="returnvalue">char</span> **
+hb_shape_list_shapers (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<div class="refsect3">
+<a name="idp24224032"></a><h4>Returns</h4>
+<p>. </p>
+<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
+</div>
+<p class="since">Since 1.0</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-shape.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="hb-feature-t-struct"></a><h3>hb_feature_t</h3>
+<pre class="programlisting">typedef struct {
+ hb_tag_t tag;
+ uint32_t value;
+ unsigned int start;
+ unsigned int end;
+} hb_feature_t;
+</pre>
+<p>
+</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-unicode.html b/docs/reference/html/harfbuzz-hb-unicode.html
index ecc82c5..91358b2 100644
--- a/docs/html/harfbuzz-hb-unicode.html
+++ b/docs/reference/html/harfbuzz-hb-unicode.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-unicode: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
+<title>hb-unicode</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
<link rel="prev" href="harfbuzz-hb-common.html" title="hb-common">
-<link rel="next" href="harfbuzz-Buffers.html" title="Buffers">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<link rel="next" href="harfbuzz-hb-buffer.html" title="hb-buffer">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,9 +19,9 @@
<a href="#harfbuzz-hb-unicode.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="harfbuzz-hb-common.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-Buffers.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-buffer.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-unicode"></a><div class="titlepage"></div>
@@ -41,6 +41,10 @@
</colgroup>
<tbody>
<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-unicode.html#HB-UNICODE-MAX-DECOMPOSITION-LEN:CAPS" title="HB_UNICODE_MAX_DECOMPOSITION_LEN">HB_UNICODE_MAX_DECOMPOSITION_LEN</a></td>
+</tr>
+<tr>
<td class="function_type">
<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-combining-class-t" title="enum hb_unicode_combining_class_t"><span class="returnvalue">hb_unicode_combining_class_t</span></a>
</td>
@@ -306,10 +310,6 @@
</colgroup>
<tbody>
<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-unicode.html#HB-UNICODE-MAX-DECOMPOSITION-LEN:CAPS" title="HB_UNICODE_MAX_DECOMPOSITION_LEN">HB_UNICODE_MAX_DECOMPOSITION_LEN</a></td>
-</tr>
-<tr>
<td class="datatype_keyword">enum</td>
<td class="function_name"><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-combining-class-t" title="enum hb_unicode_combining_class_t">hb_unicode_combining_class_t</a></td>
</tr>
@@ -326,24 +326,39 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-unicode.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+<pre class="screen"> GBoxed
<span class="lineart">╰──</span> hb_unicode_funcs_t
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
+ GEnum
<span class="lineart">├──</span> hb_unicode_combining_class_t
<span class="lineart">╰──</span> hb_unicode_general_category_t
</pre>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-unicode.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-unicode.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
+<a name="HB-UNICODE-MAX-DECOMPOSITION-LEN:CAPS"></a><h3>HB_UNICODE_MAX_DECOMPOSITION_LEN</h3>
+<pre class="programlisting">#define HB_UNICODE_MAX_DECOMPOSITION_LEN (18+1) /* codepoints */
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
<a name="hb-unicode-combining-class"></a><h3>hb_unicode_combining_class ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-combining-class-t" title="enum hb_unicode_combining_class_t"><span class="returnvalue">hb_unicode_combining_class_t</span></a>
hb_unicode_combining_class (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> unicode</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp19583296"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -352,6 +367,12 @@ hb_unicode_combining_class (<em class="parameter"><code><a class="link" href="ha
<span class="c_punctuation">(</span>*hb_unicode_combining_class_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> unicode</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp19596496"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -362,7 +383,7 @@ hb_unicode_compose (<em class="parameter"><code><a class="link" href="harfbuzz-h
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> b</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *ab</code></em>);</pre>
<div class="refsect3">
-<a name="hb-unicode-compose.parameters"></a><h4>Parameters</h4>
+<a name="idp19609760"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -383,7 +404,11 @@ hb_unicode_compose (<em class="parameter"><code><a class="link" href="harfbuzz-h
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp19621872"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -394,6 +419,12 @@ hb_unicode_compose (<em class="parameter"><code><a class="link" href="harfbuzz-h
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> b</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *ab</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp19639008"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -404,7 +435,7 @@ hb_unicode_decompose (<em class="parameter"><code><a class="link" href="harfbuzz
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *a</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *b</code></em>);</pre>
<div class="refsect3">
-<a name="hb-unicode-decompose.parameters"></a><h4>Parameters</h4>
+<a name="idp19652352"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -430,7 +461,11 @@ hb_unicode_decompose (<em class="parameter"><code><a class="link" href="harfbuzz
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp19668176"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -440,7 +475,7 @@ hb_unicode_decompose_compatibility (<em class="parameter"><code><a class="link"
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> u</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *decomposed</code></em>);</pre>
<div class="refsect3">
-<a name="hb-unicode-decompose-compatibility.parameters"></a><h4>Parameters</h4>
+<a name="idp19680736"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -461,7 +496,11 @@ hb_unicode_decompose_compatibility (<em class="parameter"><code><a class="link"
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp19692848"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -472,6 +511,12 @@ hb_unicode_decompose_compatibility (<em class="parameter"><code><a class="link"
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *a</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *b</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp19709984"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -479,44 +524,32 @@ hb_unicode_decompose_compatibility (<em class="parameter"><code><a class="link"
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
hb_unicode_eastasian_width (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> unicode</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp19720224"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
<a name="hb-unicode-funcs-create"></a><h3>hb_unicode_funcs_create ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="returnvalue">hb_unicode_funcs_t</span></a> *
hb_unicode_funcs_create (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *parent</code></em>);</pre>
-<p><span class="annotation">[Xconstructor]</span></p>
-<div class="refsect3">
-<a name="hb-unicode-funcs-create.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>parent</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
-</tr></tbody>
-</table></div>
-</div>
+<p>
+</p>
<div class="refsect3">
-<a name="hb-unicode-funcs-create.returns"></a><h4>Returns</h4>
-<p>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+<a name="idp19728656"></a><h4>Returns</h4>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="hb-unicode-funcs-destroy"></a><h3>hb_unicode_funcs_destroy ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
hb_unicode_funcs_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-unicode-funcs-destroy.parameters"></a><h4>Parameters</h4>
+<a name="idp19737168"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -530,13 +563,19 @@ hb_unicode_funcs_destroy (<em class="parameter"><code><a class="link" href="harf
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-unicode-funcs-get-default"></a><h3>hb_unicode_funcs_get_default ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="returnvalue">hb_unicode_funcs_t</span></a> *
hb_unicode_funcs_get_default (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp19752576"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -544,11 +583,11 @@ hb_unicode_funcs_get_default (<em class="parameter"><code><span class="type">voi
<pre class="programlisting"><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="returnvalue">hb_unicode_funcs_t</span></a> *
hb_unicode_funcs_get_empty (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<div class="refsect3">
-<a name="hb-unicode-funcs-get-empty.returns"></a><h4>Returns</h4>
+<a name="idp19760480"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -556,7 +595,7 @@ hb_unicode_funcs_get_empty (<em class="parameter"><code><span class="type">void<
<pre class="programlisting"><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="returnvalue">hb_unicode_funcs_t</span></a> *
hb_unicode_funcs_get_parent (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>);</pre>
<div class="refsect3">
-<a name="hb-unicode-funcs-get-parent.parameters"></a><h4>Parameters</h4>
+<a name="idp19771200"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -570,7 +609,11 @@ hb_unicode_funcs_get_parent (<em class="parameter"><code><a class="link" href="h
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp19779600"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -578,9 +621,8 @@ hb_unicode_funcs_get_parent (<em class="parameter"><code><a class="link" href="h
<pre class="programlisting"><span class="returnvalue">void</span> *
hb_unicode_funcs_get_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-unicode-funcs-get-user-data.parameters"></a><h4>Parameters</h4>
+<a name="idp19790352"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -595,11 +637,11 @@ hb_unicode_funcs_get_user_data (<em class="parameter"><code><a class="link" href
</table></div>
</div>
<div class="refsect3">
-<a name="hb-unicode-funcs-get-user-data.returns"></a><h4>Returns</h4>
+<a name="idp19798752"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -607,7 +649,7 @@ hb_unicode_funcs_get_user_data (<em class="parameter"><code><a class="link" href
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
hb_unicode_funcs_is_immutable (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>);</pre>
<div class="refsect3">
-<a name="hb-unicode-funcs-is-immutable.parameters"></a><h4>Parameters</h4>
+<a name="idp20958624"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -621,7 +663,11 @@ hb_unicode_funcs_is_immutable (<em class="parameter"><code><a class="link" href=
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp20966128"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -629,7 +675,7 @@ hb_unicode_funcs_is_immutable (<em class="parameter"><code><a class="link" href=
<pre class="programlisting"><span class="returnvalue">void</span>
hb_unicode_funcs_make_immutable (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>);</pre>
<div class="refsect3">
-<a name="hb-unicode-funcs-make-immutable.parameters"></a><h4>Parameters</h4>
+<a name="idp20973920"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -643,16 +689,15 @@ hb_unicode_funcs_make_immutable (<em class="parameter"><code><a class="link" hre
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-unicode-funcs-reference"></a><h3>hb_unicode_funcs_reference ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="returnvalue">hb_unicode_funcs_t</span></a> *
hb_unicode_funcs_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-unicode-funcs-reference.parameters"></a><h4>Parameters</h4>
+<a name="idp20987952"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -667,11 +712,11 @@ hb_unicode_funcs_reference (<em class="parameter"><code><a class="link" href="ha
</table></div>
</div>
<div class="refsect3">
-<a name="hb-unicode-funcs-reference.returns"></a><h4>Returns</h4>
+<a name="idp20995456"></a><h4>Returns</h4>
<p>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -683,28 +728,21 @@ hb_unicode_funcs_set_combining_class_func
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-unicode-funcs-set-combining-class-func.parameters"></a><h4>Parameters</h4>
+<a name="idp21008784"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
-<tbody>
-<tr>
+<tbody><tr>
<td class="parameter_name"><p>ufuncs</p></td>
<td class="parameter_description"><p>a Unicode function structure</p></td>
<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
-</tr>
-</tbody>
+</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -715,28 +753,21 @@ hb_unicode_funcs_set_compose_func (<em class="parameter"><code><a class="link" h
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-unicode-funcs-set-compose-func.parameters"></a><h4>Parameters</h4>
+<a name="idp21026832"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
-<tbody>
-<tr>
+<tbody><tr>
<td class="parameter_name"><p>ufuncs</p></td>
<td class="parameter_description"><p>a Unicode function structure</p></td>
<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
-</tr>
-</tbody>
+</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -748,28 +779,21 @@ hb_unicode_funcs_set_decompose_compatibility_func
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-unicode-funcs-set-decompose-compatibility-func.parameters"></a><h4>Parameters</h4>
+<a name="idp21044992"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
-<tbody>
-<tr>
+<tbody><tr>
<td class="parameter_name"><p>ufuncs</p></td>
<td class="parameter_description"><p>a Unicode function structure</p></td>
<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
-</tr>
-</tbody>
+</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -780,28 +804,21 @@ hb_unicode_funcs_set_decompose_func (<em class="parameter"><code><a class="link"
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-unicode-funcs-set-decompose-func.parameters"></a><h4>Parameters</h4>
+<a name="idp21063152"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
-<tbody>
-<tr>
+<tbody><tr>
<td class="parameter_name"><p>ufuncs</p></td>
<td class="parameter_description"><p>a Unicode function structure</p></td>
<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
-</tr>
-</tbody>
+</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -813,28 +830,21 @@ hb_unicode_funcs_set_eastasian_width_func
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-unicode-funcs-set-eastasian-width-func.parameters"></a><h4>Parameters</h4>
+<a name="idp21081312"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
-<tbody>
-<tr>
+<tbody><tr>
<td class="parameter_name"><p>ufuncs</p></td>
<td class="parameter_description"><p>a Unicode function structure</p></td>
<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
-</tr>
-</tbody>
+</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -846,28 +856,21 @@ hb_unicode_funcs_set_general_category_func
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-unicode-funcs-set-general-category-func.parameters"></a><h4>Parameters</h4>
+<a name="idp21099472"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
-<tbody>
-<tr>
+<tbody><tr>
<td class="parameter_name"><p>ufuncs</p></td>
<td class="parameter_description"><p>a Unicode function structure</p></td>
<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
-</tr>
-</tbody>
+</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -878,28 +881,21 @@ hb_unicode_funcs_set_mirroring_func (<em class="parameter"><code><a class="link"
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-unicode-funcs-set-mirroring-func.parameters"></a><h4>Parameters</h4>
+<a name="idp21117632"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
-<tbody>
-<tr>
+<tbody><tr>
<td class="parameter_name"><p>ufuncs</p></td>
<td class="parameter_description"><p>a Unicode function structure</p></td>
<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
-</tr>
-</tbody>
+</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -910,28 +906,21 @@ hb_unicode_funcs_set_script_func (<em class="parameter"><code><a class="link" hr
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
<div class="refsect3">
-<a name="hb-unicode-funcs-set-script-func.parameters"></a><h4>Parameters</h4>
+<a name="idp21135792"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
-<tbody>
-<tr>
+<tbody><tr>
<td class="parameter_name"><p>ufuncs</p></td>
<td class="parameter_description"><p>a Unicode function structure</p></td>
<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
-</tr>
-</tbody>
+</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -942,9 +931,8 @@ hb_unicode_funcs_set_user_data (<em class="parameter"><code><a class="link" href
<em class="parameter"><code><span class="type">void</span> *data</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="type">hb_bool_t</span></a> replace</code></em>);</pre>
-<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
<div class="refsect3">
-<a name="hb-unicode-funcs-set-user-data.parameters"></a><h4>Parameters</h4>
+<a name="idp21155328"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -958,7 +946,11 @@ hb_unicode_funcs_set_user_data (<em class="parameter"><code><a class="link" href
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<div class="refsect3">
+<a name="idp21162832"></a><h4>Returns</h4>
+<p></p>
+</div>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -966,7 +958,12 @@ hb_unicode_funcs_set_user_data (<em class="parameter"><code><a class="link" href
<pre class="programlisting"><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-general-category-t" title="enum hb_unicode_general_category_t"><span class="returnvalue">hb_unicode_general_category_t</span></a>
hb_unicode_general_category (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> unicode</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp21171920"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -975,6 +972,12 @@ hb_unicode_general_category (<em class="parameter"><code><a class="link" href="h
<span class="c_punctuation">(</span>*hb_unicode_general_category_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> unicode</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp21183216"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -982,7 +985,12 @@ hb_unicode_general_category (<em class="parameter"><code><a class="link" href="h
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="returnvalue">hb_codepoint_t</span></a>
hb_unicode_mirroring (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> unicode</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp21191760"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -991,6 +999,12 @@ hb_unicode_mirroring (<em class="parameter"><code><a class="link" href="harfbuzz
<span class="c_punctuation">(</span>*hb_unicode_mirroring_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> unicode</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp21203056"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -998,7 +1012,12 @@ hb_unicode_mirroring (<em class="parameter"><code><a class="link" href="harfbuzz
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
hb_unicode_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> unicode</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp21211600"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
@@ -1007,20 +1026,22 @@ hb_unicode_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb
<span class="c_punctuation">(</span>*hb_unicode_script_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> unicode</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp21222896"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-unicode.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
-<a name="HB-UNICODE-MAX-DECOMPOSITION-LEN:CAPS"></a><h3>HB_UNICODE_MAX_DECOMPOSITION_LEN</h3>
-<pre class="programlisting">#define HB_UNICODE_MAX_DECOMPOSITION_LEN (18+1) /* codepoints */
-</pre>
-</div>
-<hr>
-<div class="refsect2">
<a name="hb-unicode-combining-class-t"></a><h3>enum hb_unicode_combining_class_t</h3>
+<p>
+</p>
<div class="refsect3">
-<a name="hb-unicode-combining-class-t.members"></a><h4>Members</h4>
+<a name="idp21228688"></a><h4>Members</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="300px" class="enum_members_name">
@@ -1030,288 +1051,288 @@ hb_unicode_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb
<tbody>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-NOT-REORDERED:CAPS"></a>HB_UNICODE_COMBINING_CLASS_NOT_REORDERED</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-OVERLAY:CAPS"></a>HB_UNICODE_COMBINING_CLASS_OVERLAY</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-NUKTA:CAPS"></a>HB_UNICODE_COMBINING_CLASS_NUKTA</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-KANA-VOICING:CAPS"></a>HB_UNICODE_COMBINING_CLASS_KANA_VOICING</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-VIRAMA:CAPS"></a>HB_UNICODE_COMBINING_CLASS_VIRAMA</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC10:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC10</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC11:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC11</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC12:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC12</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC13:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC13</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC14:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC14</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC15:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC15</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC16:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC16</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC17:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC17</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC18:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC18</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC19:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC19</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC20:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC20</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC21:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC21</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC22:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC22</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC23:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC23</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC24:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC24</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC25:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC25</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC26:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC26</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC27:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC27</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC28:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC28</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC29:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC29</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC30:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC30</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC31:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC31</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC32:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC32</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC33:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC33</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC34:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC34</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC35:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC35</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC36:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC36</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC84:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC84</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC91:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC91</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC103:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC103</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC107:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC107</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC118:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC118</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC122:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC122</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC129:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC129</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC130:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC130</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-CCC133:CAPS"></a>HB_UNICODE_COMBINING_CLASS_CCC133</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-ATTACHED-BELOW-LEFT:CAPS"></a>HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-ATTACHED-BELOW:CAPS"></a>HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-ATTACHED-ABOVE:CAPS"></a>HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-ATTACHED-ABOVE-RIGHT:CAPS"></a>HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-BELOW-LEFT:CAPS"></a>HB_UNICODE_COMBINING_CLASS_BELOW_LEFT</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-BELOW:CAPS"></a>HB_UNICODE_COMBINING_CLASS_BELOW</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-BELOW-RIGHT:CAPS"></a>HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-LEFT:CAPS"></a>HB_UNICODE_COMBINING_CLASS_LEFT</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-RIGHT:CAPS"></a>HB_UNICODE_COMBINING_CLASS_RIGHT</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-ABOVE-LEFT:CAPS"></a>HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-ABOVE:CAPS"></a>HB_UNICODE_COMBINING_CLASS_ABOVE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-ABOVE-RIGHT:CAPS"></a>HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-DOUBLE-BELOW:CAPS"></a>HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-DOUBLE-ABOVE:CAPS"></a>HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-IOTA-SUBSCRIPT:CAPS"></a>HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-COMBINING-CLASS-INVALID:CAPS"></a>HB_UNICODE_COMBINING_CLASS_INVALID</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
</table></div>
@@ -1322,12 +1343,16 @@ hb_unicode_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb
<a name="hb-unicode-funcs-t"></a><h3>hb_unicode_funcs_t</h3>
<pre class="programlisting">typedef struct hb_unicode_funcs_t hb_unicode_funcs_t;
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="hb-unicode-general-category-t"></a><h3>enum hb_unicode_general_category_t</h3>
+<p>
+</p>
<div class="refsect3">
-<a name="hb-unicode-general-category-t.members"></a><h4>Members</h4>
+<a name="idp21422768"></a><h4>Members</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="300px" class="enum_members_name">
@@ -1337,153 +1362,153 @@ hb_unicode_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb
<tbody>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-CONTROL:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_CONTROL</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-FORMAT:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_FORMAT</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-UNASSIGNED:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-PRIVATE-USE:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-SURROGATE:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_SURROGATE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-LOWERCASE-LETTER:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-MODIFIER-LETTER:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-OTHER-LETTER:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-TITLECASE-LETTER:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-UPPERCASE-LETTER:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-SPACING-MARK:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-ENCLOSING-MARK:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-NON-SPACING-MARK:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-DECIMAL-NUMBER:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-LETTER-NUMBER:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-OTHER-NUMBER:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-CONNECT-PUNCTUATION:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-DASH-PUNCTUATION:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-CLOSE-PUNCTUATION:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-FINAL-PUNCTUATION:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-INITIAL-PUNCTUATION:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-OTHER-PUNCTUATION:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-OPEN-PUNCTUATION:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-CURRENCY-SYMBOL:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-MODIFIER-SYMBOL:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-MATH-SYMBOL:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-OTHER-SYMBOL:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-LINE-SEPARATOR:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-PARAGRAPH-SEPARATOR:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-UNICODE-GENERAL-CATEGORY-SPACE-SEPARATOR:CAPS"></a>HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description"> </td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
</table></div>
@@ -1492,6 +1517,7 @@ hb_unicode_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-uniscribe.html b/docs/reference/html/harfbuzz-hb-uniscribe.html
index 2096fbe..3b9645a 100644
--- a/docs/html/harfbuzz-hb-uniscribe.html
+++ b/docs/reference/html/harfbuzz-hb-uniscribe.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-uniscribe: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
+<title>hb-uniscribe</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
<link rel="prev" href="harfbuzz-hb-graphite2.html" title="hb-graphite2">
<link rel="next" href="harfbuzz-hb-coretext.html" title="hb-coretext">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,7 +18,7 @@
<a href="#harfbuzz-hb-uniscribe.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="harfbuzz-hb-graphite2.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb-coretext.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
@@ -60,6 +60,8 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-uniscribe.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-uniscribe.functions_details"></a><h2>Functions</h2>
@@ -67,12 +69,24 @@
<a name="hb-uniscribe-font-get-hfont"></a><h3>hb_uniscribe_font_get_hfont ()</h3>
<pre class="programlisting"><span class="returnvalue">HFONT</span>
hb_uniscribe_font_get_hfont (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp26513136"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
<hr>
<div class="refsect2">
<a name="hb-uniscribe-font-get-logfontw"></a><h3>hb_uniscribe_font_get_logfontw ()</h3>
<pre class="programlisting"><span class="returnvalue">LOGFONTW</span> *
hb_uniscribe_font_get_logfontw (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>);</pre>
+<p>
+</p>
+<div class="refsect3">
+<a name="idp15442704"></a><h4>Returns</h4>
+<p></p>
+</div>
</div>
</div>
<div class="refsect1">
@@ -80,6 +94,7 @@ hb_uniscribe_font_get_logfontw (<em class="parameter"><code><a class="link" href
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-version.html b/docs/reference/html/harfbuzz-hb-version.html
index 28a9346..3438e91 100644
--- a/docs/html/harfbuzz-hb-version.html
+++ b/docs/reference/html/harfbuzz-hb-version.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb-version: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
-<link rel="prev" href="harfbuzz-Shaping.html" title="Shaping">
+<title>hb-version</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
+<link rel="prev" href="harfbuzz-hb-shape.html" title="hb-shape">
<link rel="next" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,8 +18,8 @@
<a href="#harfbuzz-hb-version.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-Shaping.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-shape.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb-deprecated.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
@@ -40,12 +40,6 @@
</colgroup>
<tbody>
<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-version.html#HB-VERSION-ATLEAST:CAPS" title="HB_VERSION_ATLEAST()">HB_VERSION_ATLEAST</a><span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
@@ -54,14 +48,6 @@
</td>
</tr>
<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-version.html#hb-version-atleast" title="hb_version_atleast ()">hb_version_atleast</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
<td class="function_type">const <span class="returnvalue">char</span> *
</td>
<td class="function_name">
@@ -100,23 +86,19 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-version.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-version.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
-<a name="HB-VERSION-ATLEAST:CAPS"></a><h3>HB_VERSION_ATLEAST()</h3>
-<pre class="programlisting">#define HB_VERSION_ATLEAST(major,minor,micro)</pre>
-</div>
-<hr>
-<div class="refsect2">
<a name="hb-version"></a><h3>hb_version ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
hb_version (<em class="parameter"><code>unsigned <span class="type">int</span> *major</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *minor</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *micro</code></em>);</pre>
-<p>Returns library version as three integer components.</p>
<div class="refsect3">
-<a name="hb-version.parameters"></a><h4>Parameters</h4>
+<a name="idp16699792"></a><h4>Parameters</h4>
<div class="informaltable"><table width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -142,16 +124,7 @@ hb_version (<em class="parameter"><code>unsigned <span class="type">int</span> *
</tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-version-atleast"></a><h3>hb_version_atleast ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-hb_version_atleast (<em class="parameter"><code>unsigned <span class="type">int</span> major</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> minor</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> micro</code></em>);</pre>
-<p class="since">Since: <a class="link" href="api-index-0-9-30.html#api-index-0.9.30">0.9.30</a></p>
+<p class="since">Since 1.0</p>
</div>
<hr>
<div class="refsect2">
@@ -160,40 +133,50 @@ hb_version_atleast (<em class="parameter"><code>unsigned <span class="type">int<
hb_version_string (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Returns library version as a string with three components.</p>
<div class="refsect3">
-<a name="hb-version-string.returns"></a><h4>Returns</h4>
+<a name="idp14950384"></a><h4>Returns</h4>
<p> library version string.</p>
+<p></p>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
+<p class="since">Since 1.0</p>
</div>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-version.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="HB-VERSION-MAJOR:CAPS"></a><h3>HB_VERSION_MAJOR</h3>
-<pre class="programlisting">#define HB_VERSION_MAJOR 1
+<pre class="programlisting">#define HB_VERSION_MAJOR 0
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="HB-VERSION-MICRO:CAPS"></a><h3>HB_VERSION_MICRO</h3>
-<pre class="programlisting">#define HB_VERSION_MICRO 6
+<pre class="programlisting">#define HB_VERSION_MICRO 40
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="HB-VERSION-MINOR:CAPS"></a><h3>HB_VERSION_MINOR</h3>
-<pre class="programlisting">#define HB_VERSION_MINOR 2
+<pre class="programlisting">#define HB_VERSION_MINOR 9
</pre>
+<p>
+</p>
</div>
<hr>
<div class="refsect2">
<a name="HB-VERSION-STRING:CAPS"></a><h3>HB_VERSION_STRING</h3>
-<pre class="programlisting">#define HB_VERSION_STRING "1.2.6"
+<pre class="programlisting">#define HB_VERSION_STRING "0.9.40"
</pre>
+<p>
+</p>
</div>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb.html b/docs/reference/html/harfbuzz-hb.html
index ca615fe..0ce86d6 100644
--- a/docs/html/harfbuzz-hb.html
+++ b/docs/reference/html/harfbuzz-hb.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hb: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch07.html" title="Harfbuzz API">
-<link rel="prev" href="ch07.html" title="Harfbuzz API">
+<title>hb</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="ch01.html" title="[Insert title here]">
+<link rel="prev" href="ch01.html" title="[Insert title here]">
<link rel="next" href="harfbuzz-hb-common.html" title="hb-common">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,8 +18,8 @@
<a href="#harfbuzz-hb.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch07.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="ch07.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="ch01.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb-common.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
@@ -33,16 +33,18 @@
</tr></table></div>
<div class="refsect1">
<a name="harfbuzz-hb.description"></a><h2>Description</h2>
+<p>
+</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb.functions_details"></a><h2>Functions</h2>
-<p></p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb.other_details"></a><h2>Types and Values</h2>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/reference/html/harfbuzz.devhelp2 b/docs/reference/html/harfbuzz.devhelp2
new file mode 100644
index 0000000..10bb40c
--- /dev/null
+++ b/docs/reference/html/harfbuzz.devhelp2
@@ -0,0 +1,378 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
+<book xmlns="http://www.devhelp.net/book" title="HarfBuzz Reference Manual" link="index.html" author="" name="harfbuzz" version="2" language="c">
+ <chapters>
+ <sub name="[Insert title here]" link="ch01.html">
+ <sub name="hb" link="harfbuzz-hb.html"/>
+ <sub name="hb-common" link="harfbuzz-hb-common.html"/>
+ <sub name="hb-unicode" link="harfbuzz-hb-unicode.html"/>
+ <sub name="hb-buffer" link="harfbuzz-hb-buffer.html"/>
+ <sub name="hb-blob" link="harfbuzz-hb-blob.html"/>
+ <sub name="hb-face" link="harfbuzz-hb-face.html"/>
+ <sub name="hb-font" link="harfbuzz-hb-font.html"/>
+ <sub name="hb-shape" link="harfbuzz-hb-shape.html"/>
+ <sub name="hb-version" link="harfbuzz-hb-version.html"/>
+ <sub name="hb-deprecated" link="harfbuzz-hb-deprecated.html"/>
+ <sub name="hb-set" link="harfbuzz-hb-set.html"/>
+ <sub name="hb-ot" link="harfbuzz-hb-ot.html"/>
+ <sub name="hb-ot-layout" link="harfbuzz-hb-ot-layout.html"/>
+ <sub name="hb-ot-tag" link="harfbuzz-hb-ot-tag.html"/>
+ <sub name="hb-shape-plan" link="harfbuzz-hb-shape-plan.html"/>
+ <sub name="hb-glib" link="harfbuzz-hb-glib.html"/>
+ <sub name="hb-icu" link="harfbuzz-hb-icu.html"/>
+ <sub name="hb-ft" link="harfbuzz-hb-ft.html"/>
+ <sub name="hb-graphite2" link="harfbuzz-hb-graphite2.html"/>
+ <sub name="hb-uniscribe" link="harfbuzz-hb-uniscribe.html"/>
+ <sub name="hb-coretext" link="harfbuzz-hb-coretext.html"/>
+ <sub name="hb-gobject" link="harfbuzz-hb-gobject.html"/>
+ </sub>
+ <sub name="Object Hierarchy" link="object-tree.html"/>
+ <sub name="API Index" link="api-index-full.html"/>
+ <sub name="Index of deprecated API" link="deprecated-api-index.html"/>
+ <sub name="Annotation Glossary" link="annotation-glossary.html"/>
+ </chapters>
+ <functions>
+ <keyword type="macro" name="HB_DIRECTION_REVERSE()" link="harfbuzz-hb-common.html#HB-DIRECTION-REVERSE:CAPS"/>
+ <keyword type="macro" name="HB_LANGUAGE_INVALID" link="harfbuzz-hb-common.html#HB-LANGUAGE-INVALID:CAPS"/>
+ <keyword type="macro" name="HB_TAG()" link="harfbuzz-hb-common.html#HB-TAG:CAPS"/>
+ <keyword type="macro" name="HB_UNTAG()" link="harfbuzz-hb-common.html#HB-UNTAG:CAPS"/>
+ <keyword type="function" name="hb_destroy_func_t ()" link="harfbuzz-hb-common.html#hb-destroy-func-t"/>
+ <keyword type="function" name="hb_direction_from_string ()" link="harfbuzz-hb-common.html#hb-direction-from-string" since="1.0"/>
+ <keyword type="function" name="hb_direction_to_string ()" link="harfbuzz-hb-common.html#hb-direction-to-string" since="1.0"/>
+ <keyword type="function" name="hb_language_from_string ()" link="harfbuzz-hb-common.html#hb-language-from-string" since="1.0"/>
+ <keyword type="function" name="hb_language_get_default ()" link="harfbuzz-hb-common.html#hb-language-get-default" since="1.0"/>
+ <keyword type="function" name="hb_language_to_string ()" link="harfbuzz-hb-common.html#hb-language-to-string" since="1.0"/>
+ <keyword type="function" name="hb_script_from_iso15924_tag ()" link="harfbuzz-hb-common.html#hb-script-from-iso15924-tag" since="1.0"/>
+ <keyword type="function" name="hb_script_from_string ()" link="harfbuzz-hb-common.html#hb-script-from-string" since="1.0"/>
+ <keyword type="function" name="hb_script_get_horizontal_direction ()" link="harfbuzz-hb-common.html#hb-script-get-horizontal-direction" since="1.0"/>
+ <keyword type="function" name="hb_script_to_iso15924_tag ()" link="harfbuzz-hb-common.html#hb-script-to-iso15924-tag" since="1.0"/>
+ <keyword type="function" name="hb_tag_from_string ()" link="harfbuzz-hb-common.html#hb-tag-from-string" since="1.0"/>
+ <keyword type="function" name="hb_tag_to_string ()" link="harfbuzz-hb-common.html#hb-tag-to-string" since="1.0"/>
+ <keyword type="macro" name="HB_DIRECTION_IS_BACKWARD()" link="harfbuzz-hb-common.html#HB-DIRECTION-IS-BACKWARD:CAPS"/>
+ <keyword type="macro" name="HB_DIRECTION_IS_FORWARD()" link="harfbuzz-hb-common.html#HB-DIRECTION-IS-FORWARD:CAPS"/>
+ <keyword type="macro" name="HB_DIRECTION_IS_HORIZONTAL()" link="harfbuzz-hb-common.html#HB-DIRECTION-IS-HORIZONTAL:CAPS"/>
+ <keyword type="macro" name="HB_DIRECTION_IS_VALID()" link="harfbuzz-hb-common.html#HB-DIRECTION-IS-VALID:CAPS"/>
+ <keyword type="macro" name="HB_DIRECTION_IS_VERTICAL()" link="harfbuzz-hb-common.html#HB-DIRECTION-IS-VERTICAL:CAPS"/>
+ <keyword type="macro" name="HB_TAG_NONE" link="harfbuzz-hb-common.html#HB-TAG-NONE:CAPS"/>
+ <keyword type="macro" name="HB_TAG_MAX" link="harfbuzz-hb-common.html#HB-TAG-MAX:CAPS"/>
+ <keyword type="typedef" name="hb_bool_t" link="harfbuzz-hb-common.html#hb-bool-t"/>
+ <keyword type="typedef" name="hb_codepoint_t" link="harfbuzz-hb-common.html#hb-codepoint-t"/>
+ <keyword type="enum" name="enum hb_direction_t" link="harfbuzz-hb-common.html#hb-direction-t"/>
+ <keyword type="typedef" name="hb_language_t" link="harfbuzz-hb-common.html#hb-language-t"/>
+ <keyword type="typedef" name="hb_mask_t" link="harfbuzz-hb-common.html#hb-mask-t"/>
+ <keyword type="typedef" name="hb_position_t" link="harfbuzz-hb-common.html#hb-position-t"/>
+ <keyword type="enum" name="enum hb_script_t" link="harfbuzz-hb-common.html#hb-script-t"/>
+ <keyword type="typedef" name="hb_tag_t" link="harfbuzz-hb-common.html#hb-tag-t"/>
+ <keyword type="struct" name="hb_user_data_key_t" link="harfbuzz-hb-common.html#hb-user-data-key-t-struct"/>
+ <keyword type="union" name="hb_var_int_t" link="harfbuzz-hb-common.html#hb-var-int-t"/>
+ <keyword type="macro" name="HB_UNICODE_MAX_DECOMPOSITION_LEN" link="harfbuzz-hb-unicode.html#HB-UNICODE-MAX-DECOMPOSITION-LEN:CAPS"/>
+ <keyword type="function" name="hb_unicode_combining_class ()" link="harfbuzz-hb-unicode.html#hb-unicode-combining-class"/>
+ <keyword type="function" name="hb_unicode_combining_class_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-combining-class-func-t"/>
+ <keyword type="function" name="hb_unicode_compose ()" link="harfbuzz-hb-unicode.html#hb-unicode-compose" since="1.0"/>
+ <keyword type="function" name="hb_unicode_compose_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-compose-func-t"/>
+ <keyword type="function" name="hb_unicode_decompose ()" link="harfbuzz-hb-unicode.html#hb-unicode-decompose" since="1.0"/>
+ <keyword type="function" name="hb_unicode_decompose_compatibility ()" link="harfbuzz-hb-unicode.html#hb-unicode-decompose-compatibility" since="1.0"/>
+ <keyword type="function" name="hb_unicode_decompose_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-decompose-func-t"/>
+ <keyword type="function" name="hb_unicode_eastasian_width ()" link="harfbuzz-hb-unicode.html#hb-unicode-eastasian-width"/>
+ <keyword type="function" name="hb_unicode_funcs_create ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-create"/>
+ <keyword type="function" name="hb_unicode_funcs_destroy ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-destroy" since="1.0"/>
+ <keyword type="function" name="hb_unicode_funcs_get_default ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-default"/>
+ <keyword type="function" name="hb_unicode_funcs_get_empty ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-empty" since="1.0"/>
+ <keyword type="function" name="hb_unicode_funcs_get_parent ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-parent" since="1.0"/>
+ <keyword type="function" name="hb_unicode_funcs_get_user_data ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-user-data" since="1.0"/>
+ <keyword type="function" name="hb_unicode_funcs_is_immutable ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-is-immutable" since="1.0"/>
+ <keyword type="function" name="hb_unicode_funcs_make_immutable ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-make-immutable" since="1.0"/>
+ <keyword type="function" name="hb_unicode_funcs_reference ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-reference" since="1.0"/>
+ <keyword type="function" name="hb_unicode_funcs_set_combining_class_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-combining-class-func" since="1.0"/>
+ <keyword type="function" name="hb_unicode_funcs_set_compose_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-compose-func" since="1.0"/>
+ <keyword type="function" name="hb_unicode_funcs_set_decompose_compatibility_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-decompose-compatibility-func" since="1.0"/>
+ <keyword type="function" name="hb_unicode_funcs_set_decompose_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-decompose-func" since="1.0"/>
+ <keyword type="function" name="hb_unicode_funcs_set_eastasian_width_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-eastasian-width-func" since="1.0"/>
+ <keyword type="function" name="hb_unicode_funcs_set_general_category_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-general-category-func" since="1.0"/>
+ <keyword type="function" name="hb_unicode_funcs_set_mirroring_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-mirroring-func" since="1.0"/>
+ <keyword type="function" name="hb_unicode_funcs_set_script_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-script-func" since="1.0"/>
+ <keyword type="function" name="hb_unicode_funcs_set_user_data ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-user-data" since="1.0"/>
+ <keyword type="function" name="hb_unicode_general_category ()" link="harfbuzz-hb-unicode.html#hb-unicode-general-category"/>
+ <keyword type="function" name="hb_unicode_general_category_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-general-category-func-t"/>
+ <keyword type="function" name="hb_unicode_mirroring ()" link="harfbuzz-hb-unicode.html#hb-unicode-mirroring"/>
+ <keyword type="function" name="hb_unicode_mirroring_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-mirroring-func-t"/>
+ <keyword type="function" name="hb_unicode_script ()" link="harfbuzz-hb-unicode.html#hb-unicode-script"/>
+ <keyword type="function" name="hb_unicode_script_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-script-func-t"/>
+ <keyword type="enum" name="enum hb_unicode_combining_class_t" link="harfbuzz-hb-unicode.html#hb-unicode-combining-class-t"/>
+ <keyword type="typedef" name="hb_unicode_funcs_t" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"/>
+ <keyword type="enum" name="enum hb_unicode_general_category_t" link="harfbuzz-hb-unicode.html#hb-unicode-general-category-t"/>
+ <keyword type="function" name="hb_buffer_add ()" link="harfbuzz-hb-buffer.html#hb-buffer-add" since="1.0"/>
+ <keyword type="function" name="hb_buffer_add_utf16 ()" link="harfbuzz-hb-buffer.html#hb-buffer-add-utf16" since="1.0"/>
+ <keyword type="function" name="hb_buffer_add_utf32 ()" link="harfbuzz-hb-buffer.html#hb-buffer-add-utf32" since="1.0"/>
+ <keyword type="function" name="hb_buffer_add_utf8 ()" link="harfbuzz-hb-buffer.html#hb-buffer-add-utf8" since="1.0"/>
+ <keyword type="function" name="hb_buffer_add_codepoints ()" link="harfbuzz-hb-buffer.html#hb-buffer-add-codepoints" since="1.0"/>
+ <keyword type="function" name="hb_buffer_allocation_successful ()" link="harfbuzz-hb-buffer.html#hb-buffer-allocation-successful" since="1.0"/>
+ <keyword type="function" name="hb_buffer_clear_contents ()" link="harfbuzz-hb-buffer.html#hb-buffer-clear-contents" since="1.0"/>
+ <keyword type="function" name="hb_buffer_create ()" link="harfbuzz-hb-buffer.html#hb-buffer-create"/>
+ <keyword type="function" name="hb_buffer_deserialize_glyphs ()" link="harfbuzz-hb-buffer.html#hb-buffer-deserialize-glyphs" since="1.0"/>
+ <keyword type="function" name="hb_buffer_destroy ()" link="harfbuzz-hb-buffer.html#hb-buffer-destroy" since="1.0"/>
+ <keyword type="function" name="hb_buffer_get_content_type ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-content-type" since="1.0"/>
+ <keyword type="function" name="hb_buffer_get_direction ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-direction" since="1.0"/>
+ <keyword type="function" name="hb_buffer_get_empty ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-empty" since="1.0"/>
+ <keyword type="function" name="hb_buffer_get_flags ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-flags" since="1.0"/>
+ <keyword type="function" name="hb_buffer_get_glyph_infos ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-glyph-infos" since="1.0"/>
+ <keyword type="function" name="hb_buffer_get_glyph_positions ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-glyph-positions" since="1.0"/>
+ <keyword type="function" name="hb_buffer_get_language ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-language" since="1.0"/>
+ <keyword type="function" name="hb_buffer_get_length ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-length" since="1.0"/>
+ <keyword type="function" name="hb_buffer_get_replacement_codepoint ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-replacement-codepoint" since="1.0"/>
+ <keyword type="function" name="hb_buffer_get_script ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-script" since="1.0"/>
+ <keyword type="function" name="hb_buffer_get_segment_properties ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-segment-properties" since="1.0"/>
+ <keyword type="function" name="hb_buffer_get_unicode_funcs ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-unicode-funcs" since="1.0"/>
+ <keyword type="function" name="hb_buffer_get_user_data ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-user-data" since="1.0"/>
+ <keyword type="function" name="hb_buffer_guess_segment_properties ()" link="harfbuzz-hb-buffer.html#hb-buffer-guess-segment-properties" since="1.0"/>
+ <keyword type="function" name="hb_buffer_normalize_glyphs ()" link="harfbuzz-hb-buffer.html#hb-buffer-normalize-glyphs" since="1.0"/>
+ <keyword type="function" name="hb_buffer_pre_allocate ()" link="harfbuzz-hb-buffer.html#hb-buffer-pre-allocate" since="1.0"/>
+ <keyword type="function" name="hb_buffer_reference ()" link="harfbuzz-hb-buffer.html#hb-buffer-reference" since="1.0"/>
+ <keyword type="function" name="hb_buffer_reset ()" link="harfbuzz-hb-buffer.html#hb-buffer-reset" since="1.0"/>
+ <keyword type="function" name="hb_buffer_reverse ()" link="harfbuzz-hb-buffer.html#hb-buffer-reverse" since="1.0"/>
+ <keyword type="function" name="hb_buffer_reverse_clusters ()" link="harfbuzz-hb-buffer.html#hb-buffer-reverse-clusters" since="1.0"/>
+ <keyword type="function" name="hb_buffer_serialize_format_from_string ()" link="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-from-string" since="1.0"/>
+ <keyword type="function" name="hb_buffer_serialize_format_to_string ()" link="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-to-string" since="1.0"/>
+ <keyword type="function" name="hb_buffer_serialize_glyphs ()" link="harfbuzz-hb-buffer.html#hb-buffer-serialize-glyphs" since="1.0"/>
+ <keyword type="function" name="hb_buffer_serialize_list_formats ()" link="harfbuzz-hb-buffer.html#hb-buffer-serialize-list-formats" since="1.0"/>
+ <keyword type="function" name="hb_buffer_set_content_type ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-content-type" since="1.0"/>
+ <keyword type="function" name="hb_buffer_set_direction ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-direction" since="1.0"/>
+ <keyword type="function" name="hb_buffer_set_flags ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-flags" since="1.0"/>
+ <keyword type="function" name="hb_buffer_set_language ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-language" since="1.0"/>
+ <keyword type="function" name="hb_buffer_set_length ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-length" since="1.0"/>
+ <keyword type="function" name="hb_buffer_set_replacement_codepoint ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-replacement-codepoint" since="1.0"/>
+ <keyword type="function" name="hb_buffer_set_script ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-script" since="1.0"/>
+ <keyword type="function" name="hb_buffer_set_segment_properties ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-segment-properties" since="1.0"/>
+ <keyword type="function" name="hb_buffer_set_unicode_funcs ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-unicode-funcs" since="1.0"/>
+ <keyword type="function" name="hb_buffer_set_user_data ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-user-data" since="1.0"/>
+ <keyword type="function" name="hb_segment_properties_equal ()" link="harfbuzz-hb-buffer.html#hb-segment-properties-equal"/>
+ <keyword type="function" name="hb_segment_properties_hash ()" link="harfbuzz-hb-buffer.html#hb-segment-properties-hash"/>
+ <keyword type="macro" name="HB_SEGMENT_PROPERTIES_DEFAULT" link="harfbuzz-hb-buffer.html#HB-SEGMENT-PROPERTIES-DEFAULT:CAPS"/>
+ <keyword type="enum" name="enum hb_buffer_content_type_t" link="harfbuzz-hb-buffer.html#hb-buffer-content-type-t"/>
+ <keyword type="enum" name="enum hb_buffer_flags_t" link="harfbuzz-hb-buffer.html#hb-buffer-flags-t"/>
+ <keyword type="enum" name="enum hb_buffer_serialize_flags_t" link="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t"/>
+ <keyword type="enum" name="enum hb_buffer_serialize_format_t" link="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t"/>
+ <keyword type="typedef" name="hb_buffer_t" link="harfbuzz-hb-buffer.html#hb-buffer-t"/>
+ <keyword type="struct" name="hb_glyph_info_t" link="harfbuzz-hb-buffer.html#hb-glyph-info-t-struct"/>
+ <keyword type="struct" name="hb_glyph_position_t" link="harfbuzz-hb-buffer.html#hb-glyph-position-t-struct"/>
+ <keyword type="struct" name="hb_segment_properties_t" link="harfbuzz-hb-buffer.html#hb-segment-properties-t-struct"/>
+ <keyword type="function" name="hb_blob_create ()" link="harfbuzz-hb-blob.html#hb-blob-create" since="1.0"/>
+ <keyword type="function" name="hb_blob_create_sub_blob ()" link="harfbuzz-hb-blob.html#hb-blob-create-sub-blob" since="1.0"/>
+ <keyword type="function" name="hb_blob_destroy ()" link="harfbuzz-hb-blob.html#hb-blob-destroy" since="1.0"/>
+ <keyword type="function" name="hb_blob_get_data ()" link="harfbuzz-hb-blob.html#hb-blob-get-data" since="1.0"/>
+ <keyword type="function" name="hb_blob_get_data_writable ()" link="harfbuzz-hb-blob.html#hb-blob-get-data-writable" since="1.0"/>
+ <keyword type="function" name="hb_blob_get_empty ()" link="harfbuzz-hb-blob.html#hb-blob-get-empty" since="1.0"/>
+ <keyword type="function" name="hb_blob_get_length ()" link="harfbuzz-hb-blob.html#hb-blob-get-length" since="1.0"/>
+ <keyword type="function" name="hb_blob_get_user_data ()" link="harfbuzz-hb-blob.html#hb-blob-get-user-data" since="1.0"/>
+ <keyword type="function" name="hb_blob_is_immutable ()" link="harfbuzz-hb-blob.html#hb-blob-is-immutable" since="1.0"/>
+ <keyword type="function" name="hb_blob_make_immutable ()" link="harfbuzz-hb-blob.html#hb-blob-make-immutable" since="1.0"/>
+ <keyword type="function" name="hb_blob_reference ()" link="harfbuzz-hb-blob.html#hb-blob-reference" since="1.0"/>
+ <keyword type="function" name="hb_blob_set_user_data ()" link="harfbuzz-hb-blob.html#hb-blob-set-user-data" since="1.0"/>
+ <keyword type="typedef" name="hb_blob_t" link="harfbuzz-hb-blob.html#hb-blob-t"/>
+ <keyword type="enum" name="enum hb_memory_mode_t" link="harfbuzz-hb-blob.html#hb-memory-mode-t"/>
+ <keyword type="function" name="hb_face_create ()" link="harfbuzz-hb-face.html#hb-face-create"/>
+ <keyword type="function" name="hb_face_create_for_tables ()" link="harfbuzz-hb-face.html#hb-face-create-for-tables" since="1.0"/>
+ <keyword type="function" name="hb_face_destroy ()" link="harfbuzz-hb-face.html#hb-face-destroy" since="1.0"/>
+ <keyword type="function" name="hb_face_get_empty ()" link="harfbuzz-hb-face.html#hb-face-get-empty" since="1.0"/>
+ <keyword type="function" name="hb_face_get_glyph_count ()" link="harfbuzz-hb-face.html#hb-face-get-glyph-count" since="1.0"/>
+ <keyword type="function" name="hb_face_get_index ()" link="harfbuzz-hb-face.html#hb-face-get-index" since="1.0"/>
+ <keyword type="function" name="hb_face_get_upem ()" link="harfbuzz-hb-face.html#hb-face-get-upem" since="1.0"/>
+ <keyword type="function" name="hb_face_get_user_data ()" link="harfbuzz-hb-face.html#hb-face-get-user-data" since="1.0"/>
+ <keyword type="function" name="hb_face_is_immutable ()" link="harfbuzz-hb-face.html#hb-face-is-immutable" since="1.0"/>
+ <keyword type="function" name="hb_face_make_immutable ()" link="harfbuzz-hb-face.html#hb-face-make-immutable" since="1.0"/>
+ <keyword type="function" name="hb_face_reference ()" link="harfbuzz-hb-face.html#hb-face-reference" since="1.0"/>
+ <keyword type="function" name="hb_face_reference_blob ()" link="harfbuzz-hb-face.html#hb-face-reference-blob" since="1.0"/>
+ <keyword type="function" name="hb_face_reference_table ()" link="harfbuzz-hb-face.html#hb-face-reference-table" since="1.0"/>
+ <keyword type="function" name="hb_face_set_glyph_count ()" link="harfbuzz-hb-face.html#hb-face-set-glyph-count" since="1.0"/>
+ <keyword type="function" name="hb_face_set_index ()" link="harfbuzz-hb-face.html#hb-face-set-index" since="1.0"/>
+ <keyword type="function" name="hb_face_set_upem ()" link="harfbuzz-hb-face.html#hb-face-set-upem" since="1.0"/>
+ <keyword type="function" name="hb_face_set_user_data ()" link="harfbuzz-hb-face.html#hb-face-set-user-data" since="1.0"/>
+ <keyword type="typedef" name="hb_face_t" link="harfbuzz-hb-face.html#hb-face-t"/>
+ <keyword type="function" name="hb_font_add_glyph_origin_for_direction ()" link="harfbuzz-hb-font.html#hb-font-add-glyph-origin-for-direction" since="1.0"/>
+ <keyword type="function" name="hb_font_create ()" link="harfbuzz-hb-font.html#hb-font-create"/>
+ <keyword type="function" name="hb_font_create_sub_font ()" link="harfbuzz-hb-font.html#hb-font-create-sub-font" since="1.0"/>
+ <keyword type="function" name="hb_font_destroy ()" link="harfbuzz-hb-font.html#hb-font-destroy" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_create ()" link="harfbuzz-hb-font.html#hb-font-funcs-create"/>
+ <keyword type="function" name="hb_font_funcs_destroy ()" link="harfbuzz-hb-font.html#hb-font-funcs-destroy" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_get_empty ()" link="harfbuzz-hb-font.html#hb-font-funcs-get-empty" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_get_user_data ()" link="harfbuzz-hb-font.html#hb-font-funcs-get-user-data" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_is_immutable ()" link="harfbuzz-hb-font.html#hb-font-funcs-is-immutable" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_make_immutable ()" link="harfbuzz-hb-font.html#hb-font-funcs-make-immutable" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_reference ()" link="harfbuzz-hb-font.html#hb-font-funcs-reference" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_set_glyph_contour_point_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-contour-point-func" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_set_glyph_extents_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-extents-func" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_set_glyph_from_name_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-from-name-func" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_set_glyph_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-func" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_set_glyph_h_advance_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-advance-func" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_set_glyph_h_kerning_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-kerning-func" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_set_glyph_h_origin_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-origin-func" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_set_glyph_name_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-name-func" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_set_glyph_v_advance_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-advance-func" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_set_glyph_v_kerning_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-kerning-func" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_set_glyph_v_origin_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-origin-func" since="1.0"/>
+ <keyword type="function" name="hb_font_funcs_set_user_data ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-user-data" since="1.0"/>
+ <keyword type="function" name="hb_font_get_empty ()" link="harfbuzz-hb-font.html#hb-font-get-empty" since="1.0"/>
+ <keyword type="function" name="hb_font_get_face ()" link="harfbuzz-hb-font.html#hb-font-get-face" since="1.0"/>
+ <keyword type="function" name="hb_font_get_glyph ()" link="harfbuzz-hb-font.html#hb-font-get-glyph" since="1.0"/>
+ <keyword type="function" name="hb_font_get_glyph_advance_for_direction ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-advance-for-direction" since="1.0"/>
+ <keyword type="function" name="hb_font_get_glyph_advance_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-advance-func-t"/>
+ <keyword type="function" name="hb_font_get_glyph_contour_point ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-contour-point" since="1.0"/>
+ <keyword type="function" name="hb_font_get_glyph_contour_point_for_origin ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-contour-point-for-origin" since="1.0"/>
+ <keyword type="function" name="hb_font_get_glyph_contour_point_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-contour-point-func-t"/>
+ <keyword type="function" name="hb_font_get_glyph_extents ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-extents" since="1.0"/>
+ <keyword type="function" name="hb_font_get_glyph_extents_for_origin ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-extents-for-origin" since="1.0"/>
+ <keyword type="function" name="hb_font_get_glyph_extents_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-extents-func-t"/>
+ <keyword type="function" name="hb_font_get_glyph_from_name ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-from-name" since="1.0"/>
+ <keyword type="function" name="hb_font_get_glyph_from_name_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-from-name-func-t"/>
+ <keyword type="function" name="hb_font_get_glyph_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-func-t"/>
+ <keyword type="function" name="hb_font_get_glyph_h_advance ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-advance" since="1.0"/>
+ <keyword type="function" name="hb_font_get_glyph_h_kerning ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-kerning" since="1.0"/>
+ <keyword type="function" name="hb_font_get_glyph_h_origin ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-origin" since="1.0"/>
+ <keyword type="function" name="hb_font_get_glyph_kerning_for_direction ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-kerning-for-direction" since="1.0"/>
+ <keyword type="function" name="hb_font_get_glyph_kerning_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-kerning-func-t"/>
+ <keyword type="function" name="hb_font_get_glyph_name ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-name" since="1.0"/>
+ <keyword type="function" name="hb_font_get_glyph_name_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-name-func-t"/>
+ <keyword type="function" name="hb_font_get_glyph_origin_for_direction ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-origin-for-direction" since="1.0"/>
+ <keyword type="function" name="hb_font_get_glyph_origin_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-origin-func-t"/>
+ <keyword type="function" name="hb_font_get_glyph_v_advance ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-advance" since="1.0"/>
+ <keyword type="function" name="hb_font_get_glyph_v_kerning ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-kerning" since="1.0"/>
+ <keyword type="function" name="hb_font_get_glyph_v_origin ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-origin" since="1.0"/>
+ <keyword type="function" name="hb_font_get_parent ()" link="harfbuzz-hb-font.html#hb-font-get-parent" since="1.0"/>
+ <keyword type="function" name="hb_font_get_ppem ()" link="harfbuzz-hb-font.html#hb-font-get-ppem" since="1.0"/>
+ <keyword type="function" name="hb_font_get_scale ()" link="harfbuzz-hb-font.html#hb-font-get-scale" since="1.0"/>
+ <keyword type="function" name="hb_font_get_user_data ()" link="harfbuzz-hb-font.html#hb-font-get-user-data" since="1.0"/>
+ <keyword type="function" name="hb_font_glyph_from_string ()" link="harfbuzz-hb-font.html#hb-font-glyph-from-string" since="1.0"/>
+ <keyword type="function" name="hb_font_glyph_to_string ()" link="harfbuzz-hb-font.html#hb-font-glyph-to-string" since="1.0"/>
+ <keyword type="function" name="hb_font_is_immutable ()" link="harfbuzz-hb-font.html#hb-font-is-immutable" since="1.0"/>
+ <keyword type="function" name="hb_font_make_immutable ()" link="harfbuzz-hb-font.html#hb-font-make-immutable" since="1.0"/>
+ <keyword type="function" name="hb_font_reference ()" link="harfbuzz-hb-font.html#hb-font-reference" since="1.0"/>
+ <keyword type="function" name="hb_font_set_funcs ()" link="harfbuzz-hb-font.html#hb-font-set-funcs" since="1.0"/>
+ <keyword type="function" name="hb_font_set_funcs_data ()" link="harfbuzz-hb-font.html#hb-font-set-funcs-data" since="1.0"/>
+ <keyword type="function" name="hb_font_set_ppem ()" link="harfbuzz-hb-font.html#hb-font-set-ppem" since="1.0"/>
+ <keyword type="function" name="hb_font_set_scale ()" link="harfbuzz-hb-font.html#hb-font-set-scale" since="1.0"/>
+ <keyword type="function" name="hb_font_set_user_data ()" link="harfbuzz-hb-font.html#hb-font-set-user-data" since="1.0"/>
+ <keyword type="function" name="hb_font_subtract_glyph_origin_for_direction ()" link="harfbuzz-hb-font.html#hb-font-subtract-glyph-origin-for-direction" since="1.0"/>
+ <keyword type="function" name="hb_reference_table_func_t ()" link="harfbuzz-hb-font.html#hb-reference-table-func-t"/>
+ <keyword type="typedef" name="hb_font_funcs_t" link="harfbuzz-hb-font.html#hb-font-funcs-t"/>
+ <keyword type="typedef" name="hb_font_get_glyph_h_advance_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-advance-func-t"/>
+ <keyword type="typedef" name="hb_font_get_glyph_h_kerning_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-kerning-func-t"/>
+ <keyword type="typedef" name="hb_font_get_glyph_h_origin_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-origin-func-t"/>
+ <keyword type="typedef" name="hb_font_get_glyph_v_advance_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-advance-func-t"/>
+ <keyword type="typedef" name="hb_font_get_glyph_v_kerning_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-kerning-func-t"/>
+ <keyword type="typedef" name="hb_font_get_glyph_v_origin_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-origin-func-t"/>
+ <keyword type="typedef" name="hb_font_t" link="harfbuzz-hb-font.html#hb-font-t"/>
+ <keyword type="function" name="hb_feature_from_string ()" link="harfbuzz-hb-shape.html#hb-feature-from-string" since="1.0"/>
+ <keyword type="function" name="hb_feature_to_string ()" link="harfbuzz-hb-shape.html#hb-feature-to-string" since="1.0"/>
+ <keyword type="function" name="hb_shape ()" link="harfbuzz-hb-shape.html#hb-shape" since="1.0"/>
+ <keyword type="function" name="hb_shape_full ()" link="harfbuzz-hb-shape.html#hb-shape-full" since="1.0"/>
+ <keyword type="function" name="hb_shape_list_shapers ()" link="harfbuzz-hb-shape.html#hb-shape-list-shapers" since="1.0"/>
+ <keyword type="struct" name="hb_feature_t" link="harfbuzz-hb-shape.html#hb-feature-t-struct"/>
+ <keyword type="function" name="hb_version ()" link="harfbuzz-hb-version.html#hb-version" since="1.0"/>
+ <keyword type="function" name="hb_version_string ()" link="harfbuzz-hb-version.html#hb-version-string" since="1.0"/>
+ <keyword type="macro" name="HB_VERSION_MAJOR" link="harfbuzz-hb-version.html#HB-VERSION-MAJOR:CAPS"/>
+ <keyword type="macro" name="HB_VERSION_MICRO" link="harfbuzz-hb-version.html#HB-VERSION-MICRO:CAPS"/>
+ <keyword type="macro" name="HB_VERSION_MINOR" link="harfbuzz-hb-version.html#HB-VERSION-MINOR:CAPS"/>
+ <keyword type="macro" name="HB_VERSION_STRING" link="harfbuzz-hb-version.html#HB-VERSION-STRING:CAPS"/>
+ <keyword type="macro" name="HB_BUFFER_FLAGS_DEFAULT" link="harfbuzz-hb-deprecated.html#HB-BUFFER-FLAGS-DEFAULT:CAPS" deprecated=""/>
+ <keyword type="macro" name="HB_BUFFER_SERIALIZE_FLAGS_DEFAULT" link="harfbuzz-hb-deprecated.html#HB-BUFFER-SERIALIZE-FLAGS-DEFAULT:CAPS" deprecated=""/>
+ <keyword type="macro" name="HB_SCRIPT_CANADIAN_ABORIGINAL" link="harfbuzz-hb-deprecated.html#HB-SCRIPT-CANADIAN-ABORIGINAL:CAPS" deprecated=""/>
+ <keyword type="macro" name="HB_SET_VALUE_INVALID" link="harfbuzz-hb-set.html#HB-SET-VALUE-INVALID:CAPS"/>
+ <keyword type="function" name="hb_set_add ()" link="harfbuzz-hb-set.html#hb-set-add" since="1.0"/>
+ <keyword type="function" name="hb_set_add_range ()" link="harfbuzz-hb-set.html#hb-set-add-range" since="1.0"/>
+ <keyword type="function" name="hb_set_allocation_successful ()" link="harfbuzz-hb-set.html#hb-set-allocation-successful" since="1.0"/>
+ <keyword type="function" name="hb_set_clear ()" link="harfbuzz-hb-set.html#hb-set-clear" since="1.0"/>
+ <keyword type="function" name="hb_set_create ()" link="harfbuzz-hb-set.html#hb-set-create"/>
+ <keyword type="function" name="hb_set_del ()" link="harfbuzz-hb-set.html#hb-set-del" since="1.0"/>
+ <keyword type="function" name="hb_set_del_range ()" link="harfbuzz-hb-set.html#hb-set-del-range" since="1.0"/>
+ <keyword type="function" name="hb_set_destroy ()" link="harfbuzz-hb-set.html#hb-set-destroy" since="1.0"/>
+ <keyword type="function" name="hb_set_get_empty ()" link="harfbuzz-hb-set.html#hb-set-get-empty" since="1.0"/>
+ <keyword type="function" name="hb_set_get_max ()" link="harfbuzz-hb-set.html#hb-set-get-max" since="1.0"/>
+ <keyword type="function" name="hb_set_get_min ()" link="harfbuzz-hb-set.html#hb-set-get-min" since="1.0"/>
+ <keyword type="function" name="hb_set_get_population ()" link="harfbuzz-hb-set.html#hb-set-get-population" since="1.0"/>
+ <keyword type="function" name="hb_set_get_user_data ()" link="harfbuzz-hb-set.html#hb-set-get-user-data" since="1.0"/>
+ <keyword type="function" name="hb_set_has ()" link="harfbuzz-hb-set.html#hb-set-has" since="1.0"/>
+ <keyword type="function" name="hb_set_intersect ()" link="harfbuzz-hb-set.html#hb-set-intersect" since="1.0"/>
+ <keyword type="function" name="hb_set_invert ()" link="harfbuzz-hb-set.html#hb-set-invert" since="1.0"/>
+ <keyword type="function" name="hb_set_is_empty ()" link="harfbuzz-hb-set.html#hb-set-is-empty" since="1.0"/>
+ <keyword type="function" name="hb_set_is_equal ()" link="harfbuzz-hb-set.html#hb-set-is-equal" since="1.0"/>
+ <keyword type="function" name="hb_set_next ()" link="harfbuzz-hb-set.html#hb-set-next" since="1.0"/>
+ <keyword type="function" name="hb_set_next_range ()" link="harfbuzz-hb-set.html#hb-set-next-range" since="1.0"/>
+ <keyword type="function" name="hb_set_reference ()" link="harfbuzz-hb-set.html#hb-set-reference" since="1.0"/>
+ <keyword type="function" name="hb_set_set ()" link="harfbuzz-hb-set.html#hb-set-set" since="1.0"/>
+ <keyword type="function" name="hb_set_set_user_data ()" link="harfbuzz-hb-set.html#hb-set-set-user-data" since="1.0"/>
+ <keyword type="function" name="hb_set_subtract ()" link="harfbuzz-hb-set.html#hb-set-subtract" since="1.0"/>
+ <keyword type="function" name="hb_set_symmetric_difference ()" link="harfbuzz-hb-set.html#hb-set-symmetric-difference" since="1.0"/>
+ <keyword type="function" name="hb_set_union ()" link="harfbuzz-hb-set.html#hb-set-union" since="1.0"/>
+ <keyword type="typedef" name="hb_set_t" link="harfbuzz-hb-set.html#hb-set-t"/>
+ <keyword type="function" name="hb_ot_layout_collect_lookups ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-collect-lookups"/>
+ <keyword type="function" name="hb_ot_layout_feature_get_lookups ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-feature-get-lookups"/>
+ <keyword type="function" name="hb_ot_layout_get_attach_points ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-get-attach-points"/>
+ <keyword type="function" name="hb_ot_layout_get_glyph_class ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-get-glyph-class"/>
+ <keyword type="function" name="hb_ot_layout_get_glyphs_in_class ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-get-glyphs-in-class"/>
+ <keyword type="function" name="hb_ot_layout_get_ligature_carets ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-get-ligature-carets"/>
+ <keyword type="function" name="hb_ot_layout_get_size_params ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-get-size-params"/>
+ <keyword type="function" name="hb_ot_layout_glyph_sequence_func_t ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-glyph-sequence-func-t"/>
+ <keyword type="function" name="hb_ot_layout_has_glyph_classes ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-has-glyph-classes"/>
+ <keyword type="function" name="hb_ot_layout_has_positioning ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-has-positioning"/>
+ <keyword type="function" name="hb_ot_layout_has_substitution ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-has-substitution"/>
+ <keyword type="function" name="hb_ot_layout_language_find_feature ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-language-find-feature"/>
+ <keyword type="function" name="hb_ot_layout_language_get_feature_indexes ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-language-get-feature-indexes"/>
+ <keyword type="function" name="hb_ot_layout_language_get_feature_tags ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-language-get-feature-tags"/>
+ <keyword type="function" name="hb_ot_layout_language_get_required_feature ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-language-get-required-feature"/>
+ <keyword type="function" name="hb_ot_layout_lookup_collect_glyphs ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-lookup-collect-glyphs"/>
+ <keyword type="function" name="hb_ot_layout_lookup_substitute_closure ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-lookup-substitute-closure"/>
+ <keyword type="function" name="hb_ot_layout_lookup_would_substitute ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-lookup-would-substitute"/>
+ <keyword type="function" name="hb_ot_layout_script_find_language ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-script-find-language"/>
+ <keyword type="function" name="hb_ot_layout_script_get_language_tags ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-script-get-language-tags"/>
+ <keyword type="function" name="hb_ot_layout_table_choose_script ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-choose-script"/>
+ <keyword type="function" name="hb_ot_layout_table_find_script ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-find-script"/>
+ <keyword type="function" name="hb_ot_layout_table_get_feature_tags ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-get-feature-tags"/>
+ <keyword type="function" name="hb_ot_layout_table_get_script_tags ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-get-script-tags"/>
+ <keyword type="function" name="hb_ot_layout_table_get_lookup_count ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-get-lookup-count"/>
+ <keyword type="function" name="hb_ot_shape_plan_collect_lookups ()" link="harfbuzz-hb-ot-layout.html#hb-ot-shape-plan-collect-lookups"/>
+ <keyword type="macro" name="HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-DEFAULT-LANGUAGE-INDEX:CAPS"/>
+ <keyword type="macro" name="HB_OT_LAYOUT_NO_FEATURE_INDEX" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-NO-FEATURE-INDEX:CAPS"/>
+ <keyword type="macro" name="HB_OT_LAYOUT_NO_SCRIPT_INDEX" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-NO-SCRIPT-INDEX:CAPS"/>
+ <keyword type="macro" name="HB_OT_TAG_GDEF" link="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GDEF:CAPS"/>
+ <keyword type="macro" name="HB_OT_TAG_GPOS" link="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS"/>
+ <keyword type="macro" name="HB_OT_TAG_GSUB" link="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS"/>
+ <keyword type="enum" name="enum hb_ot_layout_glyph_class_t" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-glyph-class-t"/>
+ <keyword type="function" name="hb_ot_tag_from_language ()" link="harfbuzz-hb-ot-tag.html#hb-ot-tag-from-language"/>
+ <keyword type="function" name="hb_ot_tag_to_language ()" link="harfbuzz-hb-ot-tag.html#hb-ot-tag-to-language"/>
+ <keyword type="function" name="hb_ot_tag_to_script ()" link="harfbuzz-hb-ot-tag.html#hb-ot-tag-to-script"/>
+ <keyword type="function" name="hb_ot_tags_from_script ()" link="harfbuzz-hb-ot-tag.html#hb-ot-tags-from-script"/>
+ <keyword type="macro" name="HB_OT_TAG_DEFAULT_LANGUAGE" link="harfbuzz-hb-ot-tag.html#HB-OT-TAG-DEFAULT-LANGUAGE:CAPS"/>
+ <keyword type="macro" name="HB_OT_TAG_DEFAULT_SCRIPT" link="harfbuzz-hb-ot-tag.html#HB-OT-TAG-DEFAULT-SCRIPT:CAPS"/>
+ <keyword type="function" name="hb_shape_plan_create ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-create"/>
+ <keyword type="function" name="hb_shape_plan_create_cached ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-create-cached" since="1.0"/>
+ <keyword type="function" name="hb_shape_plan_destroy ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-destroy" since="1.0"/>
+ <keyword type="function" name="hb_shape_plan_execute ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-execute" since="1.0"/>
+ <keyword type="function" name="hb_shape_plan_get_empty ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-get-empty" since="1.0"/>
+ <keyword type="function" name="hb_shape_plan_get_shaper ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-get-shaper" since="1.0"/>
+ <keyword type="function" name="hb_shape_plan_get_user_data ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-get-user-data" since="1.0"/>
+ <keyword type="function" name="hb_shape_plan_reference ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-reference" since="1.0"/>
+ <keyword type="function" name="hb_shape_plan_set_user_data ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-set-user-data" since="1.0"/>
+ <keyword type="typedef" name="hb_shape_plan_t" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"/>
+ <keyword type="function" name="hb_glib_get_unicode_funcs ()" link="harfbuzz-hb-glib.html#hb-glib-get-unicode-funcs"/>
+ <keyword type="function" name="hb_glib_script_from_script ()" link="harfbuzz-hb-glib.html#hb-glib-script-from-script"/>
+ <keyword type="function" name="hb_glib_script_to_script ()" link="harfbuzz-hb-glib.html#hb-glib-script-to-script"/>
+ <keyword type="function" name="hb_icu_get_unicode_funcs ()" link="harfbuzz-hb-icu.html#hb-icu-get-unicode-funcs"/>
+ <keyword type="function" name="hb_icu_script_from_script ()" link="harfbuzz-hb-icu.html#hb-icu-script-from-script"/>
+ <keyword type="function" name="hb_icu_script_to_script ()" link="harfbuzz-hb-icu.html#hb-icu-script-to-script"/>
+ <keyword type="function" name="hb_ft_face_create ()" link="harfbuzz-hb-ft.html#hb-ft-face-create" since="1.0"/>
+ <keyword type="function" name="hb_ft_face_create_cached ()" link="harfbuzz-hb-ft.html#hb-ft-face-create-cached" since="1.0"/>
+ <keyword type="function" name="hb_ft_font_create ()" link="harfbuzz-hb-ft.html#hb-ft-font-create" since="1.0"/>
+ <keyword type="function" name="hb_ft_font_get_face ()" link="harfbuzz-hb-ft.html#hb-ft-font-get-face"/>
+ <keyword type="function" name="hb_ft_font_set_funcs ()" link="harfbuzz-hb-ft.html#hb-ft-font-set-funcs"/>
+ <keyword type="function" name="hb_graphite2_face_get_gr_face ()" link="harfbuzz-hb-graphite2.html#hb-graphite2-face-get-gr-face"/>
+ <keyword type="function" name="hb_graphite2_font_get_gr_font ()" link="harfbuzz-hb-graphite2.html#hb-graphite2-font-get-gr-font"/>
+ <keyword type="macro" name="HB_GRAPHITE2_TAG_SILF" link="harfbuzz-hb-graphite2.html#HB-GRAPHITE2-TAG-SILF:CAPS"/>
+ <keyword type="function" name="hb_uniscribe_font_get_hfont ()" link="harfbuzz-hb-uniscribe.html#hb-uniscribe-font-get-hfont"/>
+ <keyword type="function" name="hb_uniscribe_font_get_logfontw ()" link="harfbuzz-hb-uniscribe.html#hb-uniscribe-font-get-logfontw"/>
+ <keyword type="function" name="hb_coretext_face_create ()" link="harfbuzz-hb-coretext.html#hb-coretext-face-create"/>
+ <keyword type="function" name="hb_coretext_face_get_cg_font ()" link="harfbuzz-hb-coretext.html#hb-coretext-face-get-cg-font"/>
+ <keyword type="function" name="hb_coretext_font_get_ct_font ()" link="harfbuzz-hb-coretext.html#hb-coretext-font-get-ct-font"/>
+ <keyword type="macro" name="HB_CORETEXT_TAG_MORT" link="harfbuzz-hb-coretext.html#HB-CORETEXT-TAG-MORT:CAPS"/>
+ <keyword type="macro" name="HB_CORETEXT_TAG_MORX" link="harfbuzz-hb-coretext.html#HB-CORETEXT-TAG-MORX:CAPS"/>
+ </functions>
+</book>
diff --git a/docs/html/home.png b/docs/reference/html/home.png
index 9346b33..9346b33 100644
--- a/docs/html/home.png
+++ b/docs/reference/html/home.png
Binary files differ
diff --git a/docs/reference/html/index.html b/docs/reference/html/index.html
new file mode 100644
index 0000000..772db71
--- /dev/null
+++ b/docs/reference/html/index.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>HarfBuzz Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="next" href="ch01.html" title="[Insert title here]">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="book">
+<div class="titlepage">
+<div>
+<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">HarfBuzz Reference Manual</p></th></tr></table></div>
+<div><p class="releaseinfo">
+ for HarfBuzz 0.9.40
+.
+
+ </p></div>
+</div>
+<hr>
+</div>
+<div class="toc"><dl>
+<dt><span class="chapter"><a href="ch01.html">[Insert title here]</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb.html">hb</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-common.html">hb-common</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-unicode.html">hb-unicode</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-buffer.html">hb-buffer</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-blob.html">hb-blob</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-face.html">hb-face</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-font.html">hb-font</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-shape.html">hb-shape</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-version.html">hb-version</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-deprecated.html">hb-deprecated</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-set.html">hb-set</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot.html">hb-ot</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-layout.html">hb-ot-layout</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-tag.html">hb-ot-tag</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-shape-plan.html">hb-shape-plan</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-glib.html">hb-glib</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-icu.html">hb-icu</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-ft.html">hb-ft</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-graphite2.html">hb-graphite2</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-uniscribe.html">hb-uniscribe</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-coretext.html">hb-coretext</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-gobject.html">hb-gobject</a></span><span class="refpurpose"></span>
+</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="object-tree.html">Object Hierarchy</a></span></dt>
+<dt><span class="index"><a href="api-index-full.html">API Index</a></span></dt>
+<dt><span class="index"><a href="deprecated-api-index.html">Index of deprecated API</a></span></dt>
+<dt><span class="glossary"><a href="annotation-glossary.html">Annotation Glossary</a></span></dt>
+</dl></div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/reference/html/index.sgml b/docs/reference/html/index.sgml
new file mode 100644
index 0000000..7b469b5
--- /dev/null
+++ b/docs/reference/html/index.sgml
@@ -0,0 +1,496 @@
+<ANCHOR id="harfbuzz-hb" href="harfbuzz/harfbuzz-hb.html">
+<ANCHOR id="harfbuzz-hb.description" href="harfbuzz/harfbuzz-hb.html#harfbuzz-hb.description">
+<ANCHOR id="harfbuzz-hb.functions_details" href="harfbuzz/harfbuzz-hb.html#harfbuzz-hb.functions_details">
+<ANCHOR id="harfbuzz-hb.other_details" href="harfbuzz/harfbuzz-hb.html#harfbuzz-hb.other_details">
+<ANCHOR id="harfbuzz-hb-common" href="harfbuzz/harfbuzz-hb-common.html">
+<ANCHOR id="harfbuzz-hb-common.functions" href="harfbuzz/harfbuzz-hb-common.html#harfbuzz-hb-common.functions">
+<ANCHOR id="hb-language-t" href="harfbuzz/harfbuzz-hb-common.html#hb-language-t">
+<ANCHOR id="hb-user-data-key-t" href="harfbuzz/harfbuzz-hb-common.html#hb-user-data-key-t">
+<ANCHOR id="harfbuzz-hb-common.other" href="harfbuzz/harfbuzz-hb-common.html#harfbuzz-hb-common.other">
+<ANCHOR id="harfbuzz-hb-common.object-hierarchy" href="harfbuzz/harfbuzz-hb-common.html#harfbuzz-hb-common.object-hierarchy">
+<ANCHOR id="harfbuzz-hb-common.description" href="harfbuzz/harfbuzz-hb-common.html#harfbuzz-hb-common.description">
+<ANCHOR id="harfbuzz-hb-common.functions_details" href="harfbuzz/harfbuzz-hb-common.html#harfbuzz-hb-common.functions_details">
+<ANCHOR id="HB-DIRECTION-REVERSE:CAPS" href="harfbuzz/harfbuzz-hb-common.html#HB-DIRECTION-REVERSE:CAPS">
+<ANCHOR id="HB-LANGUAGE-INVALID:CAPS" href="harfbuzz/harfbuzz-hb-common.html#HB-LANGUAGE-INVALID:CAPS">
+<ANCHOR id="HB-TAG:CAPS" href="harfbuzz/harfbuzz-hb-common.html#HB-TAG:CAPS">
+<ANCHOR id="HB-UNTAG:CAPS" href="harfbuzz/harfbuzz-hb-common.html#HB-UNTAG:CAPS">
+<ANCHOR id="hb-destroy-func-t" href="harfbuzz/harfbuzz-hb-common.html#hb-destroy-func-t">
+<ANCHOR id="hb-direction-from-string" href="harfbuzz/harfbuzz-hb-common.html#hb-direction-from-string">
+<ANCHOR id="hb-direction-to-string" href="harfbuzz/harfbuzz-hb-common.html#hb-direction-to-string">
+<ANCHOR id="hb-language-from-string" href="harfbuzz/harfbuzz-hb-common.html#hb-language-from-string">
+<ANCHOR id="hb-language-get-default" href="harfbuzz/harfbuzz-hb-common.html#hb-language-get-default">
+<ANCHOR id="hb-language-to-string" href="harfbuzz/harfbuzz-hb-common.html#hb-language-to-string">
+<ANCHOR id="hb-script-from-iso15924-tag" href="harfbuzz/harfbuzz-hb-common.html#hb-script-from-iso15924-tag">
+<ANCHOR id="hb-script-from-string" href="harfbuzz/harfbuzz-hb-common.html#hb-script-from-string">
+<ANCHOR id="hb-script-get-horizontal-direction" href="harfbuzz/harfbuzz-hb-common.html#hb-script-get-horizontal-direction">
+<ANCHOR id="hb-script-to-iso15924-tag" href="harfbuzz/harfbuzz-hb-common.html#hb-script-to-iso15924-tag">
+<ANCHOR id="hb-tag-from-string" href="harfbuzz/harfbuzz-hb-common.html#hb-tag-from-string">
+<ANCHOR id="hb-tag-to-string" href="harfbuzz/harfbuzz-hb-common.html#hb-tag-to-string">
+<ANCHOR id="HB-DIRECTION-IS-BACKWARD:CAPS" href="harfbuzz/harfbuzz-hb-common.html#HB-DIRECTION-IS-BACKWARD:CAPS">
+<ANCHOR id="HB-DIRECTION-IS-FORWARD:CAPS" href="harfbuzz/harfbuzz-hb-common.html#HB-DIRECTION-IS-FORWARD:CAPS">
+<ANCHOR id="HB-DIRECTION-IS-HORIZONTAL:CAPS" href="harfbuzz/harfbuzz-hb-common.html#HB-DIRECTION-IS-HORIZONTAL:CAPS">
+<ANCHOR id="HB-DIRECTION-IS-VALID:CAPS" href="harfbuzz/harfbuzz-hb-common.html#HB-DIRECTION-IS-VALID:CAPS">
+<ANCHOR id="HB-DIRECTION-IS-VERTICAL:CAPS" href="harfbuzz/harfbuzz-hb-common.html#HB-DIRECTION-IS-VERTICAL:CAPS">
+<ANCHOR id="harfbuzz-hb-common.other_details" href="harfbuzz/harfbuzz-hb-common.html#harfbuzz-hb-common.other_details">
+<ANCHOR id="HB-TAG-NONE:CAPS" href="harfbuzz/harfbuzz-hb-common.html#HB-TAG-NONE:CAPS">
+<ANCHOR id="HB-TAG-MAX:CAPS" href="harfbuzz/harfbuzz-hb-common.html#HB-TAG-MAX:CAPS">
+<ANCHOR id="hb-bool-t" href="harfbuzz/harfbuzz-hb-common.html#hb-bool-t">
+<ANCHOR id="hb-codepoint-t" href="harfbuzz/harfbuzz-hb-common.html#hb-codepoint-t">
+<ANCHOR id="hb-direction-t" href="harfbuzz/harfbuzz-hb-common.html#hb-direction-t">
+<ANCHOR id="hb-language-t" href="harfbuzz/harfbuzz-hb-common.html#hb-language-t">
+<ANCHOR id="hb-mask-t" href="harfbuzz/harfbuzz-hb-common.html#hb-mask-t">
+<ANCHOR id="hb-position-t" href="harfbuzz/harfbuzz-hb-common.html#hb-position-t">
+<ANCHOR id="hb-script-t" href="harfbuzz/harfbuzz-hb-common.html#hb-script-t">
+<ANCHOR id="hb-tag-t" href="harfbuzz/harfbuzz-hb-common.html#hb-tag-t">
+<ANCHOR id="hb-user-data-key-t-struct" href="harfbuzz/harfbuzz-hb-common.html#hb-user-data-key-t-struct">
+<ANCHOR id="hb-var-int-t" href="harfbuzz/harfbuzz-hb-common.html#hb-var-int-t">
+<ANCHOR id="harfbuzz-hb-unicode" href="harfbuzz/harfbuzz-hb-unicode.html">
+<ANCHOR id="harfbuzz-hb-unicode.functions" href="harfbuzz/harfbuzz-hb-unicode.html#harfbuzz-hb-unicode.functions">
+<ANCHOR id="hb-unicode-funcs-t" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-t">
+<ANCHOR id="harfbuzz-hb-unicode.other" href="harfbuzz/harfbuzz-hb-unicode.html#harfbuzz-hb-unicode.other">
+<ANCHOR id="harfbuzz-hb-unicode.object-hierarchy" href="harfbuzz/harfbuzz-hb-unicode.html#harfbuzz-hb-unicode.object-hierarchy">
+<ANCHOR id="harfbuzz-hb-unicode.description" href="harfbuzz/harfbuzz-hb-unicode.html#harfbuzz-hb-unicode.description">
+<ANCHOR id="harfbuzz-hb-unicode.functions_details" href="harfbuzz/harfbuzz-hb-unicode.html#harfbuzz-hb-unicode.functions_details">
+<ANCHOR id="HB-UNICODE-MAX-DECOMPOSITION-LEN:CAPS" href="harfbuzz/harfbuzz-hb-unicode.html#HB-UNICODE-MAX-DECOMPOSITION-LEN:CAPS">
+<ANCHOR id="hb-unicode-combining-class" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-combining-class">
+<ANCHOR id="hb-unicode-combining-class-func-t" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-combining-class-func-t">
+<ANCHOR id="hb-unicode-compose" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-compose">
+<ANCHOR id="hb-unicode-compose-func-t" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-compose-func-t">
+<ANCHOR id="hb-unicode-decompose" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-decompose">
+<ANCHOR id="hb-unicode-decompose-compatibility" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-decompose-compatibility">
+<ANCHOR id="hb-unicode-decompose-func-t" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-decompose-func-t">
+<ANCHOR id="hb-unicode-eastasian-width" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-eastasian-width">
+<ANCHOR id="hb-unicode-funcs-create" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-create">
+<ANCHOR id="hb-unicode-funcs-destroy" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-destroy">
+<ANCHOR id="hb-unicode-funcs-get-default" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-get-default">
+<ANCHOR id="hb-unicode-funcs-get-empty" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-get-empty">
+<ANCHOR id="hb-unicode-funcs-get-parent" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-get-parent">
+<ANCHOR id="hb-unicode-funcs-get-user-data" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-get-user-data">
+<ANCHOR id="hb-unicode-funcs-is-immutable" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-is-immutable">
+<ANCHOR id="hb-unicode-funcs-make-immutable" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-make-immutable">
+<ANCHOR id="hb-unicode-funcs-reference" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-reference">
+<ANCHOR id="hb-unicode-funcs-set-combining-class-func" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-set-combining-class-func">
+<ANCHOR id="hb-unicode-funcs-set-compose-func" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-set-compose-func">
+<ANCHOR id="hb-unicode-funcs-set-decompose-compatibility-func" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-set-decompose-compatibility-func">
+<ANCHOR id="hb-unicode-funcs-set-decompose-func" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-set-decompose-func">
+<ANCHOR id="hb-unicode-funcs-set-eastasian-width-func" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-set-eastasian-width-func">
+<ANCHOR id="hb-unicode-funcs-set-general-category-func" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-set-general-category-func">
+<ANCHOR id="hb-unicode-funcs-set-mirroring-func" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-set-mirroring-func">
+<ANCHOR id="hb-unicode-funcs-set-script-func" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-set-script-func">
+<ANCHOR id="hb-unicode-funcs-set-user-data" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-set-user-data">
+<ANCHOR id="hb-unicode-general-category" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-general-category">
+<ANCHOR id="hb-unicode-general-category-func-t" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-general-category-func-t">
+<ANCHOR id="hb-unicode-mirroring" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-mirroring">
+<ANCHOR id="hb-unicode-mirroring-func-t" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-mirroring-func-t">
+<ANCHOR id="hb-unicode-script" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-script">
+<ANCHOR id="hb-unicode-script-func-t" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-script-func-t">
+<ANCHOR id="harfbuzz-hb-unicode.other_details" href="harfbuzz/harfbuzz-hb-unicode.html#harfbuzz-hb-unicode.other_details">
+<ANCHOR id="hb-unicode-combining-class-t" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-combining-class-t">
+<ANCHOR id="hb-unicode-funcs-t" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-funcs-t">
+<ANCHOR id="hb-unicode-general-category-t" href="harfbuzz/harfbuzz-hb-unicode.html#hb-unicode-general-category-t">
+<ANCHOR id="harfbuzz-hb-buffer" href="harfbuzz/harfbuzz-hb-buffer.html">
+<ANCHOR id="harfbuzz-hb-buffer.functions" href="harfbuzz/harfbuzz-hb-buffer.html#harfbuzz-hb-buffer.functions">
+<ANCHOR id="hb-buffer-t" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-t">
+<ANCHOR id="hb-glyph-info-t" href="harfbuzz/harfbuzz-hb-buffer.html#hb-glyph-info-t">
+<ANCHOR id="hb-glyph-position-t" href="harfbuzz/harfbuzz-hb-buffer.html#hb-glyph-position-t">
+<ANCHOR id="hb-segment-properties-t" href="harfbuzz/harfbuzz-hb-buffer.html#hb-segment-properties-t">
+<ANCHOR id="harfbuzz-hb-buffer.other" href="harfbuzz/harfbuzz-hb-buffer.html#harfbuzz-hb-buffer.other">
+<ANCHOR id="harfbuzz-hb-buffer.object-hierarchy" href="harfbuzz/harfbuzz-hb-buffer.html#harfbuzz-hb-buffer.object-hierarchy">
+<ANCHOR id="harfbuzz-hb-buffer.description" href="harfbuzz/harfbuzz-hb-buffer.html#harfbuzz-hb-buffer.description">
+<ANCHOR id="harfbuzz-hb-buffer.functions_details" href="harfbuzz/harfbuzz-hb-buffer.html#harfbuzz-hb-buffer.functions_details">
+<ANCHOR id="hb-buffer-add" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-add">
+<ANCHOR id="hb-buffer-add-utf16" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-add-utf16">
+<ANCHOR id="hb-buffer-add-utf32" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-add-utf32">
+<ANCHOR id="hb-buffer-add-utf8" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-add-utf8">
+<ANCHOR id="hb-buffer-add-codepoints" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-add-codepoints">
+<ANCHOR id="hb-buffer-allocation-successful" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-allocation-successful">
+<ANCHOR id="hb-buffer-clear-contents" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-clear-contents">
+<ANCHOR id="hb-buffer-create" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-create">
+<ANCHOR id="hb-buffer-deserialize-glyphs" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-deserialize-glyphs">
+<ANCHOR id="hb-buffer-destroy" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-destroy">
+<ANCHOR id="hb-buffer-get-content-type" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-get-content-type">
+<ANCHOR id="hb-buffer-get-direction" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-get-direction">
+<ANCHOR id="hb-buffer-get-empty" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-get-empty">
+<ANCHOR id="hb-buffer-get-flags" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-get-flags">
+<ANCHOR id="hb-buffer-get-glyph-infos" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-get-glyph-infos">
+<ANCHOR id="hb-buffer-get-glyph-positions" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-get-glyph-positions">
+<ANCHOR id="hb-buffer-get-language" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-get-language">
+<ANCHOR id="hb-buffer-get-length" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-get-length">
+<ANCHOR id="hb-buffer-get-replacement-codepoint" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-get-replacement-codepoint">
+<ANCHOR id="hb-buffer-get-script" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-get-script">
+<ANCHOR id="hb-buffer-get-segment-properties" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-get-segment-properties">
+<ANCHOR id="hb-buffer-get-unicode-funcs" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-get-unicode-funcs">
+<ANCHOR id="hb-buffer-get-user-data" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-get-user-data">
+<ANCHOR id="hb-buffer-guess-segment-properties" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-guess-segment-properties">
+<ANCHOR id="hb-buffer-normalize-glyphs" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-normalize-glyphs">
+<ANCHOR id="hb-buffer-pre-allocate" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-pre-allocate">
+<ANCHOR id="hb-buffer-reference" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-reference">
+<ANCHOR id="hb-buffer-reset" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-reset">
+<ANCHOR id="hb-buffer-reverse" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-reverse">
+<ANCHOR id="hb-buffer-reverse-clusters" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-reverse-clusters">
+<ANCHOR id="hb-buffer-serialize-format-from-string" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-serialize-format-from-string">
+<ANCHOR id="hb-buffer-serialize-format-to-string" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-serialize-format-to-string">
+<ANCHOR id="hb-buffer-serialize-glyphs" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-serialize-glyphs">
+<ANCHOR id="hb-buffer-serialize-list-formats" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-serialize-list-formats">
+<ANCHOR id="hb-buffer-set-content-type" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-set-content-type">
+<ANCHOR id="hb-buffer-set-direction" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-set-direction">
+<ANCHOR id="hb-buffer-set-flags" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-set-flags">
+<ANCHOR id="hb-buffer-set-language" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-set-language">
+<ANCHOR id="hb-buffer-set-length" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-set-length">
+<ANCHOR id="hb-buffer-set-replacement-codepoint" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-set-replacement-codepoint">
+<ANCHOR id="hb-buffer-set-script" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-set-script">
+<ANCHOR id="hb-buffer-set-segment-properties" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-set-segment-properties">
+<ANCHOR id="hb-buffer-set-unicode-funcs" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-set-unicode-funcs">
+<ANCHOR id="hb-buffer-set-user-data" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-set-user-data">
+<ANCHOR id="hb-segment-properties-equal" href="harfbuzz/harfbuzz-hb-buffer.html#hb-segment-properties-equal">
+<ANCHOR id="hb-segment-properties-hash" href="harfbuzz/harfbuzz-hb-buffer.html#hb-segment-properties-hash">
+<ANCHOR id="harfbuzz-hb-buffer.other_details" href="harfbuzz/harfbuzz-hb-buffer.html#harfbuzz-hb-buffer.other_details">
+<ANCHOR id="HB-SEGMENT-PROPERTIES-DEFAULT:CAPS" href="harfbuzz/harfbuzz-hb-buffer.html#HB-SEGMENT-PROPERTIES-DEFAULT:CAPS">
+<ANCHOR id="hb-buffer-content-type-t" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-content-type-t">
+<ANCHOR id="hb-buffer-flags-t" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-flags-t">
+<ANCHOR id="hb-buffer-serialize-flags-t" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t">
+<ANCHOR id="hb-buffer-serialize-format-t" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t">
+<ANCHOR id="hb-buffer-t" href="harfbuzz/harfbuzz-hb-buffer.html#hb-buffer-t">
+<ANCHOR id="hb-glyph-info-t-struct" href="harfbuzz/harfbuzz-hb-buffer.html#hb-glyph-info-t-struct">
+<ANCHOR id="hb-glyph-position-t-struct" href="harfbuzz/harfbuzz-hb-buffer.html#hb-glyph-position-t-struct">
+<ANCHOR id="hb-segment-properties-t-struct" href="harfbuzz/harfbuzz-hb-buffer.html#hb-segment-properties-t-struct">
+<ANCHOR id="harfbuzz-hb-blob" href="harfbuzz/harfbuzz-hb-blob.html">
+<ANCHOR id="harfbuzz-hb-blob.functions" href="harfbuzz/harfbuzz-hb-blob.html#harfbuzz-hb-blob.functions">
+<ANCHOR id="hb-blob-t" href="harfbuzz/harfbuzz-hb-blob.html#hb-blob-t">
+<ANCHOR id="harfbuzz-hb-blob.other" href="harfbuzz/harfbuzz-hb-blob.html#harfbuzz-hb-blob.other">
+<ANCHOR id="harfbuzz-hb-blob.object-hierarchy" href="harfbuzz/harfbuzz-hb-blob.html#harfbuzz-hb-blob.object-hierarchy">
+<ANCHOR id="harfbuzz-hb-blob.description" href="harfbuzz/harfbuzz-hb-blob.html#harfbuzz-hb-blob.description">
+<ANCHOR id="harfbuzz-hb-blob.functions_details" href="harfbuzz/harfbuzz-hb-blob.html#harfbuzz-hb-blob.functions_details">
+<ANCHOR id="hb-blob-create" href="harfbuzz/harfbuzz-hb-blob.html#hb-blob-create">
+<ANCHOR id="hb-blob-create-sub-blob" href="harfbuzz/harfbuzz-hb-blob.html#hb-blob-create-sub-blob">
+<ANCHOR id="hb-blob-destroy" href="harfbuzz/harfbuzz-hb-blob.html#hb-blob-destroy">
+<ANCHOR id="hb-blob-get-data" href="harfbuzz/harfbuzz-hb-blob.html#hb-blob-get-data">
+<ANCHOR id="hb-blob-get-data-writable" href="harfbuzz/harfbuzz-hb-blob.html#hb-blob-get-data-writable">
+<ANCHOR id="hb-blob-get-empty" href="harfbuzz/harfbuzz-hb-blob.html#hb-blob-get-empty">
+<ANCHOR id="hb-blob-get-length" href="harfbuzz/harfbuzz-hb-blob.html#hb-blob-get-length">
+<ANCHOR id="hb-blob-get-user-data" href="harfbuzz/harfbuzz-hb-blob.html#hb-blob-get-user-data">
+<ANCHOR id="hb-blob-is-immutable" href="harfbuzz/harfbuzz-hb-blob.html#hb-blob-is-immutable">
+<ANCHOR id="hb-blob-make-immutable" href="harfbuzz/harfbuzz-hb-blob.html#hb-blob-make-immutable">
+<ANCHOR id="hb-blob-reference" href="harfbuzz/harfbuzz-hb-blob.html#hb-blob-reference">
+<ANCHOR id="hb-blob-set-user-data" href="harfbuzz/harfbuzz-hb-blob.html#hb-blob-set-user-data">
+<ANCHOR id="harfbuzz-hb-blob.other_details" href="harfbuzz/harfbuzz-hb-blob.html#harfbuzz-hb-blob.other_details">
+<ANCHOR id="hb-blob-t" href="harfbuzz/harfbuzz-hb-blob.html#hb-blob-t">
+<ANCHOR id="hb-memory-mode-t" href="harfbuzz/harfbuzz-hb-blob.html#hb-memory-mode-t">
+<ANCHOR id="harfbuzz-hb-face" href="harfbuzz/harfbuzz-hb-face.html">
+<ANCHOR id="harfbuzz-hb-face.functions" href="harfbuzz/harfbuzz-hb-face.html#harfbuzz-hb-face.functions">
+<ANCHOR id="hb-face-t" href="harfbuzz/harfbuzz-hb-face.html#hb-face-t">
+<ANCHOR id="harfbuzz-hb-face.other" href="harfbuzz/harfbuzz-hb-face.html#harfbuzz-hb-face.other">
+<ANCHOR id="harfbuzz-hb-face.object-hierarchy" href="harfbuzz/harfbuzz-hb-face.html#harfbuzz-hb-face.object-hierarchy">
+<ANCHOR id="harfbuzz-hb-face.description" href="harfbuzz/harfbuzz-hb-face.html#harfbuzz-hb-face.description">
+<ANCHOR id="harfbuzz-hb-face.functions_details" href="harfbuzz/harfbuzz-hb-face.html#harfbuzz-hb-face.functions_details">
+<ANCHOR id="hb-face-create" href="harfbuzz/harfbuzz-hb-face.html#hb-face-create">
+<ANCHOR id="hb-face-create-for-tables" href="harfbuzz/harfbuzz-hb-face.html#hb-face-create-for-tables">
+<ANCHOR id="hb-face-destroy" href="harfbuzz/harfbuzz-hb-face.html#hb-face-destroy">
+<ANCHOR id="hb-face-get-empty" href="harfbuzz/harfbuzz-hb-face.html#hb-face-get-empty">
+<ANCHOR id="hb-face-get-glyph-count" href="harfbuzz/harfbuzz-hb-face.html#hb-face-get-glyph-count">
+<ANCHOR id="hb-face-get-index" href="harfbuzz/harfbuzz-hb-face.html#hb-face-get-index">
+<ANCHOR id="hb-face-get-upem" href="harfbuzz/harfbuzz-hb-face.html#hb-face-get-upem">
+<ANCHOR id="hb-face-get-user-data" href="harfbuzz/harfbuzz-hb-face.html#hb-face-get-user-data">
+<ANCHOR id="hb-face-is-immutable" href="harfbuzz/harfbuzz-hb-face.html#hb-face-is-immutable">
+<ANCHOR id="hb-face-make-immutable" href="harfbuzz/harfbuzz-hb-face.html#hb-face-make-immutable">
+<ANCHOR id="hb-face-reference" href="harfbuzz/harfbuzz-hb-face.html#hb-face-reference">
+<ANCHOR id="hb-face-reference-blob" href="harfbuzz/harfbuzz-hb-face.html#hb-face-reference-blob">
+<ANCHOR id="hb-face-reference-table" href="harfbuzz/harfbuzz-hb-face.html#hb-face-reference-table">
+<ANCHOR id="hb-face-set-glyph-count" href="harfbuzz/harfbuzz-hb-face.html#hb-face-set-glyph-count">
+<ANCHOR id="hb-face-set-index" href="harfbuzz/harfbuzz-hb-face.html#hb-face-set-index">
+<ANCHOR id="hb-face-set-upem" href="harfbuzz/harfbuzz-hb-face.html#hb-face-set-upem">
+<ANCHOR id="hb-face-set-user-data" href="harfbuzz/harfbuzz-hb-face.html#hb-face-set-user-data">
+<ANCHOR id="harfbuzz-hb-face.other_details" href="harfbuzz/harfbuzz-hb-face.html#harfbuzz-hb-face.other_details">
+<ANCHOR id="hb-face-t" href="harfbuzz/harfbuzz-hb-face.html#hb-face-t">
+<ANCHOR id="harfbuzz-hb-font" href="harfbuzz/harfbuzz-hb-font.html">
+<ANCHOR id="harfbuzz-hb-font.functions" href="harfbuzz/harfbuzz-hb-font.html#harfbuzz-hb-font.functions">
+<ANCHOR id="hb-font-funcs-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-t">
+<ANCHOR id="hb-font-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-t">
+<ANCHOR id="harfbuzz-hb-font.other" href="harfbuzz/harfbuzz-hb-font.html#harfbuzz-hb-font.other">
+<ANCHOR id="harfbuzz-hb-font.object-hierarchy" href="harfbuzz/harfbuzz-hb-font.html#harfbuzz-hb-font.object-hierarchy">
+<ANCHOR id="harfbuzz-hb-font.description" href="harfbuzz/harfbuzz-hb-font.html#harfbuzz-hb-font.description">
+<ANCHOR id="harfbuzz-hb-font.functions_details" href="harfbuzz/harfbuzz-hb-font.html#harfbuzz-hb-font.functions_details">
+<ANCHOR id="hb-font-add-glyph-origin-for-direction" href="harfbuzz/harfbuzz-hb-font.html#hb-font-add-glyph-origin-for-direction">
+<ANCHOR id="hb-font-create" href="harfbuzz/harfbuzz-hb-font.html#hb-font-create">
+<ANCHOR id="hb-font-create-sub-font" href="harfbuzz/harfbuzz-hb-font.html#hb-font-create-sub-font">
+<ANCHOR id="hb-font-destroy" href="harfbuzz/harfbuzz-hb-font.html#hb-font-destroy">
+<ANCHOR id="hb-font-funcs-create" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-create">
+<ANCHOR id="hb-font-funcs-destroy" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-destroy">
+<ANCHOR id="hb-font-funcs-get-empty" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-get-empty">
+<ANCHOR id="hb-font-funcs-get-user-data" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-get-user-data">
+<ANCHOR id="hb-font-funcs-is-immutable" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-is-immutable">
+<ANCHOR id="hb-font-funcs-make-immutable" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-make-immutable">
+<ANCHOR id="hb-font-funcs-reference" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-reference">
+<ANCHOR id="hb-font-funcs-set-glyph-contour-point-func" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-set-glyph-contour-point-func">
+<ANCHOR id="hb-font-funcs-set-glyph-extents-func" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-set-glyph-extents-func">
+<ANCHOR id="hb-font-funcs-set-glyph-from-name-func" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-set-glyph-from-name-func">
+<ANCHOR id="hb-font-funcs-set-glyph-func" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-set-glyph-func">
+<ANCHOR id="hb-font-funcs-set-glyph-h-advance-func" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-advance-func">
+<ANCHOR id="hb-font-funcs-set-glyph-h-kerning-func" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-kerning-func">
+<ANCHOR id="hb-font-funcs-set-glyph-h-origin-func" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-origin-func">
+<ANCHOR id="hb-font-funcs-set-glyph-name-func" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-set-glyph-name-func">
+<ANCHOR id="hb-font-funcs-set-glyph-v-advance-func" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-advance-func">
+<ANCHOR id="hb-font-funcs-set-glyph-v-kerning-func" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-kerning-func">
+<ANCHOR id="hb-font-funcs-set-glyph-v-origin-func" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-origin-func">
+<ANCHOR id="hb-font-funcs-set-user-data" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-set-user-data">
+<ANCHOR id="hb-font-get-empty" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-empty">
+<ANCHOR id="hb-font-get-face" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-face">
+<ANCHOR id="hb-font-get-glyph" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph">
+<ANCHOR id="hb-font-get-glyph-advance-for-direction" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-advance-for-direction">
+<ANCHOR id="hb-font-get-glyph-advance-func-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-advance-func-t">
+<ANCHOR id="hb-font-get-glyph-contour-point" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-contour-point">
+<ANCHOR id="hb-font-get-glyph-contour-point-for-origin" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-contour-point-for-origin">
+<ANCHOR id="hb-font-get-glyph-contour-point-func-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-contour-point-func-t">
+<ANCHOR id="hb-font-get-glyph-extents" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-extents">
+<ANCHOR id="hb-font-get-glyph-extents-for-origin" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-extents-for-origin">
+<ANCHOR id="hb-font-get-glyph-extents-func-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-extents-func-t">
+<ANCHOR id="hb-font-get-glyph-from-name" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-from-name">
+<ANCHOR id="hb-font-get-glyph-from-name-func-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-from-name-func-t">
+<ANCHOR id="hb-font-get-glyph-func-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-func-t">
+<ANCHOR id="hb-font-get-glyph-h-advance" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-h-advance">
+<ANCHOR id="hb-font-get-glyph-h-kerning" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-h-kerning">
+<ANCHOR id="hb-font-get-glyph-h-origin" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-h-origin">
+<ANCHOR id="hb-font-get-glyph-kerning-for-direction" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-kerning-for-direction">
+<ANCHOR id="hb-font-get-glyph-kerning-func-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-kerning-func-t">
+<ANCHOR id="hb-font-get-glyph-name" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-name">
+<ANCHOR id="hb-font-get-glyph-name-func-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-name-func-t">
+<ANCHOR id="hb-font-get-glyph-origin-for-direction" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-origin-for-direction">
+<ANCHOR id="hb-font-get-glyph-origin-func-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-origin-func-t">
+<ANCHOR id="hb-font-get-glyph-v-advance" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-v-advance">
+<ANCHOR id="hb-font-get-glyph-v-kerning" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-v-kerning">
+<ANCHOR id="hb-font-get-glyph-v-origin" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-v-origin">
+<ANCHOR id="hb-font-get-parent" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-parent">
+<ANCHOR id="hb-font-get-ppem" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-ppem">
+<ANCHOR id="hb-font-get-scale" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-scale">
+<ANCHOR id="hb-font-get-user-data" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-user-data">
+<ANCHOR id="hb-font-glyph-from-string" href="harfbuzz/harfbuzz-hb-font.html#hb-font-glyph-from-string">
+<ANCHOR id="hb-font-glyph-to-string" href="harfbuzz/harfbuzz-hb-font.html#hb-font-glyph-to-string">
+<ANCHOR id="hb-font-is-immutable" href="harfbuzz/harfbuzz-hb-font.html#hb-font-is-immutable">
+<ANCHOR id="hb-font-make-immutable" href="harfbuzz/harfbuzz-hb-font.html#hb-font-make-immutable">
+<ANCHOR id="hb-font-reference" href="harfbuzz/harfbuzz-hb-font.html#hb-font-reference">
+<ANCHOR id="hb-font-set-funcs" href="harfbuzz/harfbuzz-hb-font.html#hb-font-set-funcs">
+<ANCHOR id="hb-font-set-funcs-data" href="harfbuzz/harfbuzz-hb-font.html#hb-font-set-funcs-data">
+<ANCHOR id="hb-font-set-ppem" href="harfbuzz/harfbuzz-hb-font.html#hb-font-set-ppem">
+<ANCHOR id="hb-font-set-scale" href="harfbuzz/harfbuzz-hb-font.html#hb-font-set-scale">
+<ANCHOR id="hb-font-set-user-data" href="harfbuzz/harfbuzz-hb-font.html#hb-font-set-user-data">
+<ANCHOR id="hb-font-subtract-glyph-origin-for-direction" href="harfbuzz/harfbuzz-hb-font.html#hb-font-subtract-glyph-origin-for-direction">
+<ANCHOR id="hb-reference-table-func-t" href="harfbuzz/harfbuzz-hb-font.html#hb-reference-table-func-t">
+<ANCHOR id="harfbuzz-hb-font.other_details" href="harfbuzz/harfbuzz-hb-font.html#harfbuzz-hb-font.other_details">
+<ANCHOR id="hb-font-funcs-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-funcs-t">
+<ANCHOR id="hb-font-get-glyph-h-advance-func-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-h-advance-func-t">
+<ANCHOR id="hb-font-get-glyph-h-kerning-func-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-h-kerning-func-t">
+<ANCHOR id="hb-font-get-glyph-h-origin-func-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-h-origin-func-t">
+<ANCHOR id="hb-font-get-glyph-v-advance-func-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-v-advance-func-t">
+<ANCHOR id="hb-font-get-glyph-v-kerning-func-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-v-kerning-func-t">
+<ANCHOR id="hb-font-get-glyph-v-origin-func-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-get-glyph-v-origin-func-t">
+<ANCHOR id="hb-font-t" href="harfbuzz/harfbuzz-hb-font.html#hb-font-t">
+<ANCHOR id="harfbuzz-hb-shape" href="harfbuzz/harfbuzz-hb-shape.html">
+<ANCHOR id="harfbuzz-hb-shape.functions" href="harfbuzz/harfbuzz-hb-shape.html#harfbuzz-hb-shape.functions">
+<ANCHOR id="hb-feature-t" href="harfbuzz/harfbuzz-hb-shape.html#hb-feature-t">
+<ANCHOR id="harfbuzz-hb-shape.other" href="harfbuzz/harfbuzz-hb-shape.html#harfbuzz-hb-shape.other">
+<ANCHOR id="harfbuzz-hb-shape.object-hierarchy" href="harfbuzz/harfbuzz-hb-shape.html#harfbuzz-hb-shape.object-hierarchy">
+<ANCHOR id="harfbuzz-hb-shape.description" href="harfbuzz/harfbuzz-hb-shape.html#harfbuzz-hb-shape.description">
+<ANCHOR id="harfbuzz-hb-shape.functions_details" href="harfbuzz/harfbuzz-hb-shape.html#harfbuzz-hb-shape.functions_details">
+<ANCHOR id="hb-feature-from-string" href="harfbuzz/harfbuzz-hb-shape.html#hb-feature-from-string">
+<ANCHOR id="hb-feature-to-string" href="harfbuzz/harfbuzz-hb-shape.html#hb-feature-to-string">
+<ANCHOR id="hb-shape" href="harfbuzz/harfbuzz-hb-shape.html#hb-shape">
+<ANCHOR id="hb-shape-full" href="harfbuzz/harfbuzz-hb-shape.html#hb-shape-full">
+<ANCHOR id="hb-shape-list-shapers" href="harfbuzz/harfbuzz-hb-shape.html#hb-shape-list-shapers">
+<ANCHOR id="harfbuzz-hb-shape.other_details" href="harfbuzz/harfbuzz-hb-shape.html#harfbuzz-hb-shape.other_details">
+<ANCHOR id="hb-feature-t-struct" href="harfbuzz/harfbuzz-hb-shape.html#hb-feature-t-struct">
+<ANCHOR id="harfbuzz-hb-version" href="harfbuzz/harfbuzz-hb-version.html">
+<ANCHOR id="harfbuzz-hb-version.functions" href="harfbuzz/harfbuzz-hb-version.html#harfbuzz-hb-version.functions">
+<ANCHOR id="harfbuzz-hb-version.other" href="harfbuzz/harfbuzz-hb-version.html#harfbuzz-hb-version.other">
+<ANCHOR id="harfbuzz-hb-version.description" href="harfbuzz/harfbuzz-hb-version.html#harfbuzz-hb-version.description">
+<ANCHOR id="harfbuzz-hb-version.functions_details" href="harfbuzz/harfbuzz-hb-version.html#harfbuzz-hb-version.functions_details">
+<ANCHOR id="hb-version" href="harfbuzz/harfbuzz-hb-version.html#hb-version">
+<ANCHOR id="hb-version-string" href="harfbuzz/harfbuzz-hb-version.html#hb-version-string">
+<ANCHOR id="harfbuzz-hb-version.other_details" href="harfbuzz/harfbuzz-hb-version.html#harfbuzz-hb-version.other_details">
+<ANCHOR id="HB-VERSION-MAJOR:CAPS" href="harfbuzz/harfbuzz-hb-version.html#HB-VERSION-MAJOR:CAPS">
+<ANCHOR id="HB-VERSION-MICRO:CAPS" href="harfbuzz/harfbuzz-hb-version.html#HB-VERSION-MICRO:CAPS">
+<ANCHOR id="HB-VERSION-MINOR:CAPS" href="harfbuzz/harfbuzz-hb-version.html#HB-VERSION-MINOR:CAPS">
+<ANCHOR id="HB-VERSION-STRING:CAPS" href="harfbuzz/harfbuzz-hb-version.html#HB-VERSION-STRING:CAPS">
+<ANCHOR id="harfbuzz-hb-deprecated" href="harfbuzz/harfbuzz-hb-deprecated.html">
+<ANCHOR id="harfbuzz-hb-deprecated.other" href="harfbuzz/harfbuzz-hb-deprecated.html#harfbuzz-hb-deprecated.other">
+<ANCHOR id="harfbuzz-hb-deprecated.description" href="harfbuzz/harfbuzz-hb-deprecated.html#harfbuzz-hb-deprecated.description">
+<ANCHOR id="harfbuzz-hb-deprecated.functions_details" href="harfbuzz/harfbuzz-hb-deprecated.html#harfbuzz-hb-deprecated.functions_details">
+<ANCHOR id="harfbuzz-hb-deprecated.other_details" href="harfbuzz/harfbuzz-hb-deprecated.html#harfbuzz-hb-deprecated.other_details">
+<ANCHOR id="HB-BUFFER-FLAGS-DEFAULT:CAPS" href="harfbuzz/harfbuzz-hb-deprecated.html#HB-BUFFER-FLAGS-DEFAULT:CAPS">
+<ANCHOR id="HB-BUFFER-SERIALIZE-FLAGS-DEFAULT:CAPS" href="harfbuzz/harfbuzz-hb-deprecated.html#HB-BUFFER-SERIALIZE-FLAGS-DEFAULT:CAPS">
+<ANCHOR id="HB-SCRIPT-CANADIAN-ABORIGINAL:CAPS" href="harfbuzz/harfbuzz-hb-deprecated.html#HB-SCRIPT-CANADIAN-ABORIGINAL:CAPS">
+<ANCHOR id="harfbuzz-hb-set" href="harfbuzz/harfbuzz-hb-set.html">
+<ANCHOR id="harfbuzz-hb-set.functions" href="harfbuzz/harfbuzz-hb-set.html#harfbuzz-hb-set.functions">
+<ANCHOR id="hb-set-t" href="harfbuzz/harfbuzz-hb-set.html#hb-set-t">
+<ANCHOR id="harfbuzz-hb-set.other" href="harfbuzz/harfbuzz-hb-set.html#harfbuzz-hb-set.other">
+<ANCHOR id="harfbuzz-hb-set.object-hierarchy" href="harfbuzz/harfbuzz-hb-set.html#harfbuzz-hb-set.object-hierarchy">
+<ANCHOR id="harfbuzz-hb-set.description" href="harfbuzz/harfbuzz-hb-set.html#harfbuzz-hb-set.description">
+<ANCHOR id="harfbuzz-hb-set.functions_details" href="harfbuzz/harfbuzz-hb-set.html#harfbuzz-hb-set.functions_details">
+<ANCHOR id="HB-SET-VALUE-INVALID:CAPS" href="harfbuzz/harfbuzz-hb-set.html#HB-SET-VALUE-INVALID:CAPS">
+<ANCHOR id="hb-set-add" href="harfbuzz/harfbuzz-hb-set.html#hb-set-add">
+<ANCHOR id="hb-set-add-range" href="harfbuzz/harfbuzz-hb-set.html#hb-set-add-range">
+<ANCHOR id="hb-set-allocation-successful" href="harfbuzz/harfbuzz-hb-set.html#hb-set-allocation-successful">
+<ANCHOR id="hb-set-clear" href="harfbuzz/harfbuzz-hb-set.html#hb-set-clear">
+<ANCHOR id="hb-set-create" href="harfbuzz/harfbuzz-hb-set.html#hb-set-create">
+<ANCHOR id="hb-set-del" href="harfbuzz/harfbuzz-hb-set.html#hb-set-del">
+<ANCHOR id="hb-set-del-range" href="harfbuzz/harfbuzz-hb-set.html#hb-set-del-range">
+<ANCHOR id="hb-set-destroy" href="harfbuzz/harfbuzz-hb-set.html#hb-set-destroy">
+<ANCHOR id="hb-set-get-empty" href="harfbuzz/harfbuzz-hb-set.html#hb-set-get-empty">
+<ANCHOR id="hb-set-get-max" href="harfbuzz/harfbuzz-hb-set.html#hb-set-get-max">
+<ANCHOR id="hb-set-get-min" href="harfbuzz/harfbuzz-hb-set.html#hb-set-get-min">
+<ANCHOR id="hb-set-get-population" href="harfbuzz/harfbuzz-hb-set.html#hb-set-get-population">
+<ANCHOR id="hb-set-get-user-data" href="harfbuzz/harfbuzz-hb-set.html#hb-set-get-user-data">
+<ANCHOR id="hb-set-has" href="harfbuzz/harfbuzz-hb-set.html#hb-set-has">
+<ANCHOR id="hb-set-intersect" href="harfbuzz/harfbuzz-hb-set.html#hb-set-intersect">
+<ANCHOR id="hb-set-invert" href="harfbuzz/harfbuzz-hb-set.html#hb-set-invert">
+<ANCHOR id="hb-set-is-empty" href="harfbuzz/harfbuzz-hb-set.html#hb-set-is-empty">
+<ANCHOR id="hb-set-is-equal" href="harfbuzz/harfbuzz-hb-set.html#hb-set-is-equal">
+<ANCHOR id="hb-set-next" href="harfbuzz/harfbuzz-hb-set.html#hb-set-next">
+<ANCHOR id="hb-set-next-range" href="harfbuzz/harfbuzz-hb-set.html#hb-set-next-range">
+<ANCHOR id="hb-set-reference" href="harfbuzz/harfbuzz-hb-set.html#hb-set-reference">
+<ANCHOR id="hb-set-set" href="harfbuzz/harfbuzz-hb-set.html#hb-set-set">
+<ANCHOR id="hb-set-set-user-data" href="harfbuzz/harfbuzz-hb-set.html#hb-set-set-user-data">
+<ANCHOR id="hb-set-subtract" href="harfbuzz/harfbuzz-hb-set.html#hb-set-subtract">
+<ANCHOR id="hb-set-symmetric-difference" href="harfbuzz/harfbuzz-hb-set.html#hb-set-symmetric-difference">
+<ANCHOR id="hb-set-union" href="harfbuzz/harfbuzz-hb-set.html#hb-set-union">
+<ANCHOR id="harfbuzz-hb-set.other_details" href="harfbuzz/harfbuzz-hb-set.html#harfbuzz-hb-set.other_details">
+<ANCHOR id="hb-set-t" href="harfbuzz/harfbuzz-hb-set.html#hb-set-t">
+<ANCHOR id="harfbuzz-hb-ot" href="harfbuzz/harfbuzz-hb-ot.html">
+<ANCHOR id="harfbuzz-hb-ot.description" href="harfbuzz/harfbuzz-hb-ot.html#harfbuzz-hb-ot.description">
+<ANCHOR id="harfbuzz-hb-ot.functions_details" href="harfbuzz/harfbuzz-hb-ot.html#harfbuzz-hb-ot.functions_details">
+<ANCHOR id="harfbuzz-hb-ot.other_details" href="harfbuzz/harfbuzz-hb-ot.html#harfbuzz-hb-ot.other_details">
+<ANCHOR id="harfbuzz-hb-ot-layout" href="harfbuzz/harfbuzz-hb-ot-layout.html">
+<ANCHOR id="harfbuzz-hb-ot-layout.functions" href="harfbuzz/harfbuzz-hb-ot-layout.html#harfbuzz-hb-ot-layout.functions">
+<ANCHOR id="harfbuzz-hb-ot-layout.other" href="harfbuzz/harfbuzz-hb-ot-layout.html#harfbuzz-hb-ot-layout.other">
+<ANCHOR id="harfbuzz-hb-ot-layout.object-hierarchy" href="harfbuzz/harfbuzz-hb-ot-layout.html#harfbuzz-hb-ot-layout.object-hierarchy">
+<ANCHOR id="harfbuzz-hb-ot-layout.description" href="harfbuzz/harfbuzz-hb-ot-layout.html#harfbuzz-hb-ot-layout.description">
+<ANCHOR id="harfbuzz-hb-ot-layout.functions_details" href="harfbuzz/harfbuzz-hb-ot-layout.html#harfbuzz-hb-ot-layout.functions_details">
+<ANCHOR id="hb-ot-layout-collect-lookups" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-collect-lookups">
+<ANCHOR id="hb-ot-layout-feature-get-lookups" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-feature-get-lookups">
+<ANCHOR id="hb-ot-layout-get-attach-points" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-get-attach-points">
+<ANCHOR id="hb-ot-layout-get-glyph-class" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-get-glyph-class">
+<ANCHOR id="hb-ot-layout-get-glyphs-in-class" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-get-glyphs-in-class">
+<ANCHOR id="hb-ot-layout-get-ligature-carets" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-get-ligature-carets">
+<ANCHOR id="hb-ot-layout-get-size-params" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-get-size-params">
+<ANCHOR id="hb-ot-layout-glyph-sequence-func-t" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-glyph-sequence-func-t">
+<ANCHOR id="hb-ot-layout-has-glyph-classes" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-has-glyph-classes">
+<ANCHOR id="hb-ot-layout-has-positioning" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-has-positioning">
+<ANCHOR id="hb-ot-layout-has-substitution" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-has-substitution">
+<ANCHOR id="hb-ot-layout-language-find-feature" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-language-find-feature">
+<ANCHOR id="hb-ot-layout-language-get-feature-indexes" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-language-get-feature-indexes">
+<ANCHOR id="hb-ot-layout-language-get-feature-tags" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-language-get-feature-tags">
+<ANCHOR id="hb-ot-layout-language-get-required-feature" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-language-get-required-feature">
+<ANCHOR id="hb-ot-layout-lookup-collect-glyphs" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-lookup-collect-glyphs">
+<ANCHOR id="hb-ot-layout-lookup-substitute-closure" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-lookup-substitute-closure">
+<ANCHOR id="hb-ot-layout-lookup-would-substitute" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-lookup-would-substitute">
+<ANCHOR id="hb-ot-layout-script-find-language" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-script-find-language">
+<ANCHOR id="hb-ot-layout-script-get-language-tags" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-script-get-language-tags">
+<ANCHOR id="hb-ot-layout-table-choose-script" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-table-choose-script">
+<ANCHOR id="hb-ot-layout-table-find-script" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-table-find-script">
+<ANCHOR id="hb-ot-layout-table-get-feature-tags" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-table-get-feature-tags">
+<ANCHOR id="hb-ot-layout-table-get-script-tags" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-table-get-script-tags">
+<ANCHOR id="hb-ot-layout-table-get-lookup-count" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-table-get-lookup-count">
+<ANCHOR id="hb-ot-shape-plan-collect-lookups" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-shape-plan-collect-lookups">
+<ANCHOR id="harfbuzz-hb-ot-layout.other_details" href="harfbuzz/harfbuzz-hb-ot-layout.html#harfbuzz-hb-ot-layout.other_details">
+<ANCHOR id="HB-OT-LAYOUT-DEFAULT-LANGUAGE-INDEX:CAPS" href="harfbuzz/harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-DEFAULT-LANGUAGE-INDEX:CAPS">
+<ANCHOR id="HB-OT-LAYOUT-NO-FEATURE-INDEX:CAPS" href="harfbuzz/harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-NO-FEATURE-INDEX:CAPS">
+<ANCHOR id="HB-OT-LAYOUT-NO-SCRIPT-INDEX:CAPS" href="harfbuzz/harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-NO-SCRIPT-INDEX:CAPS">
+<ANCHOR id="HB-OT-TAG-GDEF:CAPS" href="harfbuzz/harfbuzz-hb-ot-layout.html#HB-OT-TAG-GDEF:CAPS">
+<ANCHOR id="HB-OT-TAG-GPOS:CAPS" href="harfbuzz/harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS">
+<ANCHOR id="HB-OT-TAG-GSUB:CAPS" href="harfbuzz/harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS">
+<ANCHOR id="hb-ot-layout-glyph-class-t" href="harfbuzz/harfbuzz-hb-ot-layout.html#hb-ot-layout-glyph-class-t">
+<ANCHOR id="harfbuzz-hb-ot-tag" href="harfbuzz/harfbuzz-hb-ot-tag.html">
+<ANCHOR id="harfbuzz-hb-ot-tag.functions" href="harfbuzz/harfbuzz-hb-ot-tag.html#harfbuzz-hb-ot-tag.functions">
+<ANCHOR id="harfbuzz-hb-ot-tag.other" href="harfbuzz/harfbuzz-hb-ot-tag.html#harfbuzz-hb-ot-tag.other">
+<ANCHOR id="harfbuzz-hb-ot-tag.description" href="harfbuzz/harfbuzz-hb-ot-tag.html#harfbuzz-hb-ot-tag.description">
+<ANCHOR id="harfbuzz-hb-ot-tag.functions_details" href="harfbuzz/harfbuzz-hb-ot-tag.html#harfbuzz-hb-ot-tag.functions_details">
+<ANCHOR id="hb-ot-tag-from-language" href="harfbuzz/harfbuzz-hb-ot-tag.html#hb-ot-tag-from-language">
+<ANCHOR id="hb-ot-tag-to-language" href="harfbuzz/harfbuzz-hb-ot-tag.html#hb-ot-tag-to-language">
+<ANCHOR id="hb-ot-tag-to-script" href="harfbuzz/harfbuzz-hb-ot-tag.html#hb-ot-tag-to-script">
+<ANCHOR id="hb-ot-tags-from-script" href="harfbuzz/harfbuzz-hb-ot-tag.html#hb-ot-tags-from-script">
+<ANCHOR id="harfbuzz-hb-ot-tag.other_details" href="harfbuzz/harfbuzz-hb-ot-tag.html#harfbuzz-hb-ot-tag.other_details">
+<ANCHOR id="HB-OT-TAG-DEFAULT-LANGUAGE:CAPS" href="harfbuzz/harfbuzz-hb-ot-tag.html#HB-OT-TAG-DEFAULT-LANGUAGE:CAPS">
+<ANCHOR id="HB-OT-TAG-DEFAULT-SCRIPT:CAPS" href="harfbuzz/harfbuzz-hb-ot-tag.html#HB-OT-TAG-DEFAULT-SCRIPT:CAPS">
+<ANCHOR id="harfbuzz-hb-shape-plan" href="harfbuzz/harfbuzz-hb-shape-plan.html">
+<ANCHOR id="harfbuzz-hb-shape-plan.functions" href="harfbuzz/harfbuzz-hb-shape-plan.html#harfbuzz-hb-shape-plan.functions">
+<ANCHOR id="hb-shape-plan-t" href="harfbuzz/harfbuzz-hb-shape-plan.html#hb-shape-plan-t">
+<ANCHOR id="harfbuzz-hb-shape-plan.other" href="harfbuzz/harfbuzz-hb-shape-plan.html#harfbuzz-hb-shape-plan.other">
+<ANCHOR id="harfbuzz-hb-shape-plan.object-hierarchy" href="harfbuzz/harfbuzz-hb-shape-plan.html#harfbuzz-hb-shape-plan.object-hierarchy">
+<ANCHOR id="harfbuzz-hb-shape-plan.description" href="harfbuzz/harfbuzz-hb-shape-plan.html#harfbuzz-hb-shape-plan.description">
+<ANCHOR id="harfbuzz-hb-shape-plan.functions_details" href="harfbuzz/harfbuzz-hb-shape-plan.html#harfbuzz-hb-shape-plan.functions_details">
+<ANCHOR id="hb-shape-plan-create" href="harfbuzz/harfbuzz-hb-shape-plan.html#hb-shape-plan-create">
+<ANCHOR id="hb-shape-plan-create-cached" href="harfbuzz/harfbuzz-hb-shape-plan.html#hb-shape-plan-create-cached">
+<ANCHOR id="hb-shape-plan-destroy" href="harfbuzz/harfbuzz-hb-shape-plan.html#hb-shape-plan-destroy">
+<ANCHOR id="hb-shape-plan-execute" href="harfbuzz/harfbuzz-hb-shape-plan.html#hb-shape-plan-execute">
+<ANCHOR id="hb-shape-plan-get-empty" href="harfbuzz/harfbuzz-hb-shape-plan.html#hb-shape-plan-get-empty">
+<ANCHOR id="hb-shape-plan-get-shaper" href="harfbuzz/harfbuzz-hb-shape-plan.html#hb-shape-plan-get-shaper">
+<ANCHOR id="hb-shape-plan-get-user-data" href="harfbuzz/harfbuzz-hb-shape-plan.html#hb-shape-plan-get-user-data">
+<ANCHOR id="hb-shape-plan-reference" href="harfbuzz/harfbuzz-hb-shape-plan.html#hb-shape-plan-reference">
+<ANCHOR id="hb-shape-plan-set-user-data" href="harfbuzz/harfbuzz-hb-shape-plan.html#hb-shape-plan-set-user-data">
+<ANCHOR id="harfbuzz-hb-shape-plan.other_details" href="harfbuzz/harfbuzz-hb-shape-plan.html#harfbuzz-hb-shape-plan.other_details">
+<ANCHOR id="hb-shape-plan-t" href="harfbuzz/harfbuzz-hb-shape-plan.html#hb-shape-plan-t">
+<ANCHOR id="harfbuzz-hb-glib" href="harfbuzz/harfbuzz-hb-glib.html">
+<ANCHOR id="harfbuzz-hb-glib.functions" href="harfbuzz/harfbuzz-hb-glib.html#harfbuzz-hb-glib.functions">
+<ANCHOR id="harfbuzz-hb-glib.description" href="harfbuzz/harfbuzz-hb-glib.html#harfbuzz-hb-glib.description">
+<ANCHOR id="harfbuzz-hb-glib.functions_details" href="harfbuzz/harfbuzz-hb-glib.html#harfbuzz-hb-glib.functions_details">
+<ANCHOR id="hb-glib-get-unicode-funcs" href="harfbuzz/harfbuzz-hb-glib.html#hb-glib-get-unicode-funcs">
+<ANCHOR id="hb-glib-script-from-script" href="harfbuzz/harfbuzz-hb-glib.html#hb-glib-script-from-script">
+<ANCHOR id="hb-glib-script-to-script" href="harfbuzz/harfbuzz-hb-glib.html#hb-glib-script-to-script">
+<ANCHOR id="harfbuzz-hb-glib.other_details" href="harfbuzz/harfbuzz-hb-glib.html#harfbuzz-hb-glib.other_details">
+<ANCHOR id="harfbuzz-hb-icu" href="harfbuzz/harfbuzz-hb-icu.html">
+<ANCHOR id="harfbuzz-hb-icu.functions" href="harfbuzz/harfbuzz-hb-icu.html#harfbuzz-hb-icu.functions">
+<ANCHOR id="harfbuzz-hb-icu.description" href="harfbuzz/harfbuzz-hb-icu.html#harfbuzz-hb-icu.description">
+<ANCHOR id="harfbuzz-hb-icu.functions_details" href="harfbuzz/harfbuzz-hb-icu.html#harfbuzz-hb-icu.functions_details">
+<ANCHOR id="hb-icu-get-unicode-funcs" href="harfbuzz/harfbuzz-hb-icu.html#hb-icu-get-unicode-funcs">
+<ANCHOR id="hb-icu-script-from-script" href="harfbuzz/harfbuzz-hb-icu.html#hb-icu-script-from-script">
+<ANCHOR id="hb-icu-script-to-script" href="harfbuzz/harfbuzz-hb-icu.html#hb-icu-script-to-script">
+<ANCHOR id="harfbuzz-hb-icu.other_details" href="harfbuzz/harfbuzz-hb-icu.html#harfbuzz-hb-icu.other_details">
+<ANCHOR id="harfbuzz-hb-ft" href="harfbuzz/harfbuzz-hb-ft.html">
+<ANCHOR id="harfbuzz-hb-ft.functions" href="harfbuzz/harfbuzz-hb-ft.html#harfbuzz-hb-ft.functions">
+<ANCHOR id="harfbuzz-hb-ft.description" href="harfbuzz/harfbuzz-hb-ft.html#harfbuzz-hb-ft.description">
+<ANCHOR id="harfbuzz-hb-ft.functions_details" href="harfbuzz/harfbuzz-hb-ft.html#harfbuzz-hb-ft.functions_details">
+<ANCHOR id="hb-ft-face-create" href="harfbuzz/harfbuzz-hb-ft.html#hb-ft-face-create">
+<ANCHOR id="hb-ft-face-create-cached" href="harfbuzz/harfbuzz-hb-ft.html#hb-ft-face-create-cached">
+<ANCHOR id="hb-ft-font-create" href="harfbuzz/harfbuzz-hb-ft.html#hb-ft-font-create">
+<ANCHOR id="hb-ft-font-get-face" href="harfbuzz/harfbuzz-hb-ft.html#hb-ft-font-get-face">
+<ANCHOR id="hb-ft-font-set-funcs" href="harfbuzz/harfbuzz-hb-ft.html#hb-ft-font-set-funcs">
+<ANCHOR id="harfbuzz-hb-ft.other_details" href="harfbuzz/harfbuzz-hb-ft.html#harfbuzz-hb-ft.other_details">
+<ANCHOR id="harfbuzz-hb-graphite2" href="harfbuzz/harfbuzz-hb-graphite2.html">
+<ANCHOR id="harfbuzz-hb-graphite2.functions" href="harfbuzz/harfbuzz-hb-graphite2.html#harfbuzz-hb-graphite2.functions">
+<ANCHOR id="harfbuzz-hb-graphite2.other" href="harfbuzz/harfbuzz-hb-graphite2.html#harfbuzz-hb-graphite2.other">
+<ANCHOR id="harfbuzz-hb-graphite2.description" href="harfbuzz/harfbuzz-hb-graphite2.html#harfbuzz-hb-graphite2.description">
+<ANCHOR id="harfbuzz-hb-graphite2.functions_details" href="harfbuzz/harfbuzz-hb-graphite2.html#harfbuzz-hb-graphite2.functions_details">
+<ANCHOR id="hb-graphite2-face-get-gr-face" href="harfbuzz/harfbuzz-hb-graphite2.html#hb-graphite2-face-get-gr-face">
+<ANCHOR id="hb-graphite2-font-get-gr-font" href="harfbuzz/harfbuzz-hb-graphite2.html#hb-graphite2-font-get-gr-font">
+<ANCHOR id="harfbuzz-hb-graphite2.other_details" href="harfbuzz/harfbuzz-hb-graphite2.html#harfbuzz-hb-graphite2.other_details">
+<ANCHOR id="HB-GRAPHITE2-TAG-SILF:CAPS" href="harfbuzz/harfbuzz-hb-graphite2.html#HB-GRAPHITE2-TAG-SILF:CAPS">
+<ANCHOR id="harfbuzz-hb-uniscribe" href="harfbuzz/harfbuzz-hb-uniscribe.html">
+<ANCHOR id="harfbuzz-hb-uniscribe.functions" href="harfbuzz/harfbuzz-hb-uniscribe.html#harfbuzz-hb-uniscribe.functions">
+<ANCHOR id="harfbuzz-hb-uniscribe.description" href="harfbuzz/harfbuzz-hb-uniscribe.html#harfbuzz-hb-uniscribe.description">
+<ANCHOR id="harfbuzz-hb-uniscribe.functions_details" href="harfbuzz/harfbuzz-hb-uniscribe.html#harfbuzz-hb-uniscribe.functions_details">
+<ANCHOR id="hb-uniscribe-font-get-hfont" href="harfbuzz/harfbuzz-hb-uniscribe.html#hb-uniscribe-font-get-hfont">
+<ANCHOR id="hb-uniscribe-font-get-logfontw" href="harfbuzz/harfbuzz-hb-uniscribe.html#hb-uniscribe-font-get-logfontw">
+<ANCHOR id="harfbuzz-hb-uniscribe.other_details" href="harfbuzz/harfbuzz-hb-uniscribe.html#harfbuzz-hb-uniscribe.other_details">
+<ANCHOR id="harfbuzz-hb-coretext" href="harfbuzz/harfbuzz-hb-coretext.html">
+<ANCHOR id="harfbuzz-hb-coretext.functions" href="harfbuzz/harfbuzz-hb-coretext.html#harfbuzz-hb-coretext.functions">
+<ANCHOR id="harfbuzz-hb-coretext.other" href="harfbuzz/harfbuzz-hb-coretext.html#harfbuzz-hb-coretext.other">
+<ANCHOR id="harfbuzz-hb-coretext.description" href="harfbuzz/harfbuzz-hb-coretext.html#harfbuzz-hb-coretext.description">
+<ANCHOR id="harfbuzz-hb-coretext.functions_details" href="harfbuzz/harfbuzz-hb-coretext.html#harfbuzz-hb-coretext.functions_details">
+<ANCHOR id="hb-coretext-face-create" href="harfbuzz/harfbuzz-hb-coretext.html#hb-coretext-face-create">
+<ANCHOR id="hb-coretext-face-get-cg-font" href="harfbuzz/harfbuzz-hb-coretext.html#hb-coretext-face-get-cg-font">
+<ANCHOR id="hb-coretext-font-get-ct-font" href="harfbuzz/harfbuzz-hb-coretext.html#hb-coretext-font-get-ct-font">
+<ANCHOR id="harfbuzz-hb-coretext.other_details" href="harfbuzz/harfbuzz-hb-coretext.html#harfbuzz-hb-coretext.other_details">
+<ANCHOR id="HB-CORETEXT-TAG-MORT:CAPS" href="harfbuzz/harfbuzz-hb-coretext.html#HB-CORETEXT-TAG-MORT:CAPS">
+<ANCHOR id="HB-CORETEXT-TAG-MORX:CAPS" href="harfbuzz/harfbuzz-hb-coretext.html#HB-CORETEXT-TAG-MORX:CAPS">
+<ANCHOR id="harfbuzz-hb-gobject" href="harfbuzz/harfbuzz-hb-gobject.html">
+<ANCHOR id="harfbuzz-hb-gobject.description" href="harfbuzz/harfbuzz-hb-gobject.html#harfbuzz-hb-gobject.description">
+<ANCHOR id="harfbuzz-hb-gobject.functions_details" href="harfbuzz/harfbuzz-hb-gobject.html#harfbuzz-hb-gobject.functions_details">
+<ANCHOR id="harfbuzz-hb-gobject.other_details" href="harfbuzz/harfbuzz-hb-gobject.html#harfbuzz-hb-gobject.other_details">
+<ANCHOR id="annotation-glossterm-array" href="harfbuzz/annotation-glossary.html#annotation-glossterm-array">
+<ANCHOR id="annotation-glossterm-closure" href="harfbuzz/annotation-glossary.html#annotation-glossterm-closure">
+<ANCHOR id="annotation-glossterm-destroy" href="harfbuzz/annotation-glossary.html#annotation-glossterm-destroy">
+<ANCHOR id="annotation-glossterm-element-type" href="harfbuzz/annotation-glossary.html#annotation-glossterm-element-type">
+<ANCHOR id="annotation-glossterm-inout" href="harfbuzz/annotation-glossary.html#annotation-glossterm-inout">
+<ANCHOR id="annotation-glossterm-out" href="harfbuzz/annotation-glossary.html#annotation-glossterm-out">
+<ANCHOR id="annotation-glossterm-scope notified" href="harfbuzz/annotation-glossary.html#annotation-glossterm-scope notified">
+<ANCHOR id="annotation-glossterm-transfer full" href="harfbuzz/annotation-glossary.html#annotation-glossterm-transfer full">
+<ANCHOR id="annotation-glossterm-transfer none" href="harfbuzz/annotation-glossary.html#annotation-glossterm-transfer none">
diff --git a/docs/html/left-insensitive.png b/docs/reference/html/left-insensitive.png
index 3269393..3269393 100644
--- a/docs/html/left-insensitive.png
+++ b/docs/reference/html/left-insensitive.png
Binary files differ
diff --git a/docs/html/left.png b/docs/reference/html/left.png
index 2abde03..2abde03 100644
--- a/docs/html/left.png
+++ b/docs/reference/html/left.png
Binary files differ
diff --git a/docs/html/object-tree.html b/docs/reference/html/object-tree.html
index 0dff3cc..c4f447b 100644
--- a/docs/html/object-tree.html
+++ b/docs/reference/html/object-tree.html
@@ -2,20 +2,20 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Object Hierarchy: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt02.html" title="Part II. Reference manual">
+<title>Object Hierarchy</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="HarfBuzz Reference Manual">
+<link rel="up" href="index.html" title="HarfBuzz Reference Manual">
<link rel="prev" href="harfbuzz-hb-gobject.html" title="hb-gobject">
<link rel="next" href="api-index-full.html" title="API Index">
-<meta name="generator" content="GTK-Doc V1.24.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.20.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
<td><a accesskey="p" href="harfbuzz-hb-gobject.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="api-index-full.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
@@ -23,36 +23,37 @@
<div class="titlepage"><div><div><h2 class="title">
<a name="object-tree"></a>Object Hierarchy</h2></div></div></div>
<pre class="screen">
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+ GBoxed
<span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t">hb_blob_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t">hb_buffer_t</a>
+ <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t">hb_buffer_t</a>
<span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-face.html#hb-face-t">hb_face_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Shaping.html#hb-feature-t">hb_feature_t</a>
+ <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t">hb_feature_t</a>
<span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t">hb_font_funcs_t</a>
<span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-font.html#hb-font-t">hb_font_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t">hb_glyph_info_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-glyph-position-t">hb_glyph_position_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t">hb_segment_properties_t</a>
+ <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t">hb_glyph_info_t</a>
+ <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t">hb_glyph_position_t</a>
+ <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-common.html#hb-language-t">hb_language_t</a>
+ <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t">hb_segment_properties_t</a>
<span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-set.html#hb-set-t">hb_set_t</a>
<span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t">hb_shape_plan_t</a>
<span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t">hb_unicode_funcs_t</a>
<span class="lineart">╰──</span> <a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t">hb_user_data_key_t</a>
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t">hb_buffer_cluster_level_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t">hb_buffer_content_type_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t">hb_buffer_serialize_format_t</a>
+ GEnum
+ <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t">hb_buffer_content_type_t</a>
+ <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t">hb_buffer_serialize_format_t</a>
<span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t">hb_direction_t</a>
<span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-blob.html#hb-memory-mode-t" title="enum hb_memory_mode_t">hb_memory_mode_t</a>
<span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-glyph-class-t" title="enum hb_ot_layout_glyph_class_t">hb_ot_layout_glyph_class_t</a>
<span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t">hb_script_t</a>
<span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-combining-class-t" title="enum hb_unicode_combining_class_t">hb_unicode_combining_class_t</a>
<span class="lineart">╰──</span> <a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-general-category-t" title="enum hb_unicode_general_category_t">hb_unicode_general_category_t</a>
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GFlags</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t">hb_buffer_flags_t</a>
- <span class="lineart">╰──</span> <a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t">hb_buffer_serialize_flags_t</a>
+ GFlags
+ <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t">hb_buffer_flags_t</a>
+ <span class="lineart">╰──</span> <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t">hb_buffer_serialize_flags_t</a>
</pre>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.24.1</div>
+<hr>
+ Generated by GTK-Doc V1.20.1</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/right-insensitive.png b/docs/reference/html/right-insensitive.png
index 4c95785..4c95785 100644
--- a/docs/html/right-insensitive.png
+++ b/docs/reference/html/right-insensitive.png
Binary files differ
diff --git a/docs/html/right.png b/docs/reference/html/right.png
index 76260ec..76260ec 100644
--- a/docs/html/right.png
+++ b/docs/reference/html/right.png
Binary files differ
diff --git a/docs/html/style.css b/docs/reference/html/style.css
index 3675420..c141ddd 100644
--- a/docs/html/style.css
+++ b/docs/reference/html/style.css
@@ -60,7 +60,7 @@ a:hover
div.informaltable table
{
border-collapse: separate;
- border-spacing: 1em 0.3em;
+ border-spacing: 1em 0.5em;
border: none;
}
@@ -148,8 +148,6 @@ div.table table th
h4
{
color: #555753;
- margin-top: 1em;
- margin-bottom: 1em;
}
hr
@@ -168,16 +166,17 @@ dl.toc dt
padding-bottom: 0.25em;
}
-dl.toc > dt
+dl.toc > dd > dl > dt
{
padding-top: 0.25em;
padding-bottom: 0.25em;
- font-weight: bold;
}
-dl.toc > dl
+dl.toc > dt
{
+ padding-top: 1em;
padding-bottom: 0.5em;
+ font-weight: bold;
}
.parameter
@@ -347,9 +346,7 @@ acronym,abbr
}
@media screen {
- /* these have a <sup> as a first child, but since there are no parent selectors
- * we can't use that. */
- a.footnote
+ sup a.footnote
{
position: relative;
top: 0em ! important;
diff --git a/docs/html/up-insensitive.png b/docs/reference/html/up-insensitive.png
index f404986..f404986 100644
--- a/docs/html/up-insensitive.png
+++ b/docs/reference/html/up-insensitive.png
Binary files differ
diff --git a/docs/html/up.png b/docs/reference/html/up.png
index 80b4b37..80b4b37 100644
--- a/docs/html/up.png
+++ b/docs/reference/html/up.png
Binary files differ
diff --git a/docs/reference/version.xml b/docs/reference/version.xml
new file mode 100644
index 0000000..f81283f
--- /dev/null
+++ b/docs/reference/version.xml
@@ -0,0 +1 @@
+0.9.40
diff --git a/docs/version.xml.in b/docs/reference/version.xml.in
index de213c2..de213c2 100644
--- a/docs/version.xml.in
+++ b/docs/reference/version.xml.in
diff --git a/docs/usermanual-buffers-language-script-and-direction.xml b/docs/usermanual-buffers-language-script-and-direction.xml
deleted file mode 100644
index 3a26c55..0000000
--- a/docs/usermanual-buffers-language-script-and-direction.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<chapter id="buffers-language-script-and-direction">
- <title>Buffers, language, script and direction</title>
- <para>
- The input to Harfbuzz is a series of Unicode characters, stored in a
- buffer. In this chapter, we'll look at how to set up a buffer with
- the text that we want and then customize the properties of the
- buffer.
- </para>
- <section id="creating-and-destroying-buffers">
- <title>Creating and destroying buffers</title>
- <para>
- As we saw in our initial example, a buffer is created and
- initialized with <literal>hb_buffer_create()</literal>. This
- produces a new, empty buffer object, instantiated with some
- default values and ready to accept your Unicode strings.
- </para>
- <para>
- Harfbuzz manages the memory of objects that it creates (such as
- buffers), so you don't have to. When you have finished working on
- a buffer, you can call <literal>hb_buffer_destroy()</literal>:
- </para>
- <programlisting language="C">
- hb_buffer_t *buffer = hb_buffer_create();
- ...
- hb_buffer_destroy(buffer);
-</programlisting>
- <para>
- This will destroy the object and free its associated memory -
- unless some other part of the program holds a reference to this
- buffer. If you acquire a Harfbuzz buffer from another subsystem
- and want to ensure that it is not garbage collected by someone
- else destroying it, you should increase its reference count:
- </para>
- <programlisting language="C">
-void somefunc(hb_buffer_t *buffer) {
- buffer = hb_buffer_reference(buffer);
- ...
-</programlisting>
- <para>
- And then decrease it once you're done with it:
- </para>
- <programlisting language="C">
- hb_buffer_destroy(buffer);
-}
-</programlisting>
- <para>
- To throw away all the data in your buffer and start from scratch,
- call <literal>hb_buffer_reset(buffer)</literal>. If you want to
- throw away the string in the buffer but keep the options, you can
- instead call <literal>hb_buffer_clear_contents(buffer)</literal>.
- </para>
- </section>
- <section id="adding-text-to-the-buffer">
- <title>Adding text to the buffer</title>
- <para>
- Now we have a brand new Harfbuzz buffer. Let's start filling it
- with text! From Harfbuzz's perspective, a buffer is just a stream
- of Unicode codepoints, but your input string is probably in one of
- the standard Unicode character encodings (UTF-8, UTF-16, UTF-32)
- </para>
- </section>
- <section id="setting-buffer-properties">
- <title>Setting buffer properties</title>
- <para>
- </para>
- </section>
- <section id="what-about-the-other-scripts">
- <title>What about the other scripts?</title>
- <para>
- </para>
- </section>
- <section id="customizing-unicode-functions">
- <title>Customizing Unicode functions</title>
- <para>
- </para>
- </section>
-</chapter> \ No newline at end of file
diff --git a/docs/usermanual-clusters.xml b/docs/usermanual-clusters.xml
deleted file mode 100644
index 8b64bde..0000000
--- a/docs/usermanual-clusters.xml
+++ /dev/null
@@ -1,304 +0,0 @@
-<chapter id="clusters">
-<sect1 id="clusters">
- <title>Clusters</title>
- <para>
- In shaping text, a <emphasis>cluster</emphasis> is a sequence of
- code points that needs to be treated as a single, indivisible unit.
- </para>
- <para>
- When you add text to a HB buffer, each character is associated with
- a <emphasis>cluster value</emphasis>. This is an arbitrary number as
- far as HB is concerned.
- </para>
- <para>
- Most clients will use UTF-8, UTF-16, or UTF-32 indices, but the
- actual number does not matter. Moreover, it is not required for the
- cluster values to be monotonically increasing, but pretty much all
- of HB's tests are performed on monotonically increasing cluster
- numbers. Nevertheless, there is no such assumption in the code
- itself. With that in mind, let's examine what happens with cluster
- values during shaping under each cluster-level.
- </para>
- <para>
- HarfBuzz provides three <emphasis>levels</emphasis> of clustering
- support. Level 0 is the default behavior and reproduces the behavior
- of the old HarfBuzz library. Level 1 tweaks this behavior slightly
- to produce better results, so level 1 clustering is recommended for
- code that is not required to implement backward compatibility with
- the old HarfBuzz.
- </para>
- <para>
- Level 2 differs significantly in how it treats cluster values.
- Levels 0 and 1 both process ligatures and glyph decomposition by
- merging clusters; level 2 does not.
- </para>
- <para>
- The conceptual model for what the cluster values mean, in levels 0
- and 1, is this:
- </para>
- <itemizedlist spacing="compact">
- <listitem>
- <para>
- the sequence of cluster values will always remain monotone
- </para>
- </listitem>
- <listitem>
- <para>
- each value represents a single cluster
- </para>
- </listitem>
- <listitem>
- <para>
- each cluster contains one or more glyphs and one or more
- characters
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Assuming that initial cluster numbers were monotonically increasing
- and distinct, then all adjacent glyphs having the same cluster
- number belong to the same cluster, and all characters belong to the
- cluster that has the highest number not larger than their initial
- cluster number. This will become clearer with an example.
- </para>
-</sect1>
-<sect1 id="a-clustering-example-for-levels-0-and-1">
- <title>A clustering example for levels 0 and 1</title>
- <para>
- Let's say we start with the following character sequence and cluster
- values:
- </para>
- <programlisting>
- A,B,C,D,E
- 0,1,2,3,4
-</programlisting>
- <para>
- We then map the characters to glyphs. For simplicity, let's assume
- that each character maps to the corresponding, identical-looking
- glyph:
- </para>
- <programlisting>
- A,B,C,D,E
- 0,1,2,3,4
-</programlisting>
- <para>
- Now if, for example, <literal>B</literal> and <literal>C</literal>
- ligate, then the clusters to which they belong &quot;merge&quot;.
- This merged cluster takes for its cluster number the minimum of all
- the cluster numbers of the clusters that went in. In this case, we
- get:
- </para>
- <programlisting>
- A,BC,D,E
- 0,1 ,3,4
-</programlisting>
- <para>
- Now let's assume that the <literal>BC</literal> glyph decomposes
- into three components, and <literal>D</literal> also decomposes into
- two. The components each inherit the cluster value of their parent:
- </para>
- <programlisting>
- A,BC0,BC1,BC2,D0,D1,E
- 0,1 ,1 ,1 ,3 ,3 ,4
-</programlisting>
- <para>
- Now if <literal>BC2</literal> and <literal>D0</literal> ligate, then
- their clusters (numbers 1 and 3) merge into
- <literal>min(1,3) = 1</literal>:
- </para>
- <programlisting>
- A,BC0,BC1,BC2D0,D1,E
- 0,1 ,1 ,1 ,1 ,4
-</programlisting>
- <para>
- At this point, cluster 1 means: the character sequence
- <literal>BCD</literal> is represented by glyphs
- <literal>BC0,BC1,BC2D0,D1</literal> and cannot be broken down any
- further.
- </para>
-</sect1>
-<sect1 id="reordering-in-levels-0-and-1">
- <title>Reordering in levels 0 and 1</title>
- <para>
- Another common operation in the more complex shapers is when things
- reorder. In those cases, to maintain monotone clusters, HB merges
- the clusters of everything in the reordering sequence. For example,
- let's again start with the character sequence:
- </para>
- <programlisting>
- A,B,C,D,E
- 0,1,2,3,4
-</programlisting>
- <para>
- If <literal>D</literal> is reordered before <literal>B</literal>,
- then the <literal>B</literal>, <literal>C</literal>, and
- <literal>D</literal> clusters merge, and we get:
- </para>
- <programlisting>
- A,D,B,C,E
- 0,1,1,1,4
-</programlisting>
- <para>
- This is clearly not ideal, but it is the only sensible way to
- maintain monotone indices and retain the true relationship between
- glyphs and characters.
- </para>
-</sect1>
-<sect1 id="the-distinction-between-levels-0-and-1">
- <title>The distinction between levels 0 and 1</title>
- <para>
- So, the above is pretty much what cluster levels 0 and 1 do. The
- only difference between the two is this: in level 0, at the very
- beginning of the shaping process, we also merge clusters between
- base characters and all Unicode marks (combining or not) following
- them. E.g.:
- </para>
- <programlisting>
- A,acute,B
- 0,1 ,2
-</programlisting>
- <para>
- will become:
- </para>
- <programlisting>
- A,acute,B
- 0,0 ,2
-</programlisting>
- <para>
- This is the default behavior. We do it because Windows did it and
- old HarfBuzz did it, so this remained the default. But this behavior
- makes it impossible to color diacritic marks differently from their
- base characters. That's why in level 1 we do not perform this
- initial merging step.
- </para>
- <para>
- For clients, level 0 is more convenient if they rely on HarfBuzz
- clusters for cursor positioning. But that's wrong anyway: cursor
- positions should be determined based on Unicode grapheme boundaries,
- NOT shaping clusters. As such, level 1 clusters are preferred.
- </para>
- <para>
- One last note about levels 0 and 1. We currently don't allow a
- <literal>MultipleSubst</literal> lookup to replace a glyph with zero
- glyphs (i.e., to delete a glyph). But in some other situations,
- glyphs can be deleted. In those cases, if the glyph being deleted is
- the last glyph of its cluster, we make sure to merge the cluster
- with a neighboring cluster.
- </para>
- <para>
- This is, primarily, to make sure that the starting cluster of the
- text always has the cluster index pointing to the start of the text
- for the run; more than one client currently relies on this
- guarantee.
- </para>
- <para>
- Incidentally, Apple's CoreText does something else to maintain the
- same promise: it inserts a glyph with id 65535 at the beginning of
- the glyph string if the glyph corresponding to the first character
- in the run was deleted. HarfBuzz might do something similar in the
- future.
- </para>
-</sect1>
-<sect1 id="level-2">
- <title>Level 2</title>
- <para>
- Level 2 is a different beast from levels 0 and 1. It is simple to
- describe, but hard to make sense of. It simply doesn't do any
- cluster merging whatsoever. When things ligate or otherwise multiple
- glyphs turn into one, the cluster value of the first glyph is
- retained.
- </para>
- <para>
- Here are a few examples of why processing cluster values produced at
- this level might be tricky:
- </para>
- <sect2 id="ligatures-with-combining-marks">
- <title>Ligatures with combining marks</title>
- <para>
- Imagine capital letters are bases and lower case letters are
- combining marks. With an input sequence like this:
- </para>
- <programlisting>
- A,a,B,b,C,c
- 0,1,2,3,4,5
-</programlisting>
- <para>
- if <literal>A,B,C</literal> ligate, then here are the cluster
- values one would get under the various levels:
- </para>
- <para>
- level 0:
- </para>
- <programlisting>
- ABC,a,b,c
- 0 ,0,0,0
-</programlisting>
- <para>
- level 1:
- </para>
- <programlisting>
- ABC,a,b,c
- 0 ,0,0,5
-</programlisting>
- <para>
- level 2:
- </para>
- <programlisting>
- ABC,a,b,c
- 0 ,1,3,5
-</programlisting>
- <para>
- Making sense of the last example is the hardest for a client,
- because there is nothing in the cluster values to suggest that
- <literal>B</literal> and <literal>C</literal> ligated with
- <literal>A</literal>.
- </para>
- </sect2>
- <sect2 id="reordering">
- <title>Reordering</title>
- <para>
- Another tricky case is when things reorder. Under level 2:
- </para>
- <programlisting>
- A,B,C,D,E
- 0,1,2,3,4
-</programlisting>
- <para>
- Now imagine <literal>D</literal> moves before
- <literal>B</literal>:
- </para>
- <programlisting>
- A,D,B,C,E
- 0,3,1,2,4
-</programlisting>
- <para>
- Now, if <literal>D</literal> ligates with <literal>B</literal>, we
- get:
- </para>
- <programlisting>
- A,DB,C,E
- 0,3 ,2,4
-</programlisting>
- <para>
- In a different scenario, <literal>A</literal> and
- <literal>B</literal> could have ligated
- <emphasis>before</emphasis> <literal>D</literal> reordered; that
- would have resulted in:
- </para>
- <programlisting>
- AB,D,C,E
- 0 ,3,2,4
-</programlisting>
- <para>
- There's no way to differentitate between these two scenarios based
- on the cluster numbers alone.
- </para>
- <para>
- Another problem appens with ligatures under level 2 if the
- direction of the text is forced to opposite of its natural
- direction (e.g. left-to-right Arabic). But that's too much of a
- corner case to worry about.
- </para>
- </sect2>
-</sect1>
-</chapter>
diff --git a/docs/usermanual-fonts-and-faces.xml b/docs/usermanual-fonts-and-faces.xml
deleted file mode 100644
index 01fcdc9..0000000
--- a/docs/usermanual-fonts-and-faces.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<chapter id="fonts-and-faces">
- <title>Fonts and faces</title>
- <section id="using-freetype">
- <title>Using FreeType</title>
- <para>
- </para>
- </section>
- <section id="using-harfbuzzs-native-opentype-implementation">
- <title>Using Harfbuzz's native OpenType implementation</title>
- <para>
- </para>
- </section>
- <section id="using-your-own-font-functions">
- <title>Using your own font functions</title>
- <para>
- </para>
- </section>
-</chapter> \ No newline at end of file
diff --git a/docs/usermanual-glyph-information.xml b/docs/usermanual-glyph-information.xml
deleted file mode 100644
index ca674c0..0000000
--- a/docs/usermanual-glyph-information.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<sect1 id="glyph-information">
- <title>Glyph information</title>
- <sect2 id="names-and-numbers">
- <title>Names and numbers</title>
- <para>
- </para>
- </sect2>
-</sect1> \ No newline at end of file
diff --git a/docs/usermanual-hello-harfbuzz.xml b/docs/usermanual-hello-harfbuzz.xml
deleted file mode 100644
index 34db017..0000000
--- a/docs/usermanual-hello-harfbuzz.xml
+++ /dev/null
@@ -1,183 +0,0 @@
-<chapter id="hello-harfbuzz">
- <title>Hello, Harfbuzz</title>
- <para>
- Here's the simplest Harfbuzz that can possibly work. We will improve
- it later.
- </para>
- <orderedlist numeration="arabic">
- <listitem>
- <para>
- Create a buffer and put your text in it.
- </para>
- </listitem>
- </orderedlist>
- <programlisting language="C">
- #include &lt;hb.h&gt;
- hb_buffer_t *buf;
- buf = hb_buffer_create();
- hb_buffer_add_utf8(buf, text, strlen(text), 0, strlen(text));
-</programlisting>
- <orderedlist numeration="arabic">
- <listitem override="2">
- <para>
- Guess the script, language and direction of the buffer.
- </para>
- </listitem>
- </orderedlist>
- <programlisting language="C">
- hb_buffer_guess_segment_properties(buf);
-</programlisting>
- <orderedlist numeration="arabic">
- <listitem override="3">
- <para>
- Create a face and a font, using FreeType for now.
- </para>
- </listitem>
- </orderedlist>
- <programlisting language="C">
- #include &lt;hb-ft.h&gt;
- FT_New_Face(ft_library, font_path, index, &amp;face)
- hb_font_t *font = hb_ft_font_create(face);
-</programlisting>
- <orderedlist numeration="arabic">
- <listitem override="4">
- <para>
- Shape!
- </para>
- </listitem>
- </orderedlist>
- <programlisting>
- hb_shape(font, buf, NULL, 0);
-</programlisting>
- <orderedlist numeration="arabic">
- <listitem override="5">
- <para>
- Get the glyph and position information.
- </para>
- </listitem>
- </orderedlist>
- <programlisting language="C">
- hb_glyph_info_t *glyph_info = hb_buffer_get_glyph_infos(buf, &amp;glyph_count);
- hb_glyph_position_t *glyph_pos = hb_buffer_get_glyph_positions(buf, &amp;glyph_count);
-</programlisting>
- <orderedlist numeration="arabic">
- <listitem override="6">
- <para>
- Iterate over each glyph.
- </para>
- </listitem>
- </orderedlist>
- <programlisting language="C">
- for (i = 0; i &lt; glyph_count; ++i) {
- glyphid = glyph_info[i].codepoint;
- x_offset = glyph_pos[i].x_offset / 64.0;
- y_offset = glyph_pos[i].y_offset / 64.0;
- x_advance = glyph_pos[i].x_advance / 64.0;
- y_advance = glyph_pos[i].y_advance / 64.0;
- draw_glyph(glyphid, cursor_x + x_offset, cursor_y + y_offset);
- cursor_x += x_advance;
- cursor_y += y_advance;
- }
-</programlisting>
- <orderedlist numeration="arabic">
- <listitem override="7">
- <para>
- Tidy up.
- </para>
- </listitem>
- </orderedlist>
- <programlisting language="C">
- hb_buffer_destroy(buf);
- hb_font_destroy(hb_ft_font);
-</programlisting>
- <section id="what-harfbuzz-doesnt-do">
- <title>What Harfbuzz doesn't do</title>
- <para>
- The code above will take a UTF8 string, shape it, and give you the
- information required to lay it out correctly on a single
- horizontal (or vertical) line using the font provided. That is the
- extent of Harfbuzz's responsibility.
- </para>
- <para>
- If you are implementing a text layout engine you may have other
- responsibilities, that Harfbuzz will not help you with:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Harfbuzz won't help you with bidirectionality. If you want to
- lay out text with mixed Hebrew and English, you will need to
- ensure that the buffer provided to Harfbuzz has those
- characters in the correct layout order. This will be different
- from the logical order in which the Unicode text is stored. In
- other words, the user will hit the keys in the following
- sequence:
- </para>
- <programlisting>
-A B C [space] ג ב א [space] D E F
- </programlisting>
- <para>
- but will expect to see in the output:
- </para>
- <programlisting>
-ABC אבג DEF
- </programlisting>
- <para>
- This reordering is called <emphasis>bidi processing</emphasis>
- (&quot;bidi&quot; is short for bidirectional), and there's an
- algorithm as an annex to the Unicode Standard which tells you how
- to reorder a string from logical order into presentation order.
- Before sending your string to Harfbuzz, you may need to apply the
- bidi algorithm to it. Libraries such as ICU and fribidi can do
- this for you.
- </para>
- </listitem>
- <listitem>
- <para>
- Harfbuzz won't help you with text that contains different font
- properties. For instance, if you have the string &quot;a
- <emphasis>huge</emphasis> breakfast&quot;, and you expect
- &quot;huge&quot; to be italic, you will need to send three
- strings to Harfbuzz: <literal>a</literal>, in your Roman font;
- <literal>huge</literal> using your italic font; and
- <literal>breakfast</literal> using your Roman font again.
- Similarly if you change font, font size, script, language or
- direction within your string, you will need to shape each run
- independently and then output them independently. Harfbuzz
- expects to shape a run of characters sharing the same
- properties.
- </para>
- </listitem>
- <listitem>
- <para>
- Harfbuzz won't help you with line breaking, hyphenation or
- justification. As mentioned above, it lays out the string
- along a <emphasis>single line</emphasis> of, notionally,
- infinite length. If you want to find out where the potential
- word, sentence and line break points are in your text, you
- could use the ICU library's break iterator functions.
- </para>
- <para>
- Harfbuzz can tell you how wide a shaped piece of text is, which is
- useful input to a justification algorithm, but it knows nothing
- about paragraphs, lines or line lengths. Nor will it adjust the
- space between words to fit them proportionally into a line. If you
- want to layout text in paragraphs, you will probably want to send
- each word of your text to Harfbuzz to determine its shaped width
- after glyph substitutions, then work out how many words will fit
- on a line, and then finally output each word of the line separated
- by a space of the correct size to fully justify the paragraph.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- As a layout engine implementor, Harfbuzz will help you with the
- interface between your text and your font, and that's something
- that you'll need - what you then do with the glyphs that your font
- returns is up to you. The example we saw above enough to get us
- started using Harfbuzz. Now we are going to use the remainder of
- Harfbuzz's API to refine that example and improve our text shaping
- capabilities.
- </para>
- </section>
-</chapter> \ No newline at end of file
diff --git a/docs/usermanual-install-harfbuzz.xml b/docs/usermanual-install-harfbuzz.xml
deleted file mode 100644
index be8ac8d..0000000
--- a/docs/usermanual-install-harfbuzz.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<chapter id="install-harfbuzz">
- <title>Install Harfbuzz</title>
- <section id="download">
- <title id="download.title">Download</title>
- <para>
- For tarball releases of HarfBuzz, look
- <ulink url="http://www.freedesktop.org/software/harfbuzz/release/">here</ulink>.
- At the same place you will
- also find Win32 binary bundles that include libharfbuzz DLL, hb-view.exe,
- hb-shape.exe, and all dependencies.
- </para>
- <para>
- The canonical source tree is available
- <ulink url="http://cgit.freedesktop.org/harfbuzz/">here</ulink>.
- Also available on <ulink url="https://github.com/behdad/harfbuzz">github</ulink>.
- </para>
- <para>
- The API that comes with <filename class='headerfile'>hb.h</filename> will
- not change incompatibly. Other, peripheral, headers are more likely to go
- through minor modifications, but again, will do our best to never change
- API in an incompatible way. We will never break the ABI.
- </para>
- <para>
- If you are not sure whether Pango or HarfBuzz is right for you, read
- <ulink url="http://mces.blogspot.in/2009/11/pango-vs-harfbuzz.html">this</ulink>.
- </para>
- </section>
- <section id="building">
- <title>Building</title>
- <para>
- On Linux, install the development packages for FreeType, Cairo, and GLib.
- For example, on Ubuntu / Debian, you would do:
- <programlisting>
-<command>sudo apt-get install</command> <package>gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev</package>
- </programlisting>
- whereas on Fedora, RHEL, CentOS, and other Red Hat based systems you would do:
- <programlisting>
-<command>sudo yum install</command> <package>gcc gcc-c++ freetype-devel glib2-devel cairo-devel</package>
- </programlisting>
- or using MacPorts:
- <programlisting>
-<command>sudo port install</command> <package>freetype glib2 cairo</package>
- </programlisting>
- </para>
- <para>
- If you are using a tarball, you can now proceed to running
- <command>configure</command> and <command>make</command> as with any
- other standard package. That should leave you with a shared library in
- <filename>src/</filename>, and a few utility programs including hb-view
- and hb-shape under <filename>util/</filename>.
- </para>
- <para>
- If you are bootstraping from git, you need a few more tools before you
- can run <filename>autogen.sh</filename> for the first time. Namely,
- pkg-config and <ulink url="http://www.complang.org/ragel/">ragel</ulink>.
- Again, on Ubuntu / Debian:
- <programlisting>
-<command>sudo apt-get install</command> <package>autoconf automake libtool pkg-config ragel gtk-doc-tools</package>
- </programlisting>
- and on Fedora, RHEL, CentOS:
- <programlisting>
-<command>sudo yum install</command> <package>autoconf automake libtool pkgconfig ragel gtk-doc</package>
- </programlisting>
- or using MacPorts:
- <programlisting>
-<command>sudo port install</command> <package>autoconf automake libtool pkgconfig ragel gtk-doc</package>
- </programlisting>
- </para>
- </section>
-</chapter>
diff --git a/docs/usermanual-opentype-features.xml b/docs/usermanual-opentype-features.xml
deleted file mode 100644
index 470bab8..0000000
--- a/docs/usermanual-opentype-features.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<chapter id="shaping-and-shape-plans">
- <title>Shaping and shape plans</title>
- <section id="opentype-features">
- <title>OpenType features</title>
- <para>
- </para>
- </section>
- <section id="plans-and-caching">
- <title>Plans and caching</title>
- <para>
- </para>
- </section>
-</chapter> \ No newline at end of file
diff --git a/docs/usermanual-what-is-harfbuzz.xml b/docs/usermanual-what-is-harfbuzz.xml
deleted file mode 100644
index 3574d75..0000000
--- a/docs/usermanual-what-is-harfbuzz.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<chapter id="what-is-harfbuzz">
- <title>What is Harfbuzz?</title>
- <para>
- Harfbuzz is a <emphasis>text shaping engine</emphasis>. It solves
- the problem of selecting and positioning glyphs from a font given a
- Unicode string.
- </para>
- <section id="why-do-i-need-it">
- <title>Why do I need it?</title>
- <para>
- Text shaping is an integral part of preparing text for display. It
- is a fairly low level operation; Harfbuzz is used directly by
- graphic rendering libraries such as Pango, and the layout engines
- in Firefox, LibreOffice and Chromium. Unless you are
- <emphasis>writing</emphasis> one of these layout engines yourself,
- you will probably not need to use Harfbuzz - normally higher level
- libraries will turn text into glyphs for you.
- </para>
- <para>
- However, if you <emphasis>are</emphasis> writing a layout engine
- or graphics library yourself, you will need to perform text
- shaping, and this is where Harfbuzz can help you. Here are some
- reasons why you need it:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- OpenType fonts contain a set of glyphs, indexed by glyph ID.
- The glyph ID within the font does not necessarily relate to a
- Unicode codepoint. For instance, some fonts have the letter
- &quot;a&quot; as glyph ID 1. To pull the right glyph out of
- the font in order to display it, you need to consult a table
- within the font (the &quot;cmap&quot; table) which maps
- Unicode codepoints to glyph IDs. Text shaping turns codepoints
- into glyph IDs.
- </para>
- </listitem>
- <listitem>
- <para>
- Many OpenType fonts contain ligatures: combinations of
- characters which are rendered together. For instance, it's
- common for the <literal>fi</literal> combination to appear in
- print as the single ligature &quot;fi&quot;. Whether you should
- render text as <literal>fi</literal> or &quot;fi&quot; does not
- depend on the input text, but on the capabilities of the font
- and the level of ligature application you wish to perform.
- Text shaping involves querying the font's ligature tables and
- determining what substitutions should be made.
- </para>
- </listitem>
- <listitem>
- <para>
- While ligatures like &quot;fi&quot; are typographic
- refinements, some languages <emphasis>require</emphasis> such
- substitutions to be made in order to display text correctly.
- In Tamil, when the letter &quot;TTA&quot; (ட) letter is
- followed by &quot;U&quot; (உ), the combination should appear
- as the single glyph &quot;டு&quot;. The sequence of Unicode
- characters &quot;டஉ&quot; needs to be rendered as a single
- glyph from the font - text shaping chooses the correct glyph
- from the sequence of characters provided.
- </para>
- </listitem>
- <listitem>
- <para>
- Similarly, each Arabic character has four different variants:
- within a font, there will be glyphs for the initial, medial,
- final, and isolated forms of each letter. Unicode only encodes
- one codepoint per character, and so a Unicode string will not
- tell you which glyph to use. Text shaping chooses the correct
- form of the letter and returns the correct glyph from the font
- that you need to render.
- </para>
- </listitem>
- <listitem>
- <para>
- Other languages have marks and accents which need to be
- rendered in certain positions around a base character. For
- instance, the Moldovan language has the Cyrillic letter
- &quot;zhe&quot; (ж) with a breve accent, like so: ӂ. Some
- fonts will contain this character as an individual glyph,
- whereas other fonts will not contain a zhe-with-breve glyph
- but expect the rendering engine to form the character by
- overlaying the two glyphs ж and ˘. Where you should draw the
- combining breve depends on the height of the preceding glyph.
- Again, for Arabic, the correct positioning of vowel marks
- depends on the height of the character on which you are
- placing the mark. Text shaping tells you whether you have a
- precomposed glyph within your font or if you need to compose a
- glyph yourself out of combining marks, and if so, where to
- position those marks.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- If this is something that you need to do, then you need a text
- shaping engine: you could use Uniscribe if you are using Windows;
- you could use CoreText on OS X; or you could use Harfbuzz. In the
- rest of this manual, we are going to assume that you are the
- implementor of a text layout engine.
- </para>
- </section>
- <section id="why-is-it-called-harfbuzz">
- <title>Why is it called Harfbuzz?</title>
- <para>
- Harfbuzz began its life as text shaping code within the FreeType
- project, (and you will see references to the FreeType authors
- within the source code copyright declarations) but was then
- abstracted out to its own project. This project is maintained by
- Behdad Esfahbod, and named Harfbuzz. Originally, it was a shaping
- engine for OpenType fonts - &quot;Harfbuzz&quot; is the Persian
- for &quot;open type&quot;.
- </para>
- </section>
-</chapter> \ No newline at end of file
diff --git a/docs/version.xml b/docs/version.xml
deleted file mode 100644
index c04c650..0000000
--- a/docs/version.xml
+++ /dev/null
@@ -1 +0,0 @@
-1.2.7
diff --git a/ltmain.sh b/ltmain.sh
index a356aca..a50a21a 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,9 +1,10 @@
+#! /bin/sh
-# libtool (GNU libtool) 2.4.2
+# libtool (GNU libtool) 2.4.2.418
+# Provide generalized library-building support services.
# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions. There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -23,881 +24,2013 @@
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING. If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html,
-# or obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# Usage: $progname [OPTION]... [MODE-ARG]...
-#
-# Provide generalized library-building support services.
-#
-# --config show all configuration variables
-# --debug enable verbose shell tracing
-# -n, --dry-run display commands without modifying any files
-# --features display basic configuration information and exit
-# --mode=MODE use operation mode MODE
-# --preserve-dup-deps don't remove duplicate dependency libraries
-# --quiet, --silent don't print informational messages
-# --no-quiet, --no-silent
-# print informational messages (default)
-# --no-warn don't display warning messages
-# --tag=TAG use configuration variables from tag TAG
-# -v, --verbose print more informational messages than default
-# --no-verbose don't print the extra informational messages
-# --version print version information
-# -h, --help, --help-all print short, long, or detailed help message
-#
-# MODE must be one of the following:
-#
-# clean remove files from the build directory
-# compile compile a source file into a libtool object
-# execute automatically set library path, then run a program
-# finish complete the installation of libtool libraries
-# install install libraries or executables
-# link create a library or an executable
-# uninstall remove libraries from an installed directory
-#
-# MODE-ARGS vary depending on the MODE. When passed as first option,
-# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
-# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
-#
-# When reporting a bug, please describe a test case to reproduce it and
-# include the following information:
-#
-# host-triplet: $host
-# shell: $SHELL
-# compiler: $LTCC
-# compiler flags: $LTCFLAGS
-# linker: $LD (gnu? $with_gnu_ld)
-# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
-# automake: $automake_version
-# autoconf: $autoconf_version
-#
-# Report bugs to <bug-libtool@gnu.org>.
-# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
-# General help using GNU software: <http://www.gnu.org/gethelp/>.
PROGRAM=libtool
PACKAGE=libtool
-VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1"
-TIMESTAMP=""
-package_revision=1.3337
+VERSION=2.4.2.418
+package_revision=2.4.2.418
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Run './libtool --help' for help with using this script from the
+# command line.
+
+
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+
+# After configure completes, it has a better idea of some of the
+# shell tools we need than the defaults used by the functions shared
+# with bootstrap, so set those here where they can still be over-
+# ridden by the user, but otherwise take precedence.
+
+: ${AUTOCONF="autoconf"}
+: ${AUTOMAKE="automake"}
+
+
+## -------------------------- ##
+## Source external libraries. ##
+## -------------------------- ##
+
+# Much of our low-level functionality needs to be sourced from external
+# libraries, which are installed to $pkgauxdir.
+
+# Set a version string for this script.
+scriptversion=2013-08-23.20; # UTC
+
+# General shell script boiler plate, and helper functions.
+# Written by Gary V. Vaughan, 2004
+
+# Copyright (C) 2004-2013 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions. There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+
+# As a special exception to the GNU General Public License, if you distribute
+# this file as part of a program or library that is built using GNU Libtool,
+# you may include this file under the same distribution terms that you use
+# for the rest of that program.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Please report bugs or propose patches to gary@gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Evaluate this file near the top of your script to gain access to
+# the functions and variables defined here:
+#
+# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
+#
+# If you need to override any of the default environment variable
+# settings, do that before evaluating this file.
+
+
+## -------------------- ##
+## Shell normalisation. ##
+## -------------------- ##
+
+# Some shells need a little help to be as Bourne compatible as possible.
+# Before doing anything else, make sure all that help has been provided!
+
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+ case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac
fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
- eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-}
-
-# NLS nuisances: We save the old values to restore during execute mode.
-lt_user_locale=
-lt_safe_locale=
-for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+# NLS nuisances: We save the old values in case they are required later.
+_G_user_locale=
+_G_safe_locale=
+for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
do
- eval "if test \"\${$lt_var+set}\" = set; then
- save_$lt_var=\$$lt_var
- $lt_var=C
- export $lt_var
- lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
- lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+ eval "if test set = \"\${$_G_var+set}\"; then
+ save_$_G_var=\$$_G_var
+ $_G_var=C
+ export $_G_var
+ _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
+ _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
fi"
done
-LC_ALL=C
-LANGUAGE=C
-export LANGUAGE LC_ALL
-$lt_unset CDPATH
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+# Make sure IFS has a sensible default
+sp=' '
+nl='
+'
+IFS="$sp $nl"
+
+# There are still modern systems that have problems with 'echo' mis-
+# handling backslashes, among others, so make sure $bs_echo is set to a
+# command that correctly interprets backslashes.
+# (this code from Autoconf 2.68)
+
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+bs_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+bs_echo=$bs_echo$bs_echo$bs_echo$bs_echo$bs_echo
+bs_echo=$bs_echo$bs_echo$bs_echo$bs_echo$bs_echo$bs_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $bs_echo`" = "X$bs_echo") 2>/dev/null; then
+ bs_echo='print -r --'
+ bs_echo_n='print -rn --'
+elif (test "X`printf %s $bs_echo`" = "X$bs_echo") 2>/dev/null; then
+ bs_echo='printf %s\n'
+ bs_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $bs_echo) 2>/dev/null`" = "X-n $bs_echo"; then
+ bs_echo_body='eval /usr/ucb/echo -n "$1$nl"'
+ bs_echo_n='/usr/ucb/echo -n'
+ else
+ bs_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ bs_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$nl"*)
+ expr "X$arg" : "X\\(.*\\)$nl";
+ arg=`expr "X$arg" : ".*$nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$nl"
+ '
+ export bs_echo_n_body
+ bs_echo_n='sh -c $bs_echo_n_body bs_echo'
+ fi
+ export bs_echo_body
+ bs_echo='sh -c $bs_echo_body bs_echo'
+fi
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath="$0"
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+# All uppercase variable names are used for environment variables. These
+# variables can be overridden by the user before calling a script that
+# uses them if a suitable command of that name is not already available
+# in the command search PATH.
: ${CP="cp -f"}
-test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
+: ${ECHO="$bs_echo"}
+: ${EGREP="grep -E"}
+: ${FGREP="grep -F"}
+: ${GREP="grep"}
+: ${LN_S="ln -s"}
: ${MAKE="make"}
: ${MKDIR="mkdir"}
: ${MV="mv -f"}
: ${RM="rm -f"}
+: ${SED="sed"}
: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
-: ${Xsed="$SED -e 1s/^X//"}
-
-# Global variables:
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
-EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
-exit_status=$EXIT_SUCCESS
-# Make sure IFS has a sensible default
-lt_nl='
-'
-IFS=" $lt_nl"
+## -------------------- ##
+## Useful sed snippets. ##
+## -------------------- ##
-dirname="s,/[^/]*$,,"
-basename="s,^.*/,,"
+sed_dirname='s|/[^/]*$||'
+sed_basename='s|^.*/||'
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
- if test "X$func_dirname_result" = "X${1}"; then
- func_dirname_result="${3}"
- else
- func_dirname_result="$func_dirname_result${2}"
- fi
-} # func_dirname may be replaced by extended shell implementation
-
-
-# func_basename file
-func_basename ()
-{
- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
-} # func_basename may be replaced by extended shell implementation
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+# Same as above, but do not quote variable references.
+sed_double_quote_subst='s/\(["`\\]\)/\\\1/g'
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-# dirname: Compute the dirname of FILE. If nonempty,
-# add APPEND to the result, otherwise set result
-# to NONDIR_REPLACEMENT.
-# value returned in "$func_dirname_result"
-# basename: Compute filename of FILE.
-# value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
- # Extract subdirectory from the argument.
- func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
- if test "X$func_dirname_result" = "X${1}"; then
- func_dirname_result="${3}"
- else
- func_dirname_result="$func_dirname_result${2}"
- fi
- func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
-} # func_dirname_and_basename may be replaced by extended shell implementation
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g'
+# Sed substitution that converts a w32 file name or path
+# that contains forward slashes, into one that contains
+# (escaped) backslashes. A very naive implementation.
+sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-'\' parameter expansions in output of sed_double_quote_subst that
+# were '\'-ed in input to the same. If an odd number of '\' preceded a
+# '$' in input to sed_double_quote_subst, that '$' was protected from
+# expansion. Since each input '\' is now two '\'s, look for any number
+# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'.
+_G_bs='\\'
+_G_bs2='\\\\'
+_G_bs4='\\\\\\\\'
+_G_dollar='\$'
+sed_double_backslash="\
+ s/$_G_bs4/&\\
+/g
+ s/^$_G_bs2$_G_dollar/$_G_bs&/
+ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
+ s/\n//g"
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
- case ${2} in
- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
- esac
-} # func_stripname may be replaced by extended shell implementation
+## ----------------- ##
+## Global variables. ##
+## ----------------- ##
-# These SED scripts presuppose an absolute path with a trailing slash.
-pathcar='s,^/\([^/]*\).*$,\1,'
-pathcdr='s,^/[^/]*,,'
-removedotparts=':dotsl
- s@/\./@/@g
- t dotsl
- s,/\.$,/,'
-collapseslashes='s@/\{1,\}@/@g'
-finalslash='s,/*$,/,'
+# Except for the global variables explicitly listed below, the following
+# functions in the '^func_' namespace, and the '^require_' namespace
+# variables initialised in the 'Resource management' section, sourcing
+# this file will not pollute your global namespace with anything
+# else. There's no portable way to scope variables in Bourne shell
+# though, so actually running these functions will sometimes place
+# results into a variable named after the function, and often use
+# temporary variables in the '^_G_' namespace. If you are careful to
+# avoid using those namespaces casually in your sourcing script, things
+# should continue to work as you expect. And, of course, you can freely
+# overwrite any of the functions or variables defined here before
+# calling anything to customize them.
-# func_normal_abspath PATH
-# Remove doubled-up and trailing slashes, "." path components,
-# and cancel out any ".." path components in PATH after making
-# it an absolute path.
-# value returned in "$func_normal_abspath_result"
-func_normal_abspath ()
-{
- # Start from root dir and reassemble the path.
- func_normal_abspath_result=
- func_normal_abspath_tpath=$1
- func_normal_abspath_altnamespace=
- case $func_normal_abspath_tpath in
- "")
- # Empty path, that just means $cwd.
- func_stripname '' '/' "`pwd`"
- func_normal_abspath_result=$func_stripname_result
- return
- ;;
- # The next three entries are used to spot a run of precisely
- # two leading slashes without using negated character classes;
- # we take advantage of case's first-match behaviour.
- ///*)
- # Unusual form of absolute path, do nothing.
- ;;
- //*)
- # Not necessarily an ordinary path; POSIX reserves leading '//'
- # and for example Cygwin uses it to access remote file shares
- # over CIFS/SMB, so we conserve a leading double slash if found.
- func_normal_abspath_altnamespace=/
- ;;
- /*)
- # Absolute path, do nothing.
- ;;
- *)
- # Relative path, prepend $cwd.
- func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
- ;;
- esac
- # Cancel out all the simple stuff to save iterations. We also want
- # the path to end with a slash for ease of parsing, so make sure
- # there is one (and only one) here.
- func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
- -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
- while :; do
- # Processed it all yet?
- if test "$func_normal_abspath_tpath" = / ; then
- # If we ascended to the root using ".." the result may be empty now.
- if test -z "$func_normal_abspath_result" ; then
- func_normal_abspath_result=/
- fi
- break
- fi
- func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
- -e "$pathcar"`
- func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
- -e "$pathcdr"`
- # Figure out what to do with it
- case $func_normal_abspath_tcomponent in
- "")
- # Trailing empty path component, ignore it.
- ;;
- ..)
- # Parent dir; strip last assembled component from result.
- func_dirname "$func_normal_abspath_result"
- func_normal_abspath_result=$func_dirname_result
- ;;
- *)
- # Actual path component, append it.
- func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
- ;;
- esac
- done
- # Restore leading double-slash if one was found on entry.
- func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
-}
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
-# func_relative_path SRCDIR DSTDIR
-# generates a relative path from SRCDIR to DSTDIR, with a trailing
-# slash if non-empty, suitable for immediately appending a filename
-# without needing to append a separator.
-# value returned in "$func_relative_path_result"
-func_relative_path ()
-{
- func_relative_path_result=
- func_normal_abspath "$1"
- func_relative_path_tlibdir=$func_normal_abspath_result
- func_normal_abspath "$2"
- func_relative_path_tbindir=$func_normal_abspath_result
-
- # Ascend the tree starting from libdir
- while :; do
- # check if we have found a prefix of bindir
- case $func_relative_path_tbindir in
- $func_relative_path_tlibdir)
- # found an exact match
- func_relative_path_tcancelled=
- break
- ;;
- $func_relative_path_tlibdir*)
- # found a matching prefix
- func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
- func_relative_path_tcancelled=$func_stripname_result
- if test -z "$func_relative_path_result"; then
- func_relative_path_result=.
- fi
- break
- ;;
- *)
- func_dirname $func_relative_path_tlibdir
- func_relative_path_tlibdir=${func_dirname_result}
- if test "x$func_relative_path_tlibdir" = x ; then
- # Have to descend all the way to the root!
- func_relative_path_result=../$func_relative_path_result
- func_relative_path_tcancelled=$func_relative_path_tbindir
- break
- fi
- func_relative_path_result=../$func_relative_path_result
- ;;
- esac
- done
+# Allow overriding, eg assuming that you follow the convention of
+# putting '$debug_cmd' at the start of all your functions, you can get
+# bash to show function call trace with:
+#
+# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
+debug_cmd=${debug_cmd-":"}
+exit_cmd=:
- # Now calculate path; take care to avoid doubling-up slashes.
- func_stripname '' '/' "$func_relative_path_result"
- func_relative_path_result=$func_stripname_result
- func_stripname '/' '/' "$func_relative_path_tcancelled"
- if test "x$func_stripname_result" != x ; then
- func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
- fi
+# By convention, finish your script with:
+#
+# exit $exit_status
+#
+# so that you can set exit_status to non-zero if you want to indicate
+# something went wrong during execution without actually bailing out at
+# the point of failure.
+exit_status=$EXIT_SUCCESS
- # Normalisation. If bindir is libdir, return empty string,
- # else relative path ending with a slash; either way, target
- # file name can be directly appended.
- if test ! -z "$func_relative_path_result"; then
- func_stripname './' '' "$func_relative_path_result/"
- func_relative_path_result=$func_stripname_result
- fi
-}
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath=$0
-# The name of this program:
-func_dirname_and_basename "$progpath"
-progname=$func_basename_result
+# The name of this program.
+progname=`$bs_echo "$progpath" |$SED "$sed_basename"`
-# Make sure we have an absolute path for reexecution:
+# Make sure we have an absolute progpath for reexecution:
case $progpath in
[\\/]*|[A-Za-z]:\\*) ;;
*[\\/]*)
- progdir=$func_dirname_result
+ progdir=`$bs_echo "$progpath" |$SED "$sed_dirname"`
progdir=`cd "$progdir" && pwd`
- progpath="$progdir/$progname"
+ progpath=$progdir/$progname
;;
*)
- save_IFS="$IFS"
+ _G_IFS=$IFS
IFS=${PATH_SEPARATOR-:}
for progdir in $PATH; do
- IFS="$save_IFS"
+ IFS=$_G_IFS
test -x "$progdir/$progname" && break
done
- IFS="$save_IFS"
+ IFS=$_G_IFS
test -n "$progdir" || progdir=`pwd`
- progpath="$progdir/$progname"
+ progpath=$progdir/$progname
;;
esac
-# Sed substitution that helps us do robust quoting. It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed="${SED}"' -e 1s/^X//'
-sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
+## ----------------- ##
+## Standard options. ##
+## ----------------- ##
-# Sed substitution that turns a string into a regex matching for the
-# string literally.
-sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
+# The following options affect the operation of the functions defined
+# below, and should be set appropriately depending on run-time para-
+# meters passed on the command line.
-# Sed substitution that converts a w32 file name or path
-# which contains forward slashes, into one that contains
-# (escaped) backslashes. A very naive implementation.
-lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-
-# Re-`\' parameter expansions in output of double_quote_subst that were
-# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
-# in input to double_quote_subst, that '$' was protected from expansion.
-# Since each input `\' is now two `\'s, look for any number of runs of
-# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
-bs='\\'
-bs2='\\\\'
-bs4='\\\\\\\\'
-dollar='\$'
-sed_double_backslash="\
- s/$bs4/&\\
-/g
- s/^$bs2$dollar/$bs&/
- s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
- s/\n//g"
-
-# Standard options:
opt_dry_run=false
-opt_help=false
opt_quiet=false
opt_verbose=false
-opt_warning=:
-# func_echo arg...
-# Echo program name prefixed message, along with the current mode
-# name if it has been set yet.
-func_echo ()
+# Categories 'all' and 'none' are always available. Append any others
+# you will pass as the first argument to func_warning from your own
+# code.
+warning_categories=
+
+# By default, display warnings according to 'opt_warning_types'. Set
+# 'warning_func' to ':' to elide all warnings, or func_fatal_error to
+# treat the next displayed warning as a fatal error.
+warning_func=func_warn_and_continue
+
+# Set to 'all' to display all warnings, 'none' to suppress all
+# warnings, or a space delimited list of some subset of
+# 'warning_categories' to display only the listed warnings.
+opt_warning_types=all
+
+
+## -------------------- ##
+## Resource management. ##
+## -------------------- ##
+
+# This section contains definitions for functions that each ensure a
+# particular resource (a file, or a non-empty configuration variable for
+# example) is available, and if appropriate to extract default values
+# from pertinent package files. Call them using their associated
+# 'require_*' variable to ensure that they are executed, at most, once.
+#
+# It's entirely deliberate that calling these functions can set
+# variables that don't obey the namespace limitations obeyed by the rest
+# of this file, in order that that they be as useful as possible to
+# callers.
+
+
+# require_term_colors
+# -------------------
+# Allow display of bold text on terminals that support it.
+require_term_colors=func_require_term_colors
+func_require_term_colors ()
{
- $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
+ $debug_cmd
+
+ test -t 1 && {
+ # COLORTERM and USE_ANSI_COLORS environment variables take
+ # precedence, because most terminfo databases neglect to describe
+ # whether color sequences are supported.
+ test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
+
+ if test 1 = "$USE_ANSI_COLORS"; then
+ # Standard ANSI escape sequences
+ tc_reset=''
+ tc_bold=''; tc_standout=''
+ tc_red=''; tc_green=''
+ tc_blue=''; tc_cyan=''
+ else
+ # Otherwise trust the terminfo database after all.
+ test -n "`tput sgr0 2>/dev/null`" && {
+ tc_reset=`tput sgr0`
+ test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold`
+ tc_standout=$tc_bold
+ test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso`
+ test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1`
+ test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2`
+ test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4`
+ test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5`
+ }
+ fi
+ }
+
+ require_term_colors=:
}
-# func_verbose arg...
-# Echo program name prefixed message in verbose mode only.
-func_verbose ()
+
+## ----------------- ##
+## Function library. ##
+## ----------------- ##
+
+# This section contains a variety of useful functions to call in your
+# scripts. Take note of the portable wrappers for features provided by
+# some modern shells, which will fall back to slower equivalents on
+# less featureful shells.
+
+
+# func_append VAR VALUE
+# ---------------------
+# Append VALUE onto the existing contents of VAR.
+
+ # We should try to minimise forks, especially on Windows where they are
+ # unreasonably slow, so skip the feature probes when bash or zsh are
+ # being used:
+ if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
+ : ${_G_HAVE_ARITH_OP="yes"}
+ : ${_G_HAVE_XSI_OPS="yes"}
+ # The += operator was introduced in bash 3.1
+ case $BASH_VERSION in
+ [12].* | 3.0 | 3.0*) ;;
+ *)
+ : ${_G_HAVE_PLUSEQ_OP="yes"}
+ ;;
+ esac
+ fi
+
+ # _G_HAVE_PLUSEQ_OP
+ # Can be empty, in which case the shell is probed, "yes" if += is
+ # useable or anything else if it does not work.
+ test -z "$_G_HAVE_PLUSEQ_OP" \
+ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
+ && _G_HAVE_PLUSEQ_OP=yes
+
+if test yes = "$_G_HAVE_PLUSEQ_OP"
+then
+ # This is an XSI compatible shell, allowing a faster implementation...
+ eval 'func_append ()
+ {
+ $debug_cmd
+
+ eval "$1+=\$2"
+ }'
+else
+ # ...otherwise fall back to using expr, which is often a shell builtin.
+ func_append ()
+ {
+ $debug_cmd
+
+ eval "$1=\$$1\$2"
+ }
+fi
+
+
+# func_append_quoted VAR VALUE
+# ----------------------------
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+if test yes = "$_G_HAVE_PLUSEQ_OP"; then
+ eval 'func_append_quoted ()
+ {
+ $debug_cmd
+
+ func_quote_for_eval "$2"
+ eval "$1+=\\ \$func_quote_for_eval_result"
+ }'
+else
+ func_append_quoted ()
+ {
+ $debug_cmd
+
+ func_quote_for_eval "$2"
+ eval "$1=\$$1\\ \$func_quote_for_eval_result"
+ }
+fi
+
+
+# func_append_uniq VAR VALUE
+# --------------------------
+# Append unique VALUE onto the existing contents of VAR, assuming
+# entries are delimited by the first character of VALUE. For example:
+#
+# func_append_uniq options " --another-option option-argument"
+#
+# will only append to $options if " --another-option option-argument "
+# is not already present somewhere in $options already (note spaces at
+# each end implied by leading space in second argument).
+func_append_uniq ()
{
- $opt_verbose && func_echo ${1+"$@"}
+ $debug_cmd
- # A bug in bash halts the script if the last line of a function
- # fails when set -e is in force, so we need another command to
- # work around that:
- :
+ eval _G_current_value='`$bs_echo $'$1'`'
+ _G_delim=`expr "$2" : '\(.\)'`
+
+ case $_G_delim$_G_current_value$_G_delim in
+ *"$2$_G_delim"*) ;;
+ *) func_append "$@" ;;
+ esac
+}
+
+
+# func_arith TERM...
+# ------------------
+# Set func_arith_result to the result of evaluating TERMs.
+ test -z "$_G_HAVE_ARITH_OP" \
+ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
+ && _G_HAVE_ARITH_OP=yes
+
+if test yes = "$_G_HAVE_ARITH_OP"; then
+ eval 'func_arith ()
+ {
+ $debug_cmd
+
+ func_arith_result=$(( $* ))
+ }'
+else
+ func_arith ()
+ {
+ $debug_cmd
+
+ func_arith_result=`expr "$@"`
+ }
+fi
+
+
+# func_basename FILE
+# ------------------
+# Set func_basename_result to FILE with everything up to and including
+# the last / stripped.
+if test yes = "$_G_HAVE_XSI_OPS"; then
+ # If this shell supports suffix pattern removal, then use it to avoid
+ # forking. Hide the definitions single quotes in case the shell chokes
+ # on unsupported syntax...
+ _b='func_basename_result=${1##*/}'
+ _d='case $1 in
+ */*) func_dirname_result=${1%/*}$2 ;;
+ * ) func_dirname_result=$3 ;;
+ esac'
+
+else
+ # ...otherwise fall back to using sed.
+ _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
+ _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"`
+ if test "X$func_dirname_result" = "X$1"; then
+ func_dirname_result=$3
+ else
+ func_append func_dirname_result "$2"
+ fi'
+fi
+
+eval 'func_basename ()
+{
+ $debug_cmd
+
+ '"$_b"'
+}'
+
+
+# func_dirname FILE APPEND NONDIR_REPLACEMENT
+# -------------------------------------------
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+eval 'func_dirname ()
+{
+ $debug_cmd
+
+ '"$_d"'
+}'
+
+
+# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
+# --------------------------------------------------------
+# Perform func_basename and func_dirname in a single function
+# call:
+# dirname: Compute the dirname of FILE. If nonempty,
+# add APPEND to the result, otherwise set result
+# to NONDIR_REPLACEMENT.
+# value returned in "$func_dirname_result"
+# basename: Compute filename of FILE.
+# value retuned in "$func_basename_result"
+# For efficiency, we do not delegate to the functions above but instead
+# duplicate the functionality here.
+eval 'func_dirname_and_basename ()
+{
+ $debug_cmd
+
+ '"$_b"'
+ '"$_d"'
+}'
+
+
+# func_echo ARG...
+# ----------------
+# Echo program name prefixed message.
+func_echo ()
+{
+ $debug_cmd
+
+ _G_message=$*
+
+ func_echo_IFS=$IFS
+ IFS=$nl
+ for _G_line in $_G_message; do
+ IFS=$func_echo_IFS
+ $bs_echo "$progname: $_G_line"
+ done
+ IFS=$func_echo_IFS
}
-# func_echo_all arg...
+
+# func_echo_all ARG...
+# --------------------
# Invoke $ECHO with all args, space-separated.
func_echo_all ()
{
$ECHO "$*"
}
-# func_error arg...
-# Echo program name prefixed message to standard error.
-func_error ()
+
+# func_echo_infix_1 INFIX ARG...
+# ------------------------------
+# Echo program name, followed by INFIX on the first line, with any
+# additional lines not showing INFIX.
+func_echo_infix_1 ()
{
- $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
+ $debug_cmd
+
+ $require_term_colors
+
+ _G_infix=$1; shift
+ _G_indent=$_G_infix
+ _G_prefix="$progname: $_G_infix: "
+ _G_message=$*
+
+ # Strip color escape sequences before counting printable length
+ for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
+ do
+ test -n "$_G_tc" && {
+ _G_esc_tc=`$bs_echo "$_G_tc" | sed "$sed_make_literal_regex"`
+ _G_indent=`$bs_echo "$_G_indent" | sed "s|$_G_esc_tc||g"`
+ }
+ done
+ _G_indent="$progname: "`echo "$_G_indent" | sed 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes
+
+ func_echo_infix_1_IFS=$IFS
+ IFS=$nl
+ for _G_line in $_G_message; do
+ IFS=$func_echo_infix_1_IFS
+ $bs_echo "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
+ _G_prefix=$_G_indent
+ done
+ IFS=$func_echo_infix_1_IFS
}
-# func_warning arg...
-# Echo program name prefixed warning message to standard error.
-func_warning ()
+
+# func_error ARG...
+# -----------------
+# Echo program name prefixed message to standard error.
+func_error ()
{
- $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
+ $debug_cmd
- # bash bug again:
- :
+ $require_term_colors
+
+ func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2
}
-# func_fatal_error arg...
+
+# func_fatal_error ARG...
+# -----------------------
# Echo program name prefixed message to standard error, and exit.
func_fatal_error ()
{
- func_error ${1+"$@"}
- exit $EXIT_FAILURE
-}
+ $debug_cmd
-# func_fatal_help arg...
-# Echo program name prefixed message to standard error, followed by
-# a help hint, and exit.
-func_fatal_help ()
-{
- func_error ${1+"$@"}
- func_fatal_error "$help"
+ func_error "$*"
+ exit $EXIT_FAILURE
}
-help="Try \`$progname --help' for more information." ## default
-# func_grep expression filename
+# func_grep EXPRESSION FILENAME
+# -----------------------------
# Check whether EXPRESSION matches any line of FILENAME, without output.
func_grep ()
{
+ $debug_cmd
+
$GREP "$1" "$2" >/dev/null 2>&1
}
-# func_mkdir_p directory-path
+# func_len STRING
+# ---------------
+# Set func_len_result to the length of STRING. STRING may not
+# start with a hyphen.
+ test -z "$_G_HAVE_XSI_OPS" \
+ && (eval 'x=a/b/c;
+ test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+ && _G_HAVE_XSI_OPS=yes
+
+if test yes = "$_G_HAVE_XSI_OPS"; then
+ eval 'func_len ()
+ {
+ $debug_cmd
+
+ func_len_result=${#1}
+ }'
+else
+ func_len ()
+ {
+ $debug_cmd
+
+ func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+ }
+fi
+
+
+# func_mkdir_p DIRECTORY-PATH
+# ---------------------------
# Make sure the entire path to DIRECTORY-PATH is available.
func_mkdir_p ()
{
- my_directory_path="$1"
- my_dir_list=
+ $debug_cmd
- if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+ _G_directory_path=$1
+ _G_dir_list=
- # Protect directory names starting with `-'
- case $my_directory_path in
- -*) my_directory_path="./$my_directory_path" ;;
+ if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
+
+ # Protect directory names starting with '-'
+ case $_G_directory_path in
+ -*) _G_directory_path=./$_G_directory_path ;;
esac
# While some portion of DIR does not yet exist...
- while test ! -d "$my_directory_path"; do
+ while test ! -d "$_G_directory_path"; do
# ...make a list in topmost first order. Use a colon delimited
# list incase some portion of path contains whitespace.
- my_dir_list="$my_directory_path:$my_dir_list"
+ _G_dir_list=$_G_directory_path:$_G_dir_list
# If the last portion added has no slash in it, the list is done
- case $my_directory_path in */*) ;; *) break ;; esac
+ case $_G_directory_path in */*) ;; *) break ;; esac
# ...otherwise throw away the child directory and loop
- my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
+ _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
done
- my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
+ _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
- save_mkdir_p_IFS="$IFS"; IFS=':'
- for my_dir in $my_dir_list; do
- IFS="$save_mkdir_p_IFS"
- # mkdir can fail with a `File exist' error if two processes
+ func_mkdir_p_IFS=$IFS; IFS=:
+ for _G_dir in $_G_dir_list; do
+ IFS=$func_mkdir_p_IFS
+ # mkdir can fail with a 'File exist' error if two processes
# try to create one of the directories concurrently. Don't
# stop in that case!
- $MKDIR "$my_dir" 2>/dev/null || :
+ $MKDIR "$_G_dir" 2>/dev/null || :
done
- IFS="$save_mkdir_p_IFS"
+ IFS=$func_mkdir_p_IFS
# Bail out if we (or some other process) failed to create a directory.
- test -d "$my_directory_path" || \
- func_fatal_error "Failed to create \`$1'"
+ test -d "$_G_directory_path" || \
+ func_fatal_error "Failed to create '$1'"
fi
}
-# func_mktempdir [string]
+# func_mktempdir [BASENAME]
+# -------------------------
# Make a temporary directory that won't clash with other running
# libtool processes, and avoids race conditions if possible. If
-# given, STRING is the basename for that directory.
+# given, BASENAME is the basename for that directory.
func_mktempdir ()
{
- my_template="${TMPDIR-/tmp}/${1-$progname}"
+ $debug_cmd
+
+ _G_template=${TMPDIR-/tmp}/${1-$progname}
- if test "$opt_dry_run" = ":"; then
+ if test : = "$opt_dry_run"; then
# Return a directory name, but don't create it in dry-run mode
- my_tmpdir="${my_template}-$$"
+ _G_tmpdir=$_G_template-$$
else
# If mktemp works, use that first and foremost
- my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+ _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
- if test ! -d "$my_tmpdir"; then
+ if test ! -d "$_G_tmpdir"; then
# Failing that, at least try and use $RANDOM to avoid a race
- my_tmpdir="${my_template}-${RANDOM-0}$$"
+ _G_tmpdir=$_G_template-${RANDOM-0}$$
- save_mktempdir_umask=`umask`
+ func_mktempdir_umask=`umask`
umask 0077
- $MKDIR "$my_tmpdir"
- umask $save_mktempdir_umask
+ $MKDIR "$_G_tmpdir"
+ umask $func_mktempdir_umask
fi
# If we're not in dry-run mode, bomb out on failure
- test -d "$my_tmpdir" || \
- func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+ test -d "$_G_tmpdir" || \
+ func_fatal_error "cannot create temporary directory '$_G_tmpdir'"
fi
- $ECHO "$my_tmpdir"
+ $ECHO "$_G_tmpdir"
}
-# func_quote_for_eval arg
-# Aesthetically quote ARG to be evaled later.
-# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
-# is double-quoted, suitable for a subsequent eval, whereas
-# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
-# which are still active within double quotes backslashified.
-func_quote_for_eval ()
+# func_normal_abspath PATH
+# ------------------------
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+func_normal_abspath ()
{
- case $1 in
- *[\\\`\"\$]*)
- func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
- *)
- func_quote_for_eval_unquoted_result="$1" ;;
- esac
+ $debug_cmd
- case $func_quote_for_eval_unquoted_result in
- # Double-quote args containing shell metacharacters to delay
- # word splitting, command substitution and and variable
- # expansion for a subsequent eval.
- # Many Bourne shells cannot handle close brackets correctly
- # in scan sets, so we specify it separately.
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+ # These SED scripts presuppose an absolute path with a trailing slash.
+ _G_pathcar='s|^/\([^/]*\).*$|\1|'
+ _G_pathcdr='s|^/[^/]*||'
+ _G_removedotparts=':dotsl
+ s|/\./|/|g
+ t dotsl
+ s|/\.$|/|'
+ _G_collapseslashes='s|/\{1,\}|/|g'
+ _G_finalslash='s|/*$|/|'
+
+ # Start from root dir and reassemble the path.
+ func_normal_abspath_result=
+ func_normal_abspath_tpath=$1
+ func_normal_abspath_altnamespace=
+ case $func_normal_abspath_tpath in
+ "")
+ # Empty path, that just means $cwd.
+ func_stripname '' '/' "`pwd`"
+ func_normal_abspath_result=$func_stripname_result
+ return
+ ;;
+ # The next three entries are used to spot a run of precisely
+ # two leading slashes without using negated character classes;
+ # we take advantage of case's first-match behaviour.
+ ///*)
+ # Unusual form of absolute path, do nothing.
+ ;;
+ //*)
+ # Not necessarily an ordinary path; POSIX reserves leading '//'
+ # and for example Cygwin uses it to access remote file shares
+ # over CIFS/SMB, so we conserve a leading double slash if found.
+ func_normal_abspath_altnamespace=/
+ ;;
+ /*)
+ # Absolute path, do nothing.
;;
*)
- func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+ # Relative path, prepend $cwd.
+ func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+ ;;
esac
+
+ # Cancel out all the simple stuff to save iterations. We also want
+ # the path to end with a slash for ease of parsing, so make sure
+ # there is one (and only one) here.
+ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
+ while :; do
+ # Processed it all yet?
+ if test / = "$func_normal_abspath_tpath"; then
+ # If we ascended to the root using ".." the result may be empty now.
+ if test -z "$func_normal_abspath_result"; then
+ func_normal_abspath_result=/
+ fi
+ break
+ fi
+ func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$_G_pathcar"`
+ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$_G_pathcdr"`
+ # Figure out what to do with it
+ case $func_normal_abspath_tcomponent in
+ "")
+ # Trailing empty path component, ignore it.
+ ;;
+ ..)
+ # Parent dir; strip last assembled component from result.
+ func_dirname "$func_normal_abspath_result"
+ func_normal_abspath_result=$func_dirname_result
+ ;;
+ *)
+ # Actual path component, append it.
+ func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
+ ;;
+ esac
+ done
+ # Restore leading double-slash if one was found on entry.
+ func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
+}
+
+
+# func_notquiet ARG...
+# --------------------
+# Echo program name prefixed message only when not in quiet mode.
+func_notquiet ()
+{
+ $debug_cmd
+
+ $opt_quiet || func_echo ${1+"$@"}
+
+ # A bug in bash halts the script if the last line of a function
+ # fails when set -e is in force, so we need another command to
+ # work around that:
+ :
}
-# func_quote_for_expand arg
+# func_relative_path SRCDIR DSTDIR
+# --------------------------------
+# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
+func_relative_path ()
+{
+ $debug_cmd
+
+ func_relative_path_result=
+ func_normal_abspath "$1"
+ func_relative_path_tlibdir=$func_normal_abspath_result
+ func_normal_abspath "$2"
+ func_relative_path_tbindir=$func_normal_abspath_result
+
+ # Ascend the tree starting from libdir
+ while :; do
+ # check if we have found a prefix of bindir
+ case $func_relative_path_tbindir in
+ $func_relative_path_tlibdir)
+ # found an exact match
+ func_relative_path_tcancelled=
+ break
+ ;;
+ $func_relative_path_tlibdir*)
+ # found a matching prefix
+ func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+ func_relative_path_tcancelled=$func_stripname_result
+ if test -z "$func_relative_path_result"; then
+ func_relative_path_result=.
+ fi
+ break
+ ;;
+ *)
+ func_dirname $func_relative_path_tlibdir
+ func_relative_path_tlibdir=$func_dirname_result
+ if test -z "$func_relative_path_tlibdir"; then
+ # Have to descend all the way to the root!
+ func_relative_path_result=../$func_relative_path_result
+ func_relative_path_tcancelled=$func_relative_path_tbindir
+ break
+ fi
+ func_relative_path_result=../$func_relative_path_result
+ ;;
+ esac
+ done
+
+ # Now calculate path; take care to avoid doubling-up slashes.
+ func_stripname '' '/' "$func_relative_path_result"
+ func_relative_path_result=$func_stripname_result
+ func_stripname '/' '/' "$func_relative_path_tcancelled"
+ if test -n "$func_stripname_result"; then
+ func_append func_relative_path_result "/$func_stripname_result"
+ fi
+
+ # Normalisation. If bindir is libdir, return '.' else relative path.
+ if test -n "$func_relative_path_result"; then
+ func_stripname './' '' "$func_relative_path_result"
+ func_relative_path_result=$func_stripname_result
+ fi
+
+ test -n "$func_relative_path_result" || func_relative_path_result=.
+
+ :
+}
+
+
+# func_quote_for_eval ARG...
+# --------------------------
+# Aesthetically quote ARGs to be evaled later.
+# This function returns two values:
+# i) func_quote_for_eval_result
+# double-quoted, suitable for a subsequent eval
+# ii) func_quote_for_eval_unquoted_result
+# has all characters that are still active within double
+# quotes backslashified.
+func_quote_for_eval ()
+{
+ $debug_cmd
+
+ func_quote_for_eval_unquoted_result=
+ func_quote_for_eval_result=
+ while test 0 -lt $#; do
+ case $1 in
+ *[\\\`\"\$]*)
+ _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
+ *)
+ _G_unquoted_arg=$1 ;;
+ esac
+ if test -n "$func_quote_for_eval_unquoted_result"; then
+ func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
+ else
+ func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
+ fi
+
+ case $_G_unquoted_arg in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting, command substitution and variable expansion
+ # for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ _G_quoted_arg=\"$_G_unquoted_arg\"
+ ;;
+ *)
+ _G_quoted_arg=$_G_unquoted_arg
+ ;;
+ esac
+
+ if test -n "$func_quote_for_eval_result"; then
+ func_append func_quote_for_eval_result " $_G_quoted_arg"
+ else
+ func_append func_quote_for_eval_result "$_G_quoted_arg"
+ fi
+ shift
+ done
+}
+
+
+# func_quote_for_expand ARG
+# -------------------------
# Aesthetically quote ARG to be evaled later; same as above,
# but do not quote variable references.
func_quote_for_expand ()
{
+ $debug_cmd
+
case $1 in
*[\\\`\"]*)
- my_arg=`$ECHO "$1" | $SED \
- -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+ _G_arg=`$ECHO "$1" | $SED \
+ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
*)
- my_arg="$1" ;;
+ _G_arg=$1 ;;
esac
- case $my_arg in
+ case $_G_arg in
# Double-quote args containing shell metacharacters to delay
# word splitting and command substitution for a subsequent eval.
# Many Bourne shells cannot handle close brackets correctly
# in scan sets, so we specify it separately.
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- my_arg="\"$my_arg\""
+ _G_arg=\"$_G_arg\"
;;
esac
- func_quote_for_expand_result="$my_arg"
+ func_quote_for_expand_result=$_G_arg
}
-# func_show_eval cmd [fail_exp]
-# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
+# func_stripname PREFIX SUFFIX NAME
+# ---------------------------------
+# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+if test yes = "$_G_HAVE_XSI_OPS"; then
+ eval 'func_stripname ()
+ {
+ $debug_cmd
+
+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+ # positional parameters, so assign one to ordinary variable first.
+ func_stripname_result=$3
+ func_stripname_result=${func_stripname_result#"$1"}
+ func_stripname_result=${func_stripname_result%"$2"}
+ }'
+else
+ func_stripname ()
+ {
+ $debug_cmd
+
+ case $2 in
+ .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
+ *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
+ esac
+ }
+fi
+
+
+# func_show_eval CMD [FAIL_EXP]
+# -----------------------------
+# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is
# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
# is given, then evaluate it.
func_show_eval ()
{
- my_cmd="$1"
- my_fail_exp="${2-:}"
+ $debug_cmd
- ${opt_silent-false} || {
- func_quote_for_expand "$my_cmd"
- eval "func_echo $func_quote_for_expand_result"
- }
+ _G_cmd=$1
+ _G_fail_exp=${2-':'}
+
+ func_quote_for_expand "$_G_cmd"
+ eval "func_notquiet $func_quote_for_expand_result"
- if ${opt_dry_run-false}; then :; else
- eval "$my_cmd"
- my_status=$?
- if test "$my_status" -eq 0; then :; else
- eval "(exit $my_status); $my_fail_exp"
+ $opt_dry_run || {
+ eval "$_G_cmd"
+ _G_status=$?
+ if test 0 -ne "$_G_status"; then
+ eval "(exit $_G_status); $_G_fail_exp"
fi
- fi
+ }
}
-# func_show_eval_locale cmd [fail_exp]
-# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
+# func_show_eval_locale CMD [FAIL_EXP]
+# ------------------------------------
+# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is
# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
# is given, then evaluate it. Use the saved locale for evaluation.
func_show_eval_locale ()
{
- my_cmd="$1"
- my_fail_exp="${2-:}"
+ $debug_cmd
+
+ _G_cmd=$1
+ _G_fail_exp=${2-':'}
- ${opt_silent-false} || {
- func_quote_for_expand "$my_cmd"
+ $opt_quiet || {
+ func_quote_for_expand "$_G_cmd"
eval "func_echo $func_quote_for_expand_result"
}
- if ${opt_dry_run-false}; then :; else
- eval "$lt_user_locale
- $my_cmd"
- my_status=$?
- eval "$lt_safe_locale"
- if test "$my_status" -eq 0; then :; else
- eval "(exit $my_status); $my_fail_exp"
+ $opt_dry_run || {
+ eval "$_G_user_locale
+ $_G_cmd"
+ _G_status=$?
+ eval "$_G_safe_locale"
+ if test 0 -ne "$_G_status"; then
+ eval "(exit $_G_status); $_G_fail_exp"
fi
- fi
+ }
}
+
# func_tr_sh
+# ----------
# Turn $1 into a string suitable for a shell variable name.
# Result is stored in $func_tr_sh_result. All characters
# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
# if $1 begins with a digit, a '_' is prepended as well.
func_tr_sh ()
{
- case $1 in
- [0-9]* | *[!a-zA-Z0-9_]*)
- func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
- ;;
- * )
- func_tr_sh_result=$1
- ;;
- esac
+ $debug_cmd
+
+ case $1 in
+ [0-9]* | *[!a-zA-Z0-9_]*)
+ func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
+ ;;
+ * )
+ func_tr_sh_result=$1
+ ;;
+ esac
}
-# func_version
-# Echo version message to standard output and exit.
-func_version ()
+# func_verbose ARG...
+# -------------------
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
{
- $opt_debug
+ $debug_cmd
- $SED -n '/(C)/!b go
- :more
- /\./!{
- N
- s/\n# / /
- b more
- }
- :go
- /^# '$PROGRAM' (GNU /,/# warranty; / {
- s/^# //
- s/^# *$//
- s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
- p
- }' < "$progpath"
- exit $?
+ $opt_verbose && func_echo "$*"
+
+ :
}
-# func_usage
-# Echo short help message to standard output and exit.
-func_usage ()
+
+# func_warn_and_continue ARG...
+# -----------------------------
+# Echo program name prefixed warning message to standard error.
+func_warn_and_continue ()
{
- $opt_debug
+ $debug_cmd
- $SED -n '/^# Usage:/,/^# *.*--help/ {
- s/^# //
- s/^# *$//
- s/\$progname/'$progname'/
- p
- }' < "$progpath"
- echo
- $ECHO "run \`$progname --help | more' for full usage"
- exit $?
+ $require_term_colors
+
+ func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
+}
+
+
+# func_warning CATEGORY ARG...
+# ----------------------------
+# Echo program name prefixed warning message to standard error. Warning
+# messages can be filtered according to CATEGORY, where this function
+# elides messages where CATEGORY is not listed in the global variable
+# 'opt_warning_types'.
+func_warning ()
+{
+ $debug_cmd
+
+ # CATEGORY must be in the warning_categories list!
+ case " $warning_categories " in
+ *" $1 "*) ;;
+ *) func_internal_error "invalid warning category '$1'" ;;
+ esac
+
+ _G_category=$1
+ shift
+
+ case " $opt_warning_types " in
+ *" $_G_category "*) $warning_func ${1+"$@"} ;;
+ esac
+}
+
+
+# func_sort_ver VER1 VER2
+# -----------------------
+# 'sort -V' is not generally available.
+# Note this deviates from the version comparison in automake
+# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
+# but this should suffice as we won't be specifying old
+# version formats or redundant trailing .0 in bootstrap.conf.
+# If we did want full compatibility then we should probably
+# use m4_version_compare from autoconf.
+func_sort_ver ()
+{
+ $debug_cmd
+
+ ver1=$1
+ ver2=$2
+
+ # Split on '.' and compare each component.
+ i=1
+ while :; do
+ p1=`echo "$ver1" |cut -d. -f$i`
+ p2=`echo "$ver2" |cut -d. -f$i`
+ if test ! "$p1"; then
+ echo "$1 $2"
+ break
+ elif test ! "$p2"; then
+ echo "$2 $1"
+ break
+ elif test ! "$p1" = "$p2"; then
+ if test "$p1" -gt "$p2" 2>/dev/null; then # numeric comparison
+ echo "$2 $1"
+ elif test "$p2" -gt "$p1" 2>/dev/null; then # numeric comparison
+ echo "$1 $2"
+ else # numeric, then lexicographic comparison
+ lp=`printf "$p1\n$p2\n" |sort -n |tail -n1`
+ if test "$lp" = "$p2"; then
+ echo "$1 $2"
+ else
+ echo "$2 $1"
+ fi
+ fi
+ break
+ fi
+ i=`expr $i + 1`
+ done
+}
+
+
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
+#! /bin/sh
+
+# Set a version string for this script.
+scriptversion=2012-10-21.11; # UTC
+
+# A portable, pluggable option parser for Bourne shell.
+# Written by Gary V. Vaughan, 2010
+
+# Copyright (C) 2010-2013 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions. There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Please report bugs or propose patches to gary@gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# This file is a library for parsing options in your shell scripts along
+# with assorted other useful supporting features that you can make use
+# of too.
+#
+# For the simplest scripts you might need only:
+#
+# #!/bin/sh
+# . relative/path/to/funclib.sh
+# . relative/path/to/options-parser
+# scriptversion=1.0
+# func_options ${1+"$@"}
+# eval set dummy "$func_options_result"; shift
+# ...rest of your script...
+#
+# In order for the '--version' option to work, you will need to have a
+# suitably formatted comment like the one at the top of this file
+# starting with '# Written by ' and ending with '# warranty; '.
+#
+# For '-h' and '--help' to work, you will also need a one line
+# description of your script's purpose in a comment directly above the
+# '# Written by ' line, like the one at the top of this file.
+#
+# The default options also support '--debug', which will turn on shell
+# execution tracing (see the comment above debug_cmd below for another
+# use), and '--verbose' and the func_verbose function to allow your script
+# to display verbose messages only when your user has specified
+# '--verbose'.
+#
+# After sourcing this file, you can plug processing for additional
+# options by amending the variables from the 'Configuration' section
+# below, and following the instructions in the 'Option parsing'
+# section further down.
+
+## -------------- ##
+## Configuration. ##
+## -------------- ##
+
+# You should override these variables in your script after sourcing this
+# file so that they reflect the customisations you have added to the
+# option parser.
+
+# The usage line for option parsing errors and the start of '-h' and
+# '--help' output messages. You can embed shell variables for delayed
+# expansion at the time the message is displayed, but you will need to
+# quote other shell meta-characters carefully to prevent them being
+# expanded when the contents are evaled.
+usage='$progpath [OPTION]...'
+
+# Short help message in response to '-h' and '--help'. Add to this or
+# override it after sourcing this library to reflect the full set of
+# options your script accepts.
+usage_message="\
+ --debug enable verbose shell tracing
+ -W, --warnings=CATEGORY
+ report the warnings falling in CATEGORY [all]
+ -v, --verbose verbosely report processing
+ --version print version information and exit
+ -h, --help print short or long help message and exit
+"
+
+# Additional text appended to 'usage_message' in response to '--help'.
+long_help_message="
+Warning categories include:
+ 'all' show all warnings
+ 'none' turn off all the warnings
+ 'error' warnings are treated as fatal errors"
+
+# Help message printed before fatal option parsing errors.
+fatal_help="Try '\$progname --help' for more information."
+
+
+
+## ------------------------- ##
+## Hook function management. ##
+## ------------------------- ##
+
+# This section contains functions for adding, removing, and running hooks
+# to the main code. A hook is just a named list of of function, that can
+# be run in order later on.
+
+# func_hookable FUNC_NAME
+# -----------------------
+# Declare that FUNC_NAME will run hooks added with
+# 'func_add_hook FUNC_NAME ...'.
+func_hookable ()
+{
+ $debug_cmd
+
+ func_append hookable_fns " $1"
+}
+
+
+# func_add_hook FUNC_NAME HOOK_FUNC
+# ---------------------------------
+# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must
+# first have been declared "hookable" by a call to 'func_hookable'.
+func_add_hook ()
+{
+ $debug_cmd
+
+ case " $hookable_fns " in
+ *" $1 "*) ;;
+ *) func_fatal_error "'$1' does not accept hook functions." ;;
+ esac
+
+ eval func_append ${1}_hooks '" $2"'
+}
+
+
+# func_remove_hook FUNC_NAME HOOK_FUNC
+# ------------------------------------
+# Remove HOOK_FUNC from the list of functions called by FUNC_NAME.
+func_remove_hook ()
+{
+ $debug_cmd
+
+ eval ${1}_hooks='`$bs_echo "\$'$1'_hooks" |$SED "s| '$2'||"`'
+}
+
+
+# func_run_hooks FUNC_NAME [ARG]...
+# ---------------------------------
+# Run all hook functions registered to FUNC_NAME.
+# It is assumed that the list of hook functions contains nothing more
+# than a whitespace-delimited list of legal shell function names, and
+# no effort is wasted trying to catch shell meta-characters or preserve
+# whitespace.
+func_run_hooks ()
+{
+ $debug_cmd
+
+ case " $hookable_fns " in
+ *" $1 "*) ;;
+ *) func_fatal_error "'$1' does not support hook funcions.n" ;;
+ esac
+
+ eval _G_hook_fns=\$$1_hooks; shift
+
+ for _G_hook in $_G_hook_fns; do
+ eval $_G_hook '"$@"'
+
+ # store returned options list back into positional
+ # parameters for next 'cmd' execution.
+ eval _G_hook_result=\$${_G_hook}_result
+ eval set dummy "$_G_hook_result"; shift
+ done
+
+ func_quote_for_eval ${1+"$@"}
+ func_run_hooks_result=$func_quote_for_eval_result
+}
+
+
+
+## --------------- ##
+## Option parsing. ##
+## --------------- ##
+
+# In order to add your own option parsing hooks, you must accept the
+# full positional parameter list in your hook function, remove any
+# options that you action, and then pass back the remaining unprocessed
+# options in '<hooked_function_name>_result', escaped suitably for
+# 'eval'. Like this:
+#
+# my_options_prep ()
+# {
+# $debug_cmd
+#
+# # Extend the existing usage message.
+# usage_message=$usage_message'
+# -s, --silent don'\''t print informational messages
+# '
+#
+# func_quote_for_eval ${1+"$@"}
+# my_options_prep_result=$func_quote_for_eval_result
+# }
+# func_add_hook func_options_prep my_options_prep
+#
+#
+# my_silent_option ()
+# {
+# $debug_cmd
+#
+# # Note that for efficiency, we parse as many options as we can
+# # recognise in a loop before passing the remainder back to the
+# # caller on the first unrecognised argument we encounter.
+# while test $# -gt 0; do
+# opt=$1; shift
+# case $opt in
+# --silent|-s) opt_silent=: ;;
+# # Separate non-argument short options:
+# -s*) func_split_short_opt "$_G_opt"
+# set dummy "$func_split_short_opt_name" \
+# "-$func_split_short_opt_arg" ${1+"$@"}
+# shift
+# ;;
+# *) set dummy "$_G_opt" "$*"; shift; break ;;
+# esac
+# done
+#
+# func_quote_for_eval ${1+"$@"}
+# my_silent_option_result=$func_quote_for_eval_result
+# }
+# func_add_hook func_parse_options my_silent_option
+#
+#
+# my_option_validation ()
+# {
+# $debug_cmd
+#
+# $opt_silent && $opt_verbose && func_fatal_help "\
+# '--silent' and '--verbose' options are mutually exclusive."
+#
+# func_quote_for_eval ${1+"$@"}
+# my_option_validation_result=$func_quote_for_eval_result
+# }
+# func_add_hook func_validate_options my_option_validation
+#
+# You'll alse need to manually amend $usage_message to reflect the extra
+# options you parse. It's preferable to append if you can, so that
+# multiple option parsing hooks can be added safely.
+
+
+# func_options [ARG]...
+# ---------------------
+# All the functions called inside func_options are hookable. See the
+# individual implementations for details.
+func_hookable func_options
+func_options ()
+{
+ $debug_cmd
+
+ func_options_prep ${1+"$@"}
+ eval func_parse_options \
+ ${func_options_prep_result+"$func_options_prep_result"}
+ eval func_validate_options \
+ ${func_parse_options_result+"$func_parse_options_result"}
+
+ eval func_run_hooks func_options \
+ ${func_validate_options_result+"$func_validate_options_result"}
+
+ # save modified positional parameters for caller
+ func_options_result=$func_run_hooks_result
+}
+
+
+# func_options_prep [ARG]...
+# --------------------------
+# All initialisations required before starting the option parse loop.
+# Note that when calling hook functions, we pass through the list of
+# positional parameters. If a hook function modifies that list, and
+# needs to propogate that back to rest of this script, then the complete
+# modified list must be put in 'func_run_hooks_result' before
+# returning.
+func_hookable func_options_prep
+func_options_prep ()
+{
+ $debug_cmd
+
+ # Option defaults:
+ opt_verbose=false
+ opt_warning_types=
+
+ func_run_hooks func_options_prep ${1+"$@"}
+
+ # save modified positional parameters for caller
+ func_options_prep_result=$func_run_hooks_result
+}
+
+
+# func_parse_options [ARG]...
+# ---------------------------
+# The main option parsing loop.
+func_hookable func_parse_options
+func_parse_options ()
+{
+ $debug_cmd
+
+ func_parse_options_result=
+
+ # this just eases exit handling
+ while test $# -gt 0; do
+ # Defer to hook functions for initial option parsing, so they
+ # get priority in the event of reusing an option name.
+ func_run_hooks func_parse_options ${1+"$@"}
+
+ # Adjust func_parse_options positional parameters to match
+ eval set dummy "$func_run_hooks_result"; shift
+
+ # Break out of the loop if we already parsed every option.
+ test $# -gt 0 || break
+
+ _G_opt=$1
+ shift
+ case $_G_opt in
+ --debug|-x) debug_cmd='set -x'
+ func_echo "enabling shell trace mode"
+ $debug_cmd
+ ;;
+
+ --no-warnings|--no-warning|--no-warn)
+ set dummy --warnings none ${1+"$@"}
+ shift
+ ;;
+
+ --warnings|--warning|-W)
+ test $# = 0 && func_missing_arg $_G_opt && break
+ case " $warning_categories $1" in
+ *" $1 "*)
+ # trailing space prevents matching last $1 above
+ func_append_uniq opt_warning_types " $1"
+ ;;
+ *all)
+ opt_warning_types=$warning_categories
+ ;;
+ *none)
+ opt_warning_types=none
+ warning_func=:
+ ;;
+ *error)
+ opt_warning_types=$warning_categories
+ warning_func=func_fatal_error
+ ;;
+ *)
+ func_fatal_error \
+ "unsupported warning category: '$1'"
+ ;;
+ esac
+ shift
+ ;;
+
+ --verbose|-v) opt_verbose=: ;;
+ --version) func_version ;;
+ -\?|-h) func_usage ;;
+ --help) func_help ;;
+
+ # Separate optargs to long options (plugins may need this):
+ --*=*) func_split_equals "$_G_opt"
+ set dummy "$func_split_equals_lhs" \
+ "$func_split_equals_rhs" ${1+"$@"}
+ shift
+ ;;
+
+ # Separate optargs to short options:
+ -W*)
+ func_split_short_opt "$_G_opt"
+ set dummy "$func_split_short_opt_name" \
+ "$func_split_short_opt_arg" ${1+"$@"}
+ shift
+ ;;
+
+ # Separate non-argument short options:
+ -\?*|-h*|-v*|-x*)
+ func_split_short_opt "$_G_opt"
+ set dummy "$func_split_short_opt_name" \
+ "-$func_split_short_opt_arg" ${1+"$@"}
+ shift
+ ;;
+
+ --) break ;;
+ -*) func_fatal_help "unrecognised option: '$_G_opt'" ;;
+ *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
+ esac
+ done
+
+ # save modified positional parameters for caller
+ func_quote_for_eval ${1+"$@"}
+ func_parse_options_result=$func_quote_for_eval_result
+}
+
+
+# func_validate_options [ARG]...
+# ------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+func_hookable func_validate_options
+func_validate_options ()
+{
+ $debug_cmd
+
+ # Display all warnings if -W was not given.
+ test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
+
+ func_run_hooks func_validate_options ${1+"$@"}
+
+ # Bail if the options were screwed!
+ $exit_cmd $EXIT_FAILURE
+
+ # save modified positional parameters for caller
+ func_validate_options_result=$func_run_hooks_result
}
-# func_help [NOEXIT]
-# Echo long help message to standard output and exit,
-# unless 'noexit' is passed as argument.
+
+
+## ------------------##
+## Helper functions. ##
+## ------------------##
+
+# This section contains the helper functions used by the rest of the
+# hookable option parser framework in ascii-betical order.
+
+
+# func_fatal_help ARG...
+# ----------------------
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+ $debug_cmd
+
+ eval \$bs_echo \""Usage: $usage"\"
+ eval \$bs_echo \""$fatal_help"\"
+ func_error ${1+"$@"}
+ exit $EXIT_FAILURE
+}
+
+
+# func_help
+# ---------
+# Echo long help message to standard output and exit.
func_help ()
{
- $opt_debug
-
- $SED -n '/^# Usage:/,/# Report bugs to/ {
- :print
- s/^# //
- s/^# *$//
- s*\$progname*'$progname'*
- s*\$host*'"$host"'*
- s*\$SHELL*'"$SHELL"'*
- s*\$LTCC*'"$LTCC"'*
- s*\$LTCFLAGS*'"$LTCFLAGS"'*
- s*\$LD*'"$LD"'*
- s/\$with_gnu_ld/'"$with_gnu_ld"'/
- s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
- s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
- p
- d
- }
- /^# .* home page:/b print
- /^# General help using/b print
- ' < "$progpath"
- ret=$?
- if test -z "$1"; then
- exit $ret
- fi
+ $debug_cmd
+
+ func_usage_message
+ $bs_echo "$long_help_message"
+ exit 0
}
-# func_missing_arg argname
+
+# func_missing_arg ARGNAME
+# ------------------------
# Echo program name prefixed message to standard error and set global
# exit_cmd.
func_missing_arg ()
{
- $opt_debug
+ $debug_cmd
- func_error "missing argument for $1."
+ func_error "Missing argument for '$1'."
exit_cmd=exit
}
-# func_split_short_opt shortopt
+# func_split_equals STRING
+# ------------------------
+# Set func_split_equals_lhs and func_split_equals_rhs shell variables after
+# splitting STRING at the '=' sign.
+test -z "$_G_HAVE_XSI_OPS" \
+ && (eval 'x=a/b/c;
+ test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+ && _G_HAVE_XSI_OPS=yes
+
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+ # This is an XSI compatible shell, allowing a faster implementation...
+ eval 'func_split_equals ()
+ {
+ $debug_cmd
+
+ func_split_equals_lhs=${1%%=*}
+ func_split_equals_rhs=${1#*=}
+ test "x$func_split_equals_lhs" = "x$1" \
+ && func_split_equals_rhs=
+ }'
+else
+ # ...otherwise fall back to using expr, which is often a shell builtin.
+ func_split_equals ()
+ {
+ $debug_cmd
+
+ func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
+ func_split_equals_rhs=
+ test "x$func_split_equals_lhs" = "x$1" \
+ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
+ }
+fi #func_split_equals
+
+
+# func_split_short_opt SHORTOPT
+# -----------------------------
# Set func_split_short_opt_name and func_split_short_opt_arg shell
# variables after splitting SHORTOPT after the 2nd character.
-func_split_short_opt ()
-{
- my_sed_short_opt='1s/^\(..\).*$/\1/;q'
- my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+ # This is an XSI compatible shell, allowing a faster implementation...
+ eval 'func_split_short_opt ()
+ {
+ $debug_cmd
+
+ func_split_short_opt_arg=${1#??}
+ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
+ }'
+else
+ # ...otherwise fall back to using expr, which is often a shell builtin.
+ func_split_short_opt ()
+ {
+ $debug_cmd
- func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
- func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
-} # func_split_short_opt may be replaced by extended shell implementation
+ func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
+ func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
+ }
+fi #func_split_short_opt
-# func_split_long_opt longopt
-# Set func_split_long_opt_name and func_split_long_opt_arg shell
-# variables after splitting LONGOPT at the `=' sign.
-func_split_long_opt ()
+# func_usage
+# ----------
+# Echo short help message to standard output and exit.
+func_usage ()
{
- my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
- my_sed_long_arg='1s/^--[^=]*=//'
+ $debug_cmd
- func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
- func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
-} # func_split_long_opt may be replaced by extended shell implementation
+ func_usage_message
+ $bs_echo "Run '$progname --help |${PAGER-more}' for full usage"
+ exit 0
+}
-exit_cmd=:
+# func_usage_message
+# ------------------
+# Echo short help message to standard output.
+func_usage_message ()
+{
+ $debug_cmd
+ eval \$bs_echo \""Usage: $usage"\"
+ echo
+ $SED -n 's|^# ||
+ /^Written by/{
+ x;p;x
+ }
+ h
+ /^Written by/q' < "$progpath"
+ echo
+ eval \$bs_echo \""$usage_message"\"
+}
+# func_version
+# ------------
+# Echo version message to standard output and exit.
+func_version ()
+{
+ $debug_cmd
+
+ printf '%s\n' "$progname $scriptversion"
+ $SED -n '/^##/q
+ /(C)/!b go
+ :more
+ /\./!{
+ N
+ s|\n# | |
+ b more
+ }
+ :go
+ /^# Written by /,/# warranty; / {
+ s|^# ||
+ s|^# *$||
+ s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
+ p
+ }
+ /^# Written by / {
+ s|^# ||
+ p
+ }
+ /^warranty; /q' < "$progpath"
-magic="%%%MAGIC variable%%%"
-magic_exe="%%%MAGIC EXE variable%%%"
+ exit $?
+}
-# Global variables.
-nonopt=
-preserve_args=
-lo2o="s/\\.lo\$/.${objext}/"
-o2lo="s/\\.${objext}\$/.lo/"
-extracted_archives=
-extracted_serial=0
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end. This prevents here-documents from being
-# left over by shells.
-exec_cmd=
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
- eval "${1}=\$${1}\${2}"
-} # func_append may be replaced by extended shell implementation
+# Set a version string.
+scriptversion='(GNU libtool) 2.4.2.418'
-# func_append_quoted var value
-# Quote VALUE and append to the end of shell variable VAR, separated
-# by a space.
-func_append_quoted ()
+
+# func_echo ARG...
+# ----------------
+# Libtool also displays the current mode in messages, so override
+# funclib.sh func_echo with this custom definition.
+func_echo ()
{
- func_quote_for_eval "${2}"
- eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
-} # func_append_quoted may be replaced by extended shell implementation
+ $debug_cmd
+ _G_message=$*
-# func_arith arithmetic-term...
-func_arith ()
-{
- func_arith_result=`expr "${@}"`
-} # func_arith may be replaced by extended shell implementation
+ func_echo_IFS=$IFS
+ IFS=$nl
+ for _G_line in $_G_message; do
+ IFS=$func_echo_IFS
+ $bs_echo "$progname${opt_mode+: $opt_mode}: $_G_line"
+ done
+ IFS=$func_echo_IFS
+}
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
+# func_warning ARG...
+# -------------------
+# Libtool warnings are not categorized, so override funclib.sh
+# func_warning with this simpler definition.
+func_warning ()
{
- func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
-} # func_len may be replaced by extended shell implementation
+ $debug_cmd
+ $warning_func ${1+"$@"}
+}
-# func_lo2o object
-func_lo2o ()
-{
- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
-} # func_lo2o may be replaced by extended shell implementation
+## ---------------- ##
+## Options parsing. ##
+## ---------------- ##
+
+# Hook in the functions to make sure our own options are parsed during
+# the option parsing loop.
+
+usage='$progpath [OPTION]... [MODE-ARG]...'
+
+# Short help message in response to '-h'.
+usage_message="Options:
+ --config show all configuration variables
+ --debug enable verbose shell tracing
+ -n, --dry-run display commands without modifying any files
+ --features display basic configuration information and exit
+ --mode=MODE use operation mode MODE
+ --no-warnings equivalent to '-Wnone'
+ --preserve-dup-deps don't remove duplicate dependency libraries
+ --quiet, --silent don't print informational messages
+ --tag=TAG use configuration variables from tag TAG
+ -v, --verbose print more informational messages than default
+ --version print version information
+ -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all]
+ -h, --help, --help-all print short, long, or detailed help message
+"
-# func_xform libobj-or-source
-func_xform ()
-{
- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
-} # func_xform may be replaced by extended shell implementation
+# Additional text appended to 'usage_message' in response to '--help'.
+long_help_message=$long_help_message"
+
+MODE must be one of the following:
+
+ clean remove files from the build directory
+ compile compile a source file into a libtool object
+ execute automatically set library path, then run a program
+ finish complete the installation of libtool libraries
+ install install libraries or executables
+ link create a library or an executable
+ uninstall remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE. When passed as first option,
+'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
+Try '$progname --help --mode=MODE' for a more detailed description of MODE.
+
+When reporting a bug, please describe a test case to reproduce it and
+include the following information:
+
+ host-triplet: $host
+ shell: $SHELL
+ compiler: $LTCC
+ compiler flags: $LTCFLAGS
+ linker: $LD (gnu? $with_gnu_ld)
+ version: $progname (GNU libtool) 2.4.2.418
+ automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
+ autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q`
+
+Report bugs to <bug-libtool@gnu.org>.
+GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
+
+
+# func_lo2o OBJECT-NAME
+# ---------------------
+# Transform OBJECT-NAME from a '.lo' suffix to the platform specific
+# object suffix.
+
+lo2o=s/\\.lo\$/.$objext/
+o2lo=s/\\.$objext\$/.lo/
+if test yes = "$_G_HAVE_XSI_OPS"; then
+ eval 'func_lo2o ()
+ {
+ case $1 in
+ *.lo) func_lo2o_result=${1%.lo}.$objext ;;
+ * ) func_lo2o_result=$1 ;;
+ esac
+ }'
+
+ # func_xform LIBOBJ-OR-SOURCE
+ # ---------------------------
+ # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
+ # suffix to a '.lo' libtool-object suffix.
+ eval 'func_xform ()
+ {
+ func_xform_result=${1%.*}.lo
+ }'
+else
+ # ...otherwise fall back to using sed.
+ func_lo2o ()
+ {
+ func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
+ }
-# func_fatal_configuration arg...
+ func_xform ()
+ {
+ func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
+ }
+fi
+
+
+# func_fatal_configuration ARG...
+# -------------------------------
# Echo program name prefixed message to standard error, followed by
# a configuration failure hint, and exit.
func_fatal_configuration ()
{
- func_error ${1+"$@"}
- func_error "See the $PACKAGE documentation for more information."
- func_fatal_error "Fatal configuration error."
+ func__fatal_error ${1+"$@"} \
+ "See the $PACKAGE documentation for more information." \
+ "Fatal configuration error."
}
# func_config
+# -----------
# Display the configuration for all the tags in this script.
func_config ()
{
@@ -915,17 +2048,19 @@ func_config ()
exit $?
}
+
# func_features
+# -------------
# Display the features supported by this script.
func_features ()
{
echo "host: $host"
- if test "$build_libtool_libs" = yes; then
+ if test yes = "$build_libtool_libs"; then
echo "enable shared libraries"
else
echo "disable shared libraries"
fi
- if test "$build_old_libs" = yes; then
+ if test yes = "$build_old_libs"; then
echo "enable static libraries"
else
echo "disable static libraries"
@@ -934,298 +2069,325 @@ func_features ()
exit $?
}
-# func_enable_tag tagname
+
+# func_enable_tag TAGNAME
+# -----------------------
# Verify that TAGNAME is valid, and either flag an error and exit, or
# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
# variable here.
func_enable_tag ()
{
- # Global variable:
- tagname="$1"
+ # Global variable:
+ tagname=$1
- re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
- re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
- sed_extractcf="/$re_begincf/,/$re_endcf/p"
+ re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+ re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+ sed_extractcf=/$re_begincf/,/$re_endcf/p
- # Validate tagname.
- case $tagname in
- *[!-_A-Za-z0-9,/]*)
- func_fatal_error "invalid tag name: $tagname"
- ;;
- esac
+ # Validate tagname.
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ func_fatal_error "invalid tag name: $tagname"
+ ;;
+ esac
- # Don't test for the "default" C tag, as we know it's
- # there but not specially marked.
- case $tagname in
- CC) ;;
+ # Don't test for the "default" C tag, as we know it's
+ # there but not specially marked.
+ case $tagname in
+ CC) ;;
*)
- if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
- taglist="$taglist $tagname"
-
- # Evaluate the configuration. Be careful to quote the path
- # and the sed script, to avoid splitting on whitespace, but
- # also don't use non-portable quotes within backquotes within
- # quotes we have to do it in 2 steps:
- extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
- eval "$extractedcf"
- else
- func_error "ignoring unknown tag $tagname"
- fi
- ;;
- esac
+ if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+ taglist="$taglist $tagname"
+
+ # Evaluate the configuration. Be careful to quote the path
+ # and the sed script, to avoid splitting on whitespace, but
+ # also don't use non-portable quotes within backquotes within
+ # quotes we have to do it in 2 steps:
+ extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+ eval "$extractedcf"
+ else
+ func_error "ignoring unknown tag $tagname"
+ fi
+ ;;
+ esac
}
+
# func_check_version_match
+# ------------------------
# Ensure that we are using m4 macros, and libtool script from the same
# release of libtool.
func_check_version_match ()
{
- if test "$package_revision" != "$macro_revision"; then
- if test "$VERSION" != "$macro_version"; then
- if test -z "$macro_version"; then
- cat >&2 <<_LT_EOF
+ if test "$package_revision" != "$macro_revision"; then
+ if test "$VERSION" != "$macro_version"; then
+ if test -z "$macro_version"; then
+ cat >&2 <<_LT_EOF
$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
$progname: definition of this LT_INIT comes from an older release.
$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
$progname: and run autoconf again.
_LT_EOF
- else
- cat >&2 <<_LT_EOF
+ else
+ cat >&2 <<_LT_EOF
$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
$progname: and run autoconf again.
_LT_EOF
- fi
- else
- cat >&2 <<_LT_EOF
+ fi
+ else
+ cat >&2 <<_LT_EOF
$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
$progname: but the definition of this LT_INIT comes from revision $macro_revision.
$progname: You should recreate aclocal.m4 with macros from revision $package_revision
$progname: of $PACKAGE $VERSION and run autoconf again.
_LT_EOF
- fi
+ fi
- exit $EXIT_MISMATCH
- fi
+ exit $EXIT_MISMATCH
+ fi
}
-# Shorthand for --mode=foo, only valid as the first argument
-case $1 in
-clean|clea|cle|cl)
- shift; set dummy --mode clean ${1+"$@"}; shift
- ;;
-compile|compil|compi|comp|com|co|c)
- shift; set dummy --mode compile ${1+"$@"}; shift
- ;;
-execute|execut|execu|exec|exe|ex|e)
- shift; set dummy --mode execute ${1+"$@"}; shift
- ;;
-finish|finis|fini|fin|fi|f)
- shift; set dummy --mode finish ${1+"$@"}; shift
- ;;
-install|instal|insta|inst|ins|in|i)
- shift; set dummy --mode install ${1+"$@"}; shift
- ;;
-link|lin|li|l)
- shift; set dummy --mode link ${1+"$@"}; shift
- ;;
-uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
- shift; set dummy --mode uninstall ${1+"$@"}; shift
- ;;
-esac
+# libtool_options_prep [ARG]...
+# -----------------------------
+# Preparation for options parsed by libtool.
+libtool_options_prep ()
+{
+ $debug_mode
+ # Option defaults:
+ opt_config=false
+ opt_dlopen=
+ opt_dry_run=false
+ opt_help=false
+ opt_mode=
+ opt_preserve_dup_deps=false
+ opt_quiet=false
+ nonopt=
+ preserve_args=
-# Option defaults:
-opt_debug=:
-opt_dry_run=false
-opt_config=false
-opt_preserve_dup_deps=false
-opt_features=false
-opt_finish=false
-opt_help=false
-opt_help_all=false
-opt_silent=:
-opt_warning=:
-opt_verbose=:
-opt_silent=false
-opt_verbose=false
+ # Shorthand for --mode=foo, only valid as the first argument
+ case $1 in
+ clean|clea|cle|cl)
+ shift; set dummy --mode clean ${1+"$@"}; shift
+ ;;
+ compile|compil|compi|comp|com|co|c)
+ shift; set dummy --mode compile ${1+"$@"}; shift
+ ;;
+ execute|execut|execu|exec|exe|ex|e)
+ shift; set dummy --mode execute ${1+"$@"}; shift
+ ;;
+ finish|finis|fini|fin|fi|f)
+ shift; set dummy --mode finish ${1+"$@"}; shift
+ ;;
+ install|instal|insta|inst|ins|in|i)
+ shift; set dummy --mode install ${1+"$@"}; shift
+ ;;
+ link|lin|li|l)
+ shift; set dummy --mode link ${1+"$@"}; shift
+ ;;
+ uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+ shift; set dummy --mode uninstall ${1+"$@"}; shift
+ ;;
+ esac
+
+ # Pass back the list of options.
+ func_quote_for_eval ${1+"$@"}
+ libtool_options_prep_result=$func_quote_for_eval_result
+}
+func_add_hook func_options_prep libtool_options_prep
-# Parse options once, thoroughly. This comes as soon as possible in the
-# script to make things like `--version' happen as quickly as we can.
+# libtool_parse_options [ARG]...
+# ---------------------------------
+# Provide handling for libtool specific options.
+libtool_parse_options ()
{
- # this just eases exit handling
- while test $# -gt 0; do
- opt="$1"
- shift
- case $opt in
- --debug|-x) opt_debug='set -x'
- func_echo "enabling shell trace mode"
- $opt_debug
- ;;
- --dry-run|--dryrun|-n)
- opt_dry_run=:
- ;;
- --config)
- opt_config=:
-func_config
- ;;
- --dlopen|-dlopen)
- optarg="$1"
- opt_dlopen="${opt_dlopen+$opt_dlopen
-}$optarg"
- shift
- ;;
- --preserve-dup-deps)
- opt_preserve_dup_deps=:
- ;;
- --features)
- opt_features=:
-func_features
- ;;
- --finish)
- opt_finish=:
-set dummy --mode finish ${1+"$@"}; shift
- ;;
- --help)
- opt_help=:
- ;;
- --help-all)
- opt_help_all=:
-opt_help=': help-all'
- ;;
- --mode)
- test $# = 0 && func_missing_arg $opt && break
- optarg="$1"
- opt_mode="$optarg"
-case $optarg in
- # Valid mode arguments:
- clean|compile|execute|finish|install|link|relink|uninstall) ;;
-
- # Catch anything else as an error
- *) func_error "invalid argument for $opt"
- exit_cmd=exit
- break
- ;;
-esac
- shift
- ;;
- --no-silent|--no-quiet)
- opt_silent=false
-func_append preserve_args " $opt"
- ;;
- --no-warning|--no-warn)
- opt_warning=false
-func_append preserve_args " $opt"
- ;;
- --no-verbose)
- opt_verbose=false
-func_append preserve_args " $opt"
- ;;
- --silent|--quiet)
- opt_silent=:
-func_append preserve_args " $opt"
- opt_verbose=false
- ;;
- --verbose|-v)
- opt_verbose=:
-func_append preserve_args " $opt"
-opt_silent=false
- ;;
- --tag)
- test $# = 0 && func_missing_arg $opt && break
- optarg="$1"
- opt_tag="$optarg"
-func_append preserve_args " $opt $optarg"
-func_enable_tag "$optarg"
- shift
- ;;
-
- -\?|-h) func_usage ;;
- --help) func_help ;;
- --version) func_version ;;
-
- # Separate optargs to long options:
- --*=*)
- func_split_long_opt "$opt"
- set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
- shift
- ;;
-
- # Separate non-argument short options:
- -\?*|-h*|-n*|-v*)
- func_split_short_opt "$opt"
- set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
- shift
- ;;
-
- --) break ;;
- -*) func_fatal_help "unrecognized option \`$opt'" ;;
- *) set dummy "$opt" ${1+"$@"}; shift; break ;;
- esac
- done
+ $debug_cmd
- # Validate options:
+ # Perform our own loop to consume as many options as possible in
+ # each iteration.
+ while test $# -gt 0; do
+ _G_opt=$1
+ shift
+ case $_G_opt in
+ --dry-run|--dryrun|-n)
+ opt_dry_run=:
+ ;;
+
+ --config) func_config ;;
+
+ --dlopen|-dlopen)
+ opt_dlopen="${opt_dlopen+$opt_dlopen
+}$1"
+ shift
+ ;;
+
+ --preserve-dup-deps)
+ opt_preserve_dup_deps=: ;;
+
+ --features) func_features ;;
+
+ --finish) set dummy --mode finish ${1+"$@"}; shift ;;
+
+ --help) opt_help=: ;;
+
+ --help-all) opt_help=': help-all' ;;
+
+ --mode) test $# = 0 && func_missing_arg $_G_opt && break
+ opt_mode=$1
+ case $1 in
+ # Valid mode arguments:
+ clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+ # Catch anything else as an error
+ *) func_error "invalid argument for $_G_opt"
+ exit_cmd=exit
+ break
+ ;;
+ esac
+ shift
+ ;;
+
+ --no-silent|--no-quiet)
+ opt_quiet=false
+ func_append preserve_args " $_G_opt"
+ ;;
+
+ --no-warnings|--no-warning|--no-warn)
+ opt_warning=false
+ func_append preserve_args " $_G_opt"
+ ;;
+
+ --no-verbose)
+ opt_verbose=false
+ func_append preserve_args " $_G_opt"
+ ;;
+
+ --silent|--quiet)
+ opt_quiet=:
+ opt_verbose=false
+ func_append preserve_args " $_G_opt"
+ ;;
+
+ --tag) test $# = 0 && func_missing_arg $_G_opt && break
+ opt_tag=$1
+ func_append preserve_args " $_G_opt $1"
+ func_enable_tag "$1"
+ shift
+ ;;
+
+ --verbose|-v) opt_quiet=false
+ opt_verbose=:
+ func_append preserve_args " $_G_opt"
+ ;;
+
+ # An option not handled by this hook function:
+ *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
+ esac
+ done
- # save first non-option argument
- if test "$#" -gt 0; then
- nonopt="$opt"
- shift
- fi
- # preserve --debug
- test "$opt_debug" = : || func_append preserve_args " --debug"
+ # save modified positional parameters for caller
+ func_quote_for_eval ${1+"$@"}
+ libtool_parse_options_result=$func_quote_for_eval_result
+}
+func_add_hook func_parse_options libtool_parse_options
- case $host in
- *cygwin* | *mingw* | *pw32* | *cegcc*)
- # don't eliminate duplications in $postdeps and $predeps
- opt_duplicate_compiler_generated_deps=:
- ;;
- *)
- opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
- ;;
- esac
- $opt_help || {
- # Sanity checks first:
- func_check_version_match
- if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
- func_fatal_configuration "not configured to build any kind of library"
+# libtool_validate_options [ARG]...
+# ---------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+libtool_validate_options ()
+{
+ # save first non-option argument
+ if test 0 -lt $#; then
+ nonopt=$1
+ shift
fi
- # Darwin sucks
- eval std_shrext=\"$shrext_cmds\"
+ # preserve --debug
+ test : = "$debug_cmd" || func_append preserve_args " --debug"
- # Only execute mode is allowed to have -dlopen flags.
- if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
- func_error "unrecognized option \`-dlopen'"
- $ECHO "$help" 1>&2
- exit $EXIT_FAILURE
- fi
+ case $host in
+ *cygwin* | *mingw* | *pw32* | *cegcc*)
+ # don't eliminate duplications in $postdeps and $predeps
+ opt_duplicate_compiler_generated_deps=:
+ ;;
+ *)
+ opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+ ;;
+ esac
- # Change the help message to a mode-specific one.
- generic_help="$help"
- help="Try \`$progname --help --mode=$opt_mode' for more information."
- }
+ $opt_help || {
+ # Sanity checks first:
+ func_check_version_match
+
+ test yes != "$build_libtool_libs" \
+ && test yes != "$build_old_libs" \
+ && func_fatal_configuration "not configured to build any kind of library"
+ # Darwin sucks
+ eval std_shrext=\"$shrext_cmds\"
+
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
+ func_error "unrecognized option '-dlopen'"
+ $ECHO "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
- # Bail if the options were screwed
- $exit_cmd $EXIT_FAILURE
+ # Change the help message to a mode-specific one.
+ generic_help=$help
+ help="Try '$progname --help --mode=$opt_mode' for more information."
+ }
+
+ # Pass back the unparsed argument list
+ func_quote_for_eval ${1+"$@"}
+ libtool_validate_options_result=$func_quote_for_eval_result
}
+func_add_hook func_validate_options libtool_validate_options
+# Process options as early as possible so that --help and --version
+# can return quickly.
+func_options ${1+"$@"}
+eval set dummy "$func_options_result"; shift
+
## ----------- ##
## Main. ##
## ----------- ##
+magic='%%%MAGIC variable%%%'
+magic_exe='%%%MAGIC EXE variable%%%'
+
+# Global variables.
+extracted_archives=
+extracted_serial=0
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end. This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+
# func_lalib_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
+# True iff FILE is a libtool '.la' library or '.lo' object file.
# This function is only a basic sanity check; it will hardly flush out
# determined imposters.
func_lalib_p ()
@@ -1236,12 +2398,12 @@ func_lalib_p ()
}
# func_lalib_unsafe_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
+# True iff FILE is a libtool '.la' library or '.lo' object file.
# This function implements the same check as func_lalib_p without
# resorting to external programs. To this end, it redirects stdin and
# closes it afterwards, without saving the original file descriptor.
# As a safety measure, use it only where a negative result would be
-# fatal anyway. Works if `file' does not exist.
+# fatal anyway. Works if 'file' does not exist.
func_lalib_unsafe_p ()
{
lalib_p=no
@@ -1249,13 +2411,13 @@ func_lalib_unsafe_p ()
for lalib_p_l in 1 2 3 4
do
read lalib_p_line
- case "$lalib_p_line" in
+ case $lalib_p_line in
\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
esac
done
exec 0<&5 5<&-
fi
- test "$lalib_p" = yes
+ test yes = "$lalib_p"
}
# func_ltwrapper_script_p file
@@ -1289,7 +2451,7 @@ func_ltwrapper_scriptname ()
{
func_dirname_and_basename "$1" "" "."
func_stripname '' '.exe' "$func_basename_result"
- func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+ func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
}
# func_ltwrapper_p file
@@ -1308,11 +2470,13 @@ func_ltwrapper_p ()
# FAIL_CMD may read-access the current command in variable CMD!
func_execute_cmds ()
{
- $opt_debug
+ $debug_cmd
+
save_ifs=$IFS; IFS='~'
for cmd in $1; do
- IFS=$save_ifs
+ IFS=$sp$nl
eval cmd=\"$cmd\"
+ IFS=$save_ifs
func_show_eval "$cmd" "${2-:}"
done
IFS=$save_ifs
@@ -1324,10 +2488,11 @@ func_execute_cmds ()
# Note that it is not necessary on cygwin/mingw to append a dot to
# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
# behavior happens only for exec(3), not for open(2)! Also, sourcing
-# `FILE.' does not work on cygwin managed mounts.
+# 'FILE.' does not work on cygwin managed mounts.
func_source ()
{
- $opt_debug
+ $debug_cmd
+
case $1 in
*/* | *\\*) . "$1" ;;
*) . "./$1" ;;
@@ -1354,10 +2519,10 @@ func_resolve_sysroot ()
# store the result into func_replace_sysroot_result.
func_replace_sysroot ()
{
- case "$lt_sysroot:$1" in
+ case $lt_sysroot:$1 in
?*:"$lt_sysroot"*)
func_stripname "$lt_sysroot" '' "$1"
- func_replace_sysroot_result="=$func_stripname_result"
+ func_replace_sysroot_result='='$func_stripname_result
;;
*)
# Including no sysroot.
@@ -1374,7 +2539,8 @@ func_replace_sysroot ()
# arg is usually of the form 'gcc ...'
func_infer_tag ()
{
- $opt_debug
+ $debug_cmd
+
if test -n "$available_tags" && test -z "$tagname"; then
CC_quoted=
for arg in $CC; do
@@ -1393,7 +2559,7 @@ func_infer_tag ()
for z in $available_tags; do
if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
# Evaluate the configuration.
- eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+ eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
CC_quoted=
for arg in $CC; do
# Double-quote args containing other shell metacharacters.
@@ -1418,7 +2584,7 @@ func_infer_tag ()
# line option must be used.
if test -z "$tagname"; then
func_echo "unable to infer tagged configuration"
- func_fatal_error "specify a tag with \`--tag'"
+ func_fatal_error "specify a tag with '--tag'"
# else
# func_verbose "using $tagname tagged configuration"
fi
@@ -1434,15 +2600,15 @@ func_infer_tag ()
# but don't create it if we're doing a dry run.
func_write_libtool_object ()
{
- write_libobj=${1}
- if test "$build_libtool_libs" = yes; then
- write_lobj=\'${2}\'
+ write_libobj=$1
+ if test yes = "$build_libtool_libs"; then
+ write_lobj=\'$2\'
else
write_lobj=none
fi
- if test "$build_old_libs" = yes; then
- write_oldobj=\'${3}\'
+ if test yes = "$build_old_libs"; then
+ write_oldobj=\'$3\'
else
write_oldobj=none
fi
@@ -1450,7 +2616,7 @@ func_write_libtool_object ()
$opt_dry_run || {
cat >${write_libobj}T <<EOF
# $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
@@ -1462,7 +2628,7 @@ pic_object=$write_lobj
non_pic_object=$write_oldobj
EOF
- $MV "${write_libobj}T" "${write_libobj}"
+ $MV "${write_libobj}T" "$write_libobj"
}
}
@@ -1482,8 +2648,9 @@ EOF
# be empty on error (or when ARG is empty)
func_convert_core_file_wine_to_w32 ()
{
- $opt_debug
- func_convert_core_file_wine_to_w32_result="$1"
+ $debug_cmd
+
+ func_convert_core_file_wine_to_w32_result=$1
if test -n "$1"; then
# Unfortunately, winepath does not exit with a non-zero error code, so we
# are forced to check the contents of stdout. On the other hand, if the
@@ -1491,9 +2658,9 @@ func_convert_core_file_wine_to_w32 ()
# *an error message* to stdout. So we must check for both error code of
# zero AND non-empty stdout, which explains the odd construction:
func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
- if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
+ if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
- $SED -e "$lt_sed_naive_backslashify"`
+ $SED -e "$sed_naive_backslashify"`
else
func_convert_core_file_wine_to_w32_result=
fi
@@ -1514,18 +2681,19 @@ func_convert_core_file_wine_to_w32 ()
# are convertible, then the result may be empty.
func_convert_core_path_wine_to_w32 ()
{
- $opt_debug
+ $debug_cmd
+
# unfortunately, winepath doesn't convert paths, only file names
- func_convert_core_path_wine_to_w32_result=""
+ func_convert_core_path_wine_to_w32_result=
if test -n "$1"; then
oldIFS=$IFS
IFS=:
for func_convert_core_path_wine_to_w32_f in $1; do
IFS=$oldIFS
func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
- if test -n "$func_convert_core_file_wine_to_w32_result" ; then
+ if test -n "$func_convert_core_file_wine_to_w32_result"; then
if test -z "$func_convert_core_path_wine_to_w32_result"; then
- func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
+ func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
else
func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
fi
@@ -1554,7 +2722,8 @@ func_convert_core_path_wine_to_w32 ()
# environment variable; do not put it in $PATH.
func_cygpath ()
{
- $opt_debug
+ $debug_cmd
+
if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
if test "$?" -ne 0; then
@@ -1563,7 +2732,7 @@ func_cygpath ()
fi
else
func_cygpath_result=
- func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
+ func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
fi
}
#end: func_cygpath
@@ -1574,10 +2743,11 @@ func_cygpath ()
# result in func_convert_core_msys_to_w32_result.
func_convert_core_msys_to_w32 ()
{
- $opt_debug
+ $debug_cmd
+
# awkward: cmd appends spaces to result
func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
- $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
+ $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
}
#end: func_convert_core_msys_to_w32
@@ -1588,13 +2758,14 @@ func_convert_core_msys_to_w32 ()
# func_to_host_file_result to ARG1).
func_convert_file_check ()
{
- $opt_debug
- if test -z "$2" && test -n "$1" ; then
+ $debug_cmd
+
+ if test -z "$2" && test -n "$1"; then
func_error "Could not determine host file name corresponding to"
- func_error " \`$1'"
+ func_error " '$1'"
func_error "Continuing, but uninstalled executables may not work."
# Fallback:
- func_to_host_file_result="$1"
+ func_to_host_file_result=$1
fi
}
# end func_convert_file_check
@@ -1606,10 +2777,11 @@ func_convert_file_check ()
# func_to_host_file_result to a simplistic fallback value (see below).
func_convert_path_check ()
{
- $opt_debug
+ $debug_cmd
+
if test -z "$4" && test -n "$3"; then
func_error "Could not determine the host path corresponding to"
- func_error " \`$3'"
+ func_error " '$3'"
func_error "Continuing, but uninstalled executables may not work."
# Fallback. This is a deliberately simplistic "conversion" and
# should not be "improved". See libtool.info.
@@ -1618,7 +2790,7 @@ func_convert_path_check ()
func_to_host_path_result=`echo "$3" |
$SED -e "$lt_replace_pathsep_chars"`
else
- func_to_host_path_result="$3"
+ func_to_host_path_result=$3
fi
fi
}
@@ -1630,9 +2802,10 @@ func_convert_path_check ()
# and appending REPL if ORIG matches BACKPAT.
func_convert_path_front_back_pathsep ()
{
- $opt_debug
+ $debug_cmd
+
case $4 in
- $1 ) func_to_host_path_result="$3$func_to_host_path_result"
+ $1 ) func_to_host_path_result=$3$func_to_host_path_result
;;
esac
case $4 in
@@ -1646,7 +2819,7 @@ func_convert_path_front_back_pathsep ()
##################################################
# $build to $host FILE NAME CONVERSION FUNCTIONS #
##################################################
-# invoked via `$to_host_file_cmd ARG'
+# invoked via '$to_host_file_cmd ARG'
#
# In each case, ARG is the path to be converted from $build to $host format.
# Result will be available in $func_to_host_file_result.
@@ -1657,7 +2830,8 @@ func_convert_path_front_back_pathsep ()
# in func_to_host_file_result.
func_to_host_file ()
{
- $opt_debug
+ $debug_cmd
+
$to_host_file_cmd "$1"
}
# end func_to_host_file
@@ -1669,7 +2843,8 @@ func_to_host_file ()
# in (the comma separated) LAZY, no conversion takes place.
func_to_tool_file ()
{
- $opt_debug
+ $debug_cmd
+
case ,$2, in
*,"$to_tool_file_cmd",*)
func_to_tool_file_result=$1
@@ -1687,7 +2862,7 @@ func_to_tool_file ()
# Copy ARG to func_to_host_file_result.
func_convert_file_noop ()
{
- func_to_host_file_result="$1"
+ func_to_host_file_result=$1
}
# end func_convert_file_noop
@@ -1698,11 +2873,12 @@ func_convert_file_noop ()
# func_to_host_file_result.
func_convert_file_msys_to_w32 ()
{
- $opt_debug
- func_to_host_file_result="$1"
+ $debug_cmd
+
+ func_to_host_file_result=$1
if test -n "$1"; then
func_convert_core_msys_to_w32 "$1"
- func_to_host_file_result="$func_convert_core_msys_to_w32_result"
+ func_to_host_file_result=$func_convert_core_msys_to_w32_result
fi
func_convert_file_check "$1" "$func_to_host_file_result"
}
@@ -1714,8 +2890,9 @@ func_convert_file_msys_to_w32 ()
# func_to_host_file_result.
func_convert_file_cygwin_to_w32 ()
{
- $opt_debug
- func_to_host_file_result="$1"
+ $debug_cmd
+
+ func_to_host_file_result=$1
if test -n "$1"; then
# because $build is cygwin, we call "the" cygpath in $PATH; no need to use
# LT_CYGPATH in this case.
@@ -1731,11 +2908,12 @@ func_convert_file_cygwin_to_w32 ()
# and a working winepath. Returns result in func_to_host_file_result.
func_convert_file_nix_to_w32 ()
{
- $opt_debug
- func_to_host_file_result="$1"
+ $debug_cmd
+
+ func_to_host_file_result=$1
if test -n "$1"; then
func_convert_core_file_wine_to_w32 "$1"
- func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
+ func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
fi
func_convert_file_check "$1" "$func_to_host_file_result"
}
@@ -1747,12 +2925,13 @@ func_convert_file_nix_to_w32 ()
# Returns result in func_to_host_file_result.
func_convert_file_msys_to_cygwin ()
{
- $opt_debug
- func_to_host_file_result="$1"
+ $debug_cmd
+
+ func_to_host_file_result=$1
if test -n "$1"; then
func_convert_core_msys_to_w32 "$1"
func_cygpath -u "$func_convert_core_msys_to_w32_result"
- func_to_host_file_result="$func_cygpath_result"
+ func_to_host_file_result=$func_cygpath_result
fi
func_convert_file_check "$1" "$func_to_host_file_result"
}
@@ -1765,13 +2944,14 @@ func_convert_file_msys_to_cygwin ()
# in func_to_host_file_result.
func_convert_file_nix_to_cygwin ()
{
- $opt_debug
- func_to_host_file_result="$1"
+ $debug_cmd
+
+ func_to_host_file_result=$1
if test -n "$1"; then
# convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
func_convert_core_file_wine_to_w32 "$1"
func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
- func_to_host_file_result="$func_cygpath_result"
+ func_to_host_file_result=$func_cygpath_result
fi
func_convert_file_check "$1" "$func_to_host_file_result"
}
@@ -1781,7 +2961,7 @@ func_convert_file_nix_to_cygwin ()
#############################################
# $build to $host PATH CONVERSION FUNCTIONS #
#############################################
-# invoked via `$to_host_path_cmd ARG'
+# invoked via '$to_host_path_cmd ARG'
#
# In each case, ARG is the path to be converted from $build to $host format.
# The result will be available in $func_to_host_path_result.
@@ -1805,10 +2985,11 @@ func_convert_file_nix_to_cygwin ()
to_host_path_cmd=
func_init_to_host_path_cmd ()
{
- $opt_debug
+ $debug_cmd
+
if test -z "$to_host_path_cmd"; then
func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
- to_host_path_cmd="func_convert_path_${func_stripname_result}"
+ to_host_path_cmd=func_convert_path_$func_stripname_result
fi
}
@@ -1818,7 +2999,8 @@ func_init_to_host_path_cmd ()
# in func_to_host_path_result.
func_to_host_path ()
{
- $opt_debug
+ $debug_cmd
+
func_init_to_host_path_cmd
$to_host_path_cmd "$1"
}
@@ -1829,7 +3011,7 @@ func_to_host_path ()
# Copy ARG to func_to_host_path_result.
func_convert_path_noop ()
{
- func_to_host_path_result="$1"
+ func_to_host_path_result=$1
}
# end func_convert_path_noop
@@ -1840,8 +3022,9 @@ func_convert_path_noop ()
# func_to_host_path_result.
func_convert_path_msys_to_w32 ()
{
- $opt_debug
- func_to_host_path_result="$1"
+ $debug_cmd
+
+ func_to_host_path_result=$1
if test -n "$1"; then
# Remove leading and trailing path separator characters from ARG. MSYS
# behavior is inconsistent here; cygpath turns them into '.;' and ';.';
@@ -1849,7 +3032,7 @@ func_convert_path_msys_to_w32 ()
func_stripname : : "$1"
func_to_host_path_tmp1=$func_stripname_result
func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
- func_to_host_path_result="$func_convert_core_msys_to_w32_result"
+ func_to_host_path_result=$func_convert_core_msys_to_w32_result
func_convert_path_check : ";" \
"$func_to_host_path_tmp1" "$func_to_host_path_result"
func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
@@ -1863,8 +3046,9 @@ func_convert_path_msys_to_w32 ()
# func_to_host_file_result.
func_convert_path_cygwin_to_w32 ()
{
- $opt_debug
- func_to_host_path_result="$1"
+ $debug_cmd
+
+ func_to_host_path_result=$1
if test -n "$1"; then
# See func_convert_path_msys_to_w32:
func_stripname : : "$1"
@@ -1883,14 +3067,15 @@ func_convert_path_cygwin_to_w32 ()
# a working winepath. Returns result in func_to_host_file_result.
func_convert_path_nix_to_w32 ()
{
- $opt_debug
- func_to_host_path_result="$1"
+ $debug_cmd
+
+ func_to_host_path_result=$1
if test -n "$1"; then
# See func_convert_path_msys_to_w32:
func_stripname : : "$1"
func_to_host_path_tmp1=$func_stripname_result
func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
- func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
+ func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
func_convert_path_check : ";" \
"$func_to_host_path_tmp1" "$func_to_host_path_result"
func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
@@ -1904,15 +3089,16 @@ func_convert_path_nix_to_w32 ()
# Returns result in func_to_host_file_result.
func_convert_path_msys_to_cygwin ()
{
- $opt_debug
- func_to_host_path_result="$1"
+ $debug_cmd
+
+ func_to_host_path_result=$1
if test -n "$1"; then
# See func_convert_path_msys_to_w32:
func_stripname : : "$1"
func_to_host_path_tmp1=$func_stripname_result
func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
- func_to_host_path_result="$func_cygpath_result"
+ func_to_host_path_result=$func_cygpath_result
func_convert_path_check : : \
"$func_to_host_path_tmp1" "$func_to_host_path_result"
func_convert_path_front_back_pathsep ":*" "*:" : "$1"
@@ -1927,8 +3113,9 @@ func_convert_path_msys_to_cygwin ()
# func_to_host_file_result.
func_convert_path_nix_to_cygwin ()
{
- $opt_debug
- func_to_host_path_result="$1"
+ $debug_cmd
+
+ func_to_host_path_result=$1
if test -n "$1"; then
# Remove leading and trailing path separator characters from
# ARG. msys behavior is inconsistent here, cygpath turns them
@@ -1937,7 +3124,7 @@ func_convert_path_nix_to_cygwin ()
func_to_host_path_tmp1=$func_stripname_result
func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
- func_to_host_path_result="$func_cygpath_result"
+ func_to_host_path_result=$func_cygpath_result
func_convert_path_check : : \
"$func_to_host_path_tmp1" "$func_to_host_path_result"
func_convert_path_front_back_pathsep ":*" "*:" : "$1"
@@ -1946,13 +3133,31 @@ func_convert_path_nix_to_cygwin ()
# end func_convert_path_nix_to_cygwin
+# func_dll_def_p FILE
+# True iff FILE is a Windows DLL '.def' file.
+# Keep in sync with _LT_DLL_DEF_P in libtool.m4
+func_dll_def_p ()
+{
+ $debug_cmd
+
+ func_dll_def_p_tmp=`$SED -n \
+ -e 's/^[ ]*//' \
+ -e '/^\(;.*\)*$/d' \
+ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \
+ -e q \
+ "$1"`
+ test DEF = "$func_dll_def_p_tmp"
+}
+
+
# func_mode_compile arg...
func_mode_compile ()
{
- $opt_debug
+ $debug_cmd
+
# Get the compilation command and the source file.
base_compile=
- srcfile="$nonopt" # always keep a non-empty value in "srcfile"
+ srcfile=$nonopt # always keep a non-empty value in "srcfile"
suppress_opt=yes
suppress_output=
arg_mode=normal
@@ -1965,12 +3170,12 @@ func_mode_compile ()
case $arg_mode in
arg )
# do not "continue". Instead, add this to base_compile
- lastarg="$arg"
+ lastarg=$arg
arg_mode=normal
;;
target )
- libobj="$arg"
+ libobj=$arg
arg_mode=normal
continue
;;
@@ -1980,7 +3185,7 @@ func_mode_compile ()
case $arg in
-o)
test -n "$libobj" && \
- func_fatal_error "you cannot specify \`-o' more than once"
+ func_fatal_error "you cannot specify '-o' more than once"
arg_mode=target
continue
;;
@@ -2009,12 +3214,12 @@ func_mode_compile ()
func_stripname '-Wc,' '' "$arg"
args=$func_stripname_result
lastarg=
- save_ifs="$IFS"; IFS=','
+ save_ifs=$IFS; IFS=,
for arg in $args; do
- IFS="$save_ifs"
+ IFS=$save_ifs
func_append_quoted lastarg "$arg"
done
- IFS="$save_ifs"
+ IFS=$save_ifs
func_stripname ' ' '' "$lastarg"
lastarg=$func_stripname_result
@@ -2027,8 +3232,8 @@ func_mode_compile ()
# Accept the current argument as the source file.
# The previous "srcfile" becomes the current argument.
#
- lastarg="$srcfile"
- srcfile="$arg"
+ lastarg=$srcfile
+ srcfile=$arg
;;
esac # case $arg
;;
@@ -2043,13 +3248,13 @@ func_mode_compile ()
func_fatal_error "you must specify an argument for -Xcompile"
;;
target)
- func_fatal_error "you must specify a target with \`-o'"
+ func_fatal_error "you must specify a target with '-o'"
;;
*)
# Get the name of the library object.
test -z "$libobj" && {
func_basename "$srcfile"
- libobj="$func_basename_result"
+ libobj=$func_basename_result
}
;;
esac
@@ -2069,7 +3274,7 @@ func_mode_compile ()
case $libobj in
*.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
*)
- func_fatal_error "cannot determine name of library object from \`$libobj'"
+ func_fatal_error "cannot determine name of library object from '$libobj'"
;;
esac
@@ -2078,8 +3283,8 @@ func_mode_compile ()
for arg in $later; do
case $arg in
-shared)
- test "$build_libtool_libs" != yes && \
- func_fatal_configuration "can not build a shared library"
+ test yes = "$build_libtool_libs" \
+ || func_fatal_configuration "cannot build a shared library"
build_old_libs=no
continue
;;
@@ -2105,17 +3310,17 @@ func_mode_compile ()
func_quote_for_eval "$libobj"
test "X$libobj" != "X$func_quote_for_eval_result" \
&& $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
- && func_warning "libobj name \`$libobj' may not contain shell special characters."
+ && func_warning "libobj name '$libobj' may not contain shell special characters."
func_dirname_and_basename "$obj" "/" ""
- objname="$func_basename_result"
- xdir="$func_dirname_result"
- lobj=${xdir}$objdir/$objname
+ objname=$func_basename_result
+ xdir=$func_dirname_result
+ lobj=$xdir$objdir/$objname
test -z "$base_compile" && \
func_fatal_help "you must specify a compilation command"
# Delete any leftover library objects.
- if test "$build_old_libs" = yes; then
+ if test yes = "$build_old_libs"; then
removelist="$obj $lobj $libobj ${libobj}T"
else
removelist="$lobj $libobj ${libobj}T"
@@ -2127,16 +3332,16 @@ func_mode_compile ()
pic_mode=default
;;
esac
- if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+ if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
# non-PIC code in shared libraries is not supported
pic_mode=default
fi
# Calculate the filename of the output object if compiler does
# not support -o with -c
- if test "$compiler_c_o" = no; then
- output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
- lockfile="$output_obj.lock"
+ if test no = "$compiler_c_o"; then
+ output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
+ lockfile=$output_obj.lock
else
output_obj=
need_locks=no
@@ -2145,12 +3350,12 @@ func_mode_compile ()
# Lock this critical section if it is needed
# We use this script file to make the link, it avoids creating a new file
- if test "$need_locks" = yes; then
+ if test yes = "$need_locks"; then
until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
func_echo "Waiting for $lockfile to be removed"
sleep 2
done
- elif test "$need_locks" = warn; then
+ elif test warn = "$need_locks"; then
if test -f "$lockfile"; then
$ECHO "\
*** ERROR, $lockfile exists and contains:
@@ -2158,7 +3363,7 @@ func_mode_compile ()
This indicates that another process is trying to use the same
temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
+your compiler does not support '-c' and '-o' together. If you
repeat this compilation, it may succeed, by chance, but you had better
avoid parallel builds (make -j) in this platform, or get a better
compiler."
@@ -2180,11 +3385,11 @@ compiler."
qsrcfile=$func_quote_for_eval_result
# Only build a PIC object if we are building libtool libraries.
- if test "$build_libtool_libs" = yes; then
+ if test yes = "$build_libtool_libs"; then
# Without this assignment, base_compile gets emptied.
fbsd_hideous_sh_bug=$base_compile
- if test "$pic_mode" != no; then
+ if test no != "$pic_mode"; then
command="$base_compile $qsrcfile $pic_flag"
else
# Don't build PIC code
@@ -2201,7 +3406,7 @@ compiler."
func_show_eval_locale "$command" \
'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
- if test "$need_locks" = warn &&
+ if test warn = "$need_locks" &&
test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
$ECHO "\
*** ERROR, $lockfile contains:
@@ -2212,7 +3417,7 @@ $srcfile
This indicates that another process is trying to use the same
temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
+your compiler does not support '-c' and '-o' together. If you
repeat this compilation, it may succeed, by chance, but you had better
avoid parallel builds (make -j) in this platform, or get a better
compiler."
@@ -2228,20 +3433,20 @@ compiler."
fi
# Allow error messages only from the first compilation.
- if test "$suppress_opt" = yes; then
+ if test yes = "$suppress_opt"; then
suppress_output=' >/dev/null 2>&1'
fi
fi
# Only build a position-dependent object if we build old libraries.
- if test "$build_old_libs" = yes; then
- if test "$pic_mode" != yes; then
+ if test yes = "$build_old_libs"; then
+ if test yes != "$pic_mode"; then
# Don't build PIC code
command="$base_compile $qsrcfile$pie_flag"
else
command="$base_compile $qsrcfile $pic_flag"
fi
- if test "$compiler_c_o" = yes; then
+ if test yes = "$compiler_c_o"; then
func_append command " -o $obj"
fi
@@ -2250,7 +3455,7 @@ compiler."
func_show_eval_locale "$command" \
'$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
- if test "$need_locks" = warn &&
+ if test warn = "$need_locks" &&
test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
$ECHO "\
*** ERROR, $lockfile contains:
@@ -2261,7 +3466,7 @@ $srcfile
This indicates that another process is trying to use the same
temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
+your compiler does not support '-c' and '-o' together. If you
repeat this compilation, it may succeed, by chance, but you had better
avoid parallel builds (make -j) in this platform, or get a better
compiler."
@@ -2281,7 +3486,7 @@ compiler."
func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
# Unlock the critical section if it was locked
- if test "$need_locks" != no; then
+ if test no != "$need_locks"; then
removelist=$lockfile
$RM "$lockfile"
fi
@@ -2291,7 +3496,7 @@ compiler."
}
$opt_help || {
- test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
+ test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
}
func_mode_help ()
@@ -2311,7 +3516,7 @@ func_mode_help ()
Remove files from the build directory.
RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed
to RM.
If FILE is a libtool library, object or program, all the files associated
@@ -2330,16 +3535,16 @@ This mode accepts the following additional options:
-no-suppress do not suppress compiler output for multiple passes
-prefer-pic try to build PIC objects only
-prefer-non-pic try to build non-PIC objects only
- -shared do not build a \`.o' file suitable for static linking
- -static only build a \`.o' file suitable for static linking
+ -shared do not build a '.o' file suitable for static linking
+ -static only build a '.o' file suitable for static linking
-Wc,FLAG pass FLAG directly to the compiler
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+COMPILE-COMMAND is a command to be used in creating a 'standard' object file
from the given SOURCEFILE.
The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
+SOURCEFILE, then substituting the C source code suffix '.c' with the
+library object suffix, '.lo'."
;;
execute)
@@ -2352,7 +3557,7 @@ This mode accepts the following additional options:
-dlopen FILE add the directory containing FILE to the library path
-This mode sets the library path environment variable according to \`-dlopen'
+This mode sets the library path environment variable according to '-dlopen'
flags.
If any of the ARGS are libtool executable wrappers, then they are translated
@@ -2371,7 +3576,7 @@ Complete the installation of libtool libraries.
Each LIBDIR is a directory that contains libtool libraries.
The commands that this mode executes may require superuser privileges. Use
-the \`--dry-run' option if you just want to see what would be executed."
+the '--dry-run' option if you just want to see what would be executed."
;;
install)
@@ -2381,7 +3586,7 @@ the \`--dry-run' option if you just want to see what would be executed."
Install executables or libraries.
INSTALL-COMMAND is the installation command. The first component should be
-either the \`install' or \`cp' program.
+either the 'install' or 'cp' program.
The following components of INSTALL-COMMAND are treated specially:
@@ -2407,7 +3612,7 @@ The following components of LINK-COMMAND are treated specially:
-avoid-version do not add a version suffix if possible
-bindir BINDIR specify path to binaries directory (for systems where
libraries must be found in the PATH setting at runtime)
- -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
+ -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime
-dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
-export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-export-symbols SYMFILE
@@ -2441,20 +3646,20 @@ The following components of LINK-COMMAND are treated specially:
-Xlinker FLAG pass linker-specific FLAG directly to the linker
-XCClinker FLAG pass link-specific FLAG to the compiler driver (CC)
-All other options (arguments beginning with \`-') are ignored.
+All other options (arguments beginning with '-') are ignored.
-Every other argument is treated as a filename. Files ending in \`.la' are
+Every other argument is treated as a filename. Files ending in '.la' are
treated as uninstalled libtool libraries, other files are standard or library
object files.
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
+If the OUTPUT-FILE ends in '.la', then a libtool library is created,
+only library objects ('.lo' files) may be specified, and '-rpath' is
required, except when creating a convenience library.
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
+If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
+using 'ar' and 'ranlib', or on Windows using 'lib'.
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
is created, otherwise an executable program is created."
;;
@@ -2465,7 +3670,7 @@ is created, otherwise an executable program is created."
Remove libraries from an installation directory.
RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed
to RM.
If FILE is a libtool library, all the files associated with it are deleted.
@@ -2473,17 +3678,17 @@ Otherwise, only FILE itself is deleted using RM."
;;
*)
- func_fatal_help "invalid operation mode \`$opt_mode'"
+ func_fatal_help "invalid operation mode '$opt_mode'"
;;
esac
echo
- $ECHO "Try \`$progname --help' for more information about other modes."
+ $ECHO "Try '$progname --help' for more information about other modes."
}
# Now that we've collected a possible --mode arg, show help if necessary
if $opt_help; then
- if test "$opt_help" = :; then
+ if test : = "$opt_help"; then
func_mode_help
else
{
@@ -2516,16 +3721,17 @@ fi
# func_mode_execute arg...
func_mode_execute ()
{
- $opt_debug
+ $debug_cmd
+
# The first argument is the command name.
- cmd="$nonopt"
+ cmd=$nonopt
test -z "$cmd" && \
func_fatal_help "you must specify a COMMAND"
# Handle -dlopen flags immediately.
for file in $opt_dlopen; do
test -f "$file" \
- || func_fatal_help "\`$file' is not a file"
+ || func_fatal_help "'$file' is not a file"
dir=
case $file in
@@ -2535,7 +3741,7 @@ func_mode_execute ()
# Check to see that this really is a libtool archive.
func_lalib_unsafe_p "$file" \
- || func_fatal_help "\`$lib' is not a valid libtool archive"
+ || func_fatal_help "'$lib' is not a valid libtool archive"
# Read the libtool library.
dlname=
@@ -2546,18 +3752,18 @@ func_mode_execute ()
if test -z "$dlname"; then
# Warn if it was a shared library.
test -n "$library_names" && \
- func_warning "\`$file' was not linked with \`-export-dynamic'"
+ func_warning "'$file' was not linked with '-export-dynamic'"
continue
fi
func_dirname "$file" "" "."
- dir="$func_dirname_result"
+ dir=$func_dirname_result
if test -f "$dir/$objdir/$dlname"; then
func_append dir "/$objdir"
else
if test ! -f "$dir/$dlname"; then
- func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+ func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
fi
fi
;;
@@ -2565,18 +3771,18 @@ func_mode_execute ()
*.lo)
# Just add the directory containing the .lo file.
func_dirname "$file" "" "."
- dir="$func_dirname_result"
+ dir=$func_dirname_result
;;
*)
- func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+ func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
continue
;;
esac
# Get the absolute pathname.
absdir=`cd "$dir" && pwd`
- test -n "$absdir" && dir="$absdir"
+ test -n "$absdir" && dir=$absdir
# Now add the directory to shlibpath_var.
if eval "test -z \"\$$shlibpath_var\""; then
@@ -2588,7 +3794,7 @@ func_mode_execute ()
# This variable tells wrapper scripts just to set shlibpath_var
# rather than running their programs.
- libtool_execute_magic="$magic"
+ libtool_execute_magic=$magic
# Check if any of the arguments is a wrapper script.
args=
@@ -2601,12 +3807,12 @@ func_mode_execute ()
if func_ltwrapper_script_p "$file"; then
func_source "$file"
# Transform arg to wrapped name.
- file="$progdir/$program"
+ file=$progdir/$program
elif func_ltwrapper_executable_p "$file"; then
func_ltwrapper_scriptname "$file"
func_source "$func_ltwrapper_scriptname_result"
# Transform arg to wrapped name.
- file="$progdir/$program"
+ file=$progdir/$program
fi
;;
esac
@@ -2614,7 +3820,15 @@ func_mode_execute ()
func_append_quoted args "$file"
done
- if test "X$opt_dry_run" = Xfalse; then
+ if $opt_dry_run; then
+ # Display what would be done.
+ if test -n "$shlibpath_var"; then
+ eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+ echo "export $shlibpath_var"
+ fi
+ $ECHO "$cmd$args"
+ exit $EXIT_SUCCESS
+ else
if test -n "$shlibpath_var"; then
# Export the shlibpath_var.
eval "export $shlibpath_var"
@@ -2631,25 +3845,18 @@ func_mode_execute ()
done
# Now prepare to actually exec the command.
- exec_cmd="\$cmd$args"
- else
- # Display what would be done.
- if test -n "$shlibpath_var"; then
- eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
- echo "export $shlibpath_var"
- fi
- $ECHO "$cmd$args"
- exit $EXIT_SUCCESS
+ exec_cmd=\$cmd$args
fi
}
-test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
+test execute = "$opt_mode" && func_mode_execute ${1+"$@"}
# func_mode_finish arg...
func_mode_finish ()
{
- $opt_debug
+ $debug_cmd
+
libs=
libdirs=
admincmds=
@@ -2663,11 +3870,11 @@ func_mode_finish ()
if func_lalib_unsafe_p "$opt"; then
func_append libs " $opt"
else
- func_warning "\`$opt' is not a valid libtool archive"
+ func_warning "'$opt' is not a valid libtool archive"
fi
else
- func_fatal_error "invalid argument \`$opt'"
+ func_fatal_error "invalid argument '$opt'"
fi
done
@@ -2682,12 +3889,12 @@ func_mode_finish ()
# Remove sysroot references
if $opt_dry_run; then
for lib in $libs; do
- echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
+ echo "removing references to $lt_sysroot and '=' prefixes from $lib"
done
else
tmpdir=`func_mktempdir`
for lib in $libs; do
- sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+ sed -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
> $tmpdir/tmp-la
mv -f $tmpdir/tmp-la $lib
done
@@ -2712,7 +3919,7 @@ func_mode_finish ()
fi
# Exit here if they wanted silent mode.
- $opt_silent && exit $EXIT_SUCCESS
+ $opt_quiet && exit $EXIT_SUCCESS
if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
echo "----------------------------------------------------------------------"
@@ -2723,27 +3930,27 @@ func_mode_finish ()
echo
echo "If you ever happen to want to link against installed libraries"
echo "in a given directory, LIBDIR, you must either use libtool, and"
- echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+ echo "specify the full pathname of the library, or use the '-LLIBDIR'"
echo "flag during linking and do at least one of the following:"
if test -n "$shlibpath_var"; then
- echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
+ echo " - add LIBDIR to the '$shlibpath_var' environment variable"
echo " during execution"
fi
if test -n "$runpath_var"; then
- echo " - add LIBDIR to the \`$runpath_var' environment variable"
+ echo " - add LIBDIR to the '$runpath_var' environment variable"
echo " during linking"
fi
if test -n "$hardcode_libdir_flag_spec"; then
libdir=LIBDIR
eval flag=\"$hardcode_libdir_flag_spec\"
- $ECHO " - use the \`$flag' linker flag"
+ $ECHO " - use the '$flag' linker flag"
fi
if test -n "$admincmds"; then
$ECHO " - have your system administrator run these commands:$admincmds"
fi
if test -f /etc/ld.so.conf; then
- echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+ echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
fi
echo
@@ -2762,18 +3969,20 @@ func_mode_finish ()
exit $EXIT_SUCCESS
}
-test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
+test finish = "$opt_mode" && func_mode_finish ${1+"$@"}
# func_mode_install arg...
func_mode_install ()
{
- $opt_debug
+ $debug_cmd
+
# There may be an optional sh(1) argument at the beginning of
# install_prog (especially on Windows NT).
- if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+ if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
# Allow the use of GNU shtool's install command.
- case $nonopt in *shtool*) :;; *) false;; esac; then
+ case $nonopt in *shtool*) :;; *) false;; esac
+ then
# Aesthetically quote it.
func_quote_for_eval "$nonopt"
install_prog="$func_quote_for_eval_result "
@@ -2800,7 +4009,7 @@ func_mode_install ()
opts=
prev=
install_type=
- isdir=no
+ isdir=false
stripme=
no_mode=:
for arg
@@ -2813,7 +4022,7 @@ func_mode_install ()
fi
case $arg in
- -d) isdir=yes ;;
+ -d) isdir=: ;;
-f)
if $install_cp; then :; else
prev=$arg
@@ -2831,7 +4040,7 @@ func_mode_install ()
*)
# If the previous option needed an argument, then skip it.
if test -n "$prev"; then
- if test "x$prev" = x-m && test -n "$install_override_mode"; then
+ if test X-m = "X$prev" && test -n "$install_override_mode"; then
arg2=$install_override_mode
no_mode=false
fi
@@ -2856,7 +4065,7 @@ func_mode_install ()
func_fatal_help "you must specify an install program"
test -n "$prev" && \
- func_fatal_help "the \`$prev' option requires an argument"
+ func_fatal_help "the '$prev' option requires an argument"
if test -n "$install_override_mode" && $no_mode; then
if $install_cp; then :; else
@@ -2878,19 +4087,19 @@ func_mode_install ()
dest=$func_stripname_result
# Check to see that the destination is a directory.
- test -d "$dest" && isdir=yes
- if test "$isdir" = yes; then
- destdir="$dest"
+ test -d "$dest" && isdir=:
+ if $isdir; then
+ destdir=$dest
destname=
else
func_dirname_and_basename "$dest" "" "."
- destdir="$func_dirname_result"
- destname="$func_basename_result"
+ destdir=$func_dirname_result
+ destname=$func_basename_result
# Not a directory, so check to see that there is only one file specified.
set dummy $files; shift
test "$#" -gt 1 && \
- func_fatal_help "\`$dest' is not a directory"
+ func_fatal_help "'$dest' is not a directory"
fi
case $destdir in
[\\/]* | [A-Za-z]:[\\/]*) ;;
@@ -2899,7 +4108,7 @@ func_mode_install ()
case $file in
*.lo) ;;
*)
- func_fatal_help "\`$destdir' must be an absolute directory name"
+ func_fatal_help "'$destdir' must be an absolute directory name"
;;
esac
done
@@ -2908,7 +4117,7 @@ func_mode_install ()
# This variable tells wrapper scripts just to set variables rather
# than running their programs.
- libtool_install_magic="$magic"
+ libtool_install_magic=$magic
staticlibs=
future_libdirs=
@@ -2928,7 +4137,7 @@ func_mode_install ()
# Check to see that this really is a libtool archive.
func_lalib_unsafe_p "$file" \
- || func_fatal_help "\`$file' is not a valid libtool archive"
+ || func_fatal_help "'$file' is not a valid libtool archive"
library_names=
old_library=
@@ -2950,7 +4159,7 @@ func_mode_install ()
fi
func_dirname "$file" "/" ""
- dir="$func_dirname_result"
+ dir=$func_dirname_result
func_append dir "$objdir"
if test -n "$relink_command"; then
@@ -2964,7 +4173,7 @@ func_mode_install ()
# are installed into $libdir/../bin (currently, that works fine)
# but it's something to keep an eye on.
test "$inst_prefix_dir" = "$destdir" && \
- func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
if test -n "$inst_prefix_dir"; then
# Stick the inst_prefix_dir data into the link command.
@@ -2973,29 +4182,29 @@ func_mode_install ()
relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
fi
- func_warning "relinking \`$file'"
+ func_warning "relinking '$file'"
func_show_eval "$relink_command" \
- 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
+ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
fi
# See the names of the shared library.
set dummy $library_names; shift
if test -n "$1"; then
- realname="$1"
+ realname=$1
shift
- srcname="$realname"
- test -n "$relink_command" && srcname="$realname"T
+ srcname=$realname
+ test -n "$relink_command" && srcname=${realname}T
# Install the shared library and build the symlinks.
func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
'exit $?'
- tstripme="$stripme"
+ tstripme=$stripme
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
case $realname in
*.dll.a)
- tstripme=""
+ tstripme=
;;
esac
;;
@@ -3006,7 +4215,7 @@ func_mode_install ()
if test "$#" -gt 0; then
# Delete the old symlinks, and create new ones.
- # Try `ln -sf' first, because the `ln' binary might depend on
+ # Try 'ln -sf' first, because the 'ln' binary might depend on
# the symlink we replace! Solaris /bin/ln does not understand -f,
# so we also need to try rm && ln -s.
for linkname
@@ -3017,14 +4226,14 @@ func_mode_install ()
fi
# Do each command in the postinstall commands.
- lib="$destdir/$realname"
+ lib=$destdir/$realname
func_execute_cmds "$postinstall_cmds" 'exit $?'
fi
# Install the pseudo-library for information purposes.
func_basename "$file"
- name="$func_basename_result"
- instname="$dir/$name"i
+ name=$func_basename_result
+ instname=$dir/${name}i
func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
# Maybe install the static library, too.
@@ -3036,11 +4245,11 @@ func_mode_install ()
# Figure out destination file name, if it wasn't already specified.
if test -n "$destname"; then
- destfile="$destdir/$destname"
+ destfile=$destdir/$destname
else
func_basename "$file"
- destfile="$func_basename_result"
- destfile="$destdir/$destfile"
+ destfile=$func_basename_result
+ destfile=$destdir/$destfile
fi
# Deduce the name of the destination old-style object file.
@@ -3050,11 +4259,11 @@ func_mode_install ()
staticdest=$func_lo2o_result
;;
*.$objext)
- staticdest="$destfile"
+ staticdest=$destfile
destfile=
;;
*)
- func_fatal_help "cannot copy a libtool object to \`$destfile'"
+ func_fatal_help "cannot copy a libtool object to '$destfile'"
;;
esac
@@ -3063,7 +4272,7 @@ func_mode_install ()
func_show_eval "$install_prog $file $destfile" 'exit $?'
# Install the old object if enabled.
- if test "$build_old_libs" = yes; then
+ if test yes = "$build_old_libs"; then
# Deduce the name of the old-style object file.
func_lo2o "$file"
staticobj=$func_lo2o_result
@@ -3075,23 +4284,23 @@ func_mode_install ()
*)
# Figure out destination file name, if it wasn't already specified.
if test -n "$destname"; then
- destfile="$destdir/$destname"
+ destfile=$destdir/$destname
else
func_basename "$file"
- destfile="$func_basename_result"
- destfile="$destdir/$destfile"
+ destfile=$func_basename_result
+ destfile=$destdir/$destfile
fi
# If the file is missing, and there is a .exe on the end, strip it
# because it is most likely a libtool script we actually want to
# install
- stripped_ext=""
+ stripped_ext=
case $file in
*.exe)
if test ! -f "$file"; then
func_stripname '' '.exe' "$file"
file=$func_stripname_result
- stripped_ext=".exe"
+ stripped_ext=.exe
fi
;;
esac
@@ -3119,19 +4328,19 @@ func_mode_install ()
# Check the variables that should have been set.
test -z "$generated_by_libtool_version" && \
- func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+ func_fatal_error "invalid libtool wrapper script '$wrapper'"
- finalize=yes
+ finalize=:
for lib in $notinst_deplibs; do
# Check to see that each library is installed.
libdir=
if test -f "$lib"; then
func_source "$lib"
fi
- libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
+ libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
if test -n "$libdir" && test ! -f "$libfile"; then
- func_warning "\`$lib' has not been installed in \`$libdir'"
- finalize=no
+ func_warning "'$lib' has not been installed in '$libdir'"
+ finalize=false
fi
done
@@ -3139,29 +4348,29 @@ func_mode_install ()
func_source "$wrapper"
outputname=
- if test "$fast_install" = no && test -n "$relink_command"; then
+ if test no = "$fast_install" && test -n "$relink_command"; then
$opt_dry_run || {
- if test "$finalize" = yes; then
+ if $finalize; then
tmpdir=`func_mktempdir`
func_basename "$file$stripped_ext"
- file="$func_basename_result"
- outputname="$tmpdir/$file"
+ file=$func_basename_result
+ outputname=$tmpdir/$file
# Replace the output file specification.
relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
- $opt_silent || {
+ $opt_quiet || {
func_quote_for_expand "$relink_command"
eval "func_echo $func_quote_for_expand_result"
}
if eval "$relink_command"; then :
else
- func_error "error: relink \`$file' with the above command before installing it"
+ func_error "error: relink '$file' with the above command before installing it"
$opt_dry_run || ${RM}r "$tmpdir"
continue
fi
- file="$outputname"
+ file=$outputname
else
- func_warning "cannot relink \`$file'"
+ func_warning "cannot relink '$file'"
fi
}
else
@@ -3198,10 +4407,10 @@ func_mode_install ()
for file in $staticlibs; do
func_basename "$file"
- name="$func_basename_result"
+ name=$func_basename_result
# Set up the ranlib parameters.
- oldlib="$destdir/$name"
+ oldlib=$destdir/$name
func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
tool_oldlib=$func_to_tool_file_result
@@ -3216,18 +4425,18 @@ func_mode_install ()
done
test -n "$future_libdirs" && \
- func_warning "remember to run \`$progname --finish$future_libdirs'"
+ func_warning "remember to run '$progname --finish$future_libdirs'"
if test -n "$current_libdirs"; then
# Maybe just do a dry run.
$opt_dry_run && current_libdirs=" -n$current_libdirs"
- exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+ exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
else
exit $EXIT_SUCCESS
fi
}
-test "$opt_mode" = install && func_mode_install ${1+"$@"}
+test install = "$opt_mode" && func_mode_install ${1+"$@"}
# func_generate_dlsyms outputname originator pic_p
@@ -3235,16 +4444,17 @@ test "$opt_mode" = install && func_mode_install ${1+"$@"}
# a dlpreopen symbol table.
func_generate_dlsyms ()
{
- $opt_debug
- my_outputname="$1"
- my_originator="$2"
- my_pic_p="${3-no}"
+ $debug_cmd
+
+ my_outputname=$1
+ my_originator=$2
+ my_pic_p=${3-false}
my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
my_dlsyms=
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
if test -n "$NM" && test -n "$global_symbol_pipe"; then
- my_dlsyms="${my_outputname}S.c"
+ my_dlsyms=${my_outputname}S.c
else
func_error "not configured to extract global symbols from dlpreopened files"
fi
@@ -3255,7 +4465,7 @@ func_generate_dlsyms ()
"") ;;
*.c)
# Discover the nlist of each of the dlfiles.
- nlist="$output_objdir/${my_outputname}.nm"
+ nlist=$output_objdir/$my_outputname.nm
func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
@@ -3263,34 +4473,36 @@ func_generate_dlsyms ()
func_verbose "creating $output_objdir/$my_dlsyms"
$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
#ifdef __cplusplus
extern \"C\" {
#endif
-#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
#endif
/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
relocations are performed -- see ld's documentation on pseudo-relocs. */
# define LT_DLSYM_CONST
-#elif defined(__osf__)
+#elif defined __osf__
/* This system does not cope well with relocations in const data. */
# define LT_DLSYM_CONST
#else
# define LT_DLSYM_CONST const
#endif
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
/* External symbol declarations for the compiler. */\
"
- if test "$dlself" = yes; then
- func_verbose "generating symbol list for \`$output'"
+ if test yes = "$dlself"; then
+ func_verbose "generating symbol list for '$output'"
$opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
@@ -3298,7 +4510,7 @@ extern \"C\" {
progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
for progfile in $progfiles; do
func_to_tool_file "$progfile" func_convert_file_msys_to_w32
- func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
+ func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
$opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
done
@@ -3318,10 +4530,10 @@ extern \"C\" {
# Prepare the list of exported symbols
if test -z "$export_symbols"; then
- export_symbols="$output_objdir/$outputname.exp"
+ export_symbols=$output_objdir/$outputname.exp
$opt_dry_run || {
$RM $export_symbols
- eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
case $host in
*cygwin* | *mingw* | *cegcc* )
eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
@@ -3331,7 +4543,7 @@ extern \"C\" {
}
else
$opt_dry_run || {
- eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+ eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
eval '$MV "$nlist"T "$nlist"'
case $host in
@@ -3345,22 +4557,22 @@ extern \"C\" {
fi
for dlprefile in $dlprefiles; do
- func_verbose "extracting global C symbols from \`$dlprefile'"
+ func_verbose "extracting global C symbols from '$dlprefile'"
func_basename "$dlprefile"
- name="$func_basename_result"
+ name=$func_basename_result
case $host in
*cygwin* | *mingw* | *cegcc* )
# if an import library, we need to obtain dlname
if func_win32_import_lib_p "$dlprefile"; then
func_tr_sh "$dlprefile"
eval "curr_lafile=\$libfile_$func_tr_sh_result"
- dlprefile_dlbasename=""
+ dlprefile_dlbasename=
if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
# Use subshell, to avoid clobbering current variable values
dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
- if test -n "$dlprefile_dlname" ; then
+ if test -n "$dlprefile_dlname"; then
func_basename "$dlprefile_dlname"
- dlprefile_dlbasename="$func_basename_result"
+ dlprefile_dlbasename=$func_basename_result
else
# no lafile. user explicitly requested -dlpreopen <import library>.
$sharedlib_from_linklib_cmd "$dlprefile"
@@ -3368,7 +4580,7 @@ extern \"C\" {
fi
fi
$opt_dry_run || {
- if test -n "$dlprefile_dlbasename" ; then
+ if test -n "$dlprefile_dlbasename"; then
eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
else
func_warning "Could not compute DLL name from $name"
@@ -3424,6 +4636,11 @@ extern \"C\" {
echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
fi
+ func_show_eval '$RM "${nlist}I"'
+ if test -n "$global_symbol_to_import"; then
+ eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
+ fi
+
echo >> "$output_objdir/$my_dlsyms" "\
/* The mapping between symbol names and symbols. */
@@ -3432,11 +4649,30 @@ typedef struct {
void *address;
} lt_dlsymlist;
extern LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[];
+lt_${my_prefix}_LTX_preloaded_symbols[];\
+"
+
+ if test -s "$nlist"I; then
+ echo >> "$output_objdir/$my_dlsyms" "\
+static void lt_syminit(void)
+{
+ LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
+ for (; symbol->name; ++symbol)
+ {"
+ $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
+ echo >> "$output_objdir/$my_dlsyms" "\
+ }
+}"
+ fi
+ echo >> "$output_objdir/$my_dlsyms" "\
LT_DLSYM_CONST lt_dlsymlist
lt_${my_prefix}_LTX_preloaded_symbols[] =
-{\
- { \"$my_originator\", (void *) 0 },"
+{ {\"$my_originator\", (void *) 0},"
+
+ if test -s "$nlist"I; then
+ echo >> "$output_objdir/$my_dlsyms" "\
+ {\"@INIT@\", (void *) &lt_syminit},"
+ fi
case $need_lib_prefix in
no)
@@ -3478,9 +4714,7 @@ static const void *lt_preloaded_setup() {
*-*-hpux*)
pic_flag_for_symtable=" $pic_flag" ;;
*)
- if test "X$my_pic_p" != Xno; then
- pic_flag_for_symtable=" $pic_flag"
- fi
+ $my_pic_p && pic_flag_for_symtable=" $pic_flag"
;;
esac
;;
@@ -3497,10 +4731,10 @@ static const void *lt_preloaded_setup() {
func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
# Clean up the generated files.
- func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+ func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
# Transform the symbol file into the correct name.
- symfileobj="$output_objdir/${my_outputname}S.$objext"
+ symfileobj=$output_objdir/${my_outputname}S.$objext
case $host in
*cygwin* | *mingw* | *cegcc* )
if test -f "$output_objdir/$my_outputname.def"; then
@@ -3518,7 +4752,7 @@ static const void *lt_preloaded_setup() {
esac
;;
*)
- func_fatal_error "unknown suffix for \`$my_dlsyms'"
+ func_fatal_error "unknown suffix for '$my_dlsyms'"
;;
esac
else
@@ -3532,6 +4766,32 @@ static const void *lt_preloaded_setup() {
fi
}
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+ $debug_cmd
+
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+ test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+ $debug_cmd
+
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+ test -n "$func_cygming_ms_implib_tmp"
+}
+
# func_win32_libid arg
# return the library type of file 'arg'
#
@@ -3541,8 +4801,9 @@ static const void *lt_preloaded_setup() {
# Despite the name, also deal with 64 bit binaries.
func_win32_libid ()
{
- $opt_debug
- win32_libid_type="unknown"
+ $debug_cmd
+
+ win32_libid_type=unknown
win32_fileres=`file -L $1 2>/dev/null`
case $win32_fileres in
*ar\ archive\ import\ library*) # definitely import
@@ -3552,16 +4813,29 @@ func_win32_libid ()
# Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
$EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
- func_to_tool_file "$1" func_convert_file_msys_to_w32
- win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
- $SED -n -e '
+ case $nm_interface in
+ "MS dumpbin")
+ if func_cygming_ms_implib_p "$1" ||
+ func_cygming_gnu_implib_p "$1"
+ then
+ win32_nmres=import
+ else
+ win32_nmres=
+ fi
+ ;;
+ *)
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+ $SED -n -e '
1,100{
/ I /{
- s,.*,import,
+ s|.*|import|
p
q
}
}'`
+ ;;
+ esac
case $win32_nmres in
import*) win32_libid_type="x86 archive import";;
*) win32_libid_type="x86 archive static";;
@@ -3593,7 +4867,8 @@ func_win32_libid ()
# $sharedlib_from_linklib_result
func_cygming_dll_for_implib ()
{
- $opt_debug
+ $debug_cmd
+
sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
}
@@ -3610,7 +4885,8 @@ func_cygming_dll_for_implib ()
# specified import library.
func_cygming_dll_for_implib_fallback_core ()
{
- $opt_debug
+ $debug_cmd
+
match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
$OBJDUMP -s --section "$1" "$2" 2>/dev/null |
$SED '/^Contents of section '"$match_literal"':/{
@@ -3646,8 +4922,8 @@ func_cygming_dll_for_implib_fallback_core ()
/./p' |
# we now have a list, one entry per line, of the stringified
# contents of the appropriate section of all members of the
- # archive which possess that section. Heuristic: eliminate
- # all those which have a first or second character that is
+ # archive that possess that section. Heuristic: eliminate
+ # all those that have a first or second character that is
# a '.' (that is, objdump's representation of an unprintable
# character.) This should work for all archives with less than
# 0x302f exports -- but will fail for DLLs whose name actually
@@ -3658,30 +4934,6 @@ func_cygming_dll_for_implib_fallback_core ()
$SED -e '/^\./d;/^.\./d;q'
}
-# func_cygming_gnu_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is a GNU/binutils-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_gnu_implib_p ()
-{
- $opt_debug
- func_to_tool_file "$1" func_convert_file_msys_to_w32
- func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
- test -n "$func_cygming_gnu_implib_tmp"
-}
-
-# func_cygming_ms_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is an MS-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_ms_implib_p ()
-{
- $opt_debug
- func_to_tool_file "$1" func_convert_file_msys_to_w32
- func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
- test -n "$func_cygming_ms_implib_tmp"
-}
-
# func_cygming_dll_for_implib_fallback ARG
# Platform-specific function to extract the
# name of the DLL associated with the specified
@@ -3695,16 +4947,17 @@ func_cygming_ms_implib_p ()
# $sharedlib_from_linklib_result
func_cygming_dll_for_implib_fallback ()
{
- $opt_debug
- if func_cygming_gnu_implib_p "$1" ; then
+ $debug_cmd
+
+ if func_cygming_gnu_implib_p "$1"; then
# binutils import library
sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
- elif func_cygming_ms_implib_p "$1" ; then
+ elif func_cygming_ms_implib_p "$1"; then
# ms-generated import library
sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
else
# unknown
- sharedlib_from_linklib_result=""
+ sharedlib_from_linklib_result=
fi
}
@@ -3712,10 +4965,11 @@ func_cygming_dll_for_implib_fallback ()
# func_extract_an_archive dir oldlib
func_extract_an_archive ()
{
- $opt_debug
- f_ex_an_ar_dir="$1"; shift
- f_ex_an_ar_oldlib="$1"
- if test "$lock_old_archive_extraction" = yes; then
+ $debug_cmd
+
+ f_ex_an_ar_dir=$1; shift
+ f_ex_an_ar_oldlib=$1
+ if test yes = "$lock_old_archive_extraction"; then
lockfile=$f_ex_an_ar_oldlib.lock
until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
func_echo "Waiting for $lockfile to be removed"
@@ -3724,7 +4978,7 @@ func_extract_an_archive ()
fi
func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
'stat=$?; rm -f "$lockfile"; exit $stat'
- if test "$lock_old_archive_extraction" = yes; then
+ if test yes = "$lock_old_archive_extraction"; then
$opt_dry_run || rm -f "$lockfile"
fi
if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
@@ -3738,22 +4992,23 @@ func_extract_an_archive ()
# func_extract_archives gentop oldlib ...
func_extract_archives ()
{
- $opt_debug
- my_gentop="$1"; shift
+ $debug_cmd
+
+ my_gentop=$1; shift
my_oldlibs=${1+"$@"}
- my_oldobjs=""
- my_xlib=""
- my_xabs=""
- my_xdir=""
+ my_oldobjs=
+ my_xlib=
+ my_xabs=
+ my_xdir=
for my_xlib in $my_oldlibs; do
# Extract the objects.
case $my_xlib in
- [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
*) my_xabs=`pwd`"/$my_xlib" ;;
esac
func_basename "$my_xlib"
- my_xlib="$func_basename_result"
+ my_xlib=$func_basename_result
my_xlib_u=$my_xlib
while :; do
case " $extracted_archives " in
@@ -3765,7 +5020,7 @@ func_extract_archives ()
esac
done
extracted_archives="$extracted_archives $my_xlib_u"
- my_xdir="$my_gentop/$my_xlib_u"
+ my_xdir=$my_gentop/$my_xlib_u
func_mkdir_p "$my_xdir"
@@ -3778,19 +5033,20 @@ func_extract_archives ()
cd $my_xdir || exit $?
darwin_archive=$my_xabs
darwin_curdir=`pwd`
- darwin_base_archive=`basename "$darwin_archive"`
+ func_basename "$darwin_archive"
+ darwin_base_archive=$func_basename_result
darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
if test -n "$darwin_arches"; then
darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
darwin_arch=
func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
- for darwin_arch in $darwin_arches ; do
- func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
- $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
- cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
- func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+ for darwin_arch in $darwin_arches; do
+ func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
+ $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
+ cd "unfat-$$/$darwin_base_archive-$darwin_arch"
+ func_extract_an_archive "`pwd`" "$darwin_base_archive"
cd "$darwin_curdir"
- $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+ $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
done # $darwin_arches
## Okay now we've a bunch of thin objects, gotta fatten them up :)
darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
@@ -3815,7 +5071,7 @@ func_extract_archives ()
my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
done
- func_extract_archives_result="$my_oldobjs"
+ func_extract_archives_result=$my_oldobjs
}
@@ -3830,7 +5086,7 @@ func_extract_archives ()
#
# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
# variable will take. If 'yes', then the emitted script
-# will assume that the directory in which it is stored is
+# will assume that the directory where it is stored is
# the $objdir directory. This is a cygwin/mingw-specific
# behavior.
func_emit_wrapper ()
@@ -3841,7 +5097,7 @@ func_emit_wrapper ()
#! $SHELL
# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
#
# The $output program cannot be directly executed until all the libtool
# libraries that it depends on are installed.
@@ -3898,9 +5154,9 @@ _LTECHO_EOF'
# Very basic option parsing. These options are (a) specific to
# the libtool wrapper, (b) are identical between the wrapper
-# /script/ and the wrapper /executable/ which is used only on
+# /script/ and the wrapper /executable/ that is used only on
# windows platforms, and (c) all begin with the string "--lt-"
-# (application programs are unlikely to have options which match
+# (application programs are unlikely to have options that match
# this pattern).
#
# There are only two supported options: --lt-debug and
@@ -3933,7 +5189,7 @@ func_parse_lt_options ()
# Print the debug banner immediately:
if test -n \"\$lt_option_debug\"; then
- echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
+ echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
fi
}
@@ -3944,7 +5200,7 @@ func_lt_dump_args ()
lt_dump_args_N=1;
for lt_arg
do
- \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
+ \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
done
}
@@ -3958,7 +5214,7 @@ func_exec_program_core ()
*-*-mingw | *-*-os2* | *-cegcc*)
$ECHO "\
if test -n \"\$lt_option_debug\"; then
- \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
+ \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
func_lt_dump_args \${1+\"\$@\"} 1>&2
fi
exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
@@ -3968,7 +5224,7 @@ func_exec_program_core ()
*)
$ECHO "\
if test -n \"\$lt_option_debug\"; then
- \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
+ \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
func_lt_dump_args \${1+\"\$@\"} 1>&2
fi
exec \"\$progdir/\$program\" \${1+\"\$@\"}
@@ -4043,13 +5299,13 @@ func_exec_program ()
test -n \"\$absdir\" && thisdir=\"\$absdir\"
"
- if test "$fast_install" = yes; then
+ if test yes = "$fast_install"; then
$ECHO "\
program=lt-'$outputname'$exeext
progdir=\"\$thisdir/$objdir\"
if test ! -f \"\$progdir/\$program\" ||
- { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
test \"X\$file\" != \"X\$progdir/\$program\"; }; then
file=\"\$\$-\$program\"
@@ -4101,7 +5357,7 @@ func_exec_program ()
fi
# Export our shlibpath_var if we have one.
- if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
$ECHO "\
# Add our own library path to $shlibpath_var
$shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
@@ -4121,7 +5377,7 @@ func_exec_program ()
fi
else
# The program doesn't exist.
- \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+ \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
\$ECHO \"This script is just a wrapper for \$program.\" 1>&2
\$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
exit 1
@@ -4140,7 +5396,7 @@ func_emit_cwrapperexe_src ()
cat <<EOF
/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
- Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+ Generated by $PROGRAM (GNU $PACKAGE) $VERSION
The $output program cannot be directly executed until all the libtool
libraries that it depends on are installed.
@@ -4175,47 +5431,45 @@ EOF
#include <fcntl.h>
#include <sys/stat.h>
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
/* declarations of non-ANSI functions */
-#if defined(__MINGW32__)
+#if defined __MINGW32__
# ifdef __STRICT_ANSI__
int _putenv (const char *);
# endif
-#elif defined(__CYGWIN__)
+#elif defined __CYGWIN__
# ifdef __STRICT_ANSI__
char *realpath (const char *, char *);
int putenv (char *);
int setenv (const char *, const char *, int);
# endif
-/* #elif defined (other platforms) ... */
+/* #elif defined other_platform || defined ... */
#endif
/* portability defines, excluding path handling macros */
-#if defined(_MSC_VER)
+#if defined _MSC_VER
# define setmode _setmode
# define stat _stat
# define chmod _chmod
# define getcwd _getcwd
# define putenv _putenv
# define S_IXUSR _S_IEXEC
-# ifndef _INTPTR_T_DEFINED
-# define _INTPTR_T_DEFINED
-# define intptr_t int
-# endif
-#elif defined(__MINGW32__)
+#elif defined __MINGW32__
# define setmode _setmode
# define stat _stat
# define chmod _chmod
# define getcwd _getcwd
# define putenv _putenv
-#elif defined(__CYGWIN__)
+#elif defined __CYGWIN__
# define HAVE_SETENV
# define FOPEN_WB "wb"
-/* #elif defined (other platforms) ... */
+/* #elif defined other platforms ... */
#endif
-#if defined(PATH_MAX)
+#if defined PATH_MAX
# define LT_PATHMAX PATH_MAX
-#elif defined(MAXPATHLEN)
+#elif defined MAXPATHLEN
# define LT_PATHMAX MAXPATHLEN
#else
# define LT_PATHMAX 1024
@@ -4234,8 +5488,8 @@ int setenv (const char *, const char *, int);
# define PATH_SEPARATOR ':'
#endif
-#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
- defined (__OS2__)
+#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
+ defined __OS2__
# define HAVE_DOS_BASED_FILE_SYSTEM
# define FOPEN_WB "wb"
# ifndef DIR_SEPARATOR_2
@@ -4268,10 +5522,10 @@ int setenv (const char *, const char *, int);
#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
#define XFREE(stale) do { \
- if (stale) { free ((void *) stale); stale = 0; } \
+ if (stale) { free (stale); stale = 0; } \
} while (0)
-#if defined(LT_DEBUGWRAPPER)
+#if defined LT_DEBUGWRAPPER
static int lt_debug = 1;
#else
static int lt_debug = 0;
@@ -4304,7 +5558,7 @@ volatile const char * MAGIC_EXE = "$magic_exe";
const char * LIB_PATH_VARNAME = "$shlibpath_var";
EOF
- if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
func_to_host_path "$temp_rpath"
cat <<EOF
const char * LIB_PATH_VALUE = "$func_to_host_path_result";
@@ -4328,7 +5582,7 @@ const char * EXE_PATH_VALUE = "";
EOF
fi
- if test "$fast_install" = yes; then
+ if test yes = "$fast_install"; then
cat <<EOF
const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
EOF
@@ -4357,12 +5611,12 @@ main (int argc, char *argv[])
char *actual_cwrapper_name;
char *target_name;
char *lt_argv_zero;
- intptr_t rval = 127;
+ int rval = 127;
int i;
program_name = (char *) xstrdup (base_name (argv[0]));
- newargz = XMALLOC (char *, argc + 1);
+ newargz = XMALLOC (char *, (size_t) argc + 1);
/* very simple arg parsing; don't want to rely on getopt
* also, copy all non cwrapper options to newargz, except
@@ -4371,10 +5625,10 @@ main (int argc, char *argv[])
newargc=0;
for (i = 1; i < argc; i++)
{
- if (strcmp (argv[i], dumpscript_opt) == 0)
+ if (STREQ (argv[i], dumpscript_opt))
{
EOF
- case "$host" in
+ case $host in
*mingw* | *cygwin* )
# make stdout use "unix" line endings
echo " setmode(1,_O_BINARY);"
@@ -4385,12 +5639,12 @@ EOF
lt_dump_script (stdout);
return 0;
}
- if (strcmp (argv[i], debug_opt) == 0)
+ if (STREQ (argv[i], debug_opt))
{
lt_debug = 1;
continue;
}
- if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
+ if (STREQ (argv[i], ltwrapper_option_prefix))
{
/* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
namespace, but it is not one of the ones we know about and
@@ -4413,7 +5667,7 @@ EOF
EOF
cat <<EOF
/* The GNU banner must be the first non-error debug message */
- lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
+ lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
EOF
cat <<"EOF"
lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
@@ -4524,7 +5778,7 @@ EOF
cat <<"EOF"
/* execv doesn't actually work on mingw as expected on unix */
newargz = prepare_spawn (newargz);
- rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+ rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
if (rval == -1)
{
/* failed to start process */
@@ -4569,7 +5823,7 @@ base_name (const char *name)
{
const char *base;
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
/* Skip over the disk name in MSDOS pathnames. */
if (isalpha ((unsigned char) name[0]) && name[1] == ':')
name += 2;
@@ -4628,7 +5882,7 @@ find_executable (const char *wrapper)
const char *p_next;
/* static buffer for getcwd */
char tmp[LT_PATHMAX + 1];
- int tmp_len;
+ size_t tmp_len;
char *concat_name;
lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
@@ -4638,7 +5892,7 @@ find_executable (const char *wrapper)
return NULL;
/* Absolute path? */
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
{
concat_name = xstrdup (wrapper);
@@ -4656,7 +5910,7 @@ find_executable (const char *wrapper)
return concat_name;
XFREE (concat_name);
}
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
}
#endif
@@ -4679,7 +5933,7 @@ find_executable (const char *wrapper)
for (q = p; *q; q++)
if (IS_PATH_SEPARATOR (*q))
break;
- p_len = q - p;
+ p_len = (size_t) (q - p);
p_next = (*q == '\0' ? q : q + 1);
if (p_len == 0)
{
@@ -4798,7 +6052,7 @@ strendzap (char *str, const char *pat)
if (patlen <= len)
{
str += len - patlen;
- if (strcmp (str, pat) == 0)
+ if (STREQ (str, pat))
*str = '\0';
}
return str;
@@ -4863,7 +6117,7 @@ lt_setenv (const char *name, const char *value)
char *str = xstrdup (value);
setenv (name, str, 1);
#else
- int len = strlen (name) + 1 + strlen (value) + 1;
+ size_t len = strlen (name) + 1 + strlen (value) + 1;
char *str = XMALLOC (char, len);
sprintf (str, "%s=%s", name, value);
if (putenv (str) != EXIT_SUCCESS)
@@ -4880,8 +6134,8 @@ lt_extend_str (const char *orig_value, const char *add, int to_end)
char *new_value;
if (orig_value && *orig_value)
{
- int orig_value_len = strlen (orig_value);
- int add_len = strlen (add);
+ size_t orig_value_len = strlen (orig_value);
+ size_t add_len = strlen (add);
new_value = XMALLOC (char, add_len + orig_value_len + 1);
if (to_end)
{
@@ -4912,10 +6166,10 @@ lt_update_exe_path (const char *name, const char *value)
{
char *new_value = lt_extend_str (getenv (name), value, 0);
/* some systems can't cope with a ':'-terminated path #' */
- int len = strlen (new_value);
- while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+ size_t len = strlen (new_value);
+ while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
{
- new_value[len-1] = '\0';
+ new_value[--len] = '\0';
}
lt_setenv (name, new_value);
XFREE (new_value);
@@ -5082,7 +6336,8 @@ EOF
# True if ARG is an import lib, as indicated by $file_magic_cmd
func_win32_import_lib_p ()
{
- $opt_debug
+ $debug_cmd
+
case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
*import*) : ;;
*) false ;;
@@ -5092,17 +6347,18 @@ func_win32_import_lib_p ()
# func_mode_link arg...
func_mode_link ()
{
- $opt_debug
+ $debug_cmd
+
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
# It is impossible to link a dll without this setting, and
# we shouldn't force the makefile maintainer to figure out
- # which system we are compiling for in order to pass an extra
+ # what system we are compiling for in order to pass an extra
# flag for every libtool invocation.
# allow_undefined=no
# FIXME: Unfortunately, there are problems with the above when trying
- # to make a dll which has undefined symbols, in which case not
+ # to make a dll that has undefined symbols, in which case not
# even a static library is built. For now, we need to specify
# -no-undefined on the libtool link line when we can be certain
# that all symbols are satisfied, otherwise we get a static library.
@@ -5149,7 +6405,7 @@ func_mode_link ()
non_pic_objects=
precious_files_regex=
prefer_static_libs=no
- preload=no
+ preload=false
prev=
prevarg=
release=
@@ -5161,7 +6417,7 @@ func_mode_link ()
vinfo=
vinfo_number=no
weak_libs=
- single_module="${wl}-single_module"
+ single_module=$wl-single_module
func_infer_tag $base_compile
# We need to know -static, to get the right output filenames.
@@ -5169,15 +6425,15 @@ func_mode_link ()
do
case $arg in
-shared)
- test "$build_libtool_libs" != yes && \
- func_fatal_configuration "can not build a shared library"
+ test yes != "$build_libtool_libs" \
+ && func_fatal_configuration "cannot build a shared library"
build_old_libs=no
break
;;
-all-static | -static | -static-libtool-libs)
case $arg in
-all-static)
- if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
func_warning "complete static linking is impossible in this configuration"
fi
if test -n "$link_static_flag"; then
@@ -5210,7 +6466,7 @@ func_mode_link ()
# Go through the arguments, transforming them on the way.
while test "$#" -gt 0; do
- arg="$1"
+ arg=$1
shift
func_quote_for_eval "$arg"
qarg=$func_quote_for_eval_unquoted_result
@@ -5227,21 +6483,21 @@ func_mode_link ()
case $prev in
bindir)
- bindir="$arg"
+ bindir=$arg
prev=
continue
;;
dlfiles|dlprefiles)
- if test "$preload" = no; then
+ $preload || {
# Add the symbol object into the linking commands.
func_append compile_command " @SYMFILE@"
func_append finalize_command " @SYMFILE@"
- preload=yes
- fi
+ preload=:
+ }
case $arg in
*.la | *.lo) ;; # We handle these cases below.
force)
- if test "$dlself" = no; then
+ if test no = "$dlself"; then
dlself=needless
export_dynamic=yes
fi
@@ -5249,9 +6505,9 @@ func_mode_link ()
continue
;;
self)
- if test "$prev" = dlprefiles; then
+ if test dlprefiles = "$prev"; then
dlself=yes
- elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+ elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
dlself=yes
else
dlself=needless
@@ -5261,7 +6517,7 @@ func_mode_link ()
continue
;;
*)
- if test "$prev" = dlfiles; then
+ if test dlfiles = "$prev"; then
func_append dlfiles " $arg"
else
func_append dlprefiles " $arg"
@@ -5272,14 +6528,14 @@ func_mode_link ()
esac
;;
expsyms)
- export_symbols="$arg"
+ export_symbols=$arg
test -f "$arg" \
- || func_fatal_error "symbol file \`$arg' does not exist"
+ || func_fatal_error "symbol file '$arg' does not exist"
prev=
continue
;;
expsyms_regex)
- export_symbols_regex="$arg"
+ export_symbols_regex=$arg
prev=
continue
;;
@@ -5297,7 +6553,13 @@ func_mode_link ()
continue
;;
inst_prefix)
- inst_prefix_dir="$arg"
+ inst_prefix_dir=$arg
+ prev=
+ continue
+ ;;
+ mllvm)
+ # Clang does not use LLVM to link, so we can simply discard any
+ # '-mllvm $arg' options when doing the link step.
prev=
continue
;;
@@ -5321,21 +6583,21 @@ func_mode_link ()
if test -z "$pic_object" ||
test -z "$non_pic_object" ||
- test "$pic_object" = none &&
- test "$non_pic_object" = none; then
- func_fatal_error "cannot find name of object for \`$arg'"
+ test none = "$pic_object" &&
+ test none = "$non_pic_object"; then
+ func_fatal_error "cannot find name of object for '$arg'"
fi
# Extract subdirectory from the argument.
func_dirname "$arg" "/" ""
- xdir="$func_dirname_result"
+ xdir=$func_dirname_result
- if test "$pic_object" != none; then
+ if test none != "$pic_object"; then
# Prepend the subdirectory the object is found in.
- pic_object="$xdir$pic_object"
+ pic_object=$xdir$pic_object
- if test "$prev" = dlfiles; then
- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ if test dlfiles = "$prev"; then
+ if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
func_append dlfiles " $pic_object"
prev=
continue
@@ -5346,7 +6608,7 @@ func_mode_link ()
fi
# CHECK ME: I think I busted this. -Ossama
- if test "$prev" = dlprefiles; then
+ if test dlprefiles = "$prev"; then
# Preload the old-style object.
func_append dlprefiles " $pic_object"
prev=
@@ -5354,23 +6616,23 @@ func_mode_link ()
# A PIC object.
func_append libobjs " $pic_object"
- arg="$pic_object"
+ arg=$pic_object
fi
# Non-PIC object.
- if test "$non_pic_object" != none; then
+ if test none != "$non_pic_object"; then
# Prepend the subdirectory the object is found in.
- non_pic_object="$xdir$non_pic_object"
+ non_pic_object=$xdir$non_pic_object
# A standard non-PIC object
func_append non_pic_objects " $non_pic_object"
- if test -z "$pic_object" || test "$pic_object" = none ; then
- arg="$non_pic_object"
+ if test -z "$pic_object" || test none = "$pic_object"; then
+ arg=$non_pic_object
fi
else
# If the PIC object exists, use it instead.
# $xdir was prepended to $pic_object above.
- non_pic_object="$pic_object"
+ non_pic_object=$pic_object
func_append non_pic_objects " $non_pic_object"
fi
else
@@ -5378,7 +6640,7 @@ func_mode_link ()
if $opt_dry_run; then
# Extract subdirectory from the argument.
func_dirname "$arg" "/" ""
- xdir="$func_dirname_result"
+ xdir=$func_dirname_result
func_lo2o "$arg"
pic_object=$xdir$objdir/$func_lo2o_result
@@ -5386,24 +6648,24 @@ func_mode_link ()
func_append libobjs " $pic_object"
func_append non_pic_objects " $non_pic_object"
else
- func_fatal_error "\`$arg' is not a valid libtool object"
+ func_fatal_error "'$arg' is not a valid libtool object"
fi
fi
done
else
- func_fatal_error "link input file \`$arg' does not exist"
+ func_fatal_error "link input file '$arg' does not exist"
fi
arg=$save_arg
prev=
continue
;;
precious_regex)
- precious_files_regex="$arg"
+ precious_files_regex=$arg
prev=
continue
;;
release)
- release="-$arg"
+ release=-$arg
prev=
continue
;;
@@ -5415,7 +6677,7 @@ func_mode_link ()
func_fatal_error "only absolute run-paths are allowed"
;;
esac
- if test "$prev" = rpath; then
+ if test rpath = "$prev"; then
case "$rpath " in
*" $arg "*) ;;
*) func_append rpath " $arg" ;;
@@ -5430,7 +6692,7 @@ func_mode_link ()
continue
;;
shrext)
- shrext_cmds="$arg"
+ shrext_cmds=$arg
prev=
continue
;;
@@ -5470,7 +6732,7 @@ func_mode_link ()
esac
fi # test -n "$prev"
- prevarg="$arg"
+ prevarg=$arg
case $arg in
-all-static)
@@ -5484,7 +6746,7 @@ func_mode_link ()
-allow-undefined)
# FIXME: remove this flag sometime in the future.
- func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+ func_fatal_error "'-allow-undefined' must not be used because it is the default"
;;
-avoid-version)
@@ -5516,7 +6778,7 @@ func_mode_link ()
if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
func_fatal_error "more than one -exported-symbols argument is not allowed"
fi
- if test "X$arg" = "X-export-symbols"; then
+ if test X-export-symbols = "X$arg"; then
prev=expsyms
else
prev=expsyms_regex
@@ -5550,9 +6812,9 @@ func_mode_link ()
func_stripname "-L" '' "$arg"
if test -z "$func_stripname_result"; then
if test "$#" -gt 0; then
- func_fatal_error "require no space between \`-L' and \`$1'"
+ func_fatal_error "require no space between '-L' and '$1'"
else
- func_fatal_error "need path for \`-L' option"
+ func_fatal_error "need path for '-L' option"
fi
fi
func_resolve_sysroot "$func_stripname_result"
@@ -5563,8 +6825,8 @@ func_mode_link ()
*)
absdir=`cd "$dir" && pwd`
test -z "$absdir" && \
- func_fatal_error "cannot determine absolute directory name of \`$dir'"
- dir="$absdir"
+ func_fatal_error "cannot determine absolute directory name of '$dir'"
+ dir=$absdir
;;
esac
case "$deplibs " in
@@ -5599,7 +6861,7 @@ func_mode_link ()
;;
-l*)
- if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+ if test X-lc = "X$arg" || test X-lm = "X$arg"; then
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
# These systems don't actually have a C or math library (as such)
@@ -5607,11 +6869,11 @@ func_mode_link ()
;;
*-*-os2*)
# These systems don't actually have a C library (as such)
- test "X$arg" = "X-lc" && continue
+ test X-lc = "X$arg" && continue
;;
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
# Do not include libc due to us having libc/libc_r.
- test "X$arg" = "X-lc" && continue
+ test X-lc = "X$arg" && continue
;;
*-*-rhapsody* | *-*-darwin1.[012])
# Rhapsody C and math libraries are in the System framework
@@ -5620,16 +6882,16 @@ func_mode_link ()
;;
*-*-sco3.2v5* | *-*-sco5v6*)
# Causes problems with __ctype
- test "X$arg" = "X-lc" && continue
+ test X-lc = "X$arg" && continue
;;
*-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
# Compiler inserts libc in the correct place for threads to work
- test "X$arg" = "X-lc" && continue
+ test X-lc = "X$arg" && continue
;;
esac
- elif test "X$arg" = "X-lc_r"; then
+ elif test X-lc_r = "X$arg"; then
case $host in
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
# Do not include libc_r directly, use -pthread flag.
continue
;;
@@ -5639,6 +6901,11 @@ func_mode_link ()
continue
;;
+ -mllvm)
+ prev=mllvm
+ continue
+ ;;
+
-module)
module=yes
continue
@@ -5668,7 +6935,7 @@ func_mode_link ()
;;
-multi_module)
- single_module="${wl}-multi_module"
+ single_module=$wl-multi_module
continue
;;
@@ -5682,8 +6949,8 @@ func_mode_link ()
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
# The PATH hackery in wrapper scripts is required on Windows
# and Darwin in order for the loader to find any dlls it needs.
- func_warning "\`-no-install' is ignored for $host"
- func_warning "assuming \`-no-fast-install' instead"
+ func_warning "'-no-install' is ignored for $host"
+ func_warning "assuming '-no-fast-install' instead"
fast_install=no
;;
*) no_install=yes ;;
@@ -5788,14 +7055,14 @@ func_mode_link ()
func_stripname '-Wc,' '' "$arg"
args=$func_stripname_result
arg=
- save_ifs="$IFS"; IFS=','
+ save_ifs=$IFS; IFS=,
for flag in $args; do
- IFS="$save_ifs"
+ IFS=$save_ifs
func_quote_for_eval "$flag"
func_append arg " $func_quote_for_eval_result"
func_append compiler_flags " $func_quote_for_eval_result"
done
- IFS="$save_ifs"
+ IFS=$save_ifs
func_stripname ' ' '' "$arg"
arg=$func_stripname_result
;;
@@ -5804,15 +7071,15 @@ func_mode_link ()
func_stripname '-Wl,' '' "$arg"
args=$func_stripname_result
arg=
- save_ifs="$IFS"; IFS=','
+ save_ifs=$IFS; IFS=,
for flag in $args; do
- IFS="$save_ifs"
+ IFS=$save_ifs
func_quote_for_eval "$flag"
func_append arg " $wl$func_quote_for_eval_result"
func_append compiler_flags " $wl$func_quote_for_eval_result"
func_append linker_flags " $func_quote_for_eval_result"
done
- IFS="$save_ifs"
+ IFS=$save_ifs
func_stripname ' ' '' "$arg"
arg=$func_stripname_result
;;
@@ -5835,7 +7102,7 @@ func_mode_link ()
# -msg_* for osf cc
-msg_*)
func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
+ arg=$func_quote_for_eval_result
;;
# Flags to be passed through unchanged, with rationale:
@@ -5850,12 +7117,13 @@ func_mode_link ()
# @file GCC response files
# -tp=* Portland pgcc target processor selection
# --sysroot=* for sysroot support
- # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+ # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+ # -stdlib=* select c++ std lib with clang
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
- -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
+ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-stdlib=*)
func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
+ arg=$func_quote_for_eval_result
func_append compile_command " $arg"
func_append finalize_command " $arg"
func_append compiler_flags " $arg"
@@ -5865,7 +7133,7 @@ func_mode_link ()
# Some other compiler flag.
-* | +*)
func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
+ arg=$func_quote_for_eval_result
;;
*.$objext)
@@ -5886,21 +7154,21 @@ func_mode_link ()
if test -z "$pic_object" ||
test -z "$non_pic_object" ||
- test "$pic_object" = none &&
- test "$non_pic_object" = none; then
- func_fatal_error "cannot find name of object for \`$arg'"
+ test none = "$pic_object" &&
+ test none = "$non_pic_object"; then
+ func_fatal_error "cannot find name of object for '$arg'"
fi
# Extract subdirectory from the argument.
func_dirname "$arg" "/" ""
- xdir="$func_dirname_result"
+ xdir=$func_dirname_result
- if test "$pic_object" != none; then
+ test none = "$pic_object" || {
# Prepend the subdirectory the object is found in.
- pic_object="$xdir$pic_object"
+ pic_object=$xdir$pic_object
- if test "$prev" = dlfiles; then
- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ if test dlfiles = "$prev"; then
+ if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
func_append dlfiles " $pic_object"
prev=
continue
@@ -5911,7 +7179,7 @@ func_mode_link ()
fi
# CHECK ME: I think I busted this. -Ossama
- if test "$prev" = dlprefiles; then
+ if test dlprefiles = "$prev"; then
# Preload the old-style object.
func_append dlprefiles " $pic_object"
prev=
@@ -5919,23 +7187,23 @@ func_mode_link ()
# A PIC object.
func_append libobjs " $pic_object"
- arg="$pic_object"
- fi
+ arg=$pic_object
+ }
# Non-PIC object.
- if test "$non_pic_object" != none; then
+ if test none != "$non_pic_object"; then
# Prepend the subdirectory the object is found in.
- non_pic_object="$xdir$non_pic_object"
+ non_pic_object=$xdir$non_pic_object
# A standard non-PIC object
func_append non_pic_objects " $non_pic_object"
- if test -z "$pic_object" || test "$pic_object" = none ; then
- arg="$non_pic_object"
+ if test -z "$pic_object" || test none = "$pic_object"; then
+ arg=$non_pic_object
fi
else
# If the PIC object exists, use it instead.
# $xdir was prepended to $pic_object above.
- non_pic_object="$pic_object"
+ non_pic_object=$pic_object
func_append non_pic_objects " $non_pic_object"
fi
else
@@ -5943,7 +7211,7 @@ func_mode_link ()
if $opt_dry_run; then
# Extract subdirectory from the argument.
func_dirname "$arg" "/" ""
- xdir="$func_dirname_result"
+ xdir=$func_dirname_result
func_lo2o "$arg"
pic_object=$xdir$objdir/$func_lo2o_result
@@ -5951,7 +7219,7 @@ func_mode_link ()
func_append libobjs " $pic_object"
func_append non_pic_objects " $non_pic_object"
else
- func_fatal_error "\`$arg' is not a valid libtool object"
+ func_fatal_error "'$arg' is not a valid libtool object"
fi
fi
;;
@@ -5967,11 +7235,11 @@ func_mode_link ()
# A libtool-controlled library.
func_resolve_sysroot "$arg"
- if test "$prev" = dlfiles; then
+ if test dlfiles = "$prev"; then
# This library was specified with -dlopen.
func_append dlfiles " $func_resolve_sysroot_result"
prev=
- elif test "$prev" = dlprefiles; then
+ elif test dlprefiles = "$prev"; then
# The library was specified with -dlpreopen.
func_append dlprefiles " $func_resolve_sysroot_result"
prev=
@@ -5986,7 +7254,7 @@ func_mode_link ()
# Unknown arguments in both finalize_command and compile_command need
# to be aesthetically quoted because they are evaled later.
func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
+ arg=$func_quote_for_eval_result
;;
esac # arg
@@ -5998,9 +7266,9 @@ func_mode_link ()
done # argument parsing loop
test -n "$prev" && \
- func_fatal_help "the \`$prevarg' option requires an argument"
+ func_fatal_help "the '$prevarg' option requires an argument"
- if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+ if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
eval arg=\"$export_dynamic_flag_spec\"
func_append compile_command " $arg"
func_append finalize_command " $arg"
@@ -6009,12 +7277,12 @@ func_mode_link ()
oldlibs=
# calculate the name of the file, without its directory
func_basename "$output"
- outputname="$func_basename_result"
- libobjs_save="$libobjs"
+ outputname=$func_basename_result
+ libobjs_save=$libobjs
if test -n "$shlibpath_var"; then
# get the directories listed in $shlibpath_var
- eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
+ eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
else
shlib_search_path=
fi
@@ -6022,7 +7290,7 @@ func_mode_link ()
eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
func_dirname "$output" "/" ""
- output_objdir="$func_dirname_result$objdir"
+ output_objdir=$func_dirname_result$objdir
func_to_tool_file "$output_objdir/"
tool_output_objdir=$func_to_tool_file_result
# Create the object directory.
@@ -6045,7 +7313,7 @@ func_mode_link ()
# Find all interdependent deplibs by searching for libraries
# that are linked more than once (e.g. -la -lb -la)
for deplib in $deplibs; do
- if $opt_preserve_dup_deps ; then
+ if $opt_preserve_dup_deps; then
case "$libs " in
*" $deplib "*) func_append specialdeplibs " $deplib" ;;
esac
@@ -6053,7 +7321,7 @@ func_mode_link ()
func_append libs " $deplib"
done
- if test "$linkmode" = lib; then
+ if test lib = "$linkmode"; then
libs="$predeps $libs $compiler_lib_search_path $postdeps"
# Compute libraries that are listed more than once in $predeps
@@ -6085,7 +7353,7 @@ func_mode_link ()
case $file in
*.la) ;;
*)
- func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+ func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
;;
esac
done
@@ -6093,7 +7361,7 @@ func_mode_link ()
prog)
compile_deplibs=
finalize_deplibs=
- alldeplibs=no
+ alldeplibs=false
newdlfiles=
newdlprefiles=
passes="conv scan dlopen dlpreopen link"
@@ -6105,32 +7373,29 @@ func_mode_link ()
for pass in $passes; do
# The preopen pass in lib mode reverses $deplibs; put it back here
# so that -L comes before libs that need it for instance...
- if test "$linkmode,$pass" = "lib,link"; then
+ if test lib,link = "$linkmode,$pass"; then
## FIXME: Find the place where the list is rebuilt in the wrong
## order, and fix it there properly
tmp_deplibs=
for deplib in $deplibs; do
tmp_deplibs="$deplib $tmp_deplibs"
done
- deplibs="$tmp_deplibs"
+ deplibs=$tmp_deplibs
fi
- if test "$linkmode,$pass" = "lib,link" ||
- test "$linkmode,$pass" = "prog,scan"; then
- libs="$deplibs"
+ if test lib,link = "$linkmode,$pass" ||
+ test prog,scan = "$linkmode,$pass"; then
+ libs=$deplibs
deplibs=
fi
- if test "$linkmode" = prog; then
+ if test prog = "$linkmode"; then
case $pass in
- dlopen) libs="$dlfiles" ;;
- dlpreopen) libs="$dlprefiles" ;;
- link)
- libs="$deplibs %DEPLIBS%"
- test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
- ;;
+ dlopen) libs=$dlfiles ;;
+ dlpreopen) libs=$dlprefiles ;;
+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
esac
fi
- if test "$linkmode,$pass" = "lib,dlpreopen"; then
+ if test lib,dlpreopen = "$linkmode,$pass"; then
# Collect and forward deplibs of preopened libtool libs
for lib in $dlprefiles; do
# Ignore non-libtool-libs
@@ -6151,26 +7416,26 @@ func_mode_link ()
esac
done
done
- libs="$dlprefiles"
+ libs=$dlprefiles
fi
- if test "$pass" = dlopen; then
+ if test dlopen = "$pass"; then
# Collect dlpreopened libraries
- save_deplibs="$deplibs"
+ save_deplibs=$deplibs
deplibs=
fi
for deplib in $libs; do
lib=
- found=no
+ found=false
case $deplib in
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
|-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
- if test "$linkmode,$pass" = "prog,link"; then
+ if test prog,link = "$linkmode,$pass"; then
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
else
func_append compiler_flags " $deplib"
- if test "$linkmode" = lib ; then
+ if test lib = "$linkmode"; then
case "$new_inherited_linker_flags " in
*" $deplib "*) ;;
* ) func_append new_inherited_linker_flags " $deplib" ;;
@@ -6180,13 +7445,13 @@ func_mode_link ()
continue
;;
-l*)
- if test "$linkmode" != lib && test "$linkmode" != prog; then
- func_warning "\`-l' is ignored for archives/objects"
+ if test lib != "$linkmode" && test prog != "$linkmode"; then
+ func_warning "'-l' is ignored for archives/objects"
continue
fi
func_stripname '-l' '' "$deplib"
name=$func_stripname_result
- if test "$linkmode" = lib; then
+ if test lib = "$linkmode"; then
searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
else
searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
@@ -6194,31 +7459,22 @@ func_mode_link ()
for searchdir in $searchdirs; do
for search_ext in .la $std_shrext .so .a; do
# Search the libtool library
- lib="$searchdir/lib${name}${search_ext}"
+ lib=$searchdir/lib$name$search_ext
if test -f "$lib"; then
- if test "$search_ext" = ".la"; then
- found=yes
+ if test .la = "$search_ext"; then
+ found=:
else
- found=no
+ found=false
fi
break 2
fi
done
done
- if test "$found" != yes; then
- # deplib doesn't seem to be a libtool library
- if test "$linkmode,$pass" = "prog,link"; then
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- else
- deplibs="$deplib $deplibs"
- test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
- fi
- continue
- else # deplib is a libtool library
+ if $found; then
+ # deplib is a libtool library
# If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
# We need to do some special things here, and not later.
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
case " $predeps $postdeps " in
*" $deplib "*)
if func_lalib_p "$lib"; then
@@ -6226,19 +7482,19 @@ func_mode_link ()
old_library=
func_source "$lib"
for l in $old_library $library_names; do
- ll="$l"
+ ll=$l
done
- if test "X$ll" = "X$old_library" ; then # only static version available
- found=no
+ if test "X$ll" = "X$old_library"; then # only static version available
+ found=false
func_dirname "$lib" "" "."
- ladir="$func_dirname_result"
+ ladir=$func_dirname_result
lib=$ladir/$old_library
- if test "$linkmode,$pass" = "prog,link"; then
+ if test prog,link = "$linkmode,$pass"; then
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
else
deplibs="$deplib $deplibs"
- test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
fi
continue
fi
@@ -6247,15 +7503,25 @@ func_mode_link ()
*) ;;
esac
fi
+ else
+ # deplib doesn't seem to be a libtool library
+ if test prog,link = "$linkmode,$pass"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
fi
;; # -l
*.ltframework)
- if test "$linkmode,$pass" = "prog,link"; then
+ if test prog,link = "$linkmode,$pass"; then
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
else
deplibs="$deplib $deplibs"
- if test "$linkmode" = lib ; then
+ if test lib = "$linkmode"; then
case "$new_inherited_linker_flags " in
*" $deplib "*) ;;
* ) func_append new_inherited_linker_flags " $deplib" ;;
@@ -6268,18 +7534,18 @@ func_mode_link ()
case $linkmode in
lib)
deplibs="$deplib $deplibs"
- test "$pass" = conv && continue
+ test conv = "$pass" && continue
newdependency_libs="$deplib $newdependency_libs"
func_stripname '-L' '' "$deplib"
func_resolve_sysroot "$func_stripname_result"
func_append newlib_search_path " $func_resolve_sysroot_result"
;;
prog)
- if test "$pass" = conv; then
+ if test conv = "$pass"; then
deplibs="$deplib $deplibs"
continue
fi
- if test "$pass" = scan; then
+ if test scan = "$pass"; then
deplibs="$deplib $deplibs"
else
compile_deplibs="$deplib $compile_deplibs"
@@ -6290,13 +7556,13 @@ func_mode_link ()
func_append newlib_search_path " $func_resolve_sysroot_result"
;;
*)
- func_warning "\`-L' is ignored for archives/objects"
+ func_warning "'-L' is ignored for archives/objects"
;;
esac # linkmode
continue
;; # -L
-R*)
- if test "$pass" = link; then
+ if test link = "$pass"; then
func_stripname '-R' '' "$deplib"
func_resolve_sysroot "$func_stripname_result"
dir=$func_resolve_sysroot_result
@@ -6314,7 +7580,7 @@ func_mode_link ()
lib=$func_resolve_sysroot_result
;;
*.$libext)
- if test "$pass" = conv; then
+ if test conv = "$pass"; then
deplibs="$deplib $deplibs"
continue
fi
@@ -6325,21 +7591,26 @@ func_mode_link ()
case " $dlpreconveniencelibs " in
*" $deplib "*) ;;
*)
- valid_a_lib=no
+ valid_a_lib=false
case $deplibs_check_method in
match_pattern*)
set dummy $deplibs_check_method; shift
match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
| $EGREP "$match_pattern_regex" > /dev/null; then
- valid_a_lib=yes
+ valid_a_lib=:
fi
;;
pass_all)
- valid_a_lib=yes
+ valid_a_lib=:
;;
esac
- if test "$valid_a_lib" != yes; then
+ if $valid_a_lib; then
+ echo
+ $ECHO "*** Warning: Linking the shared library $output against the"
+ $ECHO "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ else
echo
$ECHO "*** Warning: Trying to link with static lib archive $deplib."
echo "*** I have the capability to make that library automatically link in when"
@@ -6347,18 +7618,13 @@ func_mode_link ()
echo "*** shared version of the library, which you do not appear to have"
echo "*** because the file extensions .$libext of this argument makes me believe"
echo "*** that it is just a static archive that I should not use here."
- else
- echo
- $ECHO "*** Warning: Linking the shared library $output against the"
- $ECHO "*** static library $deplib is not portable!"
- deplibs="$deplib $deplibs"
fi
;;
esac
continue
;;
prog)
- if test "$pass" != link; then
+ if test link != "$pass"; then
deplibs="$deplib $deplibs"
else
compile_deplibs="$deplib $compile_deplibs"
@@ -6369,10 +7635,10 @@ func_mode_link ()
esac # linkmode
;; # *.$libext
*.lo | *.$objext)
- if test "$pass" = conv; then
+ if test conv = "$pass"; then
deplibs="$deplib $deplibs"
- elif test "$linkmode" = prog; then
- if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+ elif test prog = "$linkmode"; then
+ if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
# If there is no dlopen support or we're linking statically,
# we need to preload.
func_append newdlprefiles " $deplib"
@@ -6385,22 +7651,20 @@ func_mode_link ()
continue
;;
%DEPLIBS%)
- alldeplibs=yes
+ alldeplibs=:
continue
;;
esac # case $deplib
- if test "$found" = yes || test -f "$lib"; then :
- else
- func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
- fi
+ $found || test -f "$lib" \
+ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
# Check to see that this really is a libtool archive.
func_lalib_unsafe_p "$lib" \
- || func_fatal_error "\`$lib' is not a valid libtool archive"
+ || func_fatal_error "'$lib' is not a valid libtool archive"
func_dirname "$lib" "" "."
- ladir="$func_dirname_result"
+ ladir=$func_dirname_result
dlname=
dlopen=
@@ -6430,36 +7694,36 @@ func_mode_link ()
done
fi
dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
- if test "$linkmode,$pass" = "lib,link" ||
- test "$linkmode,$pass" = "prog,scan" ||
- { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+ if test lib,link = "$linkmode,$pass" ||
+ test prog,scan = "$linkmode,$pass" ||
+ { test prog != "$linkmode" && test lib != "$linkmode"; }; then
test -n "$dlopen" && func_append dlfiles " $dlopen"
test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
fi
- if test "$pass" = conv; then
+ if test conv = "$pass"; then
# Only check for convenience libraries
deplibs="$lib $deplibs"
if test -z "$libdir"; then
if test -z "$old_library"; then
- func_fatal_error "cannot find name of link library for \`$lib'"
+ func_fatal_error "cannot find name of link library for '$lib'"
fi
# It is a libtool convenience library, so add in its objects.
func_append convenience " $ladir/$objdir/$old_library"
func_append old_convenience " $ladir/$objdir/$old_library"
- tmp_libs=
- for deplib in $dependency_libs; do
- deplibs="$deplib $deplibs"
- if $opt_preserve_dup_deps ; then
- case "$tmp_libs " in
- *" $deplib "*) func_append specialdeplibs " $deplib" ;;
- esac
- fi
- func_append tmp_libs " $deplib"
- done
- elif test "$linkmode" != prog && test "$linkmode" != lib; then
- func_fatal_error "\`$lib' is not a convenience library"
+ elif test prog != "$linkmode" && test lib != "$linkmode"; then
+ func_fatal_error "'$lib' is not a convenience library"
fi
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if $opt_preserve_dup_deps; then
+ case "$tmp_libs " in
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+ func_append tmp_libs " $deplib"
+ done
continue
fi # $pass = conv
@@ -6467,26 +7731,26 @@ func_mode_link ()
# Get the name of the library we link against.
linklib=
if test -n "$old_library" &&
- { test "$prefer_static_libs" = yes ||
- test "$prefer_static_libs,$installed" = "built,no"; }; then
+ { test yes = "$prefer_static_libs" ||
+ test built,no = "$prefer_static_libs,$installed"; }; then
linklib=$old_library
else
for l in $old_library $library_names; do
- linklib="$l"
+ linklib=$l
done
fi
if test -z "$linklib"; then
- func_fatal_error "cannot find name of link library for \`$lib'"
+ func_fatal_error "cannot find name of link library for '$lib'"
fi
# This library was specified with -dlopen.
- if test "$pass" = dlopen; then
- if test -z "$libdir"; then
- func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
- fi
+ if test dlopen = "$pass"; then
+ test -z "$libdir" \
+ && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
if test -z "$dlname" ||
- test "$dlopen_support" != yes ||
- test "$build_libtool_libs" = no; then
+ test yes != "$dlopen_support" ||
+ test no = "$build_libtool_libs"
+ then
# If there is no dlname, no dlopen support or we're linking
# statically, we need to preload. We also need to preload any
# dependent libraries so libltdl's deplib preloader doesn't
@@ -6500,40 +7764,40 @@ func_mode_link ()
# We need an absolute path.
case $ladir in
- [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
*)
abs_ladir=`cd "$ladir" && pwd`
if test -z "$abs_ladir"; then
- func_warning "cannot determine absolute directory name of \`$ladir'"
+ func_warning "cannot determine absolute directory name of '$ladir'"
func_warning "passing it literally to the linker, although it might fail"
- abs_ladir="$ladir"
+ abs_ladir=$ladir
fi
;;
esac
func_basename "$lib"
- laname="$func_basename_result"
+ laname=$func_basename_result
# Find the relevant object directory and library name.
- if test "X$installed" = Xyes; then
+ if test yes = "$installed"; then
if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
- func_warning "library \`$lib' was moved."
- dir="$ladir"
- absdir="$abs_ladir"
- libdir="$abs_ladir"
+ func_warning "library '$lib' was moved."
+ dir=$ladir
+ absdir=$abs_ladir
+ libdir=$abs_ladir
else
- dir="$lt_sysroot$libdir"
- absdir="$lt_sysroot$libdir"
+ dir=$lt_sysroot$libdir
+ absdir=$lt_sysroot$libdir
fi
- test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+ test yes = "$hardcode_automatic" && avoidtemprpath=yes
else
if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
- dir="$ladir"
- absdir="$abs_ladir"
+ dir=$ladir
+ absdir=$abs_ladir
# Remove this search path later
func_append notinst_path " $abs_ladir"
else
- dir="$ladir/$objdir"
- absdir="$abs_ladir/$objdir"
+ dir=$ladir/$objdir
+ absdir=$abs_ladir/$objdir
# Remove this search path later
func_append notinst_path " $abs_ladir"
fi
@@ -6542,11 +7806,11 @@ func_mode_link ()
name=$func_stripname_result
# This library was specified with -dlpreopen.
- if test "$pass" = dlpreopen; then
- if test -z "$libdir" && test "$linkmode" = prog; then
- func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+ if test dlpreopen = "$pass"; then
+ if test -z "$libdir" && test prog = "$linkmode"; then
+ func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
fi
- case "$host" in
+ case $host in
# special handling for platforms with PE-DLLs.
*cygwin* | *mingw* | *cegcc* )
# Linker will automatically link against shared library if both
@@ -6590,9 +7854,9 @@ func_mode_link ()
if test -z "$libdir"; then
# Link the convenience library
- if test "$linkmode" = lib; then
+ if test lib = "$linkmode"; then
deplibs="$dir/$old_library $deplibs"
- elif test "$linkmode,$pass" = "prog,link"; then
+ elif test prog,link = "$linkmode,$pass"; then
compile_deplibs="$dir/$old_library $compile_deplibs"
finalize_deplibs="$dir/$old_library $finalize_deplibs"
else
@@ -6602,14 +7866,14 @@ func_mode_link ()
fi
- if test "$linkmode" = prog && test "$pass" != link; then
+ if test prog = "$linkmode" && test link != "$pass"; then
func_append newlib_search_path " $ladir"
deplibs="$lib $deplibs"
- linkalldeplibs=no
- if test "$link_all_deplibs" != no || test -z "$library_names" ||
- test "$build_libtool_libs" = no; then
- linkalldeplibs=yes
+ linkalldeplibs=false
+ if test no != "$link_all_deplibs" || test -z "$library_names" ||
+ test no = "$build_libtool_libs"; then
+ linkalldeplibs=:
fi
tmp_libs=
@@ -6621,14 +7885,14 @@ func_mode_link ()
;;
esac
# Need to link against all dependency_libs?
- if test "$linkalldeplibs" = yes; then
+ if $linkalldeplibs; then
deplibs="$deplib $deplibs"
else
# Need to hardcode shared library paths
# or/and link against static libraries
newdependency_libs="$deplib $newdependency_libs"
fi
- if $opt_preserve_dup_deps ; then
+ if $opt_preserve_dup_deps; then
case "$tmp_libs " in
*" $deplib "*) func_append specialdeplibs " $deplib" ;;
esac
@@ -6638,15 +7902,15 @@ func_mode_link ()
continue
fi # $linkmode = prog...
- if test "$linkmode,$pass" = "prog,link"; then
+ if test prog,link = "$linkmode,$pass"; then
if test -n "$library_names" &&
- { { test "$prefer_static_libs" = no ||
- test "$prefer_static_libs,$installed" = "built,yes"; } ||
+ { { test no = "$prefer_static_libs" ||
+ test built,yes = "$prefer_static_libs,$installed"; } ||
test -z "$old_library"; }; then
# We need to hardcode the library path
- if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
# Make sure the rpath contains only unique directories.
- case "$temp_rpath:" in
+ case $temp_rpath: in
*"$absdir:"*) ;;
*) func_append temp_rpath "$absdir:" ;;
esac
@@ -6675,9 +7939,9 @@ func_mode_link ()
esac
fi # $linkmode,$pass = prog,link...
- if test "$alldeplibs" = yes &&
- { test "$deplibs_check_method" = pass_all ||
- { test "$build_libtool_libs" = yes &&
+ if $alldeplibs &&
+ { test pass_all = "$deplibs_check_method" ||
+ { test yes = "$build_libtool_libs" &&
test -n "$library_names"; }; }; then
# We only need to search for static libraries
continue
@@ -6686,11 +7950,11 @@ func_mode_link ()
link_static=no # Whether the deplib will be linked statically
use_static_libs=$prefer_static_libs
- if test "$use_static_libs" = built && test "$installed" = yes; then
+ if test built = "$use_static_libs" && test yes = "$installed"; then
use_static_libs=no
fi
if test -n "$library_names" &&
- { test "$use_static_libs" = no || test -z "$old_library"; }; then
+ { test no = "$use_static_libs" || test -z "$old_library"; }; then
case $host in
*cygwin* | *mingw* | *cegcc*)
# No point in relinking DLLs because paths are not encoded
@@ -6698,7 +7962,7 @@ func_mode_link ()
need_relink=no
;;
*)
- if test "$installed" = no; then
+ if test no = "$installed"; then
func_append notinst_deplibs " $lib"
need_relink=yes
fi
@@ -6708,24 +7972,24 @@ func_mode_link ()
# Warn about portability, can't link against -module's on some
# systems (darwin). Don't bleat about dlopened modules though!
- dlopenmodule=""
+ dlopenmodule=
for dlpremoduletest in $dlprefiles; do
if test "X$dlpremoduletest" = "X$lib"; then
- dlopenmodule="$dlpremoduletest"
+ dlopenmodule=$dlpremoduletest
break
fi
done
- if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
+ if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
echo
- if test "$linkmode" = prog; then
+ if test prog = "$linkmode"; then
$ECHO "*** Warning: Linking the executable $output against the loadable module"
else
$ECHO "*** Warning: Linking the shared library $output against the loadable module"
fi
$ECHO "*** $linklib is not portable!"
fi
- if test "$linkmode" = lib &&
- test "$hardcode_into_libs" = yes; then
+ if test lib = "$linkmode" &&
+ test yes = "$hardcode_into_libs"; then
# Hardcode the library path.
# Skip directories that are in the system default run-time
# search path.
@@ -6753,43 +8017,43 @@ func_mode_link ()
# figure out the soname
set dummy $library_names
shift
- realname="$1"
+ realname=$1
shift
libname=`eval "\\$ECHO \"$libname_spec\""`
# use dlname if we got it. it's perfectly good, no?
if test -n "$dlname"; then
- soname="$dlname"
+ soname=$dlname
elif test -n "$soname_spec"; then
# bleh windows
case $host in
*cygwin* | mingw* | *cegcc*)
func_arith $current - $age
major=$func_arith_result
- versuffix="-$major"
+ versuffix=-$major
;;
esac
eval soname=\"$soname_spec\"
else
- soname="$realname"
+ soname=$realname
fi
# Make a new name for the extract_expsyms_cmds to use
- soroot="$soname"
+ soroot=$soname
func_basename "$soroot"
- soname="$func_basename_result"
+ soname=$func_basename_result
func_stripname 'lib' '.dll' "$soname"
newlib=libimp-$func_stripname_result.a
# If the library has no export list, then create one now
if test -f "$output_objdir/$soname-def"; then :
else
- func_verbose "extracting exported symbol list from \`$soname'"
+ func_verbose "extracting exported symbol list from '$soname'"
func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
fi
# Create $newlib
if test -f "$output_objdir/$newlib"; then :; else
- func_verbose "generating import library for \`$soname'"
+ func_verbose "generating import library for '$soname'"
func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
fi
# make sure the library variables are pointing to the new library
@@ -6797,58 +8061,58 @@ func_mode_link ()
linklib=$newlib
fi # test -n "$old_archive_from_expsyms_cmds"
- if test "$linkmode" = prog || test "$opt_mode" != relink; then
+ if test prog = "$linkmode" || test relink != "$opt_mode"; then
add_shlibpath=
add_dir=
add=
lib_linked=yes
case $hardcode_action in
immediate | unsupported)
- if test "$hardcode_direct" = no; then
- add="$dir/$linklib"
+ if test no = "$hardcode_direct"; then
+ add=$dir/$linklib
case $host in
- *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
- *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+ *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
+ *-*-sysv4*uw2*) add_dir=-L$dir ;;
*-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
- *-*-unixware7*) add_dir="-L$dir" ;;
+ *-*-unixware7*) add_dir=-L$dir ;;
*-*-darwin* )
- # if the lib is a (non-dlopened) module then we can not
+ # if the lib is a (non-dlopened) module then we cannot
# link against it, someone is ignoring the earlier warnings
if /usr/bin/file -L $add 2> /dev/null |
- $GREP ": [^:]* bundle" >/dev/null ; then
+ $GREP ": [^:]* bundle" >/dev/null; then
if test "X$dlopenmodule" != "X$lib"; then
$ECHO "*** Warning: lib $linklib is a module, not a shared library"
- if test -z "$old_library" ; then
+ if test -z "$old_library"; then
echo
echo "*** And there doesn't seem to be a static archive available"
echo "*** The link will probably fail, sorry"
else
- add="$dir/$old_library"
+ add=$dir/$old_library
fi
elif test -n "$old_library"; then
- add="$dir/$old_library"
+ add=$dir/$old_library
fi
fi
esac
- elif test "$hardcode_minus_L" = no; then
+ elif test no = "$hardcode_minus_L"; then
case $host in
- *-*-sunos*) add_shlibpath="$dir" ;;
+ *-*-sunos*) add_shlibpath=$dir ;;
esac
- add_dir="-L$dir"
- add="-l$name"
- elif test "$hardcode_shlibpath_var" = no; then
- add_shlibpath="$dir"
- add="-l$name"
+ add_dir=-L$dir
+ add=-l$name
+ elif test no = "$hardcode_shlibpath_var"; then
+ add_shlibpath=$dir
+ add=-l$name
else
lib_linked=no
fi
;;
relink)
- if test "$hardcode_direct" = yes &&
- test "$hardcode_direct_absolute" = no; then
- add="$dir/$linklib"
- elif test "$hardcode_minus_L" = yes; then
- add_dir="-L$absdir"
+ if test yes = "$hardcode_direct" &&
+ test no = "$hardcode_direct_absolute"; then
+ add=$dir/$linklib
+ elif test yes = "$hardcode_minus_L"; then
+ add_dir=-L$absdir
# Try looking first in the location we're being installed to.
if test -n "$inst_prefix_dir"; then
case $libdir in
@@ -6857,10 +8121,10 @@ func_mode_link ()
;;
esac
fi
- add="-l$name"
- elif test "$hardcode_shlibpath_var" = yes; then
- add_shlibpath="$dir"
- add="-l$name"
+ add=-l$name
+ elif test yes = "$hardcode_shlibpath_var"; then
+ add_shlibpath=$dir
+ add=-l$name
else
lib_linked=no
fi
@@ -6868,7 +8132,7 @@ func_mode_link ()
*) lib_linked=no ;;
esac
- if test "$lib_linked" != yes; then
+ if test yes != "$lib_linked"; then
func_fatal_configuration "unsupported hardcode properties"
fi
@@ -6878,15 +8142,15 @@ func_mode_link ()
*) func_append compile_shlibpath "$add_shlibpath:" ;;
esac
fi
- if test "$linkmode" = prog; then
+ if test prog = "$linkmode"; then
test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
test -n "$add" && compile_deplibs="$add $compile_deplibs"
else
test -n "$add_dir" && deplibs="$add_dir $deplibs"
test -n "$add" && deplibs="$add $deplibs"
- if test "$hardcode_direct" != yes &&
- test "$hardcode_minus_L" != yes &&
- test "$hardcode_shlibpath_var" = yes; then
+ if test yes != "$hardcode_direct" &&
+ test yes != "$hardcode_minus_L" &&
+ test yes = "$hardcode_shlibpath_var"; then
case :$finalize_shlibpath: in
*":$libdir:"*) ;;
*) func_append finalize_shlibpath "$libdir:" ;;
@@ -6895,33 +8159,33 @@ func_mode_link ()
fi
fi
- if test "$linkmode" = prog || test "$opt_mode" = relink; then
+ if test prog = "$linkmode" || test relink = "$opt_mode"; then
add_shlibpath=
add_dir=
add=
# Finalize command for both is simple: just hardcode it.
- if test "$hardcode_direct" = yes &&
- test "$hardcode_direct_absolute" = no; then
- add="$libdir/$linklib"
- elif test "$hardcode_minus_L" = yes; then
- add_dir="-L$libdir"
- add="-l$name"
- elif test "$hardcode_shlibpath_var" = yes; then
+ if test yes = "$hardcode_direct" &&
+ test no = "$hardcode_direct_absolute"; then
+ add=$libdir/$linklib
+ elif test yes = "$hardcode_minus_L"; then
+ add_dir=-L$libdir
+ add=-l$name
+ elif test yes = "$hardcode_shlibpath_var"; then
case :$finalize_shlibpath: in
*":$libdir:"*) ;;
*) func_append finalize_shlibpath "$libdir:" ;;
esac
- add="-l$name"
- elif test "$hardcode_automatic" = yes; then
+ add=-l$name
+ elif test yes = "$hardcode_automatic"; then
if test -n "$inst_prefix_dir" &&
- test -f "$inst_prefix_dir$libdir/$linklib" ; then
- add="$inst_prefix_dir$libdir/$linklib"
+ test -f "$inst_prefix_dir$libdir/$linklib"; then
+ add=$inst_prefix_dir$libdir/$linklib
else
- add="$libdir/$linklib"
+ add=$libdir/$linklib
fi
else
# We cannot seem to hardcode it, guess we'll fake it.
- add_dir="-L$libdir"
+ add_dir=-L$libdir
# Try looking first in the location we're being installed to.
if test -n "$inst_prefix_dir"; then
case $libdir in
@@ -6930,10 +8194,10 @@ func_mode_link ()
;;
esac
fi
- add="-l$name"
+ add=-l$name
fi
- if test "$linkmode" = prog; then
+ if test prog = "$linkmode"; then
test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
else
@@ -6941,43 +8205,43 @@ func_mode_link ()
test -n "$add" && deplibs="$add $deplibs"
fi
fi
- elif test "$linkmode" = prog; then
+ elif test prog = "$linkmode"; then
# Here we assume that one of hardcode_direct or hardcode_minus_L
# is not unsupported. This is valid on all known static and
# shared platforms.
- if test "$hardcode_direct" != unsupported; then
- test -n "$old_library" && linklib="$old_library"
+ if test unsupported != "$hardcode_direct"; then
+ test -n "$old_library" && linklib=$old_library
compile_deplibs="$dir/$linklib $compile_deplibs"
finalize_deplibs="$dir/$linklib $finalize_deplibs"
else
compile_deplibs="-l$name -L$dir $compile_deplibs"
finalize_deplibs="-l$name -L$dir $finalize_deplibs"
fi
- elif test "$build_libtool_libs" = yes; then
+ elif test yes = "$build_libtool_libs"; then
# Not a shared library
- if test "$deplibs_check_method" != pass_all; then
+ if test pass_all != "$deplibs_check_method"; then
# We're trying link a shared library against a static one
# but the system doesn't support it.
# Just print a warning and add the library to dependency_libs so
# that the program can be linked against the static library.
echo
- $ECHO "*** Warning: This system can not link to static lib archive $lib."
+ $ECHO "*** Warning: This system cannot link to static lib archive $lib."
echo "*** I have the capability to make that library automatically link in when"
echo "*** you link to this library. But I can only do this if you have a"
echo "*** shared version of the library, which you do not appear to have."
- if test "$module" = yes; then
+ if test yes = "$module"; then
echo "*** But as you try to build a module library, libtool will still create "
echo "*** a static module, that should work as long as the dlopening application"
echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
if test -z "$global_symbol_pipe"; then
echo
echo "*** However, this would only work if libtool was able to extract symbol"
- echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
echo "*** not find such a program. So, this module is probably useless."
- echo "*** \`nm' from GNU binutils and a full rebuild may help."
+ echo "*** 'nm' from GNU binutils and a full rebuild may help."
fi
- if test "$build_old_libs" = no; then
+ if test no = "$build_old_libs"; then
build_libtool_libs=module
build_old_libs=yes
else
@@ -6990,11 +8254,11 @@ func_mode_link ()
fi
fi # link shared/static library?
- if test "$linkmode" = lib; then
+ if test lib = "$linkmode"; then
if test -n "$dependency_libs" &&
- { test "$hardcode_into_libs" != yes ||
- test "$build_old_libs" = yes ||
- test "$link_static" = yes; }; then
+ { test yes != "$hardcode_into_libs" ||
+ test yes = "$build_old_libs" ||
+ test yes = "$link_static"; }; then
# Extract -R from dependency_libs
temp_deplibs=
for libdir in $dependency_libs; do
@@ -7008,12 +8272,12 @@ func_mode_link ()
*) func_append temp_deplibs " $libdir";;
esac
done
- dependency_libs="$temp_deplibs"
+ dependency_libs=$temp_deplibs
fi
func_append newlib_search_path " $absdir"
# Link against this library
- test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+ test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
# ... and its dependency_libs
tmp_libs=
for deplib in $dependency_libs; do
@@ -7023,7 +8287,7 @@ func_mode_link ()
func_resolve_sysroot "$func_stripname_result";;
*) func_resolve_sysroot "$deplib" ;;
esac
- if $opt_preserve_dup_deps ; then
+ if $opt_preserve_dup_deps; then
case "$tmp_libs " in
*" $func_resolve_sysroot_result "*)
func_append specialdeplibs " $func_resolve_sysroot_result" ;;
@@ -7032,12 +8296,12 @@ func_mode_link ()
func_append tmp_libs " $func_resolve_sysroot_result"
done
- if test "$link_all_deplibs" != no; then
+ if test no != "$link_all_deplibs"; then
# Add the search paths of all dependency libraries
for deplib in $dependency_libs; do
path=
case $deplib in
- -L*) path="$deplib" ;;
+ -L*) path=$deplib ;;
*.la)
func_resolve_sysroot "$deplib"
deplib=$func_resolve_sysroot_result
@@ -7045,12 +8309,12 @@ func_mode_link ()
dir=$func_dirname_result
# We need an absolute path.
case $dir in
- [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
*)
absdir=`cd "$dir" && pwd`
if test -z "$absdir"; then
- func_warning "cannot determine absolute directory name of \`$dir'"
- absdir="$dir"
+ func_warning "cannot determine absolute directory name of '$dir'"
+ absdir=$dir
fi
;;
esac
@@ -7058,35 +8322,35 @@ func_mode_link ()
case $host in
*-*-darwin*)
depdepl=
- eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
- if test -n "$deplibrary_names" ; then
- for tmp in $deplibrary_names ; do
+ eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+ if test -n "$deplibrary_names"; then
+ for tmp in $deplibrary_names; do
depdepl=$tmp
done
- if test -f "$absdir/$objdir/$depdepl" ; then
- depdepl="$absdir/$objdir/$depdepl"
- darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ if test -f "$absdir/$objdir/$depdepl"; then
+ depdepl=$absdir/$objdir/$depdepl
+ darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
if test -z "$darwin_install_name"; then
- darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
fi
- func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
- func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
+ func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
+ func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
path=
fi
fi
;;
*)
- path="-L$absdir/$objdir"
+ path=-L$absdir/$objdir
;;
esac
else
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
test -z "$libdir" && \
- func_fatal_error "\`$deplib' is not a valid libtool archive"
+ func_fatal_error "'$deplib' is not a valid libtool archive"
test "$absdir" != "$libdir" && \
- func_warning "\`$deplib' seems to be moved"
+ func_warning "'$deplib' seems to be moved"
- path="-L$absdir"
+ path=-L$absdir
fi
;;
esac
@@ -7098,23 +8362,23 @@ func_mode_link ()
fi # link_all_deplibs != no
fi # linkmode = lib
done # for deplib in $libs
- if test "$pass" = link; then
- if test "$linkmode" = "prog"; then
+ if test link = "$pass"; then
+ if test prog = "$linkmode"; then
compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
else
compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
fi
fi
- dependency_libs="$newdependency_libs"
- if test "$pass" = dlpreopen; then
+ dependency_libs=$newdependency_libs
+ if test dlpreopen = "$pass"; then
# Link the dlpreopened libraries before other libraries
for deplib in $save_deplibs; do
deplibs="$deplib $deplibs"
done
fi
- if test "$pass" != dlopen; then
- if test "$pass" != conv; then
+ if test dlopen != "$pass"; then
+ test conv = "$pass" || {
# Make sure lib_search_path contains only unique directories.
lib_search_path=
for dir in $newlib_search_path; do
@@ -7124,12 +8388,12 @@ func_mode_link ()
esac
done
newlib_search_path=
- fi
+ }
- if test "$linkmode,$pass" != "prog,link"; then
- vars="deplibs"
- else
+ if test prog,link = "$linkmode,$pass"; then
vars="compile_deplibs finalize_deplibs"
+ else
+ vars=deplibs
fi
for var in $vars dependency_libs; do
# Add libraries to $var in reverse order
@@ -7190,59 +8454,59 @@ func_mode_link ()
# Last step: remove runtime libs from dependency_libs
# (they stay in deplibs)
tmp_libs=
- for i in $dependency_libs ; do
+ for i in $dependency_libs; do
case " $predeps $postdeps $compiler_lib_search_path " in
*" $i "*)
- i=""
+ i=
;;
esac
- if test -n "$i" ; then
+ if test -n "$i"; then
func_append tmp_libs " $i"
fi
done
dependency_libs=$tmp_libs
done # for pass
- if test "$linkmode" = prog; then
- dlfiles="$newdlfiles"
+ if test prog = "$linkmode"; then
+ dlfiles=$newdlfiles
fi
- if test "$linkmode" = prog || test "$linkmode" = lib; then
- dlprefiles="$newdlprefiles"
+ if test prog = "$linkmode" || test lib = "$linkmode"; then
+ dlprefiles=$newdlprefiles
fi
case $linkmode in
oldlib)
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- func_warning "\`-dlopen' is ignored for archives"
+ if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+ func_warning "'-dlopen' is ignored for archives"
fi
case " $deplibs" in
*\ -l* | *\ -L*)
- func_warning "\`-l' and \`-L' are ignored for archives" ;;
+ func_warning "'-l' and '-L' are ignored for archives" ;;
esac
test -n "$rpath" && \
- func_warning "\`-rpath' is ignored for archives"
+ func_warning "'-rpath' is ignored for archives"
test -n "$xrpath" && \
- func_warning "\`-R' is ignored for archives"
+ func_warning "'-R' is ignored for archives"
test -n "$vinfo" && \
- func_warning "\`-version-info/-version-number' is ignored for archives"
+ func_warning "'-version-info/-version-number' is ignored for archives"
test -n "$release" && \
- func_warning "\`-release' is ignored for archives"
+ func_warning "'-release' is ignored for archives"
test -n "$export_symbols$export_symbols_regex" && \
- func_warning "\`-export-symbols' is ignored for archives"
+ func_warning "'-export-symbols' is ignored for archives"
# Now set the variables for building old libraries.
build_libtool_libs=no
- oldlibs="$output"
+ oldlibs=$output
func_append objs "$old_deplibs"
;;
lib)
- # Make sure we only generate libraries of the form `libNAME.la'.
+ # Make sure we only generate libraries of the form 'libNAME.la'.
case $outputname in
lib*)
func_stripname 'lib' '.la' "$outputname"
@@ -7251,10 +8515,10 @@ func_mode_link ()
eval libname=\"$libname_spec\"
;;
*)
- test "$module" = no && \
- func_fatal_help "libtool library \`$output' must begin with \`lib'"
+ test no = "$module" \
+ && func_fatal_help "libtool library '$output' must begin with 'lib'"
- if test "$need_lib_prefix" != no; then
+ if test no != "$need_lib_prefix"; then
# Add the "lib" prefix for modules if required
func_stripname '' '.la' "$outputname"
name=$func_stripname_result
@@ -7268,8 +8532,8 @@ func_mode_link ()
esac
if test -n "$objs"; then
- if test "$deplibs_check_method" != pass_all; then
- func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
+ if test pass_all != "$deplibs_check_method"; then
+ func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
else
echo
$ECHO "*** Warning: Linking the shared library $output against the non-libtool"
@@ -7278,21 +8542,21 @@ func_mode_link ()
fi
fi
- test "$dlself" != no && \
- func_warning "\`-dlopen self' is ignored for libtool libraries"
+ test no = "$dlself" \
+ || func_warning "'-dlopen self' is ignored for libtool libraries"
set dummy $rpath
shift
- test "$#" -gt 1 && \
- func_warning "ignoring multiple \`-rpath's for a libtool library"
+ test 1 -lt "$#" \
+ && func_warning "ignoring multiple '-rpath's for a libtool library"
- install_libdir="$1"
+ install_libdir=$1
oldlibs=
if test -z "$rpath"; then
- if test "$build_libtool_libs" = yes; then
+ if test yes = "$build_libtool_libs"; then
# Building a libtool convenience library.
- # Some compilers have problems with a `.al' extension so
+ # Some compilers have problems with a '.al' extension so
# convenience libraries should have the same extension an
# archive normally would.
oldlibs="$output_objdir/$libname.$libext $oldlibs"
@@ -7301,20 +8565,20 @@ func_mode_link ()
fi
test -n "$vinfo" && \
- func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+ func_warning "'-version-info/-version-number' is ignored for convenience libraries"
test -n "$release" && \
- func_warning "\`-release' is ignored for convenience libraries"
+ func_warning "'-release' is ignored for convenience libraries"
else
# Parse the version information argument.
- save_ifs="$IFS"; IFS=':'
+ save_ifs=$IFS; IFS=:
set dummy $vinfo 0 0 0
shift
- IFS="$save_ifs"
+ IFS=$save_ifs
test -n "$7" && \
- func_fatal_help "too many parameters to \`-version-info'"
+ func_fatal_help "too many parameters to '-version-info'"
# convert absolute version numbers to libtool ages
# this retains compatibility with .la files and attempts
@@ -7322,45 +8586,42 @@ func_mode_link ()
case $vinfo_number in
yes)
- number_major="$1"
- number_minor="$2"
- number_revision="$3"
+ number_major=$1
+ number_minor=$2
+ number_revision=$3
#
# There are really only two kinds -- those that
# use the current revision as the major version
# and those that subtract age and use age as
# a minor version. But, then there is irix
- # which has an extra 1 added just for fun
+ # that has an extra 1 added just for fun
#
case $version_type in
# correct linux to gnu/linux during the next big refactor
darwin|linux|osf|windows|none)
func_arith $number_major + $number_minor
current=$func_arith_result
- age="$number_minor"
- revision="$number_revision"
+ age=$number_minor
+ revision=$number_revision
;;
freebsd-aout|freebsd-elf|qnx|sunos)
- current="$number_major"
- revision="$number_minor"
- age="0"
+ current=$number_major
+ revision=$number_minor
+ age=0
;;
irix|nonstopux)
func_arith $number_major + $number_minor
current=$func_arith_result
- age="$number_minor"
- revision="$number_minor"
+ age=$number_minor
+ revision=$number_minor
lt_irix_increment=no
;;
- *)
- func_fatal_configuration "$modename: unknown library version type \`$version_type'"
- ;;
esac
;;
no)
- current="$1"
- revision="$2"
- age="$3"
+ current=$1
+ revision=$2
+ age=$3
;;
esac
@@ -7368,30 +8629,30 @@ func_mode_link ()
case $current in
0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
*)
- func_error "CURRENT \`$current' must be a nonnegative integer"
- func_fatal_error "\`$vinfo' is not valid version information"
+ func_error "CURRENT '$current' must be a nonnegative integer"
+ func_fatal_error "'$vinfo' is not valid version information"
;;
esac
case $revision in
0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
*)
- func_error "REVISION \`$revision' must be a nonnegative integer"
- func_fatal_error "\`$vinfo' is not valid version information"
+ func_error "REVISION '$revision' must be a nonnegative integer"
+ func_fatal_error "'$vinfo' is not valid version information"
;;
esac
case $age in
0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
*)
- func_error "AGE \`$age' must be a nonnegative integer"
- func_fatal_error "\`$vinfo' is not valid version information"
+ func_error "AGE '$age' must be a nonnegative integer"
+ func_fatal_error "'$vinfo' is not valid version information"
;;
esac
if test "$age" -gt "$current"; then
- func_error "AGE \`$age' is greater than the current interface number \`$current'"
- func_fatal_error "\`$vinfo' is not valid version information"
+ func_error "AGE '$age' is greater than the current interface number '$current'"
+ func_fatal_error "'$vinfo' is not valid version information"
fi
# Calculate the version variables.
@@ -7406,26 +8667,35 @@ func_mode_link ()
# verstring for coding it into the library header
func_arith $current - $age
major=.$func_arith_result
- versuffix="$major.$age.$revision"
+ versuffix=$major.$age.$revision
# Darwin ld doesn't like 0 for these options...
func_arith $current + 1
minor_current=$func_arith_result
- xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ # On Darwin other compilers
+ case $CC in
+ nagfor*)
+ verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ ;;
+ *)
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ ;;
+ esac
;;
freebsd-aout)
- major=".$current"
- versuffix=".$current.$revision";
+ major=.$current
+ versuffix=.$current.$revision
;;
freebsd-elf)
- major=".$current"
- versuffix=".$current"
+ major=.$current
+ versuffix=.$current
;;
irix | nonstopux)
- if test "X$lt_irix_increment" = "Xno"; then
+ if test no = "$lt_irix_increment"; then
func_arith $current - $age
else
func_arith $current - $age + 1
@@ -7436,69 +8706,69 @@ func_mode_link ()
nonstopux) verstring_prefix=nonstopux ;;
*) verstring_prefix=sgi ;;
esac
- verstring="$verstring_prefix$major.$revision"
+ verstring=$verstring_prefix$major.$revision
# Add in all the interfaces that we are compatible with.
loop=$revision
- while test "$loop" -ne 0; do
+ while test 0 -ne "$loop"; do
func_arith $revision - $loop
iface=$func_arith_result
func_arith $loop - 1
loop=$func_arith_result
- verstring="$verstring_prefix$major.$iface:$verstring"
+ verstring=$verstring_prefix$major.$iface:$verstring
done
- # Before this point, $major must not contain `.'.
+ # Before this point, $major must not contain '.'.
major=.$major
- versuffix="$major.$revision"
+ versuffix=$major.$revision
;;
linux) # correct to gnu/linux during the next big refactor
func_arith $current - $age
major=.$func_arith_result
- versuffix="$major.$age.$revision"
+ versuffix=$major.$age.$revision
;;
osf)
func_arith $current - $age
major=.$func_arith_result
- versuffix=".$current.$age.$revision"
- verstring="$current.$age.$revision"
+ versuffix=.$current.$age.$revision
+ verstring=$current.$age.$revision
# Add in all the interfaces that we are compatible with.
loop=$age
- while test "$loop" -ne 0; do
+ while test 0 -ne "$loop"; do
func_arith $current - $loop
iface=$func_arith_result
func_arith $loop - 1
loop=$func_arith_result
- verstring="$verstring:${iface}.0"
+ verstring=$verstring:$iface.0
done
# Make executables depend on our current version.
- func_append verstring ":${current}.0"
+ func_append verstring ":$current.0"
;;
qnx)
- major=".$current"
- versuffix=".$current"
+ major=.$current
+ versuffix=.$current
;;
sunos)
- major=".$current"
- versuffix=".$current.$revision"
+ major=.$current
+ versuffix=.$current.$revision
;;
windows)
# Use '-' rather than '.', since we only want one
- # extension on DOS 8.3 filesystems.
+ # extension on DOS 8.3 file systems.
func_arith $current - $age
major=$func_arith_result
- versuffix="-$major"
+ versuffix=-$major
;;
*)
- func_fatal_configuration "unknown library version type \`$version_type'"
+ func_fatal_configuration "unknown library version type '$version_type'"
;;
esac
@@ -7512,42 +8782,45 @@ func_mode_link ()
verstring=
;;
*)
- verstring="0.0"
+ verstring=0.0
;;
esac
- if test "$need_version" = no; then
+ if test no = "$need_version"; then
versuffix=
else
- versuffix=".0.0"
+ versuffix=.0.0
fi
fi
# Remove version info from name if versioning should be avoided
- if test "$avoid_version" = yes && test "$need_version" = no; then
+ if test yes,no = "$avoid_version,$need_version"; then
major=
versuffix=
- verstring=""
+ verstring=
fi
# Check to see if the archive will have undefined symbols.
- if test "$allow_undefined" = yes; then
- if test "$allow_undefined_flag" = unsupported; then
- func_warning "undefined symbols not allowed in $host shared libraries"
- build_libtool_libs=no
- build_old_libs=yes
+ if test yes = "$allow_undefined"; then
+ if test unsupported = "$allow_undefined_flag"; then
+ if test yes = "$build_old_libs"; then
+ func_warning "undefined symbols not allowed in $host shared libraries; building static only"
+ build_libtool_libs=no
+ else
+ func_fatal_error "can't build $host shared library unless -no-undefined is specified"
+ fi
fi
else
# Don't allow undefined symbols.
- allow_undefined_flag="$no_undefined_flag"
+ allow_undefined_flag=$no_undefined_flag
fi
fi
- func_generate_dlsyms "$libname" "$libname" "yes"
+ func_generate_dlsyms "$libname" "$libname" :
func_append libobjs " $symfileobj"
- test "X$libobjs" = "X " && libobjs=
+ test " " = "$libobjs" && libobjs=
- if test "$opt_mode" != relink; then
+ if test relink != "$opt_mode"; then
# Remove our outputs, but don't remove object files since they
# may have been created when compiling PIC objects.
removelist=
@@ -7556,8 +8829,8 @@ func_mode_link ()
case $p in
*.$objext | *.gcno)
;;
- $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
- if test "X$precious_files_regex" != "X"; then
+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
+ if test -n "$precious_files_regex"; then
if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
then
continue
@@ -7573,11 +8846,11 @@ func_mode_link ()
fi
# Now set the variables for building old libraries.
- if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+ if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
func_append oldlibs " $output_objdir/$libname.$libext"
# Transform .lo files to .o files.
- oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
+ oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
fi
# Eliminate all temporary directories.
@@ -7598,13 +8871,13 @@ func_mode_link ()
*) func_append finalize_rpath " $libdir" ;;
esac
done
- if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+ if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
dependency_libs="$temp_xrpath $dependency_libs"
fi
fi
# Make sure dlfiles contains only unique files that won't be dlpreopened
- old_dlfiles="$dlfiles"
+ old_dlfiles=$dlfiles
dlfiles=
for lib in $old_dlfiles; do
case " $dlprefiles $dlfiles " in
@@ -7614,7 +8887,7 @@ func_mode_link ()
done
# Make sure dlprefiles contains only unique files
- old_dlprefiles="$dlprefiles"
+ old_dlprefiles=$dlprefiles
dlprefiles=
for lib in $old_dlprefiles; do
case "$dlprefiles " in
@@ -7623,7 +8896,7 @@ func_mode_link ()
esac
done
- if test "$build_libtool_libs" = yes; then
+ if test yes = "$build_libtool_libs"; then
if test -n "$rpath"; then
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
@@ -7647,7 +8920,7 @@ func_mode_link ()
;;
*)
# Add libc to deplibs on all other systems if necessary.
- if test "$build_libtool_need_lc" = "yes"; then
+ if test yes = "$build_libtool_need_lc"; then
func_append deplibs " -lc"
fi
;;
@@ -7663,9 +8936,9 @@ func_mode_link ()
# I'm not sure if I'm treating the release correctly. I think
# release should show up in the -l (ie -lgmp5) so we don't want to
# add it in twice. Is that correct?
- release=""
- versuffix=""
- major=""
+ release=
+ versuffix=
+ major=
newdeplibs=
droppeddeps=no
case $deplibs_check_method in
@@ -7694,20 +8967,20 @@ EOF
-l*)
func_stripname -l '' "$i"
name=$func_stripname_result
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
case " $predeps $postdeps " in
*" $i "*)
func_append newdeplibs " $i"
- i=""
+ i=
;;
esac
fi
- if test -n "$i" ; then
+ if test -n "$i"; then
libname=`eval "\\$ECHO \"$libname_spec\""`
deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
set dummy $deplib_matches; shift
deplib_match=$1
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
func_append newdeplibs " $i"
else
droppeddeps=yes
@@ -7737,20 +9010,20 @@ EOF
$opt_dry_run || $RM conftest
if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
ldd_output=`ldd conftest`
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
case " $predeps $postdeps " in
*" $i "*)
func_append newdeplibs " $i"
- i=""
+ i=
;;
esac
fi
- if test -n "$i" ; then
+ if test -n "$i"; then
libname=`eval "\\$ECHO \"$libname_spec\""`
deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
set dummy $deplib_matches; shift
deplib_match=$1
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
func_append newdeplibs " $i"
else
droppeddeps=yes
@@ -7787,24 +9060,24 @@ EOF
-l*)
func_stripname -l '' "$a_deplib"
name=$func_stripname_result
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
case " $predeps $postdeps " in
*" $a_deplib "*)
func_append newdeplibs " $a_deplib"
- a_deplib=""
+ a_deplib=
;;
esac
fi
- if test -n "$a_deplib" ; then
+ if test -n "$a_deplib"; then
libname=`eval "\\$ECHO \"$libname_spec\""`
if test -n "$file_magic_glob"; then
libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
else
libnameglob=$libname
fi
- test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
+ test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
- if test "$want_nocaseglob" = yes; then
+ if test yes = "$want_nocaseglob"; then
shopt -s nocaseglob
potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
$nocaseglob
@@ -7822,25 +9095,25 @@ EOF
# We might still enter an endless loop, since a link
# loop can be closed while we follow links,
# but so what?
- potlib="$potent_lib"
+ potlib=$potent_lib
while test -h "$potlib" 2>/dev/null; do
- potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+ potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
case $potliblink in
- [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
- *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
+ [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
+ *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
esac
done
if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
$SED -e 10q |
$EGREP "$file_magic_regex" > /dev/null; then
func_append newdeplibs " $a_deplib"
- a_deplib=""
+ a_deplib=
break 2
fi
done
done
fi
- if test -n "$a_deplib" ; then
+ if test -n "$a_deplib"; then
droppeddeps=yes
echo
$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
@@ -7848,7 +9121,7 @@ EOF
echo "*** you link to this library. But I can only do this if you have a"
echo "*** shared version of the library, which you do not appear to have"
echo "*** because I did check the linker path looking for a file starting"
- if test -z "$potlib" ; then
+ if test -z "$potlib"; then
$ECHO "*** with $libname but no candidates were found. (...for file magic test)"
else
$ECHO "*** with $libname and none of the candidates passed a file format test"
@@ -7871,30 +9144,30 @@ EOF
-l*)
func_stripname -l '' "$a_deplib"
name=$func_stripname_result
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
case " $predeps $postdeps " in
*" $a_deplib "*)
func_append newdeplibs " $a_deplib"
- a_deplib=""
+ a_deplib=
;;
esac
fi
- if test -n "$a_deplib" ; then
+ if test -n "$a_deplib"; then
libname=`eval "\\$ECHO \"$libname_spec\""`
for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
for potent_lib in $potential_libs; do
- potlib="$potent_lib" # see symlink-check above in file_magic test
+ potlib=$potent_lib # see symlink-check above in file_magic test
if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
$EGREP "$match_pattern_regex" > /dev/null; then
func_append newdeplibs " $a_deplib"
- a_deplib=""
+ a_deplib=
break 2
fi
done
done
fi
- if test -n "$a_deplib" ; then
+ if test -n "$a_deplib"; then
droppeddeps=yes
echo
$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
@@ -7902,7 +9175,7 @@ EOF
echo "*** you link to this library. But I can only do this if you have a"
echo "*** shared version of the library, which you do not appear to have"
echo "*** because I did check the linker path looking for a file starting"
- if test -z "$potlib" ; then
+ if test -z "$potlib"; then
$ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
else
$ECHO "*** with $libname and none of the candidates passed a file format test"
@@ -7918,18 +9191,18 @@ EOF
done # Gone through all deplibs.
;;
none | unknown | *)
- newdeplibs=""
+ newdeplibs=
tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- for i in $predeps $postdeps ; do
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+ for i in $predeps $postdeps; do
# can't use Xsed below, because $i might contain '/'
- tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
+ tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
done
fi
case $tmp_deplibs in
*[!\ \ ]*)
echo
- if test "X$deplibs_check_method" = "Xnone"; then
+ if test none = "$deplibs_check_method"; then
echo "*** Warning: inter-library dependencies are not supported in this platform."
else
echo "*** Warning: inter-library dependencies are not known to be supported."
@@ -7953,8 +9226,8 @@ EOF
;;
esac
- if test "$droppeddeps" = yes; then
- if test "$module" = yes; then
+ if test yes = "$droppeddeps"; then
+ if test yes = "$module"; then
echo
echo "*** Warning: libtool could not satisfy all declared inter-library"
$ECHO "*** dependencies of module $libname. Therefore, libtool will create"
@@ -7963,12 +9236,12 @@ EOF
if test -z "$global_symbol_pipe"; then
echo
echo "*** However, this would only work if libtool was able to extract symbol"
- echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
echo "*** not find such a program. So, this module is probably useless."
- echo "*** \`nm' from GNU binutils and a full rebuild may help."
+ echo "*** 'nm' from GNU binutils and a full rebuild may help."
fi
- if test "$build_old_libs" = no; then
- oldlibs="$output_objdir/$libname.$libext"
+ if test no = "$build_old_libs"; then
+ oldlibs=$output_objdir/$libname.$libext
build_libtool_libs=module
build_old_libs=yes
else
@@ -7979,14 +9252,14 @@ EOF
echo "*** automatically added whenever a program is linked with this library"
echo "*** or is declared to -dlopen it."
- if test "$allow_undefined" = no; then
+ if test no = "$allow_undefined"; then
echo
echo "*** Since this library must not contain undefined symbols,"
echo "*** because either the platform does not support them or"
echo "*** it was explicitly requested with -no-undefined,"
echo "*** libtool will only create a static version of it."
- if test "$build_old_libs" = no; then
- oldlibs="$output_objdir/$libname.$libext"
+ if test no = "$build_old_libs"; then
+ oldlibs=$output_objdir/$libname.$libext
build_libtool_libs=module
build_old_libs=yes
else
@@ -8032,7 +9305,7 @@ EOF
*) func_append new_libs " $deplib" ;;
esac
done
- deplibs="$new_libs"
+ deplibs=$new_libs
# All the library-specific variables (install_libdir is set above).
library_names=
@@ -8040,25 +9313,25 @@ EOF
dlname=
# Test again, we may have decided not to build it any more
- if test "$build_libtool_libs" = yes; then
- # Remove ${wl} instances when linking with ld.
+ if test yes = "$build_libtool_libs"; then
+ # Remove $wl instances when linking with ld.
# FIXME: should test the right _cmds variable.
case $archive_cmds in
*\$LD\ *) wl= ;;
esac
- if test "$hardcode_into_libs" = yes; then
+ if test yes = "$hardcode_into_libs"; then
# Hardcode the library paths
hardcode_libdirs=
dep_rpath=
- rpath="$finalize_rpath"
- test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
+ rpath=$finalize_rpath
+ test relink = "$opt_mode" || rpath=$compile_rpath$rpath
for libdir in $rpath; do
if test -n "$hardcode_libdir_flag_spec"; then
if test -n "$hardcode_libdir_separator"; then
func_replace_sysroot "$libdir"
libdir=$func_replace_sysroot_result
if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
+ hardcode_libdirs=$libdir
else
# Just accumulate the unique libdirs.
case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
@@ -8083,7 +9356,7 @@ EOF
# Substitute the hardcoded libdirs into the rpath.
if test -n "$hardcode_libdir_separator" &&
test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
+ libdir=$hardcode_libdirs
eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
fi
if test -n "$runpath_var" && test -n "$perm_rpath"; then
@@ -8097,8 +9370,8 @@ EOF
test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
fi
- shlibpath="$finalize_shlibpath"
- test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+ shlibpath=$finalize_shlibpath
+ test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
if test -n "$shlibpath"; then
eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
fi
@@ -8108,19 +9381,19 @@ EOF
eval library_names=\"$library_names_spec\"
set dummy $library_names
shift
- realname="$1"
+ realname=$1
shift
if test -n "$soname_spec"; then
eval soname=\"$soname_spec\"
else
- soname="$realname"
+ soname=$realname
fi
if test -z "$dlname"; then
dlname=$soname
fi
- lib="$output_objdir/$realname"
+ lib=$output_objdir/$realname
linknames=
for link
do
@@ -8134,7 +9407,7 @@ EOF
delfiles=
if test -n "$export_symbols" && test -n "$include_expsyms"; then
$opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
- export_symbols="$output_objdir/$libname.uexp"
+ export_symbols=$output_objdir/$libname.uexp
func_append delfiles " $export_symbols"
fi
@@ -8143,31 +9416,31 @@ EOF
cygwin* | mingw* | cegcc*)
if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
# exporting using user supplied symfile
- if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+ func_dll_def_p "$export_symbols" || {
# and it's NOT already a .def file. Must figure out
# which of the given symbols are data symbols and tag
# them as such. So, trigger use of export_symbols_cmds.
# export_symbols gets reassigned inside the "prepare
# the list of exported symbols" if statement, so the
# include_expsyms logic still works.
- orig_export_symbols="$export_symbols"
+ orig_export_symbols=$export_symbols
export_symbols=
always_export_symbols=yes
- fi
+ }
fi
;;
esac
# Prepare the list of exported symbols
if test -z "$export_symbols"; then
- if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
- func_verbose "generating symbol list for \`$libname.la'"
- export_symbols="$output_objdir/$libname.exp"
+ if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
+ func_verbose "generating symbol list for '$libname.la'"
+ export_symbols=$output_objdir/$libname.exp
$opt_dry_run || $RM $export_symbols
cmds=$export_symbols_cmds
- save_ifs="$IFS"; IFS='~'
+ save_ifs=$IFS; IFS='~'
for cmd1 in $cmds; do
- IFS="$save_ifs"
+ IFS=$save_ifs
# Take the normal branch if the nm_file_list_spec branch
# doesn't work or if tool conversion is not needed.
case $nm_file_list_spec~$to_tool_file_cmd in
@@ -8181,7 +9454,7 @@ EOF
try_normal_branch=no
;;
esac
- if test "$try_normal_branch" = yes \
+ if test yes = "$try_normal_branch" \
&& { test "$len" -lt "$max_cmd_len" \
|| test "$max_cmd_len" -le -1; }
then
@@ -8192,7 +9465,7 @@ EOF
output_la=$func_basename_result
save_libobjs=$libobjs
save_output=$output
- output=${output_objdir}/${output_la}.nm
+ output=$output_objdir/$output_la.nm
func_to_tool_file "$output"
libobjs=$nm_file_list_spec$func_to_tool_file_result
func_append delfiles " $output"
@@ -8215,8 +9488,8 @@ EOF
break
fi
done
- IFS="$save_ifs"
- if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+ IFS=$save_ifs
+ if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
fi
@@ -8224,16 +9497,16 @@ EOF
fi
if test -n "$export_symbols" && test -n "$include_expsyms"; then
- tmp_export_symbols="$export_symbols"
- test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+ tmp_export_symbols=$export_symbols
+ test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
$opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
fi
- if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+ if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
# The given exports_symbols file has to be filtered, so filter it.
- func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+ func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
# FIXME: $output_objdir/$libname.filter potentially contains lots of
- # 's' commands which not all seds can handle. GNU sed should be fine
+ # 's' commands, which not all seds can handle. GNU sed should be fine
# though. Also, the filter scales superlinearly with the number of
# global variables. join(1) would be nice here, but unfortunately
# isn't a blessed tool.
@@ -8252,11 +9525,11 @@ EOF
;;
esac
done
- deplibs="$tmp_deplibs"
+ deplibs=$tmp_deplibs
if test -n "$convenience"; then
if test -n "$whole_archive_flag_spec" &&
- test "$compiler_needs_object" = yes &&
+ test yes = "$compiler_needs_object" &&
test -z "$libobjs"; then
# extract the archives, so we have objects to list.
# TODO: could optimize this to just extract one archive.
@@ -8267,7 +9540,7 @@ EOF
eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
test "X$libobjs" = "X " && libobjs=
else
- gentop="$output_objdir/${outputname}x"
+ gentop=$output_objdir/${outputname}x
func_append generated " $gentop"
func_extract_archives $gentop $convenience
@@ -8276,18 +9549,18 @@ EOF
fi
fi
- if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
eval flag=\"$thread_safe_flag_spec\"
func_append linker_flags " $flag"
fi
# Make a backup of the uninstalled library when relinking
- if test "$opt_mode" = relink; then
+ if test relink = "$opt_mode"; then
$opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
fi
# Do each of the archive commands.
- if test "$module" = yes && test -n "$module_cmds" ; then
+ if test yes = "$module" && test -n "$module_cmds"; then
if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
eval test_cmds=\"$module_expsym_cmds\"
cmds=$module_expsym_cmds
@@ -8305,7 +9578,7 @@ EOF
fi
fi
- if test "X$skipped_export" != "X:" &&
+ if test : != "$skipped_export" &&
func_len " $test_cmds" &&
len=$func_len_result &&
test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
@@ -8338,8 +9611,8 @@ EOF
last_robj=
k=1
- if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
- output=${output_objdir}/${output_la}.lnkscript
+ if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
+ output=$output_objdir/$output_la.lnkscript
func_verbose "creating GNU ld script: $output"
echo 'INPUT (' > $output
for obj in $save_libobjs
@@ -8351,14 +9624,14 @@ EOF
func_append delfiles " $output"
func_to_tool_file "$output"
output=$func_to_tool_file_result
- elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
- output=${output_objdir}/${output_la}.lnk
+ elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
+ output=$output_objdir/$output_la.lnk
func_verbose "creating linker input file list: $output"
: > $output
set x $save_libobjs
shift
firstobj=
- if test "$compiler_needs_object" = yes; then
+ if test yes = "$compiler_needs_object"; then
firstobj="$1 "
shift
fi
@@ -8373,7 +9646,7 @@ EOF
else
if test -n "$save_libobjs"; then
func_verbose "creating reloadable object files..."
- output=$output_objdir/$output_la-${k}.$objext
+ output=$output_objdir/$output_la-$k.$objext
eval test_cmds=\"$reload_cmds\"
func_len " $test_cmds"
len0=$func_len_result
@@ -8385,13 +9658,13 @@ EOF
func_len " $obj"
func_arith $len + $func_len_result
len=$func_arith_result
- if test "X$objlist" = X ||
+ if test -z "$objlist" ||
test "$len" -lt "$max_cmd_len"; then
func_append objlist " $obj"
else
# The command $test_cmds is almost too long, add a
# command to the queue.
- if test "$k" -eq 1 ; then
+ if test 1 -eq "$k"; then
# The first file doesn't have a previous command to add.
reload_objs=$objlist
eval concat_cmds=\"$reload_cmds\"
@@ -8401,10 +9674,10 @@ EOF
reload_objs="$objlist $last_robj"
eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
fi
- last_robj=$output_objdir/$output_la-${k}.$objext
+ last_robj=$output_objdir/$output_la-$k.$objext
func_arith $k + 1
k=$func_arith_result
- output=$output_objdir/$output_la-${k}.$objext
+ output=$output_objdir/$output_la-$k.$objext
objlist=" $obj"
func_len " $last_robj"
func_arith $len0 + $func_len_result
@@ -8416,9 +9689,9 @@ EOF
# files will link in the last one created.
test -z "$concat_cmds" || concat_cmds=$concat_cmds~
reload_objs="$objlist $last_robj"
- eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
+ eval concat_cmds=\"\$concat_cmds$reload_cmds\"
if test -n "$last_robj"; then
- eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
fi
func_append delfiles " $output"
@@ -8426,9 +9699,9 @@ EOF
output=
fi
- if ${skipped_export-false}; then
- func_verbose "generating symbol list for \`$libname.la'"
- export_symbols="$output_objdir/$libname.exp"
+ ${skipped_export-false} && {
+ func_verbose "generating symbol list for '$libname.la'"
+ export_symbols=$output_objdir/$libname.exp
$opt_dry_run || $RM $export_symbols
libobjs=$output
# Append the command to create the export file.
@@ -8437,16 +9710,16 @@ EOF
if test -n "$last_robj"; then
eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
fi
- fi
+ }
test -n "$save_libobjs" &&
func_verbose "creating a temporary reloadable object file: $output"
# Loop through the commands generated above and execute them.
- save_ifs="$IFS"; IFS='~'
+ save_ifs=$IFS; IFS='~'
for cmd in $concat_cmds; do
- IFS="$save_ifs"
- $opt_silent || {
+ IFS=$save_ifs
+ $opt_quiet || {
func_quote_for_expand "$cmd"
eval "func_echo $func_quote_for_expand_result"
}
@@ -8454,7 +9727,7 @@ EOF
lt_exit=$?
# Restore the uninstalled library and exit
- if test "$opt_mode" = relink; then
+ if test relink = "$opt_mode"; then
( cd "$output_objdir" && \
$RM "${realname}T" && \
$MV "${realname}U" "$realname" )
@@ -8463,7 +9736,7 @@ EOF
exit $lt_exit
}
done
- IFS="$save_ifs"
+ IFS=$save_ifs
if test -n "$export_symbols_regex" && ${skipped_export-false}; then
func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
@@ -8471,18 +9744,18 @@ EOF
fi
fi
- if ${skipped_export-false}; then
+ ${skipped_export-false} && {
if test -n "$export_symbols" && test -n "$include_expsyms"; then
- tmp_export_symbols="$export_symbols"
- test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+ tmp_export_symbols=$export_symbols
+ test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
$opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
fi
if test -n "$orig_export_symbols"; then
# The given exports_symbols file has to be filtered, so filter it.
- func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+ func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
# FIXME: $output_objdir/$libname.filter potentially contains lots of
- # 's' commands which not all seds can handle. GNU sed should be fine
+ # 's' commands, which not all seds can handle. GNU sed should be fine
# though. Also, the filter scales superlinearly with the number of
# global variables. join(1) would be nice here, but unfortunately
# isn't a blessed tool.
@@ -8491,7 +9764,7 @@ EOF
export_symbols=$output_objdir/$libname.def
$opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
fi
- fi
+ }
libobjs=$output
# Restore the value of output.
@@ -8505,7 +9778,7 @@ EOF
# value of $libobjs for piecewise linking.
# Do each of the archive commands.
- if test "$module" = yes && test -n "$module_cmds" ; then
+ if test yes = "$module" && test -n "$module_cmds"; then
if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
cmds=$module_expsym_cmds
else
@@ -8527,7 +9800,7 @@ EOF
# Add any objects from preloaded convenience libraries
if test -n "$dlprefiles"; then
- gentop="$output_objdir/${outputname}x"
+ gentop=$output_objdir/${outputname}x
func_append generated " $gentop"
func_extract_archives $gentop $dlprefiles
@@ -8535,11 +9808,12 @@ EOF
test "X$libobjs" = "X " && libobjs=
fi
- save_ifs="$IFS"; IFS='~'
+ save_ifs=$IFS; IFS='~'
for cmd in $cmds; do
- IFS="$save_ifs"
+ IFS=$sp$nl
eval cmd=\"$cmd\"
- $opt_silent || {
+ IFS=$save_ifs
+ $opt_quiet || {
func_quote_for_expand "$cmd"
eval "func_echo $func_quote_for_expand_result"
}
@@ -8547,7 +9821,7 @@ EOF
lt_exit=$?
# Restore the uninstalled library and exit
- if test "$opt_mode" = relink; then
+ if test relink = "$opt_mode"; then
( cd "$output_objdir" && \
$RM "${realname}T" && \
$MV "${realname}U" "$realname" )
@@ -8556,10 +9830,10 @@ EOF
exit $lt_exit
}
done
- IFS="$save_ifs"
+ IFS=$save_ifs
# Restore the uninstalled library and exit
- if test "$opt_mode" = relink; then
+ if test relink = "$opt_mode"; then
$opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
if test -n "$convenience"; then
@@ -8579,39 +9853,39 @@ EOF
done
# If -module or -export-dynamic was specified, set the dlname.
- if test "$module" = yes || test "$export_dynamic" = yes; then
+ if test yes = "$module" || test yes = "$export_dynamic"; then
# On all known operating systems, these are identical.
- dlname="$soname"
+ dlname=$soname
fi
fi
;;
obj)
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- func_warning "\`-dlopen' is ignored for objects"
+ if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+ func_warning "'-dlopen' is ignored for objects"
fi
case " $deplibs" in
*\ -l* | *\ -L*)
- func_warning "\`-l' and \`-L' are ignored for objects" ;;
+ func_warning "'-l' and '-L' are ignored for objects" ;;
esac
test -n "$rpath" && \
- func_warning "\`-rpath' is ignored for objects"
+ func_warning "'-rpath' is ignored for objects"
test -n "$xrpath" && \
- func_warning "\`-R' is ignored for objects"
+ func_warning "'-R' is ignored for objects"
test -n "$vinfo" && \
- func_warning "\`-version-info' is ignored for objects"
+ func_warning "'-version-info' is ignored for objects"
test -n "$release" && \
- func_warning "\`-release' is ignored for objects"
+ func_warning "'-release' is ignored for objects"
case $output in
*.lo)
test -n "$objs$old_deplibs" && \
- func_fatal_error "cannot build library object \`$output' from non-libtool objects"
+ func_fatal_error "cannot build library object '$output' from non-libtool objects"
libobj=$output
func_lo2o "$libobj"
@@ -8619,7 +9893,7 @@ EOF
;;
*)
libobj=
- obj="$output"
+ obj=$output
;;
esac
@@ -8642,7 +9916,7 @@ EOF
eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
else
- gentop="$output_objdir/${obj}x"
+ gentop=$output_objdir/${obj}x
func_append generated " $gentop"
func_extract_archives $gentop $convenience
@@ -8651,12 +9925,12 @@ EOF
fi
# If we're not building shared, we need to use non_pic_objs
- test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
+ test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
# Create the old-style object.
- reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+ reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
- output="$obj"
+ output=$obj
func_execute_cmds "$reload_cmds" 'exit $?'
# Exit if we aren't doing a library object file.
@@ -8668,7 +9942,7 @@ EOF
exit $EXIT_SUCCESS
fi
- if test "$build_libtool_libs" != yes; then
+ test yes = "$build_libtool_libs" || {
if test -n "$gentop"; then
func_show_eval '${RM}r "$gentop"'
fi
@@ -8678,12 +9952,12 @@ EOF
# $show "echo timestamp > $libobj"
# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
exit $EXIT_SUCCESS
- fi
+ }
- if test -n "$pic_flag" || test "$pic_mode" != default; then
+ if test -n "$pic_flag" || test default != "$pic_mode"; then
# Only do commands if we really have different PIC objects.
reload_objs="$libobjs $reload_conv_objs"
- output="$libobj"
+ output=$libobj
func_execute_cmds "$reload_cmds" 'exit $?'
fi
@@ -8700,16 +9974,14 @@ EOF
output=$func_stripname_result.exe;;
esac
test -n "$vinfo" && \
- func_warning "\`-version-info' is ignored for programs"
+ func_warning "'-version-info' is ignored for programs"
test -n "$release" && \
- func_warning "\`-release' is ignored for programs"
+ func_warning "'-release' is ignored for programs"
- test "$preload" = yes \
- && test "$dlopen_support" = unknown \
- && test "$dlopen_self" = unknown \
- && test "$dlopen_self_static" = unknown && \
- func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+ $preload \
+ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
+ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
case $host in
*-*-rhapsody* | *-*-darwin1.[012])
@@ -8723,11 +9995,11 @@ EOF
*-*-darwin*)
# Don't allow lazy linking, it breaks C++ global constructors
# But is supposedly fixed on 10.4 or later (yay!).
- if test "$tagname" = CXX ; then
+ if test CXX = "$tagname"; then
case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
10.[0123])
- func_append compile_command " ${wl}-bind_at_load"
- func_append finalize_command " ${wl}-bind_at_load"
+ func_append compile_command " $wl-bind_at_load"
+ func_append finalize_command " $wl-bind_at_load"
;;
esac
fi
@@ -8763,7 +10035,7 @@ EOF
*) func_append new_libs " $deplib" ;;
esac
done
- compile_deplibs="$new_libs"
+ compile_deplibs=$new_libs
func_append compile_command " $compile_deplibs"
@@ -8787,7 +10059,7 @@ EOF
if test -n "$hardcode_libdir_flag_spec"; then
if test -n "$hardcode_libdir_separator"; then
if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
+ hardcode_libdirs=$libdir
else
# Just accumulate the unique libdirs.
case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
@@ -8810,7 +10082,7 @@ EOF
fi
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
- testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+ testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
case :$dllsearchpath: in
*":$libdir:"*) ;;
::) dllsearchpath=$libdir;;
@@ -8827,10 +10099,10 @@ EOF
# Substitute the hardcoded libdirs into the rpath.
if test -n "$hardcode_libdir_separator" &&
test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
+ libdir=$hardcode_libdirs
eval rpath=\" $hardcode_libdir_flag_spec\"
fi
- compile_rpath="$rpath"
+ compile_rpath=$rpath
rpath=
hardcode_libdirs=
@@ -8838,7 +10110,7 @@ EOF
if test -n "$hardcode_libdir_flag_spec"; then
if test -n "$hardcode_libdir_separator"; then
if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
+ hardcode_libdirs=$libdir
else
# Just accumulate the unique libdirs.
case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
@@ -8863,45 +10135,43 @@ EOF
# Substitute the hardcoded libdirs into the rpath.
if test -n "$hardcode_libdir_separator" &&
test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
+ libdir=$hardcode_libdirs
eval rpath=\" $hardcode_libdir_flag_spec\"
fi
- finalize_rpath="$rpath"
+ finalize_rpath=$rpath
- if test -n "$libobjs" && test "$build_old_libs" = yes; then
+ if test -n "$libobjs" && test yes = "$build_old_libs"; then
# Transform all the library objects into standard objects.
compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
fi
- func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+ func_generate_dlsyms "$outputname" "@PROGRAM@" false
# template prelinking step
if test -n "$prelink_cmds"; then
func_execute_cmds "$prelink_cmds" 'exit $?'
fi
- wrappers_required=yes
+ wrappers_required=:
case $host in
*cegcc* | *mingw32ce*)
# Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
- wrappers_required=no
+ wrappers_required=false
;;
*cygwin* | *mingw* )
- if test "$build_libtool_libs" != yes; then
- wrappers_required=no
- fi
+ test yes = "$build_libtool_libs" || wrappers_required=false
;;
*)
- if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
- wrappers_required=no
+ if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
+ wrappers_required=false
fi
;;
esac
- if test "$wrappers_required" = no; then
+ $wrappers_required || {
# Replace the output file specification.
compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
- link_command="$compile_command$compile_rpath"
+ link_command=$compile_command$compile_rpath
# We have no uninstalled library dependencies, so finalize right now.
exit_status=0
@@ -8914,12 +10184,12 @@ EOF
fi
# Delete the generated files.
- if test -f "$output_objdir/${outputname}S.${objext}"; then
- func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+ if test -f "$output_objdir/${outputname}S.$objext"; then
+ func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
fi
exit $exit_status
- fi
+ }
if test -n "$compile_shlibpath$finalize_shlibpath"; then
compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
@@ -8949,9 +10219,9 @@ EOF
fi
fi
- if test "$no_install" = yes; then
+ if test yes = "$no_install"; then
# We don't need to create a wrapper script.
- link_command="$compile_var$compile_command$compile_rpath"
+ link_command=$compile_var$compile_command$compile_rpath
# Replace the output file specification.
link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
# Delete the old output file.
@@ -8968,27 +10238,28 @@ EOF
exit $EXIT_SUCCESS
fi
- if test "$hardcode_action" = relink; then
- # Fast installation is not supported
- link_command="$compile_var$compile_command$compile_rpath"
- relink_command="$finalize_var$finalize_command$finalize_rpath"
+ case $hardcode_action,$fast_install in
+ relink,*)
+ # Fast installation is not supported
+ link_command=$compile_var$compile_command$compile_rpath
+ relink_command=$finalize_var$finalize_command$finalize_rpath
- func_warning "this platform does not like uninstalled shared libraries"
- func_warning "\`$output' will be relinked during installation"
- else
- if test "$fast_install" != no; then
- link_command="$finalize_var$compile_command$finalize_rpath"
- if test "$fast_install" = yes; then
- relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
- else
- # fast_install is set to needless
- relink_command=
- fi
- else
- link_command="$compile_var$compile_command$compile_rpath"
- relink_command="$finalize_var$finalize_command$finalize_rpath"
- fi
- fi
+ func_warning "this platform does not like uninstalled shared libraries"
+ func_warning "'$output' will be relinked during installation"
+ ;;
+ *,yes)
+ link_command=$finalize_var$compile_command$finalize_rpath
+ relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+ ;;
+ *,no)
+ link_command=$compile_var$compile_command$compile_rpath
+ relink_command=$finalize_var$finalize_command$finalize_rpath
+ ;;
+ *,needless)
+ link_command=$finalize_var$compile_command$finalize_rpath
+ relink_command=
+ ;;
+ esac
# Replace the output file specification.
link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
@@ -9045,8 +10316,8 @@ EOF
func_dirname_and_basename "$output" "" "."
output_name=$func_basename_result
output_path=$func_dirname_result
- cwrappersource="$output_path/$objdir/lt-$output_name.c"
- cwrapper="$output_path/$output_name.exe"
+ cwrappersource=$output_path/$objdir/lt-$output_name.c
+ cwrapper=$output_path/$output_name.exe
$RM $cwrappersource $cwrapper
trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
@@ -9067,7 +10338,7 @@ EOF
trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
$opt_dry_run || {
# note: this script will not be executed, so do not chmod.
- if test "x$build" = "x$host" ; then
+ if test "x$build" = "x$host"; then
$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
else
func_emit_wrapper no > $func_ltwrapper_scriptname_result
@@ -9090,25 +10361,27 @@ EOF
# See if we need to build an old-fashioned archive.
for oldlib in $oldlibs; do
- if test "$build_libtool_libs" = convenience; then
- oldobjs="$libobjs_save $symfileobj"
- addlibs="$convenience"
- build_libtool_libs=no
- else
- if test "$build_libtool_libs" = module; then
- oldobjs="$libobjs_save"
+ case $build_libtool_libs in
+ convenience)
+ oldobjs="$libobjs_save $symfileobj"
+ addlibs=$convenience
build_libtool_libs=no
- else
+ ;;
+ module)
+ oldobjs=$libobjs_save
+ addlibs=$old_convenience
+ build_libtool_libs=no
+ ;;
+ *)
oldobjs="$old_deplibs $non_pic_objects"
- if test "$preload" = yes && test -f "$symfileobj"; then
- func_append oldobjs " $symfileobj"
- fi
- fi
- addlibs="$old_convenience"
- fi
+ $preload && test -f "$symfileobj" \
+ && func_append oldobjs " $symfileobj"
+ addlibs=$old_convenience
+ ;;
+ esac
if test -n "$addlibs"; then
- gentop="$output_objdir/${outputname}x"
+ gentop=$output_objdir/${outputname}x
func_append generated " $gentop"
func_extract_archives $gentop $addlibs
@@ -9116,13 +10389,13 @@ EOF
fi
# Do each command in the archive commands.
- if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+ if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
cmds=$old_archive_from_new_cmds
else
# Add any objects from preloaded convenience libraries
if test -n "$dlprefiles"; then
- gentop="$output_objdir/${outputname}x"
+ gentop=$output_objdir/${outputname}x
func_append generated " $gentop"
func_extract_archives $gentop $dlprefiles
@@ -9143,7 +10416,7 @@ EOF
:
else
echo "copying selected object files to avoid basename conflicts..."
- gentop="$output_objdir/${outputname}x"
+ gentop=$output_objdir/${outputname}x
func_append generated " $gentop"
func_mkdir_p "$gentop"
save_oldobjs=$oldobjs
@@ -9152,7 +10425,7 @@ EOF
for obj in $save_oldobjs
do
func_basename "$obj"
- objbase="$func_basename_result"
+ objbase=$func_basename_result
case " $oldobjs " in
" ") oldobjs=$obj ;;
*[\ /]"$objbase "*)
@@ -9221,18 +10494,18 @@ EOF
else
# the above command should be used before it gets too long
oldobjs=$objlist
- if test "$obj" = "$last_oldobj" ; then
+ if test "$obj" = "$last_oldobj"; then
RANLIB=$save_RANLIB
fi
test -z "$concat_cmds" || concat_cmds=$concat_cmds~
- eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
objlist=
len=$len0
fi
done
RANLIB=$save_RANLIB
oldobjs=$objlist
- if test "X$oldobjs" = "X" ; then
+ if test -z "$oldobjs"; then
eval cmds=\"\$concat_cmds\"
else
eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
@@ -9249,7 +10522,7 @@ EOF
case $output in
*.la)
old_library=
- test "$build_old_libs" = yes && old_library="$libname.$libext"
+ test yes = "$build_old_libs" && old_library=$libname.$libext
func_verbose "creating $output"
# Preserve any variables that may affect compiler behavior
@@ -9264,31 +10537,31 @@ EOF
fi
done
# Quote the link command for shipping.
- relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+ relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
- if test "$hardcode_automatic" = yes ; then
+ if test yes = "$hardcode_automatic"; then
relink_command=
fi
# Only create the output if not a dry run.
$opt_dry_run || {
for installed in no yes; do
- if test "$installed" = yes; then
+ if test yes = "$installed"; then
if test -z "$install_libdir"; then
break
fi
- output="$output_objdir/$outputname"i
+ output=$output_objdir/${outputname}i
# Replace all uninstalled libtool libraries with the installed ones
newdependency_libs=
for deplib in $dependency_libs; do
case $deplib in
*.la)
func_basename "$deplib"
- name="$func_basename_result"
+ name=$func_basename_result
func_resolve_sysroot "$deplib"
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+ eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
test -z "$libdir" && \
- func_fatal_error "\`$deplib' is not a valid libtool archive"
+ func_fatal_error "'$deplib' is not a valid libtool archive"
func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
;;
-L*)
@@ -9304,23 +10577,23 @@ EOF
*) func_append newdependency_libs " $deplib" ;;
esac
done
- dependency_libs="$newdependency_libs"
+ dependency_libs=$newdependency_libs
newdlfiles=
for lib in $dlfiles; do
case $lib in
*.la)
func_basename "$lib"
- name="$func_basename_result"
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ name=$func_basename_result
+ eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
test -z "$libdir" && \
- func_fatal_error "\`$lib' is not a valid libtool archive"
+ func_fatal_error "'$lib' is not a valid libtool archive"
func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
;;
*) func_append newdlfiles " $lib" ;;
esac
done
- dlfiles="$newdlfiles"
+ dlfiles=$newdlfiles
newdlprefiles=
for lib in $dlprefiles; do
case $lib in
@@ -9330,34 +10603,34 @@ EOF
# didn't already link the preopened objects directly into
# the library:
func_basename "$lib"
- name="$func_basename_result"
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ name=$func_basename_result
+ eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
test -z "$libdir" && \
- func_fatal_error "\`$lib' is not a valid libtool archive"
+ func_fatal_error "'$lib' is not a valid libtool archive"
func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
;;
esac
done
- dlprefiles="$newdlprefiles"
+ dlprefiles=$newdlprefiles
else
newdlfiles=
for lib in $dlfiles; do
case $lib in
- [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
*) abs=`pwd`"/$lib" ;;
esac
func_append newdlfiles " $abs"
done
- dlfiles="$newdlfiles"
+ dlfiles=$newdlfiles
newdlprefiles=
for lib in $dlprefiles; do
case $lib in
- [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
*) abs=`pwd`"/$lib" ;;
esac
func_append newdlprefiles " $abs"
done
- dlprefiles="$newdlprefiles"
+ dlprefiles=$newdlprefiles
fi
$RM $output
# place dlname in correct position for cygwin
@@ -9373,10 +10646,9 @@ EOF
case $host,$output,$installed,$module,$dlname in
*cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
# If a -bindir argument was supplied, place the dll there.
- if test "x$bindir" != x ;
- then
+ if test -n "$bindir"; then
func_relative_path "$install_libdir" "$bindir"
- tdlname=$func_relative_path_result$dlname
+ tdlname=$func_relative_path_result/$dlname
else
# Otherwise fall back on heuristic.
tdlname=../bin/$dlname
@@ -9385,7 +10657,7 @@ EOF
esac
$ECHO > $output "\
# $outputname - a libtool library file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
@@ -9399,7 +10671,7 @@ library_names='$library_names'
# The name of the static archive.
old_library='$old_library'
-# Linker flags that can not go in dependency_libs.
+# Linker flags that cannot go in dependency_libs.
inherited_linker_flags='$new_inherited_linker_flags'
# Libraries that this one depends upon.
@@ -9425,7 +10697,7 @@ dlpreopen='$dlprefiles'
# Directory that this library needs to be installed in:
libdir='$install_libdir'"
- if test "$installed" = no && test "$need_relink" = yes; then
+ if test no,yes = "$installed,$need_relink"; then
$ECHO >> $output "\
relink_command=\"$relink_command\""
fi
@@ -9440,27 +10712,29 @@ relink_command=\"$relink_command\""
exit $EXIT_SUCCESS
}
-{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
- func_mode_link ${1+"$@"}
+if test link = "$opt_mode" || test relink = "$opt_mode"; then
+ func_mode_link ${1+"$@"}
+fi
# func_mode_uninstall arg...
func_mode_uninstall ()
{
- $opt_debug
- RM="$nonopt"
+ $debug_cmd
+
+ RM=$nonopt
files=
- rmforce=
+ rmforce=false
exit_status=0
# This variable tells wrapper scripts just to set variables rather
# than running their programs.
- libtool_install_magic="$magic"
+ libtool_install_magic=$magic
for arg
do
case $arg in
- -f) func_append RM " $arg"; rmforce=yes ;;
+ -f) func_append RM " $arg"; rmforce=: ;;
-*) func_append RM " $arg" ;;
*) func_append files " $arg" ;;
esac
@@ -9473,18 +10747,18 @@ func_mode_uninstall ()
for file in $files; do
func_dirname "$file" "" "."
- dir="$func_dirname_result"
- if test "X$dir" = X.; then
- odir="$objdir"
+ dir=$func_dirname_result
+ if test . = "$dir"; then
+ odir=$objdir
else
- odir="$dir/$objdir"
+ odir=$dir/$objdir
fi
func_basename "$file"
- name="$func_basename_result"
- test "$opt_mode" = uninstall && odir="$dir"
+ name=$func_basename_result
+ test uninstall = "$opt_mode" && odir=$dir
# Remember odir for removal later, being careful to avoid duplicates
- if test "$opt_mode" = clean; then
+ if test clean = "$opt_mode"; then
case " $rmdirs " in
*" $odir "*) ;;
*) func_append rmdirs " $odir" ;;
@@ -9499,11 +10773,11 @@ func_mode_uninstall ()
elif test -d "$file"; then
exit_status=1
continue
- elif test "$rmforce" = yes; then
+ elif $rmforce; then
continue
fi
- rmfiles="$file"
+ rmfiles=$file
case $name in
*.la)
@@ -9517,7 +10791,7 @@ func_mode_uninstall ()
done
test -n "$old_library" && func_append rmfiles " $odir/$old_library"
- case "$opt_mode" in
+ case $opt_mode in
clean)
case " $library_names " in
*" $dlname "*) ;;
@@ -9528,12 +10802,12 @@ func_mode_uninstall ()
uninstall)
if test -n "$library_names"; then
# Do each command in the postuninstall commands.
- func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+ func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
fi
if test -n "$old_library"; then
# Do each command in the old_postuninstall commands.
- func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+ func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
fi
# FIXME: should reinstall the best remaining shared library.
;;
@@ -9549,21 +10823,19 @@ func_mode_uninstall ()
func_source $dir/$name
# Add PIC object to the list of files to remove.
- if test -n "$pic_object" &&
- test "$pic_object" != none; then
+ if test -n "$pic_object" && test none != "$pic_object"; then
func_append rmfiles " $dir/$pic_object"
fi
# Add non-PIC object to the list of files to remove.
- if test -n "$non_pic_object" &&
- test "$non_pic_object" != none; then
+ if test -n "$non_pic_object" && test none != "$non_pic_object"; then
func_append rmfiles " $dir/$non_pic_object"
fi
fi
;;
*)
- if test "$opt_mode" = clean ; then
+ if test clean = "$opt_mode"; then
noexename=$name
case $file in
*.exe)
@@ -9590,12 +10862,12 @@ func_mode_uninstall ()
# note $name still contains .exe if it was in $file originally
# as does the version of $file that was added into $rmfiles
- func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
- if test "$fast_install" = yes && test -n "$relink_command"; then
+ func_append rmfiles " $odir/$name $odir/${name}S.$objext"
+ if test yes = "$fast_install" && test -n "$relink_command"; then
func_append rmfiles " $odir/lt-$name"
fi
- if test "X$noexename" != "X$name" ; then
- func_append rmfiles " $odir/lt-${noexename}.c"
+ if test "X$noexename" != "X$name"; then
+ func_append rmfiles " $odir/lt-$noexename.c"
fi
fi
fi
@@ -9604,7 +10876,7 @@ func_mode_uninstall ()
func_show_eval "$RM $rmfiles" 'exit_status=1'
done
- # Try to remove the ${objdir}s in the directories where we deleted files
+ # Try to remove the $objdir's in the directories where we deleted files
for dir in $rmdirs; do
if test -d "$dir"; then
func_show_eval "rmdir $dir >/dev/null 2>&1"
@@ -9614,16 +10886,17 @@ func_mode_uninstall ()
exit $exit_status
}
-{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
- func_mode_uninstall ${1+"$@"}
+if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
+ func_mode_uninstall ${1+"$@"}
+fi
test -z "$opt_mode" && {
- help="$generic_help"
+ help=$generic_help
func_fatal_help "you must specify a MODE"
}
test -z "$exec_cmd" && \
- func_fatal_help "invalid operation mode \`$opt_mode'"
+ func_fatal_help "invalid operation mode '$opt_mode'"
if test -n "$exec_cmd"; then
eval exec "$exec_cmd"
@@ -9634,7 +10907,7 @@ exit $exit_status
# The TAGs below are defined such that we never get into a situation
-# in which we disable both kinds of libraries. Given conflicting
+# where we disable both kinds of libraries. Given conflicting
# choices, we go for a static library, that is the most portable,
# since we can't tell whether shared libraries were disabled because
# the user asked for that or because the platform doesn't support
@@ -9657,5 +10930,3 @@ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
# mode:shell-script
# sh-indentation:2
# End:
-# vi:sw=2
-
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index d7c043f..4bc6b22 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -1,8 +1,6 @@
# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
#
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1996-2001, 2003-2013 Free Software Foundation, Inc.
# Written by Gordon Matzigkeit, 1996
#
# This file is free software; the Free Software Foundation gives
@@ -39,7 +37,7 @@ m4_define([_LT_COPYING], [dnl
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
])
-# serial 57 LT_INIT
+# serial 58 LT_INIT
# LT_PREREQ(VERSION)
@@ -91,7 +89,7 @@ dnl Parse OPTIONS
_LT_SET_OPTIONS([$0], [$1])
# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
+LIBTOOL_DEPS=$ltmain
# Always use our own libtool.
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
@@ -130,7 +128,7 @@ cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
# _LT_FILEUTILS_DEFAULTS
# ----------------------
# It is okay to use these file commands and assume they have been set
-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'.
m4_defun([_LT_FILEUTILS_DEFAULTS],
[: ${CP="cp -f"}
: ${MV="mv -f"}
@@ -179,13 +177,13 @@ m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
m4_require([_LT_WITH_SYSROOT])dnl
_LT_CONFIG_LIBTOOL_INIT([
-# See if we are running on zsh, and set the options which allow our
+# See if we are running on zsh, and set the options that allow our
# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
+if test -n "\${ZSH_VERSION+set}"; then
setopt NO_GLOB_SUBST
fi
])
-if test -n "${ZSH_VERSION+set}" ; then
+if test -n "${ZSH_VERSION+set}"; then
setopt NO_GLOB_SUBST
fi
@@ -198,7 +196,7 @@ aix3*)
# AIX sometimes has problems with the GCC collect2 program. For some
# reason, if we set the COLLECT_NAMES environment variable, the problems
# vanish in a puff of smoke.
- if test "X${COLLECT_NAMES+set}" != Xset; then
+ if test set != "${COLLECT_NAMES+set}"; then
COLLECT_NAMES=
export COLLECT_NAMES
fi
@@ -209,14 +207,14 @@ esac
ofile=libtool
can_build_shared=yes
-# All known linkers require a `.a' archive for static linking (except MSVC,
+# All known linkers require a '.a' archive for static linking (except MSVC,
# which needs '.lib').
libext=a
-with_gnu_ld="$lt_cv_prog_gnu_ld"
+with_gnu_ld=$lt_cv_prog_gnu_ld
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
+old_CC=$CC
+old_CFLAGS=$CFLAGS
# Set sane defaults for various variables
test -z "$CC" && CC=cc
@@ -269,14 +267,14 @@ no_glob_subst='s/\*/\\\*/g'
# _LT_PROG_LTMAIN
# ---------------
-# Note that this code is called both from `configure', and `config.status'
+# Note that this code is called both from 'configure', and 'config.status'
# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably,
-# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# 'config.status' has no value for ac_aux_dir unless we are using Automake,
# so we pass a copy along to make sure it has a sensible value anyway.
m4_defun([_LT_PROG_LTMAIN],
[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
-ltmain="$ac_aux_dir/ltmain.sh"
+ltmain=$ac_aux_dir/ltmain.sh
])# _LT_PROG_LTMAIN
@@ -286,7 +284,7 @@ ltmain="$ac_aux_dir/ltmain.sh"
# So that we can recreate a full libtool script including additional
# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
-# in macros and then make a single call at the end using the `libtool'
+# in macros and then make a single call at the end using the 'libtool'
# label.
@@ -421,8 +419,8 @@ m4_define([_lt_decl_all_varnames],
# _LT_CONFIG_STATUS_DECLARE([VARNAME])
# ------------------------------------
-# Quote a variable value, and forward it to `config.status' so that its
-# declaration there will have the same value as in `configure'. VARNAME
+# Quote a variable value, and forward it to 'config.status' so that its
+# declaration there will have the same value as in 'configure'. VARNAME
# must have a single quote delimited value for this to work.
m4_define([_LT_CONFIG_STATUS_DECLARE],
[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
@@ -446,7 +444,7 @@ m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
# Output comment and list of tags supported by the script
m4_defun([_LT_LIBTOOL_TAGS],
[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
-available_tags="_LT_TAGS"dnl
+available_tags='_LT_TAGS'dnl
])
@@ -474,7 +472,7 @@ m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
# _LT_LIBTOOL_CONFIG_VARS
# -----------------------
# Produce commented declarations of non-tagged libtool config variables
-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool'
# script. Tagged libtool config variables (even for the LIBTOOL CONFIG
# section) are produced by _LT_LIBTOOL_TAG_VARS.
m4_defun([_LT_LIBTOOL_CONFIG_VARS],
@@ -500,8 +498,8 @@ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of
# variables for single and double quote escaping we saved from calls
# to _LT_DECL, we can put quote escaped variables declarations
-# into `config.status', and then the shell code to quote escape them in
-# for loops in `config.status'. Finally, any additional code accumulated
+# into 'config.status', and then the shell code to quote escape them in
+# for loops in 'config.status'. Finally, any additional code accumulated
# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
m4_defun([_LT_CONFIG_COMMANDS],
[AC_PROVIDE_IFELSE([LT_OUTPUT],
@@ -547,7 +545,7 @@ for var in lt_decl_all_varnames([[ \
]], lt_decl_quote_varnames); do
case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
*[[\\\\\\\`\\"\\\$]]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
;;
*)
eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -560,7 +558,7 @@ for var in lt_decl_all_varnames([[ \
]], lt_decl_dquote_varnames); do
case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
*[[\\\\\\\`\\"\\\$]]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
;;
*)
eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -576,7 +574,7 @@ _LT_OUTPUT_LIBTOOL_INIT
# Generate a child script FILE with all initialization necessary to
# reuse the environment learned by the parent script, and make the
# file executable. If COMMENT is supplied, it is inserted after the
-# `#!' sequence but before initialization text begins. After this
+# '#!' sequence but before initialization text begins. After this
# macro, additional text can be appended to FILE to form the body of
# the child script. The macro ends with non-zero status if the
# file could not be fully written (such as if the disk is full).
@@ -598,7 +596,7 @@ AS_SHELL_SANITIZE
_AS_PREPARE
exec AS_MESSAGE_FD>&1
_ASEOF
-test $lt_write_fail = 0 && chmod +x $1[]dnl
+test 0 = "$lt_write_fail" && chmod +x $1[]dnl
m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
# LT_OUTPUT
@@ -621,7 +619,7 @@ exec AS_MESSAGE_LOG_FD>>config.log
} >&AS_MESSAGE_LOG_FD
lt_cl_help="\
-\`$as_me' creates a local libtool stub from the current configuration,
+'$as_me' creates a local libtool stub from the current configuration,
for use in further configure time tests before the real libtool is
generated.
@@ -643,7 +641,7 @@ Copyright (C) 2011 Free Software Foundation, Inc.
This config.lt script is free software; the Free Software Foundation
gives unlimited permision to copy, distribute and modify it."
-while test $[#] != 0
+while test 0 != $[#]
do
case $[1] in
--version | --v* | -V )
@@ -656,10 +654,10 @@ do
lt_cl_silent=: ;;
-*) AC_MSG_ERROR([unrecognized option: $[1]
-Try \`$[0] --help' for more information.]) ;;
+Try '$[0] --help' for more information.]) ;;
*) AC_MSG_ERROR([unrecognized argument: $[1]
-Try \`$[0] --help' for more information.]) ;;
+Try '$[0] --help' for more information.]) ;;
esac
shift
done
@@ -685,7 +683,7 @@ chmod +x "$CONFIG_LT"
# open by configure. Here we exec the FD to /dev/null, effectively closing
# config.log, so it can be properly (re)opened and appended to by config.lt.
lt_cl_success=:
-test "$silent" = yes &&
+test yes = "$silent" &&
lt_config_lt_args="$lt_config_lt_args --quiet"
exec AS_MESSAGE_LOG_FD>/dev/null
$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
@@ -705,13 +703,13 @@ m4_defun([_LT_CONFIG],
_LT_CONFIG_SAVE_COMMANDS([
m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
m4_if(_LT_TAG, [C], [
- # See if we are running on zsh, and set the options which allow our
+ # See if we are running on zsh, and set the options that allow our
# commands through without removal of \ escapes.
- if test -n "${ZSH_VERSION+set}" ; then
+ if test -n "${ZSH_VERSION+set}"; then
setopt NO_GLOB_SUBST
fi
- cfgfile="${ofile}T"
+ cfgfile=${ofile}T
trap "$RM \"$cfgfile\"; exit 1" 1 2 15
$RM "$cfgfile"
@@ -719,7 +717,7 @@ _LT_CONFIG_SAVE_COMMANDS([
#! $SHELL
# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Generated automatically by $as_me ($PACKAGE) $VERSION
# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
@@ -739,7 +737,7 @@ _LT_EOF
# AIX sometimes has problems with the GCC collect2 program. For some
# reason, if we set the COLLECT_NAMES environment variable, the problems
# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
+if test set != "${COLLECT_NAMES+set}"; then
COLLECT_NAMES=
export COLLECT_NAMES
fi
@@ -756,8 +754,6 @@ _LT_EOF
sed '$q' "$ltmain" >> "$cfgfile" \
|| (rm -f "$cfgfile"; exit 1)
- _LT_PROG_REPLACE_SHELLFNS
-
mv -f "$cfgfile" "$ofile" ||
(rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
chmod +x "$ofile"
@@ -775,7 +771,6 @@ _LT_EOF
[m4_if([$1], [], [
PACKAGE='$PACKAGE'
VERSION='$VERSION'
- TIMESTAMP='$TIMESTAMP'
RM='$RM'
ofile='$ofile'], [])
])dnl /_LT_CONFIG_SAVE_COMMANDS
@@ -974,7 +969,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
[lt_cv_apple_cc_single_mod=no
- if test -z "${LT_MULTI_MODULE}"; then
+ if test -z "$LT_MULTI_MODULE"; then
# By default we will add the -single_module flag. You can override
# by either setting the environment variable LT_MULTI_MODULE
# non-empty at configure time, or by adding -multi_module to the
@@ -992,7 +987,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
cat conftest.err >&AS_MESSAGE_LOG_FD
# Otherwise, if the output was created with a 0 exit code from
# the compiler, it worked.
- elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+ elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
lt_cv_apple_cc_single_mod=yes
else
cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -1010,7 +1005,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
[lt_cv_ld_exported_symbols_list=yes],
[lt_cv_ld_exported_symbols_list=no])
- LDFLAGS="$save_LDFLAGS"
+ LDFLAGS=$save_LDFLAGS
])
AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
@@ -1032,7 +1027,7 @@ _LT_EOF
_lt_result=$?
if test -s conftest.err && $GREP force_load conftest.err; then
cat conftest.err >&AS_MESSAGE_LOG_FD
- elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+ elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
lt_cv_ld_force_load=yes
else
cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -1042,32 +1037,32 @@ _LT_EOF
])
case $host_os in
rhapsody* | darwin1.[[012]])
- _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
darwin1.*)
- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
darwin*) # darwin 5.x on
# if running on 10.5 or later, the deployment target defaults
# to the OS version, if on x86, and 10.4, the deployment
# target defaults to 10.4. Don't you love it?
case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
10.[[012]]*)
- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
10.*)
- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
esac
;;
esac
- if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ if test yes = "$lt_cv_apple_cc_single_mod"; then
_lt_dar_single_mod='$single_module'
fi
- if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
- _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ if test yes = "$lt_cv_ld_exported_symbols_list"; then
+ _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
else
- _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
fi
- if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+ if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
_lt_dsymutil='~$DSYMUTIL $lib || :'
else
_lt_dsymutil=
@@ -1087,29 +1082,29 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_automatic, $1)=yes
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
- if test "$lt_cv_ld_force_load" = "yes"; then
- _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+ if test yes = "$lt_cv_ld_force_load"; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
[FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes])
else
_LT_TAGVAR(whole_archive_flag_spec, $1)=''
fi
_LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+ _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined
case $cc_basename in
- ifort*) _lt_dar_can_shared=yes ;;
+ ifort*|nagfor*) _lt_dar_can_shared=yes ;;
*) _lt_dar_can_shared=$GCC ;;
esac
- if test "$_lt_dar_can_shared" = "yes"; then
+ if test yes = "$_lt_dar_can_shared"; then
output_verbose_link_cmd=func_echo_all
- _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
- _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
- _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+ _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+ _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
m4_if([$1], [CXX],
-[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
- _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+[ if test yes != "$lt_cv_apple_cc_single_mod"; then
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
fi
],[])
else
@@ -1129,7 +1124,7 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
# Allow to override them for all tags through lt_cv_aix_libpath.
m4_defun([_LT_SYS_MODULE_PATH_AIX],
[m4_require([_LT_DECL_SED])dnl
-if test "${lt_cv_aix_libpath+set}" = set; then
+if test set = "${lt_cv_aix_libpath+set}"; then
aix_libpath=$lt_cv_aix_libpath
else
AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
@@ -1147,7 +1142,7 @@ else
_LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
fi],[])
if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
- _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib
fi
])
aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
@@ -1167,8 +1162,8 @@ m4_define([_LT_SHELL_INIT],
# -----------------------
# Find how we can fake an echo command that does not interpret backslash.
# In particular, with Autoconf 2.60 or later we add some code to the start
-# of the generated configure script which will find a shell with a builtin
-# printf (which we can use as an echo command).
+# of the generated configure script that will find a shell with a builtin
+# printf (that we can use as an echo command).
m4_defun([_LT_PROG_ECHO_BACKSLASH],
[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
@@ -1196,10 +1191,10 @@ fi
# Invoke $ECHO with all args, space-separated.
func_echo_all ()
{
- $ECHO "$*"
+ $ECHO "$*"
}
-case "$ECHO" in
+case $ECHO in
printf*) AC_MSG_RESULT([printf]) ;;
print*) AC_MSG_RESULT([print -r]) ;;
*) AC_MSG_RESULT([cat]) ;;
@@ -1225,16 +1220,17 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
AC_DEFUN([_LT_WITH_SYSROOT],
[AC_MSG_CHECKING([for sysroot])
AC_ARG_WITH([sysroot],
-[ --with-sysroot[=DIR] Search for dependent libraries within DIR
- (or the compiler's sysroot if not specified).],
+[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@],
+ [Search for dependent libraries within DIR (or the compiler's sysroot
+ if not specified).])],
[], [with_sysroot=no])
dnl lt_sysroot will always be passed unquoted. We quote it here
dnl in case the user passed a directory name.
lt_sysroot=
-case ${with_sysroot} in #(
+case $with_sysroot in #(
yes)
- if test "$GCC" = yes; then
+ if test yes = "$GCC"; then
lt_sysroot=`$CC --print-sysroot 2>/dev/null`
fi
;; #(
@@ -1244,14 +1240,14 @@ case ${with_sysroot} in #(
no|'')
;; #(
*)
- AC_MSG_RESULT([${with_sysroot}])
+ AC_MSG_RESULT([$with_sysroot])
AC_MSG_ERROR([The sysroot must be an absolute path.])
;;
esac
AC_MSG_RESULT([${lt_sysroot:-no}])
_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
-[dependent libraries, and in which our libraries should be installed.])])
+[dependent libraries, and where our libraries should be installed.])])
# _LT_ENABLE_LOCK
# ---------------
@@ -1259,31 +1255,33 @@ m4_defun([_LT_ENABLE_LOCK],
[AC_ARG_ENABLE([libtool-lock],
[AS_HELP_STRING([--disable-libtool-lock],
[avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+test no = "$enable_libtool_lock" || enable_libtool_lock=yes
# Some flags need to be propagated to the compiler or linker for good
# libtool support.
case $host in
ia64-*-hpux*)
- # Find out which ABI we are using.
+ # Find out what ABI is being produced by ac_compile, and set mode
+ # options accordingly.
echo 'int i;' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
case `/usr/bin/file conftest.$ac_objext` in
*ELF-32*)
- HPUX_IA64_MODE="32"
+ HPUX_IA64_MODE=32
;;
*ELF-64*)
- HPUX_IA64_MODE="64"
+ HPUX_IA64_MODE=64
;;
esac
fi
rm -rf conftest*
;;
*-*-irix6*)
- # Find out which ABI we are using.
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
- if test "$lt_cv_prog_gnu_ld" = yes; then
+ if test yes = "$lt_cv_prog_gnu_ld"; then
case `/usr/bin/file conftest.$ac_objext` in
*32-bit*)
LD="${LD-ld} -melf32bsmip"
@@ -1312,9 +1310,46 @@ ia64-*-hpux*)
rm -rf conftest*
;;
+mips64*-*linux*)
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
+ echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ emul=elf
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ emul="${emul}32"
+ ;;
+ *64-bit*)
+ emul="${emul}64"
+ ;;
+ esac
+ case `/usr/bin/file conftest.$ac_objext` in
+ *MSB*)
+ emul="${emul}btsmip"
+ ;;
+ *LSB*)
+ emul="${emul}ltsmip"
+ ;;
+ esac
+ case `/usr/bin/file conftest.$ac_objext` in
+ *N32*)
+ emul="${emul}n32"
+ ;;
+ esac
+ LD="${LD-ld} -m $emul"
+ fi
+ rm -rf conftest*
+ ;;
+
x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- # Find out which ABI we are using.
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly. Note that the listed cases only cover the
+ # situations where additional linker options are needed (such as when
+ # doing 32-bit compilation for a host where ld defaults to 64-bit, or
+ # vice versa); the common cases where no linker options are needed do
+ # not appear in the list.
echo 'int i;' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
case `/usr/bin/file conftest.o` in
@@ -1333,10 +1368,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
;;
esac
;;
- powerpc64le-*)
+ powerpc64le-*linux*)
LD="${LD-ld} -m elf32lppclinux"
;;
- powerpc64-*)
+ powerpc64-*linux*)
LD="${LD-ld} -m elf32ppclinux"
;;
s390x-*linux*)
@@ -1355,10 +1390,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
- powerpcle-*)
+ powerpcle-*linux*)
LD="${LD-ld} -m elf64lppc"
;;
- powerpc-*)
+ powerpc-*linux*)
LD="${LD-ld} -m elf64ppc"
;;
s390*-*linux*|s390*-*tpf*)
@@ -1376,19 +1411,20 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
*-*-sco3.2v5*)
# On SCO OpenServer 5, we need -belf to get full-featured binaries.
- SAVE_CFLAGS="$CFLAGS"
+ SAVE_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -belf"
AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
[AC_LANG_PUSH(C)
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
AC_LANG_POP])
- if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ if test yes != "$lt_cv_cc_needs_belf"; then
# this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
- CFLAGS="$SAVE_CFLAGS"
+ CFLAGS=$SAVE_CFLAGS
fi
;;
*-*solaris*)
- # Find out which ABI we are using.
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
echo 'int i;' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
case `/usr/bin/file conftest.o` in
@@ -1396,7 +1432,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
case $lt_cv_prog_gnu_ld in
yes*)
case $host in
- i?86-*-solaris*)
+ i?86-*-solaris*|x86_64-*-solaris*)
LD="${LD-ld} -m elf_x86_64"
;;
sparc*-*-solaris*)
@@ -1405,7 +1441,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
esac
# GNU ld 2.21 introduced _sol2 emulations. Use them if available.
if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
- LD="${LD-ld}_sol2"
+ LD=${LD-ld}_sol2
fi
;;
*)
@@ -1421,7 +1457,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
;;
esac
-need_locks="$enable_libtool_lock"
+need_locks=$enable_libtool_lock
])# _LT_ENABLE_LOCK
@@ -1440,11 +1476,11 @@ AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
[echo conftest.$ac_objext > conftest.lst
lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
AC_TRY_EVAL([lt_ar_try])
- if test "$ac_status" -eq 0; then
+ if test 0 -eq "$ac_status"; then
# Ensure the archiver fails upon bogus file names.
rm -f conftest.$ac_objext libconftest.a
AC_TRY_EVAL([lt_ar_try])
- if test "$ac_status" -ne 0; then
+ if test 0 -ne "$ac_status"; then
lt_cv_ar_at_file=@
fi
fi
@@ -1452,7 +1488,7 @@ AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
])
])
-if test "x$lt_cv_ar_at_file" = xno; then
+if test no = "$lt_cv_ar_at_file"; then
archiver_list_spec=
else
archiver_list_spec=$lt_cv_ar_at_file
@@ -1483,7 +1519,7 @@ old_postuninstall_cmds=
if test -n "$RANLIB"; then
case $host_os in
- openbsd*)
+ bitrig* | openbsd*)
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
;;
*)
@@ -1519,7 +1555,7 @@ AC_CACHE_CHECK([$1], [$2],
[$2=no
m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
- lt_compiler_flag="$3"
+ lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
# Note that $ac_compile itself does not contain backslashes and begins
@@ -1546,7 +1582,7 @@ AC_CACHE_CHECK([$1], [$2],
$RM conftest*
])
-if test x"[$]$2" = xyes; then
+if test yes = "[$]$2"; then
m4_if([$5], , :, [$5])
else
m4_if([$6], , :, [$6])
@@ -1568,7 +1604,7 @@ AC_DEFUN([_LT_LINKER_OPTION],
m4_require([_LT_DECL_SED])dnl
AC_CACHE_CHECK([$1], [$2],
[$2=no
- save_LDFLAGS="$LDFLAGS"
+ save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS $3"
echo "$lt_simple_link_test_code" > conftest.$ac_ext
if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
@@ -1587,10 +1623,10 @@ AC_CACHE_CHECK([$1], [$2],
fi
fi
$RM -r conftest*
- LDFLAGS="$save_LDFLAGS"
+ LDFLAGS=$save_LDFLAGS
])
-if test x"[$]$2" = xyes; then
+if test yes = "[$]$2"; then
m4_if([$4], , :, [$4])
else
m4_if([$5], , :, [$5])
@@ -1611,7 +1647,7 @@ AC_DEFUN([LT_CMD_MAX_LEN],
AC_MSG_CHECKING([the maximum length of command line arguments])
AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
i=0
- teststring="ABCD"
+ teststring=ABCD
case $build_os in
msdosdjgpp*)
@@ -1651,7 +1687,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
lt_cv_sys_max_cmd_len=8192;
;;
- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
# This has been around since 386BSD, at least. Likely further.
if test -x /sbin/sysctl; then
lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
@@ -1702,22 +1738,22 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
*)
lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
if test -n "$lt_cv_sys_max_cmd_len" && \
- test undefined != "$lt_cv_sys_max_cmd_len"; then
+ test undefined != "$lt_cv_sys_max_cmd_len"; then
lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
else
# Make teststring a little bigger before we do anything with it.
# a 1K string should be a reasonable start.
- for i in 1 2 3 4 5 6 7 8 ; do
+ for i in 1 2 3 4 5 6 7 8; do
teststring=$teststring$teststring
done
SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
# If test is not a shell built-in, we'll probably end up computing a
# maximum length that is only half of the actual maximum length, but
# we can't tell.
- while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+ while { test X`env echo "$teststring$teststring" 2>/dev/null` \
= "X$teststring$teststring"; } >/dev/null 2>&1 &&
- test $i != 17 # 1/2 MB should be enough
+ test 17 != "$i" # 1/2 MB should be enough
do
i=`expr $i + 1`
teststring=$teststring$teststring
@@ -1733,7 +1769,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
;;
esac
])
-if test -n $lt_cv_sys_max_cmd_len ; then
+if test -n "$lt_cv_sys_max_cmd_len"; then
AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
else
AC_MSG_RESULT(none)
@@ -1761,7 +1797,7 @@ m4_defun([_LT_HEADER_DLFCN],
# ----------------------------------------------------------------
m4_defun([_LT_TRY_DLOPEN_SELF],
[m4_require([_LT_HEADER_DLFCN])dnl
-if test "$cross_compiling" = yes; then :
+if test yes = "$cross_compiling"; then :
[$4]
else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
@@ -1810,7 +1846,7 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
int fnord () __attribute__((visibility("default")));
#endif
@@ -1836,7 +1872,7 @@ int main ()
return status;
}]
_LT_EOF
- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+ if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then
(./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
lt_status=$?
case x$lt_status in
@@ -1857,7 +1893,7 @@ rm -fr conftest*
# ------------------
AC_DEFUN([LT_SYS_DLOPEN_SELF],
[m4_require([_LT_HEADER_DLFCN])dnl
-if test "x$enable_dlopen" != xyes; then
+if test yes != "$enable_dlopen"; then
enable_dlopen=unknown
enable_dlopen_self=unknown
enable_dlopen_self_static=unknown
@@ -1867,44 +1903,52 @@ else
case $host_os in
beos*)
- lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen=load_add_on
lt_cv_dlopen_libs=
lt_cv_dlopen_self=yes
;;
mingw* | pw32* | cegcc*)
- lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen=LoadLibrary
lt_cv_dlopen_libs=
;;
cygwin*)
- lt_cv_dlopen="dlopen"
+ lt_cv_dlopen=dlopen
lt_cv_dlopen_libs=
;;
darwin*)
- # if libdl is installed we need to link against it
+ # if libdl is installed we need to link against it
AC_CHECK_LIB([dl], [dlopen],
- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
- lt_cv_dlopen="dyld"
+ [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[
+ lt_cv_dlopen=dyld
lt_cv_dlopen_libs=
lt_cv_dlopen_self=yes
])
;;
+ tpf*)
+ # Don't try to run any link tests for TPF. We know it's impossible
+ # because TPF is a cross-compiler, and we know how we open DSOs.
+ lt_cv_dlopen=dlopen
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=no
+ ;;
+
*)
AC_CHECK_FUNC([shl_load],
- [lt_cv_dlopen="shl_load"],
+ [lt_cv_dlopen=shl_load],
[AC_CHECK_LIB([dld], [shl_load],
- [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+ [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld],
[AC_CHECK_FUNC([dlopen],
- [lt_cv_dlopen="dlopen"],
+ [lt_cv_dlopen=dlopen],
[AC_CHECK_LIB([dl], [dlopen],
- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],
[AC_CHECK_LIB([svld], [dlopen],
- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld],
[AC_CHECK_LIB([dld], [dld_link],
- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+ [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld])
])
])
])
@@ -1913,21 +1957,21 @@ else
;;
esac
- if test "x$lt_cv_dlopen" != xno; then
- enable_dlopen=yes
- else
+ if test no = "$lt_cv_dlopen"; then
enable_dlopen=no
+ else
+ enable_dlopen=yes
fi
case $lt_cv_dlopen in
dlopen)
- save_CPPFLAGS="$CPPFLAGS"
- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+ save_CPPFLAGS=$CPPFLAGS
+ test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
- save_LDFLAGS="$LDFLAGS"
+ save_LDFLAGS=$LDFLAGS
wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
- save_LIBS="$LIBS"
+ save_LIBS=$LIBS
LIBS="$lt_cv_dlopen_libs $LIBS"
AC_CACHE_CHECK([whether a program can dlopen itself],
@@ -1937,7 +1981,7 @@ else
lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
])
- if test "x$lt_cv_dlopen_self" = xyes; then
+ if test yes = "$lt_cv_dlopen_self"; then
wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
lt_cv_dlopen_self_static, [dnl
@@ -1947,9 +1991,9 @@ else
])
fi
- CPPFLAGS="$save_CPPFLAGS"
- LDFLAGS="$save_LDFLAGS"
- LIBS="$save_LIBS"
+ CPPFLAGS=$save_CPPFLAGS
+ LDFLAGS=$save_LDFLAGS
+ LIBS=$save_LIBS
;;
esac
@@ -2041,8 +2085,8 @@ m4_defun([_LT_COMPILER_FILE_LOCKS],
m4_require([_LT_FILEUTILS_DEFAULTS])dnl
_LT_COMPILER_C_O([$1])
-hard_links="nottested"
-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+hard_links=nottested
+if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then
# do not overwrite the value of need_locks provided by the user
AC_MSG_CHECKING([if we can lock with hard links])
hard_links=yes
@@ -2052,8 +2096,8 @@ if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" !=
ln conftest.a conftest.b 2>&5 || hard_links=no
ln conftest.a conftest.b 2>/dev/null && hard_links=no
AC_MSG_RESULT([$hard_links])
- if test "$hard_links" = no; then
- AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+ if test no = "$hard_links"; then
+ AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe])
need_locks=warn
fi
else
@@ -2080,8 +2124,8 @@ objdir=$lt_cv_objdir
_LT_DECL([], [objdir], [0],
[The name of the directory that contains temporary libtool files])dnl
m4_pattern_allow([LT_OBJDIR])dnl
-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
- [Define to the sub-directory in which libtool stores uninstalled libraries.])
+AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/",
+ [Define to the sub-directory where libtool stores uninstalled libraries.])
])# _LT_CHECK_OBJDIR
@@ -2093,15 +2137,15 @@ m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
_LT_TAGVAR(hardcode_action, $1)=
if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
test -n "$_LT_TAGVAR(runpath_var, $1)" ||
- test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+ test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then
# We can hardcode non-existent directories.
- if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
+ if test no != "$_LT_TAGVAR(hardcode_direct, $1)" &&
# If the only mechanism to avoid hardcoding is shlibpath_var, we
# have to relink, otherwise we might link with an installed library
# when we should be linking with a yet-to-be-installed one
- ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
- test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+ ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" &&
+ test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then
# Linking always hardcodes the temporary library directory.
_LT_TAGVAR(hardcode_action, $1)=relink
else
@@ -2115,12 +2159,12 @@ else
fi
AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
- test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
+if test relink = "$_LT_TAGVAR(hardcode_action, $1)" ||
+ test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then
# Fast installation is not supported
enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
- test "$enable_shared" = no; then
+elif test yes = "$shlibpath_overrides_runpath" ||
+ test no = "$enable_shared"; then
# Fast installation is not necessary
enable_fast_install=needless
fi
@@ -2144,7 +2188,7 @@ else
# FIXME - insert some real tests, host_os isn't really good enough
case $host_os in
darwin*)
- if test -n "$STRIP" ; then
+ if test -n "$STRIP"; then
striplib="$STRIP -x"
old_striplib="$STRIP -S"
AC_MSG_RESULT([yes])
@@ -2175,14 +2219,14 @@ m4_require([_LT_CHECK_SHELL_FEATURES])dnl
AC_MSG_CHECKING([dynamic linker characteristics])
m4_if([$1],
[], [
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
case $host_os in
- darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
- *) lt_awk_arg="/^libraries:/" ;;
+ darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
+ *) lt_awk_arg='/^libraries:/' ;;
esac
case $host_os in
- mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
- *) lt_sed_strip_eq="s,=/,/,g" ;;
+ mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;;
+ *) lt_sed_strip_eq='s|=/|/|g' ;;
esac
lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
case $lt_search_path_spec in
@@ -2198,28 +2242,35 @@ if test "$GCC" = yes; then
;;
esac
# Ok, now we have the path, separated by spaces, we can step through it
- # and add multilib dir if necessary.
+ # and add multilib dir if necessary...
lt_tmp_lt_search_path_spec=
- lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ # ...but if some path component already ends with the multilib dir we assume
+ # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
+ case "$lt_multi_os_dir; $lt_search_path_spec " in
+ "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
+ lt_multi_os_dir=
+ ;;
+ esac
for lt_sys_path in $lt_search_path_spec; do
- if test -d "$lt_sys_path/$lt_multi_os_dir"; then
- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
- else
+ if test -d "$lt_sys_path$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
+ elif test -n "$lt_multi_os_dir"; then
test -d "$lt_sys_path" && \
lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
fi
done
lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
- lt_foo="";
- lt_count=0;
+BEGIN {RS = " "; FS = "/|\n";} {
+ lt_foo = "";
+ lt_count = 0;
for (lt_i = NF; lt_i > 0; lt_i--) {
if ($lt_i != "" && $lt_i != ".") {
if ($lt_i == "..") {
lt_count++;
} else {
if (lt_count == 0) {
- lt_foo="/" $lt_i lt_foo;
+ lt_foo = "/" $lt_i lt_foo;
} else {
lt_count--;
}
@@ -2233,7 +2284,7 @@ BEGIN {RS=" "; FS="/|\n";} {
# for these hosts.
case $host_os in
mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
- $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
+ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;;
esac
sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
else
@@ -2242,7 +2293,7 @@ fi])
library_names_spec=
libname_spec='lib$name'
soname_spec=
-shrext_cmds=".so"
+shrext_cmds=.so
postinstall_cmds=
postuninstall_cmds=
finish_cmds=
@@ -2262,11 +2313,11 @@ need_version=unknown
case $host_os in
aix3*)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
shlibpath_var=LIBPATH
# AIX 3 has no versioning support, so we append a major version to the name.
- soname_spec='${libname}${release}${shared_ext}$major'
+ soname_spec='$libname$release$shared_ext$major'
;;
aix[[4-9]]*)
@@ -2274,40 +2325,40 @@ aix[[4-9]]*)
need_lib_prefix=no
need_version=no
hardcode_into_libs=yes
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 supports IA64
- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
else
# With GCC up to 2.95.x, collect2 would create an import file
# for dependence libraries. The import file would start with
- # the line `#! .'. This would cause the generated library to
- # depend on `.', always an invalid library. This was fixed in
+ # the line '#! .'. This would cause the generated library to
+ # depend on '.', always an invalid library. This was fixed in
# development snapshots of GCC prior to 3.0.
case $host_os in
aix4 | aix4.[[01]] | aix4.[[01]].*)
if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
echo ' yes '
- echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
:
else
can_build_shared=no
fi
;;
esac
- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
# soname into executable. Probably we can add versioning support to
# collect2, so additional links can be useful in future.
- if test "$aix_use_runtimelinking" = yes; then
+ if test yes = "$aix_use_runtimelinking"; then
# If using run time linking (on AIX 4.2 or later) use lib<name>.so
# instead of lib<name>.a to let people know that these are not
# typical AIX shared libraries.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
else
# We preserve .a as extension for shared libraries through AIX4.2
# and later when we are not doing run time linking.
- library_names_spec='${libname}${release}.a $libname.a'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release.a $libname.a'
+ soname_spec='$libname$release$shared_ext$major'
fi
shlibpath_var=LIBPATH
fi
@@ -2318,18 +2369,18 @@ amigaos*)
powerpc)
# Since July 2007 AmigaOS4 officially supports .so libraries.
# When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
;;
m68k)
library_names_spec='$libname.ixlibrary $libname.a'
# Create ${libname}_ixlibrary.a entries in /sys/libs.
- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
;;
esac
;;
beos*)
- library_names_spec='${libname}${shared_ext}'
+ library_names_spec='$libname$shared_ext'
dynamic_linker="$host_os ld.so"
shlibpath_var=LIBRARY_PATH
;;
@@ -2337,8 +2388,8 @@ beos*)
bsdi[[45]]*)
version_type=linux # correct to gnu/linux during the next big refactor
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
shlibpath_var=LD_LIBRARY_PATH
sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
@@ -2350,7 +2401,7 @@ bsdi[[45]]*)
cygwin* | mingw* | pw32* | cegcc*)
version_type=windows
- shrext_cmds=".dll"
+ shrext_cmds=.dll
need_version=no
need_lib_prefix=no
@@ -2359,8 +2410,8 @@ cygwin* | mingw* | pw32* | cegcc*)
# gcc
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ postinstall_cmds='base_file=`basename \$file`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
dldir=$destdir/`dirname \$dlpath`~
test -d \$dldir || mkdir -p \$dldir~
$install_prog $dir/$dlname \$dldir/$dlname~
@@ -2376,17 +2427,17 @@ cygwin* | mingw* | pw32* | cegcc*)
case $host_os in
cygwin*)
# Cygwin DLLs use 'cyg' prefix rather than 'lib'
- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
m4_if([$1], [],[
sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
;;
mingw* | cegcc*)
# MinGW DLLs use traditional 'lib' prefix
- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
;;
pw32*)
# pw32 DLLs use 'pw' prefix rather than 'lib'
- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
;;
esac
dynamic_linker='Win32 ld.exe'
@@ -2395,8 +2446,8 @@ m4_if([$1], [],[
*,cl*)
# Native MSVC
libname_spec='$name'
- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
- library_names_spec='${libname}.dll.lib'
+ soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+ library_names_spec='$libname.dll.lib'
case $build_os in
mingw*)
@@ -2423,7 +2474,7 @@ m4_if([$1], [],[
sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
;;
*)
- sys_lib_search_path_spec="$LIB"
+ sys_lib_search_path_spec=$LIB
if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
# It is most probably a Windows format PATH.
sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
@@ -2436,8 +2487,8 @@ m4_if([$1], [],[
esac
# DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ postinstall_cmds='base_file=`basename \$file`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
dldir=$destdir/`dirname \$dlpath`~
test -d \$dldir || mkdir -p \$dldir~
$install_prog $dir/$dlname \$dldir/$dlname'
@@ -2450,7 +2501,7 @@ m4_if([$1], [],[
*)
# Assume MSVC wrapper
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib'
dynamic_linker='Win32 ld.exe'
;;
esac
@@ -2463,8 +2514,8 @@ darwin* | rhapsody*)
version_type=darwin
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
- soname_spec='${libname}${release}${major}$shared_ext'
+ library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+ soname_spec='$libname$release$major$shared_ext'
shlibpath_overrides_runpath=yes
shlibpath_var=DYLD_LIBRARY_PATH
shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
@@ -2477,8 +2528,8 @@ dgux*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
;;
@@ -2496,12 +2547,12 @@ freebsd* | dragonfly*)
version_type=freebsd-$objformat
case $version_type in
freebsd-elf*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
need_version=no
need_lib_prefix=no
;;
freebsd-*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
need_version=yes
;;
esac
@@ -2531,10 +2582,10 @@ haiku*)
need_lib_prefix=no
need_version=no
dynamic_linker="$host_os runtime_loader"
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LIBRARY_PATH
- shlibpath_overrides_runpath=yes
+ shlibpath_overrides_runpath=no
sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
hardcode_into_libs=yes
;;
@@ -2552,9 +2603,9 @@ hpux9* | hpux10* | hpux11*)
dynamic_linker="$host_os dld.so"
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- if test "X$HPUX_IA64_MODE" = X32; then
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ if test 32 = "$HPUX_IA64_MODE"; then
sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
else
sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
@@ -2567,8 +2618,8 @@ hpux9* | hpux10* | hpux11*)
dynamic_linker="$host_os dld.sl"
shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
;;
@@ -2577,8 +2628,8 @@ hpux9* | hpux10* | hpux11*)
dynamic_linker="$host_os dld.sl"
shlibpath_var=SHLIB_PATH
shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
;;
esac
# HP-UX runs *really* slowly unless shared libraries are mode 555, ...
@@ -2591,8 +2642,8 @@ interix[[3-9]]*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
@@ -2603,7 +2654,7 @@ irix5* | irix6* | nonstopux*)
case $host_os in
nonstopux*) version_type=nonstopux ;;
*)
- if test "$lt_cv_prog_gnu_ld" = yes; then
+ if test yes = "$lt_cv_prog_gnu_ld"; then
version_type=linux # correct to gnu/linux during the next big refactor
else
version_type=irix
@@ -2611,8 +2662,8 @@ irix5* | irix6* | nonstopux*)
esac
need_lib_prefix=no
need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='$libname$release$shared_ext$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
case $host_os in
irix5* | nonstopux*)
libsuff= shlibsuff=
@@ -2631,8 +2682,8 @@ irix5* | irix6* | nonstopux*)
esac
shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
shlibpath_overrides_runpath=no
- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+ sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
hardcode_into_libs=yes
;;
@@ -2641,13 +2692,33 @@ linux*oldld* | linux*aout* | linux*coff*)
dynamic_linker=no
;;
+linux*android*)
+ version_type=none # Android doesn't support versioned libraries.
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext'
+ soname_spec='$libname$release$shared_ext'
+ finish_cmds=
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ dynamic_linker='Android linker'
+ # Don't embed -rpath directories since the linker doesn't support them.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ ;;
+
# This must be glibc/ELF.
linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
@@ -2687,29 +2758,17 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
dynamic_linker='GNU/Linux ld.so'
;;
-netbsdelf*-gnu)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- dynamic_linker='NetBSD ld.elf_so'
- ;;
-
netbsd*)
version_type=sunos
need_lib_prefix=no
need_version=no
if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
dynamic_linker='NetBSD (a.out) ld.so'
else
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
dynamic_linker='NetBSD ld.elf_so'
fi
shlibpath_var=LD_LIBRARY_PATH
@@ -2719,7 +2778,7 @@ netbsd*)
newsos6)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
;;
@@ -2728,45 +2787,34 @@ newsos6)
version_type=qnx
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
dynamic_linker='ldqnx.so'
;;
-openbsd*)
+openbsd* | bitrig*)
version_type=sunos
- sys_lib_dlsearch_path_spec="/usr/lib"
+ sys_lib_dlsearch_path_spec=/usr/lib
need_lib_prefix=no
- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
- case $host_os in
- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
- *) need_version=no ;;
- esac
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- case $host_os in
- openbsd2.[[89]] | openbsd2.[[89]].*)
- shlibpath_overrides_runpath=no
- ;;
- *)
- shlibpath_overrides_runpath=yes
- ;;
- esac
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+ need_version=no
else
- shlibpath_overrides_runpath=yes
+ need_version=yes
fi
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
;;
os2*)
libname_spec='$name'
- shrext_cmds=".dll"
+ shrext_cmds=.dll
need_lib_prefix=no
- library_names_spec='$libname${shared_ext} $libname.a'
+ library_names_spec='$libname$shared_ext $libname.a'
dynamic_linker='OS/2 ld.exe'
shlibpath_var=LIBPATH
;;
@@ -2775,11 +2823,11 @@ osf3* | osf4* | osf5*)
version_type=osf
need_lib_prefix=no
need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='$libname$release$shared_ext$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
;;
rdos*)
@@ -2790,8 +2838,8 @@ solaris*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
@@ -2801,11 +2849,11 @@ solaris*)
sunos4*)
version_type=sunos
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
- if test "$with_gnu_ld" = yes; then
+ if test yes = "$with_gnu_ld"; then
need_lib_prefix=no
fi
need_version=yes
@@ -2813,8 +2861,8 @@ sunos4*)
sysv4 | sysv4.3*)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
case $host_vendor in
sni)
@@ -2835,10 +2883,10 @@ sysv4 | sysv4.3*)
;;
sysv4*MP*)
- if test -d /usr/nec ;then
+ if test -d /usr/nec; then
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
- soname_spec='$libname${shared_ext}.$major'
+ library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+ soname_spec='$libname$shared_ext.$major'
shlibpath_var=LD_LIBRARY_PATH
fi
;;
@@ -2847,12 +2895,12 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
version_type=freebsd-elf
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
- if test "$with_gnu_ld" = yes; then
+ if test yes = "$with_gnu_ld"; then
sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
else
sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
@@ -2870,7 +2918,7 @@ tpf*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
@@ -2878,8 +2926,8 @@ tpf*)
uts4*)
version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
shlibpath_var=LD_LIBRARY_PATH
;;
@@ -2888,18 +2936,18 @@ uts4*)
;;
esac
AC_MSG_RESULT([$dynamic_linker])
-test "$dynamic_linker" = no && can_build_shared=no
+test no = "$dynamic_linker" && can_build_shared=no
variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
fi
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
- sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+ sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
- sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+ sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
fi
_LT_DECL([], [variables_saved_for_relink], [1],
@@ -2941,32 +2989,32 @@ _LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
# _LT_PATH_TOOL_PREFIX(TOOL)
# --------------------------
-# find a file program which can recognize shared library
+# find a file program that can recognize shared library
AC_DEFUN([_LT_PATH_TOOL_PREFIX],
[m4_require([_LT_DECL_EGREP])dnl
AC_MSG_CHECKING([for $1])
AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
[case $MAGIC_CMD in
[[\\/*] | ?:[\\/]*])
- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
;;
*)
- lt_save_MAGIC_CMD="$MAGIC_CMD"
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ lt_save_MAGIC_CMD=$MAGIC_CMD
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
dnl $ac_dummy forces splitting on constant user-supplied paths.
dnl POSIX.2 word splitting is done only on the output of word expansions,
dnl not every word. This closes a longstanding sh security hole.
ac_dummy="m4_if([$2], , $PATH, [$2])"
for ac_dir in $ac_dummy; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$1; then
- lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+ if test -f "$ac_dir/$1"; then
+ lt_cv_path_MAGIC_CMD=$ac_dir/"$1"
if test -n "$file_magic_test_file"; then
case $deplibs_check_method in
"file_magic "*)
file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ MAGIC_CMD=$lt_cv_path_MAGIC_CMD
if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
$EGREP "$file_magic_regex" > /dev/null; then
:
@@ -2989,11 +3037,11 @@ _LT_EOF
break
fi
done
- IFS="$lt_save_ifs"
- MAGIC_CMD="$lt_save_MAGIC_CMD"
+ IFS=$lt_save_ifs
+ MAGIC_CMD=$lt_save_MAGIC_CMD
;;
esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
if test -n "$MAGIC_CMD"; then
AC_MSG_RESULT($MAGIC_CMD)
else
@@ -3011,7 +3059,7 @@ dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
# _LT_PATH_MAGIC
# --------------
-# find a file program which can recognize a shared library
+# find a file program that can recognize a shared library
m4_defun([_LT_PATH_MAGIC],
[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
if test -z "$lt_cv_path_MAGIC_CMD"; then
@@ -3038,16 +3086,16 @@ m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
AC_ARG_WITH([gnu-ld],
[AS_HELP_STRING([--with-gnu-ld],
[assume the C compiler uses GNU ld @<:@default=no@:>@])],
- [test "$withval" = no || with_gnu_ld=yes],
+ [test no = "$withval" || with_gnu_ld=yes],
[with_gnu_ld=no])dnl
ac_prog=ld
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
# Check if gcc -print-prog-name=ld gives a path.
AC_MSG_CHECKING([for ld used by $CC])
case $host in
*-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
+ # gcc leaves a trailing carriage return, which upsets mingw
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
*)
ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
@@ -3061,7 +3109,7 @@ if test "$GCC" = yes; then
while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
done
- test -z "$LD" && LD="$ac_prog"
+ test -z "$LD" && LD=$ac_prog
;;
"")
# If it fails, then pretend we aren't using GCC.
@@ -3072,37 +3120,37 @@ if test "$GCC" = yes; then
with_gnu_ld=unknown
;;
esac
-elif test "$with_gnu_ld" = yes; then
+elif test yes = "$with_gnu_ld"; then
AC_MSG_CHECKING([for GNU ld])
else
AC_MSG_CHECKING([for non-GNU ld])
fi
AC_CACHE_VAL(lt_cv_path_LD,
[if test -z "$LD"; then
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
for ac_dir in $PATH; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
test -z "$ac_dir" && ac_dir=.
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- lt_cv_path_LD="$ac_dir/$ac_prog"
+ lt_cv_path_LD=$ac_dir/$ac_prog
# Check to see if the program is GNU ld. I'd rather use --version,
# but apparently some variants of GNU ld only accept -v.
# Break only if it was the GNU/non-GNU ld that we prefer.
case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break
+ test no != "$with_gnu_ld" && break
;;
*)
- test "$with_gnu_ld" != yes && break
+ test yes != "$with_gnu_ld" && break
;;
esac
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
else
- lt_cv_path_LD="$LD" # Let the user override the test with a path.
+ lt_cv_path_LD=$LD # Let the user override the test with a path.
fi])
-LD="$lt_cv_path_LD"
+LD=$lt_cv_path_LD
if test -n "$LD"; then
AC_MSG_RESULT($LD)
else
@@ -3156,13 +3204,13 @@ esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
- if test "$GCC" != yes; then
+ if test yes != "$GCC"; then
reload_cmds=false
fi
;;
darwin*)
- if test "$GCC" = yes; then
- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ if test yes = "$GCC"; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
else
reload_cmds='$LD$reload_flag -o $output$reload_objs'
fi
@@ -3188,13 +3236,13 @@ lt_cv_deplibs_check_method='unknown'
# Need to set the preceding variable on all platforms that support
# interlibrary dependencies.
# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
+# 'unknown' -- same as none, but documents that we really don't know.
# 'pass_all' -- all dependencies passed with no checks.
# 'test_compile' -- check by making test program.
# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
+# that responds to the $file_magic_cmd with a given extended regex.
+# If you have 'file' or equivalent on your system and you're not sure
+# whether 'pass_all' will *always* work, you probably want this one.
case $host_os in
aix[[4-9]]*)
@@ -3221,8 +3269,7 @@ mingw* | pw32*)
# Base MSYS/MinGW do not provide the 'file' command needed by
# func_win32_libid shell function, so use a weaker test based on 'objdump',
# unless we find 'file', for example because we are cross-compiling.
- # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
- if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+ if ( file / ) >/dev/null 2>&1; then
lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
lt_cv_file_magic_cmd='func_win32_libid'
else
@@ -3300,7 +3347,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
lt_cv_deplibs_check_method=pass_all
;;
-netbsd* | netbsdelf*-gnu)
+netbsd*)
if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
else
@@ -3318,8 +3365,8 @@ newos6*)
lt_cv_deplibs_check_method=pass_all
;;
-openbsd*)
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+openbsd* | bitrig*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
else
lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
@@ -3412,33 +3459,33 @@ AC_DEFUN([LT_PATH_NM],
AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
[if test -n "$NM"; then
# Let the user override the test.
- lt_cv_path_NM="$NM"
+ lt_cv_path_NM=$NM
else
- lt_nm_to_check="${ac_tool_prefix}nm"
+ lt_nm_to_check=${ac_tool_prefix}nm
if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
lt_nm_to_check="$lt_nm_to_check nm"
fi
for lt_tmp_nm in $lt_nm_to_check; do
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
test -z "$ac_dir" && ac_dir=.
- tmp_nm="$ac_dir/$lt_tmp_nm"
- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ tmp_nm=$ac_dir/$lt_tmp_nm
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
# Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # Adding the 'sed 1q' prevents false positives on HP-UX, which says:
# nm: unknown option "B" ignored
# Tru64's nm complains that /dev/null is an invalid object file
case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
*/dev/null* | *'Invalid file or object type'*)
lt_cv_path_NM="$tmp_nm -B"
- break
+ break 2
;;
*)
case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
*/dev/null*)
lt_cv_path_NM="$tmp_nm -p"
- break
+ break 2
;;
*)
lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
@@ -3449,21 +3496,21 @@ else
esac
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
done
: ${lt_cv_path_NM=no}
fi])
-if test "$lt_cv_path_NM" != "no"; then
- NM="$lt_cv_path_NM"
+if test no != "$lt_cv_path_NM"; then
+ NM=$lt_cv_path_NM
else
# Didn't find any BSD compatible name lister, look for dumpbin.
if test -n "$DUMPBIN"; then :
# Let the user override the test.
else
AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
- case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+ case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
*COFF*)
- DUMPBIN="$DUMPBIN -symbols"
+ DUMPBIN="$DUMPBIN -symbols -headers"
;;
*)
DUMPBIN=:
@@ -3471,8 +3518,8 @@ else
esac
fi
AC_SUBST([DUMPBIN])
- if test "$DUMPBIN" != ":"; then
- NM="$DUMPBIN"
+ if test : != "$DUMPBIN"; then
+ NM=$DUMPBIN
fi
fi
test -z "$NM" && NM=nm
@@ -3518,8 +3565,8 @@ lt_cv_sharedlib_from_linklib_cmd,
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
- # two different shell functions defined in ltmain.sh
- # decide which to use based on capabilities of $DLLTOOL
+ # two different shell functions defined in ltmain.sh;
+ # decide which one to use based on capabilities of $DLLTOOL
case `$DLLTOOL --help 2>&1` in
*--identify-strict*)
lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
@@ -3531,7 +3578,7 @@ cygwin* | mingw* | pw32* | cegcc*)
;;
*)
# fallback: assume linklib IS sharedlib
- lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+ lt_cv_sharedlib_from_linklib_cmd=$ECHO
;;
esac
])
@@ -3558,13 +3605,28 @@ AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool
lt_cv_path_mainfest_tool=yes
fi
rm -f conftest*])
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
+if test yes != "$lt_cv_path_mainfest_tool"; then
MANIFEST_TOOL=:
fi
_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
])# _LT_PATH_MANIFEST_TOOL
+# _LT_DLL_DEF_P([FILE])
+# ---------------------
+# True iff FILE is a Windows DLL '.def' file.
+# Keep in sync with func_dll_def_p in the libtool script
+AC_DEFUN([_LT_DLL_DEF_P],
+[dnl
+ test DEF = "`$SED -n dnl
+ -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace
+ -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments
+ -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl
+ -e q dnl Only consider the first "real" line
+ $1`" dnl
+])# _LT_DLL_DEF_P
+
+
# LT_LIB_M
# --------
# check for math library
@@ -3576,11 +3638,11 @@ case $host in
# These system don't have libm, or don't need it
;;
*-ncr-sysv4.3*)
- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw)
AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
;;
*)
- AC_CHECK_LIB(m, cos, LIBM="-lm")
+ AC_CHECK_LIB(m, cos, LIBM=-lm)
;;
esac
AC_SUBST([LIBM])
@@ -3599,7 +3661,7 @@ m4_defun([_LT_COMPILER_NO_RTTI],
_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
case $cc_basename in
nvcc*)
_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
@@ -3651,7 +3713,7 @@ cygwin* | mingw* | pw32* | cegcc*)
symcode='[[ABCDGISTW]]'
;;
hpux*)
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
symcode='[[ABCDEGRST]]'
fi
;;
@@ -3684,14 +3746,44 @@ case `$NM -V 2>&1` in
symcode='[[ABCDGIRSTW]]' ;;
esac
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Gets list of data symbols to import.
+ lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+ # Adjust the below global symbol transforms to fixup imported variables.
+ lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
+ lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'"
+ lt_c_name_lib_hook="\
+ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\
+ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'"
+else
+ # Disable hooks by default.
+ lt_cv_sys_global_symbol_to_import=
+ lt_cdecl_hook=
+ lt_c_name_hook=
+ lt_c_name_lib_hook=
+fi
+
# Transform an extracted symbol line into a proper C declaration.
# Some systems (esp. on ia64) link data and code symbols differently,
# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+$lt_cdecl_hook\
+" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+$lt_c_name_hook\
+" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'"
+
+# Transform an extracted symbol line into symbol name with lib prefix and
+# symbol address.
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+$lt_c_name_lib_hook\
+" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'"
# Handle CRLF in mingw tool chain
opt_cr=
@@ -3709,21 +3801,24 @@ for ac_symprfx in "" "_"; do
# Write the raw and C identifiers.
if test "$lt_cv_nm_interface" = "MS dumpbin"; then
- # Fake it for dumpbin and say T for any non-static function
- # and D for any global variable.
+ # Fake it for dumpbin and say T for any non-static function,
+ # D for any global variable and I for any imported variable.
# Also find C++ and __fastcall symbols from MSVC++,
# which start with @ or ?.
lt_cv_sys_global_symbol_pipe="$AWK ['"\
" {last_section=section; section=\$ 3};"\
" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
+" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
+" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
" \$ 0!~/External *\|/{next};"\
" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
" {if(hide[section]) next};"\
-" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-" s[1]~/^[@?]/{print s[1], s[1]; next};"\
-" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
+" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
+" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
" ' prfx=^$ac_symprfx]"
else
lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
@@ -3763,11 +3858,11 @@ _LT_EOF
if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
cat <<_LT_EOF > conftest.$ac_ext
/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
relocations are performed -- see ld's documentation on pseudo-relocs. */
# define LT@&t@_DLSYM_CONST
-#elif defined(__osf__)
+#elif defined __osf__
/* This system does not cope well with relocations in const data. */
# define LT@&t@_DLSYM_CONST
#else
@@ -3793,7 +3888,7 @@ lt__PROGRAM__LTX_preloaded_symbols[[]] =
{
{ "@PROGRAM@", (void *) 0 },
_LT_EOF
- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
cat <<\_LT_EOF >> conftest.$ac_ext
{0, (void *) 0}
};
@@ -3813,9 +3908,9 @@ _LT_EOF
mv conftest.$ac_objext conftstm.$ac_objext
lt_globsym_save_LIBS=$LIBS
lt_globsym_save_CFLAGS=$CFLAGS
- LIBS="conftstm.$ac_objext"
+ LIBS=conftstm.$ac_objext
CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+ if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then
pipe_works=yes
fi
LIBS=$lt_globsym_save_LIBS
@@ -3836,7 +3931,7 @@ _LT_EOF
rm -rf conftest* conftst*
# Do not use the global_symbol_pipe unless it works.
- if test "$pipe_works" = yes; then
+ if test yes = "$pipe_works"; then
break
else
lt_cv_sys_global_symbol_pipe=
@@ -3863,12 +3958,16 @@ _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
[Take the output of nm and produce a listing of raw symbols and C names])
_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
[Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1],
+ [Transform the output of nm into a list of symbols to manually relocate])
_LT_DECL([global_symbol_to_c_name_address],
[lt_cv_sys_global_symbol_to_c_name_address], [1],
[Transform the output of nm in a C name address pair])
_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
[lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
[Transform the output of nm in a C name address pair when lib prefix is needed])
+_LT_DECL([nm_interface], [lt_cv_nm_interface], [1],
+ [The name lister interface])
_LT_DECL([], [nm_file_list_spec], [1],
[Specify filename containing input files for $NM])
]) # _LT_CMD_GLOBAL_SYMBOLS
@@ -3884,17 +3983,18 @@ _LT_TAGVAR(lt_prog_compiler_static, $1)=
m4_if([$1], [CXX], [
# C++ specific cases for pic, static, wl, etc.
- if test "$GXX" = yes; then
+ if test yes = "$GXX"; then
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
case $host_os in
aix*)
# All AIX code is PIC.
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 now supports IA64 processor
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
fi
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
;;
amigaos*)
@@ -3905,8 +4005,8 @@ m4_if([$1], [CXX], [
;;
m68k)
# FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
+ # adding the '-m68020' flag to GCC prevents building anything better,
+ # like '-m68040'.
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
;;
esac
@@ -3971,7 +4071,7 @@ m4_if([$1], [CXX], [
case $host_os in
aix[[4-9]]*)
# All AIX code is PIC.
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 now supports IA64 processor
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
else
@@ -4012,14 +4112,14 @@ m4_if([$1], [CXX], [
case $cc_basename in
CC*)
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
- if test "$host_cpu" != ia64; then
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
+ if test ia64 != "$host_cpu"; then
_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
fi
;;
aCC*)
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
case $host_cpu in
hppa*64*|ia64*)
# +Z the default
@@ -4056,7 +4156,7 @@ m4_if([$1], [CXX], [
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
;;
ecpc* )
- # old Intel C++ for x86_64 which still supported -KPIC.
+ # old Intel C++ for x86_64, which still supported -KPIC.
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
@@ -4112,7 +4212,7 @@ m4_if([$1], [CXX], [
;;
esac
;;
- netbsd* | netbsdelf*-gnu)
+ netbsd*)
;;
*qnx* | *nto*)
# QNX uses GNU C++, but need to define -shared option too, otherwise
@@ -4201,17 +4301,18 @@ m4_if([$1], [CXX], [
fi
],
[
- if test "$GCC" = yes; then
+ if test yes = "$GCC"; then
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
case $host_os in
aix*)
# All AIX code is PIC.
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 now supports IA64 processor
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
fi
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
;;
amigaos*)
@@ -4222,8 +4323,8 @@ m4_if([$1], [CXX], [
;;
m68k)
# FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
+ # adding the '-m68020' flag to GCC prevents building anything better,
+ # like '-m68040'.
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
;;
esac
@@ -4310,7 +4411,7 @@ m4_if([$1], [CXX], [
case $host_os in
aix*)
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# AIX 5 now supports IA64 processor
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
else
@@ -4318,6 +4419,20 @@ m4_if([$1], [CXX], [
fi
;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ case $cc_basename in
+ nagfor*)
+ # NAG Fortran compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+
mingw* | cygwin* | pw32* | os2* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
@@ -4338,7 +4453,7 @@ m4_if([$1], [CXX], [
;;
esac
# Is there a better lt_prog_compiler_static that works with the bundled CC?
- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
;;
irix5* | irix6* | nonstopux*)
@@ -4349,7 +4464,7 @@ m4_if([$1], [CXX], [
linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
case $cc_basename in
- # old Intel for x86_64 which still supported -KPIC.
+ # old Intel for x86_64, which still supported -KPIC.
ecc*)
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
@@ -4374,6 +4489,12 @@ m4_if([$1], [CXX], [
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
;;
+ tcc*)
+ # Fabrice Bellard et al's Tiny C Compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
@@ -4471,7 +4592,7 @@ m4_if([$1], [CXX], [
;;
sysv4*MP*)
- if test -d /usr/nec ;then
+ if test -d /usr/nec; then
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
fi
@@ -4500,7 +4621,7 @@ m4_if([$1], [CXX], [
fi
])
case $host_os in
- # For platforms which do not support PIC, -DPIC is meaningless:
+ # For platforms that do not support PIC, -DPIC is meaningless:
*djgpp*)
_LT_TAGVAR(lt_prog_compiler_pic, $1)=
;;
@@ -4576,7 +4697,7 @@ m4_if([$1], [CXX], [
fi
;;
pw32*)
- _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds
;;
cygwin* | mingw* | cegcc*)
case $cc_basename in
@@ -4589,9 +4710,6 @@ m4_if([$1], [CXX], [
;;
esac
;;
- linux* | k*bsd*-gnu | gnu*)
- _LT_TAGVAR(link_all_deplibs, $1)=no
- ;;
*)
_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
;;
@@ -4625,9 +4743,9 @@ m4_if([$1], [CXX], [
# included in the symbol list
_LT_TAGVAR(include_expsyms, $1)=
# exclude_expsyms can be an extended regexp of symbols to exclude
- # it will be wrapped by ` (' and `)$', so one must not match beginning or
- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
- # as well as any symbol that contains `d'.
+ # it will be wrapped by ' (' and ')$', so one must not match beginning or
+ # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
+ # as well as any symbol that contains 'd'.
_LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
# platforms (ab)use it in PIC code, but their linkers get confused if
@@ -4643,7 +4761,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
# FIXME: the MSVC++ port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
- if test "$GCC" != yes; then
+ if test yes != "$GCC"; then
with_gnu_ld=no
fi
;;
@@ -4651,12 +4769,9 @@ dnl Note also adjust exclude_expsyms for C++ above.
# we just hope/assume this is gcc and not c89 (= MSVC++)
with_gnu_ld=yes
;;
- openbsd*)
+ openbsd* | bitrig*)
with_gnu_ld=no
;;
- linux* | k*bsd*-gnu | gnu*)
- _LT_TAGVAR(link_all_deplibs, $1)=no
- ;;
esac
_LT_TAGVAR(ld_shlibs, $1)=yes
@@ -4664,7 +4779,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
# On some targets, GNU ld is compatible enough with the native linker
# that we're better off using the native interface for both.
lt_use_gnu_ld_interface=no
- if test "$with_gnu_ld" = yes; then
+ if test yes = "$with_gnu_ld"; then
case $host_os in
aix*)
# The AIX port of GNU ld has always aspired to compatibility
@@ -4686,24 +4801,24 @@ dnl Note also adjust exclude_expsyms for C++ above.
esac
fi
- if test "$lt_use_gnu_ld_interface" = yes; then
+ if test yes = "$lt_use_gnu_ld_interface"; then
# If archive_cmds runs LD, not CC, wlarc should be empty
- wlarc='${wl}'
+ wlarc='$wl'
# Set some defaults for GNU ld with shared library support. These
# are reset later if shared libraries are not supported. Putting them
# here allows them to be overridden if necessary.
runpath_var=LD_RUN_PATH
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
# ancient GNU ld didn't support --whole-archive et. al.
if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
else
_LT_TAGVAR(whole_archive_flag_spec, $1)=
fi
supports_anon_versioning=no
- case `$LD -v 2>&1` in
+ case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in
*GNU\ gold*) supports_anon_versioning=yes ;;
*\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
*\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
@@ -4716,7 +4831,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
case $host_os in
aix[[3-9]]*)
# On AIX/PPC, the GNU linker is very broken
- if test "$host_cpu" != ia64; then
+ if test ia64 != "$host_cpu"; then
_LT_TAGVAR(ld_shlibs, $1)=no
cat <<_LT_EOF 1>&2
@@ -4735,7 +4850,7 @@ _LT_EOF
case $host_cpu in
powerpc)
# see comment about AmigaOS4 .so support
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)=''
;;
m68k)
@@ -4751,7 +4866,7 @@ _LT_EOF
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
# support --undefined. This deserves some investigation. FIXME
- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
else
_LT_TAGVAR(ld_shlibs, $1)=no
fi
@@ -4761,7 +4876,7 @@ _LT_EOF
# _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
# as there is no search path for DLLs.
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
_LT_TAGVAR(always_export_symbols, $1)=no
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
@@ -4769,61 +4884,61 @@ _LT_EOF
_LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- # If the export-symbols file already is a .def file (1st line
- # is EXPORTS), use it as is; otherwise, prepend...
- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- cp $export_symbols $output_objdir/$soname.def;
- else
- echo EXPORTS > $output_objdir/$soname.def;
- cat $export_symbols >> $output_objdir/$soname.def;
- fi~
- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file, use it as
+ # is; otherwise, prepend EXPORTS...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
else
_LT_TAGVAR(ld_shlibs, $1)=no
fi
;;
haiku*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
_LT_TAGVAR(link_all_deplibs, $1)=yes
;;
interix[[3-9]]*)
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
# Instead, shared libraries are loaded at an image base (0x10000000 by
# default) and relocated if they conflict, which is a slow very memory
# consuming and fragmenting process. To avoid this, we pick a random,
# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
# time. Moving up from 0x10000000 also allows more sbrk(2) space.
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
tmp_diet=no
- if test "$host_os" = linux-dietlibc; then
+ if test linux-dietlibc = "$host_os"; then
case $cc_basename in
diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
esac
fi
if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
- && test "$tmp_diet" = no
+ && test no = "$tmp_diet"
then
tmp_addflag=' $pic_flag'
tmp_sharedflag='-shared'
case $cc_basename,$host_cpu in
pgcc*) # Portland Group C compiler
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
tmp_addflag=' $pic_flag'
;;
pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group f77 and f90 compilers
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
tmp_addflag=' $pic_flag -Mnomain' ;;
ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
tmp_addflag=' -i_dynamic' ;;
@@ -4834,42 +4949,44 @@ _LT_EOF
lf95*) # Lahey Fortran 8.1
_LT_TAGVAR(whole_archive_flag_spec, $1)=
tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
+ tmp_sharedflag='-Wl,-shared' ;;
xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
tmp_sharedflag='-qmkshrobj'
tmp_addflag= ;;
nvcc*) # Cuda Compiler Driver 2.2
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
_LT_TAGVAR(compiler_needs_object, $1)=yes
;;
esac
case `$CC -V 2>&1 | sed 5q` in
*Sun\ C*) # Sun C 5.9
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
_LT_TAGVAR(compiler_needs_object, $1)=yes
tmp_sharedflag='-G' ;;
*Sun\ F*) # Sun Fortran 8.3
tmp_sharedflag='-G' ;;
esac
- _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
+ if test yes = "$supports_anon_versioning"; then
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
fi
case $cc_basename in
xlf* | bgf* | bgxlf* | mpixlf*)
# IBM XL Fortran 10.1 on PPC cannot create shared libs itself
_LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
_LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
+ if test yes = "$supports_anon_versioning"; then
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
fi
;;
esac
@@ -4878,13 +4995,13 @@ _LT_EOF
fi
;;
- netbsd* | netbsdelf*-gnu)
+ netbsd*)
if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
fi
;;
@@ -4902,8 +5019,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
else
_LT_TAGVAR(ld_shlibs, $1)=no
fi
@@ -4915,7 +5032,7 @@ _LT_EOF
_LT_TAGVAR(ld_shlibs, $1)=no
cat <<_LT_EOF 1>&2
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
*** reliably create shared libraries on SCO systems. Therefore, libtool
*** is disabling shared libraries support. We urge you to upgrade GNU
*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
@@ -4930,9 +5047,9 @@ _LT_EOF
# DT_RUNPATH tag from executables and libraries. But doing so
# requires that you compile everything twice, which is a pain.
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
else
_LT_TAGVAR(ld_shlibs, $1)=no
fi
@@ -4949,15 +5066,15 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
else
_LT_TAGVAR(ld_shlibs, $1)=no
fi
;;
esac
- if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+ if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then
runpath_var=
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
_LT_TAGVAR(export_dynamic_flag_spec, $1)=
@@ -4973,7 +5090,7 @@ _LT_EOF
# Note: this linker hardcodes the directories in LIBPATH if there
# are no directories specified by -L.
_LT_TAGVAR(hardcode_minus_L, $1)=yes
- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
# Neither direct hardcoding nor static linking is supported with a
# broken collect2.
_LT_TAGVAR(hardcode_direct, $1)=unsupported
@@ -4981,12 +5098,12 @@ _LT_EOF
;;
aix[[4-9]]*)
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
aix_use_runtimelinking=no
exp_sym_flag='-Bexport'
- no_entry_flag=""
+ no_entry_flag=
else
# If we're using GNU nm, then we don't want the "-C" option.
# -C means demangle to AIX nm, but means don't demangle with GNU nm
@@ -5004,7 +5121,7 @@ _LT_EOF
# need to do runtime linking.
case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
for ld_flag in $LDFLAGS; do
- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
aix_use_runtimelinking=yes
break
fi
@@ -5027,13 +5144,13 @@ _LT_EOF
_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
_LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+ _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
- if test "$GCC" = yes; then
+ if test yes = "$GCC"; then
case $host_os in aix4.[[012]]|aix4.[[012]].*)
# We only want to do this on AIX 4.2 and lower, the check
# below for broken collect2 doesn't work under 4.3+
- collect2name=`${CC} -print-prog-name=collect2`
+ collect2name=`$CC -print-prog-name=collect2`
if test -f "$collect2name" &&
strings "$collect2name" | $GREP resolve_lib_name >/dev/null
then
@@ -5052,62 +5169,61 @@ _LT_EOF
;;
esac
shared_flag='-shared'
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag="$shared_flag "'${wl}-G'
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag="$shared_flag "'$wl-G'
fi
- _LT_TAGVAR(link_all_deplibs, $1)=no
else
# not using gcc
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
# chokes on -Wl,-G. The following line is correct:
shared_flag='-G'
else
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag='${wl}-G'
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag='$wl-G'
else
- shared_flag='${wl}-bM:SRE'
+ shared_flag='$wl-bM:SRE'
fi
fi
fi
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
# It seems that -bexpall does not export symbols beginning with
# underscore (_), so it is better to generate a list of symbols to export.
_LT_TAGVAR(always_export_symbols, $1)=yes
- if test "$aix_use_runtimelinking" = yes; then
+ if test yes = "$aix_use_runtimelinking"; then
# Warning - without using the other runtime loading flags (-brtl),
# -berok will link without error, but may produce a broken library.
_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
_LT_SYS_MODULE_PATH_AIX([$1])
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
else
- if test "$host_cpu" = ia64; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ if test ia64 = "$host_cpu"; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
_LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
else
# Determine the default libpath from the value encoded in an
# empty executable.
_LT_SYS_MODULE_PATH_AIX([$1])
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
# -berok will link without error, but may produce a broken library.
- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
- if test "$with_gnu_ld" = yes; then
+ _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
+ if test yes = "$with_gnu_ld"; then
# We only use this code for GNU lds that support --whole-archive.
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
else
# Exported symbols can be pulled into shared objects from archives
_LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
fi
_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
# This is similar to how AIX traditionally builds its shared libraries.
- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $wl-bnoentry $compiler_flags $wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
fi
fi
;;
@@ -5116,7 +5232,7 @@ _LT_EOF
case $host_cpu in
powerpc)
# see comment about AmigaOS4 .so support
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)=''
;;
m68k)
@@ -5146,16 +5262,17 @@ _LT_EOF
# Tell ltmain to make .lib files, not .a files.
libext=lib
# Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
+ shrext_cmds=.dll
# FIXME: Setting linknames here is a bad hack.
- _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
- else
- sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
- fi~
- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
- linknames='
+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+ cp "$export_symbols" "$output_objdir/$soname.def";
+ echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+ else
+ $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
# The linker will not automatically build a static lib if we build a DLL.
# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
@@ -5164,18 +5281,18 @@ _LT_EOF
# Don't use ranlib
_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
- lt_tool_outputfile="@TOOL_OUTPUT@"~
- case $lt_outputfile in
- *.exe|*.EXE) ;;
- *)
- lt_outputfile="$lt_outputfile.exe"
- lt_tool_outputfile="$lt_tool_outputfile.exe"
- ;;
- esac~
- if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
- $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
- $RM "$lt_outputfile.manifest";
- fi'
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile=$lt_outputfile.exe
+ lt_tool_outputfile=$lt_tool_outputfile.exe
+ ;;
+ esac~
+ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
;;
*)
# Assume MSVC wrapper
@@ -5184,7 +5301,7 @@ _LT_EOF
# Tell ltmain to make .lib files, not .a files.
libext=lib
# Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
+ shrext_cmds=.dll
# FIXME: Setting linknames here is a bad hack.
_LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
# The linker will automatically build a .lib file if we build a DLL.
@@ -5234,33 +5351,33 @@ _LT_EOF
;;
hpux9*)
- if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
else
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
fi
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
_LT_TAGVAR(hardcode_direct, $1)=yes
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
_LT_TAGVAR(hardcode_minus_L, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
;;
hpux10*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ if test yes,no = "$GCC,$with_gnu_ld"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
else
_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
- if test "$with_gnu_ld" = no; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ if test no = "$with_gnu_ld"; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
_LT_TAGVAR(hardcode_minus_L, $1)=yes
@@ -5268,25 +5385,25 @@ _LT_EOF
;;
hpux11*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ if test yes,no = "$GCC,$with_gnu_ld"; then
case $host_cpu in
hppa*64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
;;
*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
;;
esac
else
case $host_cpu in
hppa*64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
;;
*)
m4_if($1, [], [
@@ -5294,14 +5411,14 @@ _LT_EOF
# (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
_LT_LINKER_OPTION([if $CC understands -b],
_LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
- [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+ [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
[_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
- [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
+ [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
;;
esac
fi
- if test "$with_gnu_ld" = no; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ if test no = "$with_gnu_ld"; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
case $host_cpu in
@@ -5312,7 +5429,7 @@ _LT_EOF
*)
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
@@ -5323,16 +5440,16 @@ _LT_EOF
;;
irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
# Try to use the -exported_symbol ld option, if it does not
# work, assume that -exports_file does not work either and
# implicitly export all symbols.
# This should be the same for all languages, so no per-tag cache variable.
AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
[lt_cv_irix_exported_symbol],
- [save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ [save_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
AC_LINK_IFELSE(
[AC_LANG_SOURCE(
[AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
@@ -5345,22 +5462,22 @@ _LT_EOF
end]])])],
[lt_cv_irix_exported_symbol=yes],
[lt_cv_irix_exported_symbol=no])
- LDFLAGS="$save_LDFLAGS"])
- if test "$lt_cv_irix_exported_symbol" = yes; then
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+ LDFLAGS=$save_LDFLAGS])
+ if test yes = "$lt_cv_irix_exported_symbol"; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
fi
else
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
fi
_LT_TAGVAR(archive_cmds_need_lc, $1)='no'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
_LT_TAGVAR(inherit_rpath, $1)=yes
_LT_TAGVAR(link_all_deplibs, $1)=yes
;;
- netbsd* | netbsdelf*-gnu)
+ netbsd*)
if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
else
@@ -5374,7 +5491,7 @@ _LT_EOF
newsos6)
_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
_LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
;;
@@ -5382,27 +5499,19 @@ _LT_EOF
*nto* | *qnx*)
;;
- openbsd*)
+ openbsd* | bitrig*)
if test -f /usr/libexec/ld.so; then
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
else
- case $host_os in
- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- ;;
- *)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- ;;
- esac
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
fi
else
_LT_TAGVAR(ld_shlibs, $1)=no
@@ -5418,28 +5527,28 @@ _LT_EOF
;;
osf3*)
- if test "$GCC" = yes; then
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
else
_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
fi
_LT_TAGVAR(archive_cmds_need_lc, $1)='no'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
;;
osf4* | osf5*) # as osf3* with the addition of -msym flag
- if test "$GCC" = yes; then
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
else
_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
- $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
# Both c and cxx compiler support -rpath directly
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
@@ -5450,24 +5559,24 @@ _LT_EOF
solaris*)
_LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
- if test "$GCC" = yes; then
- wlarc='${wl}'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ if test yes = "$GCC"; then
+ wlarc='$wl'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
wlarc=''
- _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
;;
*)
- wlarc='${wl}'
- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ wlarc='$wl'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
;;
esac
fi
@@ -5477,11 +5586,11 @@ _LT_EOF
solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
*)
# The compiler driver will combine and reorder linker options,
- # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but understands '-z linker_flag'. GCC discards it without '$wl',
# but is careful enough not to reorder.
# Supported since Solaris 2.6 (maybe 2.5.1?)
- if test "$GCC" = yes; then
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
else
_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
fi
@@ -5491,10 +5600,10 @@ _LT_EOF
;;
sunos4*)
- if test "x$host_vendor" = xsequent; then
+ if test sequent = "$host_vendor"; then
# Use $CC to link under sequent, because it throws in some extra .o
# files that make .init and .fini sections work.
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
else
_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
fi
@@ -5543,43 +5652,43 @@ _LT_EOF
;;
sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
_LT_TAGVAR(archive_cmds_need_lc, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
runpath_var='LD_RUN_PATH'
- if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
else
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
fi
;;
sysv5* | sco3.2v5* | sco5v6*)
- # Note: We can NOT use -z defs as we might desire, because we do not
+ # Note: We CANNOT use -z defs as we might desire, because we do not
# link with -lc, and that would cause any symbols used from libc to
# always be unresolved, which means just about no library would
# ever link correctly. If we're not using GNU ld we use -z text
# though, which does catch some bad symbols but isn't as heavy-handed
# as -z defs.
- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
_LT_TAGVAR(archive_cmds_need_lc, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
_LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
runpath_var='LD_RUN_PATH'
- if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
else
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
fi
;;
@@ -5594,17 +5703,17 @@ _LT_EOF
;;
esac
- if test x$host_vendor = xsni; then
+ if test sni = "$host_vendor"; then
case $host in
sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym'
;;
esac
fi
fi
])
AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
@@ -5621,7 +5730,7 @@ x|xyes)
# Assume -lc should be added
_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
- if test "$enable_shared" = yes && test "$GCC" = yes; then
+ if test yes,yes = "$GCC,$enable_shared"; then
case $_LT_TAGVAR(archive_cmds, $1) in
*'~'*)
# FIXME: we may have to deal with multi-command sequences.
@@ -5701,12 +5810,12 @@ _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
_LT_TAGDECL([], [hardcode_libdir_separator], [1],
[Whether we need a single "-rpath" flag with a separated argument])
_LT_TAGDECL([], [hardcode_direct], [0],
- [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+ [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
DIR into the resulting binary])
_LT_TAGDECL([], [hardcode_direct_absolute], [0],
- [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+ [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
DIR into the resulting binary and the resulting library dependency is
- "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+ "absolute", i.e impossible to change by setting $shlibpath_var if the
library is relocated])
_LT_TAGDECL([], [hardcode_minus_L], [0],
[Set to "yes" if using the -LDIR flag during linking hardcodes DIR
@@ -5747,10 +5856,10 @@ dnl [Compiler flag to generate thread safe objects])
# ------------------------
# Ensure that the configuration variables for a C compiler are suitably
# defined. These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
+# the compiler configuration to 'libtool'.
m4_defun([_LT_LANG_C_CONFIG],
[m4_require([_LT_DECL_EGREP])dnl
-lt_save_CC="$CC"
+lt_save_CC=$CC
AC_LANG_PUSH(C)
# Source file extension for C test sources.
@@ -5790,18 +5899,18 @@ if test -n "$compiler"; then
LT_SYS_DLOPEN_SELF
_LT_CMD_STRIPLIB
- # Report which library types will actually be built
+ # Report what library types will actually be built
AC_MSG_CHECKING([if libtool supports shared libraries])
AC_MSG_RESULT([$can_build_shared])
AC_MSG_CHECKING([whether to build shared libraries])
- test "$can_build_shared" = "no" && enable_shared=no
+ test no = "$can_build_shared" && enable_shared=no
# On AIX, shared libraries and static libraries use the same namespace, and
# are all built from PIC.
case $host_os in
aix3*)
- test "$enable_shared" = yes && enable_static=no
+ test yes = "$enable_shared" && enable_static=no
if test -n "$RANLIB"; then
archive_cmds="$archive_cmds~\$RANLIB \$lib"
postinstall_cmds='$RANLIB $lib'
@@ -5809,8 +5918,8 @@ if test -n "$compiler"; then
;;
aix[[4-9]]*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
+ if test ia64 != "$host_cpu" && test no = "$aix_use_runtimelinking"; then
+ test yes = "$enable_shared" && enable_static=no
fi
;;
esac
@@ -5818,13 +5927,13 @@ if test -n "$compiler"; then
AC_MSG_CHECKING([whether to build static libraries])
# Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
+ test yes = "$enable_shared" || enable_static=yes
AC_MSG_RESULT([$enable_static])
_LT_CONFIG($1)
fi
AC_LANG_POP
-CC="$lt_save_CC"
+CC=$lt_save_CC
])# _LT_LANG_C_CONFIG
@@ -5832,14 +5941,14 @@ CC="$lt_save_CC"
# --------------------------
# Ensure that the configuration variables for a C++ compiler are suitably
# defined. These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
+# the compiler configuration to 'libtool'.
m4_defun([_LT_LANG_CXX_CONFIG],
[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
m4_require([_LT_DECL_EGREP])dnl
m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
- (test "X$CXX" != "Xg++"))) ; then
+if test -n "$CXX" && ( test no != "$CXX" &&
+ ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
+ (test g++ != "$CXX"))); then
AC_PROG_CXXCPP
else
_lt_caught_CXX_error=yes
@@ -5881,7 +5990,7 @@ _LT_TAGVAR(objext, $1)=$objext
# the CXX compiler isn't working. Some variables (like enable_shared)
# are currently assumed to apply to all compilers on this platform,
# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
+if test yes != "$_lt_caught_CXX_error"; then
# Code to be used in simple compile tests
lt_simple_compile_test_code="int some_variable = 0;"
@@ -5923,35 +6032,35 @@ if test "$_lt_caught_CXX_error" != yes; then
if test -n "$compiler"; then
# We don't want -fno-exception when compiling C++ code, so set the
# no_builtin_flag separately
- if test "$GXX" = yes; then
+ if test yes = "$GXX"; then
_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
else
_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
fi
- if test "$GXX" = yes; then
+ if test yes = "$GXX"; then
# Set up default GNU C++ configuration
LT_PATH_LD
# Check if GNU C++ uses GNU ld as the underlying linker, since the
# archiving commands below assume that GNU ld is being used.
- if test "$with_gnu_ld" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ if test yes = "$with_gnu_ld"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
# If archive_cmds runs LD, not CC, wlarc should be empty
# XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
# investigate it a little bit more. (MM)
- wlarc='${wl}'
+ wlarc='$wl'
# ancient GNU ld didn't support --whole-archive et. al.
if eval "`$CC -print-prog-name=ld` --help 2>&1" |
$GREP 'no-whole-archive' > /dev/null; then
- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
else
_LT_TAGVAR(whole_archive_flag_spec, $1)=
fi
@@ -5987,12 +6096,12 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(ld_shlibs, $1)=no
;;
aix[[4-9]]*)
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
aix_use_runtimelinking=no
exp_sym_flag='-Bexport'
- no_entry_flag=""
+ no_entry_flag=
else
aix_use_runtimelinking=no
@@ -6026,13 +6135,13 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
_LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+ _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
- if test "$GXX" = yes; then
+ if test yes = "$GXX"; then
case $host_os in aix4.[[012]]|aix4.[[012]].*)
# We only want to do this on AIX 4.2 and lower, the check
# below for broken collect2 doesn't work under 4.3+
- collect2name=`${CC} -print-prog-name=collect2`
+ collect2name=`$CC -print-prog-name=collect2`
if test -f "$collect2name" &&
strings "$collect2name" | $GREP resolve_lib_name >/dev/null
then
@@ -6050,56 +6159,56 @@ if test "$_lt_caught_CXX_error" != yes; then
fi
esac
shared_flag='-shared'
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag="$shared_flag "'${wl}-G'
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag=$shared_flag' $wl-G'
fi
else
# not using gcc
- if test "$host_cpu" = ia64; then
+ if test ia64 = "$host_cpu"; then
# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
# chokes on -Wl,-G. The following line is correct:
shared_flag='-G'
else
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag='${wl}-G'
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag='$wl-G'
else
- shared_flag='${wl}-bM:SRE'
+ shared_flag='$wl-bM:SRE'
fi
fi
fi
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
# It seems that -bexpall does not export symbols beginning with
# underscore (_), so it is better to generate a list of symbols to
# export.
_LT_TAGVAR(always_export_symbols, $1)=yes
- if test "$aix_use_runtimelinking" = yes; then
+ if test yes = "$aix_use_runtimelinking"; then
# Warning - without using the other runtime loading flags (-brtl),
# -berok will link without error, but may produce a broken library.
_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
# Determine the default libpath from the value encoded in an empty
# executable.
_LT_SYS_MODULE_PATH_AIX([$1])
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
else
- if test "$host_cpu" = ia64; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ if test ia64 = "$host_cpu"; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
_LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
else
# Determine the default libpath from the value encoded in an
# empty executable.
_LT_SYS_MODULE_PATH_AIX([$1])
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
# -berok will link without error, but may produce a broken library.
- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
- if test "$with_gnu_ld" = yes; then
+ _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
+ if test yes = "$with_gnu_ld"; then
# We only use this code for GNU lds that support --whole-archive.
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
else
# Exported symbols can be pulled into shared objects from archives
_LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
@@ -6107,7 +6216,7 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
# This is similar to how AIX traditionally builds its shared
# libraries.
- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $wl-bnoentry $compiler_flags $wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
fi
fi
;;
@@ -6117,7 +6226,7 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
# support --undefined. This deserves some investigation. FIXME
- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
else
_LT_TAGVAR(ld_shlibs, $1)=no
fi
@@ -6145,57 +6254,58 @@ if test "$_lt_caught_CXX_error" != yes; then
# Tell ltmain to make .lib files, not .a files.
libext=lib
# Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
+ shrext_cmds=.dll
# FIXME: Setting linknames here is a bad hack.
- _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
- else
- $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
- fi~
- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
- linknames='
+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+ cp "$export_symbols" "$output_objdir/$soname.def";
+ echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+ else
+ $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
# The linker will not automatically build a static lib if we build a DLL.
# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
# Don't use ranlib
_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
- lt_tool_outputfile="@TOOL_OUTPUT@"~
- case $lt_outputfile in
- *.exe|*.EXE) ;;
- *)
- lt_outputfile="$lt_outputfile.exe"
- lt_tool_outputfile="$lt_tool_outputfile.exe"
- ;;
- esac~
- func_to_tool_file "$lt_outputfile"~
- if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
- $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
- $RM "$lt_outputfile.manifest";
- fi'
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile=$lt_outputfile.exe
+ lt_tool_outputfile=$lt_tool_outputfile.exe
+ ;;
+ esac~
+ func_to_tool_file "$lt_outputfile"~
+ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
;;
*)
# g++
# _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
# as there is no search path for DLLs.
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
_LT_TAGVAR(always_export_symbols, $1)=no
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- # If the export-symbols file already is a .def file (1st line
- # is EXPORTS), use it as is; otherwise, prepend...
- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- cp $export_symbols $output_objdir/$soname.def;
- else
- echo EXPORTS > $output_objdir/$soname.def;
- cat $export_symbols >> $output_objdir/$soname.def;
- fi~
- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file, use it as
+ # is; otherwise, prepend EXPORTS...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
else
_LT_TAGVAR(ld_shlibs, $1)=no
fi
@@ -6241,14 +6351,14 @@ if test "$_lt_caught_CXX_error" != yes; then
;;
haiku*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
_LT_TAGVAR(link_all_deplibs, $1)=yes
;;
hpux9*)
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
# but as the default
@@ -6260,7 +6370,7 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(ld_shlibs, $1)=no
;;
aCC*)
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
@@ -6269,11 +6379,11 @@ if test "$_lt_caught_CXX_error" != yes; then
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
- if test "$GXX" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ if test yes = "$GXX"; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
else
# FIXME: insert proper C++ library support
_LT_TAGVAR(ld_shlibs, $1)=no
@@ -6283,15 +6393,15 @@ if test "$_lt_caught_CXX_error" != yes; then
;;
hpux10*|hpux11*)
- if test $with_gnu_ld = no; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ if test no = "$with_gnu_ld"; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
case $host_cpu in
hppa*64*|ia64*)
;;
*)
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
;;
esac
fi
@@ -6317,13 +6427,13 @@ if test "$_lt_caught_CXX_error" != yes; then
aCC*)
case $host_cpu in
hppa*64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
ia64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
esac
# Commands to make compiler produce verbose output that lists
@@ -6334,20 +6444,20 @@ if test "$_lt_caught_CXX_error" != yes; then
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
- if test "$GXX" = yes; then
- if test $with_gnu_ld = no; then
+ if test yes = "$GXX"; then
+ if test no = "$with_gnu_ld"; then
case $host_cpu in
hppa*64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
ia64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
esac
fi
@@ -6362,22 +6472,22 @@ if test "$_lt_caught_CXX_error" != yes; then
interix[[3-9]]*)
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
# Instead, shared libraries are loaded at an image base (0x10000000 by
# default) and relocated if they conflict, which is a slow very memory
# consuming and fragmenting process. To avoid this, we pick a random,
# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
# time. Moving up from 0x10000000 also allows more sbrk(2) space.
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
irix5* | irix6*)
case $cc_basename in
CC*)
# SGI C++
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
# Archives containing C++ object files must be created using
# "CC -ar", where "CC" is the IRIX C++ compiler. This is
@@ -6386,17 +6496,17 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
;;
*)
- if test "$GXX" = yes; then
- if test "$with_gnu_ld" = no; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ if test yes = "$GXX"; then
+ if test no = "$with_gnu_ld"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
else
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib'
fi
fi
_LT_TAGVAR(link_all_deplibs, $1)=yes
;;
esac
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
_LT_TAGVAR(inherit_rpath, $1)=yes
;;
@@ -6409,8 +6519,8 @@ if test "$_lt_caught_CXX_error" != yes; then
# KCC will only create a shared library if the output file
# ends with ".so" (or ".sl" for HP-UX), so rename the library
# to its proper name (with version) after linking.
- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib'
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
@@ -6419,10 +6529,10 @@ if test "$_lt_caught_CXX_error" != yes; then
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
# Archives containing C++ object files must be created using
# "CC -Bstatic", where "CC" is the KAI C++ compiler.
@@ -6436,59 +6546,59 @@ if test "$_lt_caught_CXX_error" != yes; then
# earlier do not add the objects themselves.
case `$CC -V 2>&1` in
*"Version 7."*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
;;
*) # Version 8.0 or newer
tmp_idyn=
case $host_cpu in
ia64*) tmp_idyn=' -i_dynamic';;
esac
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
;;
esac
_LT_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
;;
pgCC* | pgcpp*)
# Portland Group C++ compiler
case `$CC -V` in
*pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
_LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
- compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
_LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
- $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
- $RANLIB $oldlib'
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+ $RANLIB $oldlib'
_LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
;;
*) # Version 6 and above use weak symbols
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
;;
esac
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
;;
cxx*)
# Compaq C++
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols'
runpath_var=LD_RUN_PATH
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
@@ -6502,18 +6612,18 @@ if test "$_lt_caught_CXX_error" != yes; then
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
;;
xl* | mpixl* | bgxl*)
# IBM XL 8.0 on PPC, with GNU ld
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ if test yes = "$supports_anon_versioning"; then
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
fi
;;
*)
@@ -6521,10 +6631,10 @@ if test "$_lt_caught_CXX_error" != yes; then
*Sun\ C*)
# Sun C++ 5.9
_LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
_LT_TAGVAR(compiler_needs_object, $1)=yes
# Not sure whether something based on
@@ -6582,22 +6692,17 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(ld_shlibs, $1)=yes
;;
- openbsd2*)
- # C++ shared libraries are fairly broken
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
- openbsd*)
+ openbsd* | bitrig*)
if test -f /usr/libexec/ld.so; then
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
fi
output_verbose_link_cmd=func_echo_all
else
@@ -6613,9 +6718,9 @@ if test "$_lt_caught_CXX_error" != yes; then
# KCC will only create a shared library if the output file
# ends with ".so" (or ".sl" for HP-UX), so rename the library
# to its proper name (with version) after linking.
- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
# Archives containing C++ object files must be created using
@@ -6633,17 +6738,17 @@ if test "$_lt_caught_CXX_error" != yes; then
cxx*)
case $host in
osf3*)
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
;;
*)
_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
- echo "-hidden">> $lib.exp~
- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
- $RM $lib.exp'
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
+ $RM $lib.exp'
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
;;
esac
@@ -6658,21 +6763,21 @@ if test "$_lt_caught_CXX_error" != yes; then
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ if test yes,no = "$GXX,$with_gnu_ld"; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
case $host in
osf3*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
;;
*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
;;
esac
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
# Commands to make compiler produce verbose output that lists
@@ -6718,9 +6823,9 @@ if test "$_lt_caught_CXX_error" != yes; then
# Sun C++ 4.2, 5.x and Centerline C++
_LT_TAGVAR(archive_cmds_need_lc,$1)=yes
_LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
@@ -6728,7 +6833,7 @@ if test "$_lt_caught_CXX_error" != yes; then
solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
*)
# The compiler driver will combine and reorder linker options,
- # but understands `-z linker_flag'.
+ # but understands '-z linker_flag'.
# Supported since Solaris 2.6 (maybe 2.5.1?)
_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
;;
@@ -6745,30 +6850,30 @@ if test "$_lt_caught_CXX_error" != yes; then
;;
gcx*)
# Green Hills C++ Compiler
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
# The C++ compiler must be used to create the archive.
_LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
;;
*)
# GNU C++ compiler with Solaris linker
- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if test yes,no = "$GXX,$with_gnu_ld"; then
+ _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs'
if $CC --version | $GREP -v '^2\.7' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
else
- # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # g++ 2.7 appears to require '-G' NOT '-shared' on this
# platform.
- _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
@@ -6776,11 +6881,11 @@ if test "$_lt_caught_CXX_error" != yes; then
output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
fi
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir'
case $host_os in
solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
*)
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
;;
esac
fi
@@ -6789,52 +6894,52 @@ if test "$_lt_caught_CXX_error" != yes; then
;;
sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
_LT_TAGVAR(archive_cmds_need_lc, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
runpath_var='LD_RUN_PATH'
case $cc_basename in
CC*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
esac
;;
sysv5* | sco3.2v5* | sco5v6*)
- # Note: We can NOT use -z defs as we might desire, because we do not
+ # Note: We CANNOT use -z defs as we might desire, because we do not
# link with -lc, and that would cause any symbols used from libc to
# always be unresolved, which means just about no library would
# ever link correctly. If we're not using GNU ld we use -z text
# though, which does catch some bad symbols but isn't as heavy-handed
# as -z defs.
- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
_LT_TAGVAR(archive_cmds_need_lc, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
_LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
runpath_var='LD_RUN_PATH'
case $cc_basename in
CC*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
_LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
- '"$_LT_TAGVAR(old_archive_cmds, $1)"
+ '"$_LT_TAGVAR(old_archive_cmds, $1)"
_LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
- '"$_LT_TAGVAR(reload_cmds, $1)"
+ '"$_LT_TAGVAR(reload_cmds, $1)"
;;
*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
esac
;;
@@ -6865,10 +6970,10 @@ if test "$_lt_caught_CXX_error" != yes; then
esac
AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
- test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+ test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
- _LT_TAGVAR(GCC, $1)="$GXX"
- _LT_TAGVAR(LD, $1)="$LD"
+ _LT_TAGVAR(GCC, $1)=$GXX
+ _LT_TAGVAR(LD, $1)=$LD
## CAVEAT EMPTOR:
## There is no encapsulation within the following macros, do not change
@@ -6895,7 +7000,7 @@ if test "$_lt_caught_CXX_error" != yes; then
lt_cv_path_LD=$lt_save_path_LD
lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
+fi # test yes != "$_lt_caught_CXX_error"
AC_LANG_POP
])# _LT_LANG_CXX_CONFIG
@@ -6917,9 +7022,9 @@ AC_REQUIRE([_LT_DECL_SED])
AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
func_stripname_cnf ()
{
- case ${2} in
- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+ case @S|@2 in
+ .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;;
+ *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;;
esac
} # func_stripname_cnf
])# _LT_FUNC_STRIPNAME_CNF
@@ -7007,13 +7112,13 @@ if AC_TRY_EVAL(ac_compile); then
pre_test_object_deps_done=no
for p in `eval "$output_verbose_link_cmd"`; do
- case ${prev}${p} in
+ case $prev$p in
-L* | -R* | -l*)
# Some compilers place space between "-{L,R}" and the path.
# Remove the space.
- if test $p = "-L" ||
- test $p = "-R"; then
+ if test x-L = "$p" ||
+ test x-R = "$p"; then
prev=$p
continue
fi
@@ -7029,16 +7134,16 @@ if AC_TRY_EVAL(ac_compile); then
case $p in
=*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
esac
- if test "$pre_test_object_deps_done" = no; then
- case ${prev} in
+ if test no = "$pre_test_object_deps_done"; then
+ case $prev in
-L | -R)
# Internal compiler library paths should come after those
# provided the user. The postdeps already come after the
# user supplied libs so there is no need to process them.
if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
- _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p
else
- _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+ _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p"
fi
;;
# The "-l" case would never come before the object being
@@ -7046,9 +7151,9 @@ if AC_TRY_EVAL(ac_compile); then
esac
else
if test -z "$_LT_TAGVAR(postdeps, $1)"; then
- _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+ _LT_TAGVAR(postdeps, $1)=$prev$p
else
- _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+ _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p"
fi
fi
prev=
@@ -7063,15 +7168,15 @@ if AC_TRY_EVAL(ac_compile); then
continue
fi
- if test "$pre_test_object_deps_done" = no; then
+ if test no = "$pre_test_object_deps_done"; then
if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
- _LT_TAGVAR(predep_objects, $1)="$p"
+ _LT_TAGVAR(predep_objects, $1)=$p
else
_LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
fi
else
if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
- _LT_TAGVAR(postdep_objects, $1)="$p"
+ _LT_TAGVAR(postdep_objects, $1)=$p
else
_LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
fi
@@ -7118,7 +7223,7 @@ linux*)
;;
esac
- if test "$solaris_use_stlport4" != yes; then
+ if test yes != "$solaris_use_stlport4"; then
_LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
fi
;;
@@ -7141,7 +7246,7 @@ solaris*)
# Adding this requires a known-good setup of shared libraries for
# Sun compiler versions before 5.6, else PIC objects from an old
# archive will be linked into the output, leading to subtle bugs.
- if test "$solaris_use_stlport4" != yes; then
+ if test yes != "$solaris_use_stlport4"; then
_LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
fi
;;
@@ -7155,7 +7260,7 @@ case " $_LT_TAGVAR(postdeps, $1) " in
esac
_LT_TAGVAR(compiler_lib_search_dirs, $1)=
if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'`
fi
_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
[The directories searched by this compiler when creating a shared library])
@@ -7175,10 +7280,10 @@ _LT_TAGDECL([], [compiler_lib_search_path], [1],
# --------------------------
# Ensure that the configuration variables for a Fortran 77 compiler are
# suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
m4_defun([_LT_LANG_F77_CONFIG],
[AC_LANG_PUSH(Fortran 77)
-if test -z "$F77" || test "X$F77" = "Xno"; then
+if test -z "$F77" || test no = "$F77"; then
_lt_disable_F77=yes
fi
@@ -7215,7 +7320,7 @@ _LT_TAGVAR(objext, $1)=$objext
# the F77 compiler isn't working. Some variables (like enable_shared)
# are currently assumed to apply to all compilers on this platform,
# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
+if test yes != "$_lt_disable_F77"; then
# Code to be used in simple compile tests
lt_simple_compile_test_code="\
subroutine t
@@ -7237,7 +7342,7 @@ if test "$_lt_disable_F77" != yes; then
_LT_LINKER_BOILERPLATE
# Allow CC to be a program name with arguments.
- lt_save_CC="$CC"
+ lt_save_CC=$CC
lt_save_GCC=$GCC
lt_save_CFLAGS=$CFLAGS
CC=${F77-"f77"}
@@ -7251,21 +7356,21 @@ if test "$_lt_disable_F77" != yes; then
AC_MSG_RESULT([$can_build_shared])
AC_MSG_CHECKING([whether to build shared libraries])
- test "$can_build_shared" = "no" && enable_shared=no
+ test no = "$can_build_shared" && enable_shared=no
# On AIX, shared libraries and static libraries use the same namespace, and
# are all built from PIC.
case $host_os in
aix3*)
- test "$enable_shared" = yes && enable_static=no
+ test yes = "$enable_shared" && enable_static=no
if test -n "$RANLIB"; then
archive_cmds="$archive_cmds~\$RANLIB \$lib"
postinstall_cmds='$RANLIB $lib'
fi
;;
aix[[4-9]]*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
+ if test ia64 != "$host_cpu" && test no = "$aix_use_runtimelinking"; then
+ test yes = "$enable_shared" && enable_static=no
fi
;;
esac
@@ -7273,11 +7378,11 @@ if test "$_lt_disable_F77" != yes; then
AC_MSG_CHECKING([whether to build static libraries])
# Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
+ test yes = "$enable_shared" || enable_static=yes
AC_MSG_RESULT([$enable_static])
- _LT_TAGVAR(GCC, $1)="$G77"
- _LT_TAGVAR(LD, $1)="$LD"
+ _LT_TAGVAR(GCC, $1)=$G77
+ _LT_TAGVAR(LD, $1)=$LD
## CAVEAT EMPTOR:
## There is no encapsulation within the following macros, do not change
@@ -7294,9 +7399,9 @@ if test "$_lt_disable_F77" != yes; then
fi # test -n "$compiler"
GCC=$lt_save_GCC
- CC="$lt_save_CC"
- CFLAGS="$lt_save_CFLAGS"
-fi # test "$_lt_disable_F77" != yes
+ CC=$lt_save_CC
+ CFLAGS=$lt_save_CFLAGS
+fi # test yes != "$_lt_disable_F77"
AC_LANG_POP
])# _LT_LANG_F77_CONFIG
@@ -7306,11 +7411,11 @@ AC_LANG_POP
# -------------------------
# Ensure that the configuration variables for a Fortran compiler are
# suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
m4_defun([_LT_LANG_FC_CONFIG],
[AC_LANG_PUSH(Fortran)
-if test -z "$FC" || test "X$FC" = "Xno"; then
+if test -z "$FC" || test no = "$FC"; then
_lt_disable_FC=yes
fi
@@ -7347,7 +7452,7 @@ _LT_TAGVAR(objext, $1)=$objext
# the FC compiler isn't working. Some variables (like enable_shared)
# are currently assumed to apply to all compilers on this platform,
# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
+if test yes != "$_lt_disable_FC"; then
# Code to be used in simple compile tests
lt_simple_compile_test_code="\
subroutine t
@@ -7369,7 +7474,7 @@ if test "$_lt_disable_FC" != yes; then
_LT_LINKER_BOILERPLATE
# Allow CC to be a program name with arguments.
- lt_save_CC="$CC"
+ lt_save_CC=$CC
lt_save_GCC=$GCC
lt_save_CFLAGS=$CFLAGS
CC=${FC-"f95"}
@@ -7385,21 +7490,21 @@ if test "$_lt_disable_FC" != yes; then
AC_MSG_RESULT([$can_build_shared])
AC_MSG_CHECKING([whether to build shared libraries])
- test "$can_build_shared" = "no" && enable_shared=no
+ test no = "$can_build_shared" && enable_shared=no
# On AIX, shared libraries and static libraries use the same namespace, and
# are all built from PIC.
case $host_os in
aix3*)
- test "$enable_shared" = yes && enable_static=no
+ test yes = "$enable_shared" && enable_static=no
if test -n "$RANLIB"; then
archive_cmds="$archive_cmds~\$RANLIB \$lib"
postinstall_cmds='$RANLIB $lib'
fi
;;
aix[[4-9]]*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
+ if test ia64 != "$host_cpu" && test no = "$aix_use_runtimelinking"; then
+ test yes = "$enable_shared" && enable_static=no
fi
;;
esac
@@ -7407,11 +7512,11 @@ if test "$_lt_disable_FC" != yes; then
AC_MSG_CHECKING([whether to build static libraries])
# Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
+ test yes = "$enable_shared" || enable_static=yes
AC_MSG_RESULT([$enable_static])
- _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
- _LT_TAGVAR(LD, $1)="$LD"
+ _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu
+ _LT_TAGVAR(LD, $1)=$LD
## CAVEAT EMPTOR:
## There is no encapsulation within the following macros, do not change
@@ -7431,7 +7536,7 @@ if test "$_lt_disable_FC" != yes; then
GCC=$lt_save_GCC
CC=$lt_save_CC
CFLAGS=$lt_save_CFLAGS
-fi # test "$_lt_disable_FC" != yes
+fi # test yes != "$_lt_disable_FC"
AC_LANG_POP
])# _LT_LANG_FC_CONFIG
@@ -7441,7 +7546,7 @@ AC_LANG_POP
# --------------------------
# Ensure that the configuration variables for the GNU Java Compiler compiler
# are suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
m4_defun([_LT_LANG_GCJ_CONFIG],
[AC_REQUIRE([LT_PROG_GCJ])dnl
AC_LANG_SAVE
@@ -7475,7 +7580,7 @@ CC=${GCJ-"gcj"}
CFLAGS=$GCJFLAGS
compiler=$CC
_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
+_LT_TAGVAR(LD, $1)=$LD
_LT_CC_BASENAME([$compiler])
# GCJ did not exist at the time GCC didn't implicitly link libc in.
@@ -7512,7 +7617,7 @@ CFLAGS=$lt_save_CFLAGS
# --------------------------
# Ensure that the configuration variables for the GNU Go compiler
# are suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
m4_defun([_LT_LANG_GO_CONFIG],
[AC_REQUIRE([LT_PROG_GO])dnl
AC_LANG_SAVE
@@ -7546,7 +7651,7 @@ CC=${GOC-"gccgo"}
CFLAGS=$GOFLAGS
compiler=$CC
_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
+_LT_TAGVAR(LD, $1)=$LD
_LT_CC_BASENAME([$compiler])
# Go did not exist at the time GCC didn't implicitly link libc in.
@@ -7583,7 +7688,7 @@ CFLAGS=$lt_save_CFLAGS
# -------------------------
# Ensure that the configuration variables for the Windows resource compiler
# are suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
m4_defun([_LT_LANG_RC_CONFIG],
[AC_REQUIRE([LT_PROG_RC])dnl
AC_LANG_SAVE
@@ -7599,7 +7704,7 @@ _LT_TAGVAR(objext, $1)=$objext
lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
# Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
+lt_simple_link_test_code=$lt_simple_compile_test_code
# ltmain only uses $CC for tagged configurations so make sure $CC is set.
_LT_TAG_COMPILER
@@ -7609,7 +7714,7 @@ _LT_COMPILER_BOILERPLATE
_LT_LINKER_BOILERPLATE
# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
+lt_save_CC=$CC
lt_save_CFLAGS=$CFLAGS
lt_save_GCC=$GCC
GCC=
@@ -7638,7 +7743,7 @@ AC_DEFUN([LT_PROG_GCJ],
[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
[m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
[AC_CHECK_TOOL(GCJ, gcj,)
- test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2"
AC_SUBST(GCJFLAGS)])])[]dnl
])
@@ -7749,7 +7854,7 @@ lt_ac_count=0
# Add /usr/xpg4/bin/sed as it is typically found on Solaris
# along with /bin/sed that truncates output.
for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
- test ! -f $lt_ac_sed && continue
+ test ! -f "$lt_ac_sed" && continue
cat /dev/null > conftest.in
lt_ac_count=0
echo $ECHO_N "0123456789$ECHO_C" >conftest.in
@@ -7766,9 +7871,9 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
$lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
cmp -s conftest.out conftest.nl || break
# 10000 chars as input seems more than enough
- test $lt_ac_count -gt 10 && break
+ test 10 -lt "$lt_ac_count" && break
lt_ac_count=`expr $lt_ac_count + 1`
- if test $lt_ac_count -gt $lt_ac_max; then
+ if test "$lt_ac_count" -gt "$lt_ac_max"; then
lt_ac_max=$lt_ac_count
lt_cv_path_SED=$lt_ac_sed
fi
@@ -7792,27 +7897,7 @@ dnl AC_DEFUN([LT_AC_PROG_SED], [])
# Find out whether the shell is Bourne or XSI compatible,
# or has some other useful features.
m4_defun([_LT_CHECK_SHELL_FEATURES],
-[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
- test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
- = c,a/b,b/c, \
- && eval 'test $(( 1 + 1 )) -eq 2 \
- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
- && xsi_shell=yes
-AC_MSG_RESULT([$xsi_shell])
-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
-
-AC_MSG_CHECKING([whether the shell understands "+="])
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
- >/dev/null 2>&1 \
- && lt_shell_append=yes
-AC_MSG_RESULT([$lt_shell_append])
-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
lt_unset=unset
else
lt_unset=false
@@ -7836,102 +7921,9 @@ _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
])# _LT_CHECK_SHELL_FEATURES
-# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
-# ------------------------------------------------------
-# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
-# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
-m4_defun([_LT_PROG_FUNCTION_REPLACE],
-[dnl {
-sed -e '/^$1 ()$/,/^} # $1 /c\
-$1 ()\
-{\
-m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1])
-} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-])
-
-
-# _LT_PROG_REPLACE_SHELLFNS
-# -------------------------
-# Replace existing portable implementations of several shell functions with
-# equivalent extended shell implementations where those features are available..
-m4_defun([_LT_PROG_REPLACE_SHELLFNS],
-[if test x"$xsi_shell" = xyes; then
- _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
- case ${1} in
- */*) func_dirname_result="${1%/*}${2}" ;;
- * ) func_dirname_result="${3}" ;;
- esac])
-
- _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
- func_basename_result="${1##*/}"])
-
- _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
- case ${1} in
- */*) func_dirname_result="${1%/*}${2}" ;;
- * ) func_dirname_result="${3}" ;;
- esac
- func_basename_result="${1##*/}"])
-
- _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
- # positional parameters, so assign one to ordinary parameter first.
- func_stripname_result=${3}
- func_stripname_result=${func_stripname_result#"${1}"}
- func_stripname_result=${func_stripname_result%"${2}"}])
-
- _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
- func_split_long_opt_name=${1%%=*}
- func_split_long_opt_arg=${1#*=}])
-
- _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
- func_split_short_opt_arg=${1#??}
- func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
-
- _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
- case ${1} in
- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
- *) func_lo2o_result=${1} ;;
- esac])
-
- _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo])
-
- _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))])
-
- _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}])
-fi
-
-if test x"$lt_shell_append" = xyes; then
- _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"])
-
- _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
- func_quote_for_eval "${2}"
-dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
- eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
-
- # Save a `func_append' function call where possible by direct use of '+='
- sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
- test 0 -eq $? || _lt_function_replace_fail=:
-else
- # Save a `func_append' function call even when '+=' is not available
- sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
- test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
- AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
-fi
-])
-
# _LT_PATH_CONVERSION_FUNCTIONS
# -----------------------------
-# Determine which file name conversion functions should be used by
+# Determine what file name conversion functions should be used by
# func_to_host_file (and, implicitly, by func_to_host_path). These are needed
# for certain cross-compile configurations and native mingw.
m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
index 5d9acd8..50c7723 100644
--- a/m4/ltoptions.m4
+++ b/m4/ltoptions.m4
@@ -1,14 +1,14 @@
# Helper functions for option handling. -*- Autoconf -*-
#
-# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 2004-2005, 2007-2009, 2011-2013 Free Software
+# Foundation, Inc.
# Written by Gary V. Vaughan, 2004
#
# This file is free software; the Free Software Foundation gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
-# serial 7 ltoptions.m4
+# serial 8 ltoptions.m4
# This is to help aclocal find these macros, as it can't see m4_define.
AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
@@ -29,7 +29,7 @@ m4_define([_LT_SET_OPTION],
[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
_LT_MANGLE_DEFUN([$1], [$2]),
- [m4_warning([Unknown $1 option `$2'])])[]dnl
+ [m4_warning([Unknown $1 option '$2'])])[]dnl
])
@@ -75,13 +75,13 @@ m4_if([$1],[LT_INIT],[
dnl
dnl If no reference was made to various pairs of opposing options, then
dnl we run the default mode handler for the pair. For example, if neither
- dnl `shared' nor `disable-shared' was passed, we enable building of shared
+ dnl 'shared' nor 'disable-shared' was passed, we enable building of shared
dnl archives by default:
_LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
_LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
_LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
_LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
- [_LT_ENABLE_FAST_INSTALL])
+ [_LT_ENABLE_FAST_INSTALL])
])
])# _LT_SET_OPTIONS
@@ -112,7 +112,7 @@ AU_DEFUN([AC_LIBTOOL_DLOPEN],
[_LT_SET_OPTION([LT_INIT], [dlopen])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
+put the 'dlopen' option into LT_INIT's first parameter.])
])
dnl aclocal-1.4 backwards compatibility:
@@ -148,7 +148,7 @@ AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
_LT_SET_OPTION([LT_INIT], [win32-dll])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
+put the 'win32-dll' option into LT_INIT's first parameter.])
])
dnl aclocal-1.4 backwards compatibility:
@@ -157,9 +157,9 @@ dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
# _LT_ENABLE_SHARED([DEFAULT])
# ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+# implement the --enable-shared flag, and supports the 'shared' and
+# 'disable-shared' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
m4_define([_LT_ENABLE_SHARED],
[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
AC_ARG_ENABLE([shared],
@@ -172,14 +172,14 @@ AC_ARG_ENABLE([shared],
*)
enable_shared=no
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_shared=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac],
[enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
@@ -211,9 +211,9 @@ dnl AC_DEFUN([AM_DISABLE_SHARED], [])
# _LT_ENABLE_STATIC([DEFAULT])
# ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+# implement the --enable-static flag, and support the 'static' and
+# 'disable-static' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
m4_define([_LT_ENABLE_STATIC],
[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
AC_ARG_ENABLE([static],
@@ -226,14 +226,14 @@ AC_ARG_ENABLE([static],
*)
enable_static=no
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_static=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac],
[enable_static=]_LT_ENABLE_STATIC_DEFAULT)
@@ -265,9 +265,9 @@ dnl AC_DEFUN([AM_DISABLE_STATIC], [])
# _LT_ENABLE_FAST_INSTALL([DEFAULT])
# ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+# implement the --enable-fast-install flag, and support the 'fast-install'
+# and 'disable-fast-install' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
m4_define([_LT_ENABLE_FAST_INSTALL],
[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
AC_ARG_ENABLE([fast-install],
@@ -280,14 +280,14 @@ AC_ARG_ENABLE([fast-install],
*)
enable_fast_install=no
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_fast_install=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac],
[enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
@@ -304,14 +304,14 @@ AU_DEFUN([AC_ENABLE_FAST_INSTALL],
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
+the 'fast-install' option into LT_INIT's first parameter.])
])
AU_DEFUN([AC_DISABLE_FAST_INSTALL],
[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
+the 'disable-fast-install' option into LT_INIT's first parameter.])
])
dnl aclocal-1.4 backwards compatibility:
@@ -321,9 +321,9 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
# _LT_WITH_PIC([MODE])
# --------------------
-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# implement the --with-pic flag, and support the 'pic-only' and 'no-pic'
# LT_INIT options.
-# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'.
m4_define([_LT_WITH_PIC],
[AC_ARG_WITH([pic],
[AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
@@ -334,19 +334,17 @@ m4_define([_LT_WITH_PIC],
*)
pic_mode=default
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for lt_pkg in $withval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$lt_pkg" = "X$lt_p"; then
pic_mode=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac],
- [pic_mode=default])
-
-test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+ [pic_mode=m4_default([$1], [default])])
_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
])# _LT_WITH_PIC
@@ -359,7 +357,7 @@ AU_DEFUN([AC_LIBTOOL_PICMODE],
[_LT_SET_OPTION([LT_INIT], [pic-only])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
+put the 'pic-only' option into LT_INIT's first parameter.])
])
dnl aclocal-1.4 backwards compatibility:
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
index 9000a05..7cbc638 100644
--- a/m4/ltsugar.m4
+++ b/m4/ltsugar.m4
@@ -1,6 +1,7 @@
# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
#
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2004-2005, 2007-2008, 2011-2013 Free Software
+# Foundation, Inc.
# Written by Gary V. Vaughan, 2004
#
# This file is free software; the Free Software Foundation gives
@@ -33,7 +34,7 @@ m4_define([_lt_join],
# ------------
# Manipulate m4 lists.
# These macros are necessary as long as will still need to support
-# Autoconf-2.59 which quotes differently.
+# Autoconf-2.59, which quotes differently.
m4_define([lt_car], [[$1]])
m4_define([lt_cdr],
[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
@@ -44,7 +45,7 @@ m4_define([lt_unquote], $1)
# lt_append(MACRO-NAME, STRING, [SEPARATOR])
# ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'.
# Note that neither SEPARATOR nor STRING are expanded; they are appended
# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
# No SEPARATOR is output if MACRO-NAME was previously undefined (different
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
index 07a8602..daeb0af 100644
--- a/m4/ltversion.m4
+++ b/m4/ltversion.m4
@@ -1,6 +1,6 @@
# ltversion.m4 -- version numbers -*- Autoconf -*-
#
-# Copyright (C) 2004 Free Software Foundation, Inc.
+# Copyright (C) 2004, 2011-2013 Free Software Foundation, Inc.
# Written by Scott James Remnant, 2004
#
# This file is free software; the Free Software Foundation gives
@@ -9,15 +9,15 @@
# @configure_input@
-# serial 3337 ltversion.m4
+# serial 4038 ltversion.m4
# This file is part of GNU Libtool
-m4_define([LT_PACKAGE_VERSION], [2.4.2])
-m4_define([LT_PACKAGE_REVISION], [1.3337])
+m4_define([LT_PACKAGE_VERSION], [2.4.2.418])
+m4_define([LT_PACKAGE_REVISION], [2.4.2.418])
AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4.2'
-macro_revision='1.3337'
+[macro_version='2.4.2.418'
+macro_revision='2.4.2.418'
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
_LT_DECL(, macro_revision, 0)
])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
index c573da9..59461e4 100644
--- a/m4/lt~obsolete.m4
+++ b/m4/lt~obsolete.m4
@@ -1,6 +1,7 @@
# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
#
-# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2004-2005, 2007, 2009, 2011-2013 Free Software
+# Foundation, Inc.
# Written by Scott James Remnant, 2004.
#
# This file is free software; the Free Software Foundation gives
@@ -11,7 +12,7 @@
# These exist entirely to fool aclocal when bootstrapping libtool.
#
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN),
# which have later been changed to m4_define as they aren't part of the
# exported API, or moved to Autoconf or Automake where they belong.
#
@@ -25,7 +26,7 @@
# included after everything else. This provides aclocal with the
# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
# because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
#
# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
# Yes, that means every name once taken will need to remain here until
diff --git a/missing b/missing
index db98974..cdea514 100755
--- a/missing
+++ b/missing
@@ -1,7 +1,7 @@
#! /bin/sh
# Common wrapper for a few potentially missing GNU programs.
-scriptversion=2013-10-28.13; # UTC
+scriptversion=2012-06-26.16; # UTC
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
@@ -160,7 +160,7 @@ give_advice ()
;;
autom4te*)
echo "You might have modified some maintainer files that require"
- echo "the 'autom4te' program to be rebuilt."
+ echo "the 'automa4te' program to be rebuilt."
program_details 'autom4te'
;;
bison*|yacc*)
diff --git a/src/Makefile.am b/src/Makefile.am
index 8cfe4ac..c99967f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,5 +1,6 @@
# Process this file with automake to produce Makefile.in
+NULL =
SUBDIRS =
DIST_SUBDIRS =
BUILT_SOURCES =
@@ -13,98 +14,171 @@ DISTCHECK_CONFIGURE_FLAGS = --enable-introspection
#AM_CXXFLAGS =
# Convenience targets:
-lib: $(BUILT_SOURCES) libharfbuzz.la
-fuzzing: $(BUILT_SOURCES) libharfbuzz-fuzzing.la
+lib: libharfbuzz.la
lib_LTLIBRARIES = libharfbuzz.la
-include Makefile.sources
-
HBCFLAGS =
HBLIBS =
-HBNONPCLIBS =
-HBDEPS =
-HBSOURCES = $(HB_BASE_sources)
-HBHEADERS = $(HB_BASE_headers)
-HBNODISTHEADERS = $(HB_NODIST_headers)
+HBSOURCES = \
+ hb-atomic-private.hh \
+ hb-blob.cc \
+ hb-buffer-deserialize-json.hh \
+ hb-buffer-deserialize-text.hh \
+ hb-buffer-private.hh \
+ hb-buffer-serialize.cc \
+ hb-buffer.cc \
+ hb-cache-private.hh \
+ hb-common.cc \
+ hb-face-private.hh \
+ hb-face.cc \
+ hb-font-private.hh \
+ hb-font.cc \
+ hb-mutex-private.hh \
+ hb-object-private.hh \
+ hb-open-file-private.hh \
+ hb-open-type-private.hh \
+ hb-ot-cmap-table.hh \
+ hb-ot-head-table.hh \
+ hb-ot-hhea-table.hh \
+ hb-ot-hmtx-table.hh \
+ hb-ot-maxp-table.hh \
+ hb-ot-name-table.hh \
+ hb-ot-tag.cc \
+ hb-private.hh \
+ hb-set-private.hh \
+ hb-set.cc \
+ hb-shape.cc \
+ hb-shape-plan-private.hh \
+ hb-shape-plan.cc \
+ hb-shaper-list.hh \
+ hb-shaper-impl-private.hh \
+ hb-shaper-private.hh \
+ hb-shaper.cc \
+ hb-unicode-private.hh \
+ hb-unicode.cc \
+ hb-utf-private.hh \
+ hb-warning.cc \
+ $(NULL)
+HBHEADERS = \
+ hb.h \
+ hb-blob.h \
+ hb-buffer.h \
+ hb-common.h \
+ hb-deprecated.h \
+ hb-face.h \
+ hb-font.h \
+ hb-set.h \
+ hb-shape.h \
+ hb-shape-plan.h \
+ hb-unicode.h \
+ $(NULL)
+HBNODISTHEADERS = \
+ hb-version.h \
+ $(NULL)
if HAVE_OT
-HBSOURCES += $(HB_OT_sources)
-HBHEADERS += $(HB_OT_headers)
+HBSOURCES += \
+ hb-ot-font.cc \
+ hb-ot-layout.cc \
+ hb-ot-layout-common-private.hh \
+ hb-ot-layout-gdef-table.hh \
+ hb-ot-layout-gpos-table.hh \
+ hb-ot-layout-gsubgpos-private.hh \
+ hb-ot-layout-gsub-table.hh \
+ hb-ot-layout-jstf-table.hh \
+ hb-ot-layout-private.hh \
+ hb-ot-map.cc \
+ hb-ot-map-private.hh \
+ hb-ot-shape.cc \
+ hb-ot-shape-complex-arabic.cc \
+ hb-ot-shape-complex-arabic-fallback.hh \
+ hb-ot-shape-complex-arabic-table.hh \
+ hb-ot-shape-complex-arabic-win1256.hh \
+ hb-ot-shape-complex-default.cc \
+ hb-ot-shape-complex-hangul.cc \
+ hb-ot-shape-complex-hebrew.cc \
+ hb-ot-shape-complex-indic.cc \
+ hb-ot-shape-complex-indic-machine.hh \
+ hb-ot-shape-complex-indic-private.hh \
+ hb-ot-shape-complex-indic-table.cc \
+ hb-ot-shape-complex-myanmar.cc \
+ hb-ot-shape-complex-myanmar-machine.hh \
+ hb-ot-shape-complex-sea.cc \
+ hb-ot-shape-complex-sea-machine.hh \
+ hb-ot-shape-complex-thai.cc \
+ hb-ot-shape-complex-tibetan.cc \
+ hb-ot-shape-complex-private.hh \
+ hb-ot-shape-normalize-private.hh \
+ hb-ot-shape-normalize.cc \
+ hb-ot-shape-fallback-private.hh \
+ hb-ot-shape-fallback.cc \
+ hb-ot-shape-private.hh \
+ $(NULL)
+HBHEADERS += \
+ hb-ot.h \
+ hb-ot-font.h \
+ hb-ot-layout.h \
+ hb-ot-shape.h \
+ hb-ot-tag.h \
+ $(NULL)
endif
if HAVE_FALLBACK
-HBSOURCES += $(HB_FALLBACK_sources)
+HBSOURCES += hb-fallback-shape.cc
endif
if HAVE_PTHREAD
HBCFLAGS += $(PTHREAD_CFLAGS)
-HBNONPCLIBS += $(PTHREAD_LIBS)
+HBLIBS += $(PTHREAD_LIBS)
endif
if HAVE_GLIB
HBCFLAGS += $(GLIB_CFLAGS)
HBLIBS += $(GLIB_LIBS)
-HBDEPS += $(GLIB_DEPS)
-HBSOURCES += $(HB_GLIB_sources)
-HBHEADERS += $(HB_GLIB_headers)
+HBSOURCES += hb-glib.cc
+HBHEADERS += hb-glib.h
endif
if HAVE_FREETYPE
HBCFLAGS += $(FREETYPE_CFLAGS)
HBLIBS += $(FREETYPE_LIBS)
-# XXX
-# The following creates a recursive dependency on FreeType if FreeType is
-# built with HarfBuzz support enabled. Newer pkg-config handles that just
-# fine but pkg-config 0.26 as shipped in Ubuntu 14.04 crashes. Remove
-# in a year or two, or otherwise work around it...
-#HBDEPS += $(FREETYPE_DEPS)
-HBSOURCES += $(HB_FT_sources)
-HBHEADERS += $(HB_FT_headers)
+HBSOURCES += hb-ft.cc
+HBHEADERS += hb-ft.h
endif
if HAVE_GRAPHITE2
HBCFLAGS += $(GRAPHITE2_CFLAGS)
HBLIBS += $(GRAPHITE2_LIBS)
-HBDEPS += $(GRAPHITE2_DEPS)
-HBSOURCES += $(HB_GRAPHITE2_sources)
-HBHEADERS += $(HB_GRAPHITE2_headers)
+HBSOURCES += hb-graphite2.cc
+HBHEADERS += hb-graphite2.h
endif
if HAVE_UNISCRIBE
HBCFLAGS += $(UNISCRIBE_CFLAGS)
-HBNONPCLIBS += $(UNISCRIBE_LIBS)
-HBSOURCES += $(HB_UNISCRIBE_sources)
-HBHEADERS += $(HB_UNISCRIBE_headers)
-endif
-
-if HAVE_DIRECTWRITE
-HBCFLAGS += $(DIRECTWRITE_CXXFLAGS)
-HBNONPCLIBS += $(DIRECTWRITE_LIBS)
-HBSOURCES += $(HB_DIRECTWRITE_sources)
-HBHEADERS += $(HB_DIRECTWRITE_headers)
+HBLIBS += $(UNISCRIBE_LIBS)
+HBSOURCES += hb-uniscribe.cc
+HBHEADERS += hb-uniscribe.h
endif
if HAVE_CORETEXT
HBCFLAGS += $(CORETEXT_CFLAGS)
-HBNONPCLIBS += $(CORETEXT_LIBS)
-HBSOURCES += $(HB_CORETEXT_sources)
-HBHEADERS += $(HB_CORETEXT_headers)
+HBLIBS += $(CORETEXT_LIBS)
+HBSOURCES += hb-coretext.cc
+HBHEADERS += hb-coretext.h
endif
if HAVE_UCDN
SUBDIRS += hb-ucdn
HBCFLAGS += -I$(srcdir)/hb-ucdn
HBLIBS += hb-ucdn/libhb-ucdn.la
-HBSOURCES += $(HB_UCDN_sources)
+HBSOURCES += hb-ucdn.cc
endif
DIST_SUBDIRS += hb-ucdn
# Put the library together
-HBLIBS += $(HBNONPCLIBS)
-
if OS_WIN32
export_symbols = -export-symbols harfbuzz.def
harfbuzz_def_dependency = harfbuzz.def
@@ -129,59 +203,35 @@ pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = harfbuzz.pc
EXTRA_DIST += harfbuzz.pc.in
-FUZZING_CPPFLAGS= \
- -DHB_NDEBUG \
- -DHB_MAX_NESTING_LEVEL=3 \
- -DHB_SANITIZE_MAX_EDITS=3 \
- -DHB_BUFFER_MAX_EXPANSION_FACTOR=3 \
- -DHB_BUFFER_MAX_LEN_MIN=8 \
- -DHB_BUFFER_MAX_LEN_DEFAULT=128 \
- $(NULL)
-EXTRA_LTLIBRARIES = libharfbuzz-fuzzing.la
-libharfbuzz_fuzzing_la_LINK = $(libharfbuzz_la_LINK)
-libharfbuzz_fuzzing_la_SOURCES = $(libharfbuzz_la_SOURCES)
-libharfbuzz_fuzzing_la_CPPFLAGS = $(libharfbuzz_la_CPPFLAGS) $(FUZZING_CPPFLAGS)
-libharfbuzz_fuzzing_la_LDFLAGS = $(libharfbuzz_la_LDFLAGS)
-libharfbuzz_fuzzing_la_LIBADD = $(libharfbuzz_la_LIBADD)
-EXTRA_libharfbuzz_fuzzing_la_DEPENDENCIES = $(EXTRA_libharfbuzz_la_DEPENDENCIES)
-CLEANFILES += libharfbuzz-fuzzing.la
-
if HAVE_ICU
-if HAVE_ICU_BUILTIN
-HBCFLAGS += $(ICU_CFLAGS)
-HBLIBS += $(ICU_LIBS)
-HBSOURCES += $(HB_ICU_sources)
-HBHEADERS += $(HB_ICU_headers)
-else
lib_LTLIBRARIES += libharfbuzz-icu.la
-libharfbuzz_icu_la_SOURCES = $(HB_ICU_sources)
+libharfbuzz_icu_la_SOURCES = hb-icu.cc
libharfbuzz_icu_la_CPPFLAGS = $(ICU_CFLAGS)
libharfbuzz_icu_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined
libharfbuzz_icu_la_LIBADD = $(ICU_LIBS) libharfbuzz.la
-pkginclude_HEADERS += $(HB_ICU_headers)
+pkginclude_HEADERS += hb-icu.h
pkgconfig_DATA += harfbuzz-icu.pc
endif
-endif
EXTRA_DIST += harfbuzz-icu.pc.in
if HAVE_GOBJECT
lib_LTLIBRARIES += libharfbuzz-gobject.la
-libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_sources)
-nodist_libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_ENUM_sources)
+libharfbuzz_gobject_la_SOURCES = hb-gobject-structs.cc
+nodist_libharfbuzz_gobject_la_SOURCES = hb-gobject-enums.cc
libharfbuzz_gobject_la_CPPFLAGS = $(GOBJECT_CFLAGS)
libharfbuzz_gobject_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined
libharfbuzz_gobject_la_LIBADD = $(GOBJECT_LIBS) libharfbuzz.la
-pkginclude_HEADERS += $(HB_GOBJECT_headers)
-nodist_pkginclude_HEADERS += $(HB_GOBJECT_ENUM_headers)
+pkginclude_HEADERS += hb-gobject.h hb-gobject-structs.h
+nodist_pkginclude_HEADERS += hb-gobject-enums.h
pkgconfig_DATA += harfbuzz-gobject.pc
BUILT_SOURCES += \
- $(HB_GOBJECT_ENUM_sources) \
- $(HB_GOBJECT_ENUM_headers) \
+ hb-gobject-enums.cc \
+ hb-gobject-enums.h \
$(NULL)
DISTCLEANFILES += \
- $(HB_GOBJECT_ENUM_sources) \
- $(HB_GOBJECT_ENUM_headers) \
+ hb-gobject-enums.cc \
+ hb-gobject-enums.h \
$(NULL)
hb-gobject-enums.%: hb-gobject-enums.%.tmpl $(HBHEADERS)
$(AM_V_GEN) $(GLIB_MKENUMS) \
@@ -203,8 +253,6 @@ EXTRA_DIST += \
-e 's@%exec_prefix%@$(exec_prefix)@g' \
-e 's@%libdir%@$(libdir)@g' \
-e 's@%includedir%@$(includedir)@g' \
- -e 's@%libs_private%@$(HBNONPCLIBS)@g' \
- -e 's@%requires_private%@$(HBDEPS)@g' \
-e 's@%VERSION%@$(VERSION)@g' \
"$<" > "$@" \
|| ($(RM) "$@"; false)
@@ -219,7 +267,7 @@ harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS)
$(EGREP) '^hb_.* \(' | \
sed -e 's/ (.*//' | \
LANG=C sort; \
- echo LIBRARY libharfbuzz-0.dll; \
+ echo LIBRARY libharfbuzz-$(HB_VERSION_MAJOR).dll; \
) >"$@"
@ ! grep -q hb_ERROR "$@" \
|| ($(RM) "$@"; false)
@@ -228,34 +276,29 @@ harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS)
GENERATORS = \
gen-arabic-table.py \
gen-indic-table.py \
- gen-use-table.py \
$(NULL)
EXTRA_DIST += $(GENERATORS)
-unicode-tables: arabic-table indic-table use-table
-
-arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
- $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-arabic-table.hh \
- || ($(RM) hb-ot-shape-complex-arabic-table.hh; false)
+unicode-tables: arabic-table indic-table
-indic-table: gen-indic-table.py IndicSyllabicCategory-7.0.0.txt IndicMatraCategory-7.0.0.txt Blocks.txt
+indic-table: gen-indic-table.py IndicSyllabicCategory.txt IndicMatraCategory.txt Blocks.txt
$(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-indic-table.cc \
|| ($(RM) hb-ot-shape-complex-indic-table.cc; false)
-use-table: gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt
- $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-use-table.cc \
- || ($(RM) hb-ot-shape-complex-use-table.cc; false)
+arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
+ $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-arabic-table.hh \
+ || ($(RM) hb-ot-shape-complex-arabic-table.hh; false)
built-sources: $(BUILT_SOURCES)
-.PHONY: unicode-tables arabic-table indic-table use-table built-sources
+.PHONY: unicode-tables arabic-table indic-table built-sources
RAGEL_GENERATED = \
$(srcdir)/hb-buffer-deserialize-json.hh \
$(srcdir)/hb-buffer-deserialize-text.hh \
$(srcdir)/hb-ot-shape-complex-indic-machine.hh \
$(srcdir)/hb-ot-shape-complex-myanmar-machine.hh \
- $(srcdir)/hb-ot-shape-complex-use-machine.hh \
+ $(srcdir)/hb-ot-shape-complex-sea-machine.hh \
$(NULL)
BUILT_SOURCES += $(RAGEL_GENERATED)
EXTRA_DIST += \
@@ -263,7 +306,7 @@ EXTRA_DIST += \
hb-buffer-deserialize-text.rl \
hb-ot-shape-complex-indic-machine.rl \
hb-ot-shape-complex-myanmar-machine.rl \
- hb-ot-shape-complex-use-machine.rl \
+ hb-ot-shape-complex-sea-machine.rl \
$(NULL)
MAINTAINERCLEANFILES += $(RAGEL_GENERATED)
$(srcdir)/%.hh: $(srcdir)/%.rl
@@ -309,14 +352,7 @@ dist_check_SCRIPTS = \
check-symbols.sh \
$(NULL)
-check_PROGRAMS = \
- test-ot-tag \
- $(NULL)
-test_ot_tag_SOURCES = hb-ot-tag.cc
-test_ot_tag_CPPFLAGS = $(HBCFLAGS) -DMAIN
-test_ot_tag_LDADD = libharfbuzz.la $(HBLIBS)
-
-TESTS = $(dist_check_SCRIPTS) $(check_PROGRAMS)
+TESTS = $(dist_check_SCRIPTS)
TESTS_ENVIRONMENT = \
srcdir="$(srcdir)" \
MAKE="$(MAKE) $(AM_MAKEFLAGS)" \
@@ -327,7 +363,7 @@ TESTS_ENVIRONMENT = \
if HAVE_INTROSPECTION
-include $(INTROSPECTION_MAKEFILE)
-INTROSPECTION_GIRS = HarfBuzz-0.0.gir # What does the 0 mean anyway?!
+INTROSPECTION_GIRS = HarfBuzz-$(HB_VERSION_MAJOR).0.gir # What does the 0 mean anyway?!
INTROSPECTION_SCANNER_ARGS = -I$(srcdir) -n hb --identifier-prefix=hb_ --warn-all
INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
INTROSPECTION_SCANNER_ENV = CC="$(CC)"
@@ -343,7 +379,6 @@ HarfBuzz_0_0_gir_CFLAGS = \
-DHB_OT_H_IN \
-DHB_GOBJECT_H \
-DHB_GOBJECT_H_IN \
- -DHB_EXTERN= \
$(NULL)
HarfBuzz_0_0_gir_LIBS = \
libharfbuzz.la \
@@ -353,10 +388,10 @@ HarfBuzz_0_0_gir_FILES = \
$(HBHEADERS) \
$(HBNODISTHEADERS) \
$(HBSOURCES) \
- $(HB_GOBJECT_ENUM_sources) \
- $(HB_GOBJECT_ENUM_headers) \
- $(HB_GOBJECT_sources) \
- $(HB_GOBJECT_STRUCTS_headers) \
+ hb-gobject-enums.cc \
+ hb-gobject-enums.h \
+ hb-gobject-structs.cc \
+ hb-gobject-structs.h \
$(NULL)
girdir = $(datadir)/gir-1.0
diff --git a/src/Makefile.in b/src/Makefile.in
index 7094614..bd923e6 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -83,80 +83,107 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.sources $(srcdir)/Makefile.in \
- $(srcdir)/Makefile.am $(srcdir)/hb-version.h.in \
- $(dist_check_SCRIPTS) $(top_srcdir)/depcomp \
- $(am__pkginclude_HEADERS_DIST) $(top_srcdir)/test-driver
-@HAVE_OT_TRUE@am__append_1 = $(HB_OT_sources)
-@HAVE_OT_TRUE@am__append_2 = $(HB_OT_headers)
-@HAVE_FALLBACK_TRUE@am__append_3 = $(HB_FALLBACK_sources)
+@HAVE_OT_TRUE@am__append_1 = \
+@HAVE_OT_TRUE@ hb-ot-font.cc \
+@HAVE_OT_TRUE@ hb-ot-layout.cc \
+@HAVE_OT_TRUE@ hb-ot-layout-common-private.hh \
+@HAVE_OT_TRUE@ hb-ot-layout-gdef-table.hh \
+@HAVE_OT_TRUE@ hb-ot-layout-gpos-table.hh \
+@HAVE_OT_TRUE@ hb-ot-layout-gsubgpos-private.hh \
+@HAVE_OT_TRUE@ hb-ot-layout-gsub-table.hh \
+@HAVE_OT_TRUE@ hb-ot-layout-jstf-table.hh \
+@HAVE_OT_TRUE@ hb-ot-layout-private.hh \
+@HAVE_OT_TRUE@ hb-ot-map.cc \
+@HAVE_OT_TRUE@ hb-ot-map-private.hh \
+@HAVE_OT_TRUE@ hb-ot-shape.cc \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-arabic.cc \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-arabic-fallback.hh \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-arabic-table.hh \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-arabic-win1256.hh \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-default.cc \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-hangul.cc \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-hebrew.cc \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-indic.cc \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-indic-machine.hh \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-indic-private.hh \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-indic-table.cc \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-myanmar.cc \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-myanmar-machine.hh \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-sea.cc \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-sea-machine.hh \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-thai.cc \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-tibetan.cc \
+@HAVE_OT_TRUE@ hb-ot-shape-complex-private.hh \
+@HAVE_OT_TRUE@ hb-ot-shape-normalize-private.hh \
+@HAVE_OT_TRUE@ hb-ot-shape-normalize.cc \
+@HAVE_OT_TRUE@ hb-ot-shape-fallback-private.hh \
+@HAVE_OT_TRUE@ hb-ot-shape-fallback.cc \
+@HAVE_OT_TRUE@ hb-ot-shape-private.hh \
+@HAVE_OT_TRUE@ $(NULL)
+
+@HAVE_OT_TRUE@am__append_2 = \
+@HAVE_OT_TRUE@ hb-ot.h \
+@HAVE_OT_TRUE@ hb-ot-font.h \
+@HAVE_OT_TRUE@ hb-ot-layout.h \
+@HAVE_OT_TRUE@ hb-ot-shape.h \
+@HAVE_OT_TRUE@ hb-ot-tag.h \
+@HAVE_OT_TRUE@ $(NULL)
+
+@HAVE_FALLBACK_TRUE@am__append_3 = hb-fallback-shape.cc
@HAVE_PTHREAD_TRUE@am__append_4 = $(PTHREAD_CFLAGS)
@HAVE_PTHREAD_TRUE@am__append_5 = $(PTHREAD_LIBS)
@HAVE_GLIB_TRUE@am__append_6 = $(GLIB_CFLAGS)
@HAVE_GLIB_TRUE@am__append_7 = $(GLIB_LIBS)
-@HAVE_GLIB_TRUE@am__append_8 = $(GLIB_DEPS)
-@HAVE_GLIB_TRUE@am__append_9 = $(HB_GLIB_sources)
-@HAVE_GLIB_TRUE@am__append_10 = $(HB_GLIB_headers)
-@HAVE_FREETYPE_TRUE@am__append_11 = $(FREETYPE_CFLAGS)
-@HAVE_FREETYPE_TRUE@am__append_12 = $(FREETYPE_LIBS)
-# XXX
-# The following creates a recursive dependency on FreeType if FreeType is
-# built with HarfBuzz support enabled. Newer pkg-config handles that just
-# fine but pkg-config 0.26 as shipped in Ubuntu 14.04 crashes. Remove
-# in a year or two, or otherwise work around it...
-#HBDEPS += $(FREETYPE_DEPS)
-@HAVE_FREETYPE_TRUE@am__append_13 = $(HB_FT_sources)
-@HAVE_FREETYPE_TRUE@am__append_14 = $(HB_FT_headers)
-@HAVE_GRAPHITE2_TRUE@am__append_15 = $(GRAPHITE2_CFLAGS)
-@HAVE_GRAPHITE2_TRUE@am__append_16 = $(GRAPHITE2_LIBS)
-@HAVE_GRAPHITE2_TRUE@am__append_17 = $(GRAPHITE2_DEPS)
-@HAVE_GRAPHITE2_TRUE@am__append_18 = $(HB_GRAPHITE2_sources)
-@HAVE_GRAPHITE2_TRUE@am__append_19 = $(HB_GRAPHITE2_headers)
-@HAVE_UNISCRIBE_TRUE@am__append_20 = $(UNISCRIBE_CFLAGS)
-@HAVE_UNISCRIBE_TRUE@am__append_21 = $(UNISCRIBE_LIBS)
-@HAVE_UNISCRIBE_TRUE@am__append_22 = $(HB_UNISCRIBE_sources)
-@HAVE_UNISCRIBE_TRUE@am__append_23 = $(HB_UNISCRIBE_headers)
-@HAVE_DIRECTWRITE_TRUE@am__append_24 = $(DIRECTWRITE_CXXFLAGS)
-@HAVE_DIRECTWRITE_TRUE@am__append_25 = $(DIRECTWRITE_LIBS)
-@HAVE_DIRECTWRITE_TRUE@am__append_26 = $(HB_DIRECTWRITE_sources)
-@HAVE_DIRECTWRITE_TRUE@am__append_27 = $(HB_DIRECTWRITE_headers)
-@HAVE_CORETEXT_TRUE@am__append_28 = $(CORETEXT_CFLAGS)
-@HAVE_CORETEXT_TRUE@am__append_29 = $(CORETEXT_LIBS)
-@HAVE_CORETEXT_TRUE@am__append_30 = $(HB_CORETEXT_sources)
-@HAVE_CORETEXT_TRUE@am__append_31 = $(HB_CORETEXT_headers)
-@HAVE_UCDN_TRUE@am__append_32 = hb-ucdn
-@HAVE_UCDN_TRUE@am__append_33 = -I$(srcdir)/hb-ucdn
-@HAVE_UCDN_TRUE@am__append_34 = hb-ucdn/libhb-ucdn.la
-@HAVE_UCDN_TRUE@am__append_35 = $(HB_UCDN_sources)
-@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@am__append_36 = $(ICU_CFLAGS)
-@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@am__append_37 = $(ICU_LIBS)
-@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@am__append_38 = $(HB_ICU_sources)
-@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@am__append_39 = $(HB_ICU_headers)
-@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@am__append_40 = libharfbuzz-icu.la
-@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@am__append_41 = $(HB_ICU_headers)
-@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@am__append_42 = harfbuzz-icu.pc
-@HAVE_GOBJECT_TRUE@am__append_43 = libharfbuzz-gobject.la
-@HAVE_GOBJECT_TRUE@am__append_44 = $(HB_GOBJECT_headers)
-@HAVE_GOBJECT_TRUE@am__append_45 = $(HB_GOBJECT_ENUM_headers)
-@HAVE_GOBJECT_TRUE@am__append_46 = harfbuzz-gobject.pc
-@HAVE_GOBJECT_TRUE@am__append_47 = \
-@HAVE_GOBJECT_TRUE@ $(HB_GOBJECT_ENUM_sources) \
-@HAVE_GOBJECT_TRUE@ $(HB_GOBJECT_ENUM_headers) \
+@HAVE_GLIB_TRUE@am__append_8 = hb-glib.cc
+@HAVE_GLIB_TRUE@am__append_9 = hb-glib.h
+@HAVE_FREETYPE_TRUE@am__append_10 = $(FREETYPE_CFLAGS)
+@HAVE_FREETYPE_TRUE@am__append_11 = $(FREETYPE_LIBS)
+@HAVE_FREETYPE_TRUE@am__append_12 = hb-ft.cc
+@HAVE_FREETYPE_TRUE@am__append_13 = hb-ft.h
+@HAVE_GRAPHITE2_TRUE@am__append_14 = $(GRAPHITE2_CFLAGS)
+@HAVE_GRAPHITE2_TRUE@am__append_15 = $(GRAPHITE2_LIBS)
+@HAVE_GRAPHITE2_TRUE@am__append_16 = hb-graphite2.cc
+@HAVE_GRAPHITE2_TRUE@am__append_17 = hb-graphite2.h
+@HAVE_UNISCRIBE_TRUE@am__append_18 = $(UNISCRIBE_CFLAGS)
+@HAVE_UNISCRIBE_TRUE@am__append_19 = $(UNISCRIBE_LIBS)
+@HAVE_UNISCRIBE_TRUE@am__append_20 = hb-uniscribe.cc
+@HAVE_UNISCRIBE_TRUE@am__append_21 = hb-uniscribe.h
+@HAVE_CORETEXT_TRUE@am__append_22 = $(CORETEXT_CFLAGS)
+@HAVE_CORETEXT_TRUE@am__append_23 = $(CORETEXT_LIBS)
+@HAVE_CORETEXT_TRUE@am__append_24 = hb-coretext.cc
+@HAVE_CORETEXT_TRUE@am__append_25 = hb-coretext.h
+@HAVE_UCDN_TRUE@am__append_26 = hb-ucdn
+@HAVE_UCDN_TRUE@am__append_27 = -I$(srcdir)/hb-ucdn
+@HAVE_UCDN_TRUE@am__append_28 = hb-ucdn/libhb-ucdn.la
+@HAVE_UCDN_TRUE@am__append_29 = hb-ucdn.cc
+@HAVE_ICU_TRUE@am__append_30 = libharfbuzz-icu.la
+@HAVE_ICU_TRUE@am__append_31 = hb-icu.h
+@HAVE_ICU_TRUE@am__append_32 = harfbuzz-icu.pc
+@HAVE_GOBJECT_TRUE@am__append_33 = libharfbuzz-gobject.la
+@HAVE_GOBJECT_TRUE@am__append_34 = hb-gobject.h hb-gobject-structs.h
+@HAVE_GOBJECT_TRUE@am__append_35 = hb-gobject-enums.h
+@HAVE_GOBJECT_TRUE@am__append_36 = harfbuzz-gobject.pc
+@HAVE_GOBJECT_TRUE@am__append_37 = \
+@HAVE_GOBJECT_TRUE@ hb-gobject-enums.cc \
+@HAVE_GOBJECT_TRUE@ hb-gobject-enums.h \
@HAVE_GOBJECT_TRUE@ $(NULL)
-@HAVE_GOBJECT_TRUE@am__append_48 = \
-@HAVE_GOBJECT_TRUE@ $(HB_GOBJECT_ENUM_sources) \
-@HAVE_GOBJECT_TRUE@ $(HB_GOBJECT_ENUM_headers) \
+@HAVE_GOBJECT_TRUE@am__append_38 = \
+@HAVE_GOBJECT_TRUE@ hb-gobject-enums.cc \
+@HAVE_GOBJECT_TRUE@ hb-gobject-enums.h \
@HAVE_GOBJECT_TRUE@ $(NULL)
noinst_PROGRAMS = main$(EXEEXT) test$(EXEEXT) \
test-buffer-serialize$(EXEEXT) test-size-params$(EXEEXT) \
test-would-substitute$(EXEEXT) $(am__EXEEXT_1)
bin_PROGRAMS =
-check_PROGRAMS = test-ot-tag$(EXEEXT) $(am__EXEEXT_1)
-TESTS = $(am__EXEEXT_2) $(check_PROGRAMS)
-@HAVE_INTROSPECTION_TRUE@am__append_49 = $(gir_DATA) $(typelib_DATA)
+TESTS = $(am__EXEEXT_2)
+@HAVE_INTROSPECTION_TRUE@am__append_39 = $(gir_DATA) $(typelib_DATA)
subdir = src
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(srcdir)/hb-version.h.in $(dist_check_SCRIPTS) \
+ $(top_srcdir)/depcomp $(am__pkginclude_HEADERS_DIST) \
+ $(top_srcdir)/test-driver
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
$(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \
@@ -202,151 +229,12 @@ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
"$(DESTDIR)$(pkgincludedir)"
LTLIBRARIES = $(lib_LTLIBRARIES)
am__DEPENDENCIES_1 =
-@HAVE_GLIB_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
-@HAVE_FREETYPE_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1)
-@HAVE_GRAPHITE2_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1)
-@HAVE_PTHREAD_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1)
-@HAVE_UNISCRIBE_TRUE@am__DEPENDENCIES_6 = $(am__DEPENDENCIES_1)
-@HAVE_DIRECTWRITE_TRUE@am__DEPENDENCIES_7 = $(am__DEPENDENCIES_1)
-@HAVE_CORETEXT_TRUE@am__DEPENDENCIES_8 = $(am__DEPENDENCIES_1)
-am__DEPENDENCIES_9 = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_6) \
- $(am__DEPENDENCIES_7) $(am__DEPENDENCIES_8)
-@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@am__DEPENDENCIES_10 = \
-@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@ $(am__DEPENDENCIES_1)
-am__DEPENDENCIES_11 = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \
- $(am__DEPENDENCIES_4) $(am__append_34) $(am__DEPENDENCIES_9) \
- $(am__DEPENDENCIES_10)
-am__DEPENDENCIES_12 = $(am__DEPENDENCIES_11)
-libharfbuzz_fuzzing_la_DEPENDENCIES = $(am__DEPENDENCIES_12)
-am__libharfbuzz_fuzzing_la_SOURCES_DIST = hb-atomic-private.hh \
- hb-blob.cc hb-buffer-deserialize-json.hh \
- hb-buffer-deserialize-text.hh hb-buffer-private.hh \
- hb-buffer-serialize.cc hb-buffer.cc hb-cache-private.hh \
- hb-common.cc hb-face-private.hh hb-face.cc hb-font-private.hh \
- hb-font.cc hb-mutex-private.hh hb-object-private.hh \
- hb-open-file-private.hh hb-open-type-private.hh \
- hb-ot-cmap-table.hh hb-ot-glyf-table.hh hb-ot-head-table.hh \
- hb-ot-hhea-table.hh hb-ot-hmtx-table.hh hb-ot-maxp-table.hh \
- hb-ot-name-table.hh hb-ot-os2-table.hh hb-ot-post-table.hh \
- hb-ot-tag.cc hb-private.hh hb-set-private.hh hb-set.cc \
- hb-shape.cc hb-shape-plan-private.hh hb-shape-plan.cc \
- hb-shaper-list.hh hb-shaper-impl-private.hh \
- hb-shaper-private.hh hb-shaper.cc hb-unicode-private.hh \
- hb-unicode.cc hb-utf-private.hh hb-warning.cc hb-ot-font.cc \
- hb-ot-layout.cc hb-ot-layout-common-private.hh \
- hb-ot-layout-gdef-table.hh hb-ot-layout-gpos-table.hh \
- hb-ot-layout-gsubgpos-private.hh hb-ot-layout-gsub-table.hh \
- hb-ot-layout-jstf-table.hh hb-ot-layout-private.hh \
- hb-ot-map.cc hb-ot-map-private.hh hb-ot-shape.cc \
- hb-ot-shape-complex-arabic.cc \
- hb-ot-shape-complex-arabic-fallback.hh \
- hb-ot-shape-complex-arabic-private.hh \
- hb-ot-shape-complex-arabic-table.hh \
- hb-ot-shape-complex-arabic-win1256.hh \
- hb-ot-shape-complex-default.cc hb-ot-shape-complex-hangul.cc \
- hb-ot-shape-complex-hebrew.cc hb-ot-shape-complex-indic.cc \
- hb-ot-shape-complex-indic-machine.hh \
- hb-ot-shape-complex-indic-private.hh \
- hb-ot-shape-complex-indic-table.cc \
- hb-ot-shape-complex-myanmar.cc \
- hb-ot-shape-complex-myanmar-machine.hh \
- hb-ot-shape-complex-thai.cc hb-ot-shape-complex-tibetan.cc \
- hb-ot-shape-complex-use.cc hb-ot-shape-complex-use-machine.hh \
- hb-ot-shape-complex-use-private.hh \
- hb-ot-shape-complex-use-table.cc \
- hb-ot-shape-complex-private.hh \
- hb-ot-shape-normalize-private.hh hb-ot-shape-normalize.cc \
- hb-ot-shape-fallback-private.hh hb-ot-shape-fallback.cc \
- hb-ot-shape-private.hh hb-fallback-shape.cc hb-glib.cc \
- hb-ft.cc hb-graphite2.cc hb-uniscribe.cc hb-directwrite.cc \
- hb-coretext.cc hb-ucdn.cc hb-icu.cc hb.h hb-blob.h hb-buffer.h \
- hb-common.h hb-deprecated.h hb-face.h hb-font.h hb-set.h \
- hb-shape.h hb-shape-plan.h hb-unicode.h hb-ot.h hb-ot-font.h \
- hb-ot-layout.h hb-ot-shape.h hb-ot-tag.h hb-glib.h hb-ft.h \
- hb-graphite2.h hb-uniscribe.h hb-directwrite.h hb-coretext.h \
- hb-icu.h hb-version.h
-am__objects_1 =
-am__objects_2 = libharfbuzz_fuzzing_la-hb-blob.lo \
- libharfbuzz_fuzzing_la-hb-buffer-serialize.lo \
- libharfbuzz_fuzzing_la-hb-buffer.lo \
- libharfbuzz_fuzzing_la-hb-common.lo \
- libharfbuzz_fuzzing_la-hb-face.lo \
- libharfbuzz_fuzzing_la-hb-font.lo \
- libharfbuzz_fuzzing_la-hb-ot-tag.lo \
- libharfbuzz_fuzzing_la-hb-set.lo \
- libharfbuzz_fuzzing_la-hb-shape.lo \
- libharfbuzz_fuzzing_la-hb-shape-plan.lo \
- libharfbuzz_fuzzing_la-hb-shaper.lo \
- libharfbuzz_fuzzing_la-hb-unicode.lo \
- libharfbuzz_fuzzing_la-hb-warning.lo $(am__objects_1)
-am__objects_3 = libharfbuzz_fuzzing_la-hb-ot-font.lo \
- libharfbuzz_fuzzing_la-hb-ot-layout.lo \
- libharfbuzz_fuzzing_la-hb-ot-map.lo \
- libharfbuzz_fuzzing_la-hb-ot-shape.lo \
- libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.lo \
- libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.lo \
- libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.lo \
- libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.lo \
- libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.lo \
- libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.lo \
- libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.lo \
- libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.lo \
- libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.lo \
- libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.lo \
- libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.lo \
- libharfbuzz_fuzzing_la-hb-ot-shape-normalize.lo \
- libharfbuzz_fuzzing_la-hb-ot-shape-fallback.lo \
- $(am__objects_1)
-@HAVE_OT_TRUE@am__objects_4 = $(am__objects_3)
-am__objects_5 = libharfbuzz_fuzzing_la-hb-fallback-shape.lo
-@HAVE_FALLBACK_TRUE@am__objects_6 = $(am__objects_5)
-am__objects_7 = libharfbuzz_fuzzing_la-hb-glib.lo
-@HAVE_GLIB_TRUE@am__objects_8 = $(am__objects_7)
-am__objects_9 = libharfbuzz_fuzzing_la-hb-ft.lo
-@HAVE_FREETYPE_TRUE@am__objects_10 = $(am__objects_9)
-am__objects_11 = libharfbuzz_fuzzing_la-hb-graphite2.lo
-@HAVE_GRAPHITE2_TRUE@am__objects_12 = $(am__objects_11)
-am__objects_13 = libharfbuzz_fuzzing_la-hb-uniscribe.lo
-@HAVE_UNISCRIBE_TRUE@am__objects_14 = $(am__objects_13)
-am__objects_15 = libharfbuzz_fuzzing_la-hb-directwrite.lo
-@HAVE_DIRECTWRITE_TRUE@am__objects_16 = $(am__objects_15)
-am__objects_17 = libharfbuzz_fuzzing_la-hb-coretext.lo
-@HAVE_CORETEXT_TRUE@am__objects_18 = $(am__objects_17)
-am__objects_19 = libharfbuzz_fuzzing_la-hb-ucdn.lo
-@HAVE_UCDN_TRUE@am__objects_20 = $(am__objects_19)
-am__objects_21 = libharfbuzz_fuzzing_la-hb-icu.lo
-@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@am__objects_22 = \
-@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@ $(am__objects_21)
-am__objects_23 = $(am__objects_2) $(am__objects_4) $(am__objects_6) \
- $(am__objects_8) $(am__objects_10) $(am__objects_12) \
- $(am__objects_14) $(am__objects_16) $(am__objects_18) \
- $(am__objects_20) $(am__objects_22)
-am__objects_24 = $(am__objects_1)
-@HAVE_OT_TRUE@am__objects_25 = $(am__objects_24)
-@HAVE_GLIB_TRUE@am__objects_26 = $(am__objects_1)
-@HAVE_FREETYPE_TRUE@am__objects_27 = $(am__objects_1)
-@HAVE_GRAPHITE2_TRUE@am__objects_28 = $(am__objects_1)
-@HAVE_UNISCRIBE_TRUE@am__objects_29 = $(am__objects_1)
-@HAVE_DIRECTWRITE_TRUE@am__objects_30 = $(am__objects_1)
-@HAVE_CORETEXT_TRUE@am__objects_31 = $(am__objects_1)
-@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@am__objects_32 = \
-@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@ $(am__objects_1)
-am__objects_33 = $(am__objects_24) $(am__objects_25) $(am__objects_26) \
- $(am__objects_27) $(am__objects_28) $(am__objects_29) \
- $(am__objects_30) $(am__objects_31) $(am__objects_32)
-am__objects_34 = $(am__objects_24)
-am__objects_35 = $(am__objects_23) $(am__objects_33) $(am__objects_34)
-am_libharfbuzz_fuzzing_la_OBJECTS = $(am__objects_35)
-libharfbuzz_fuzzing_la_OBJECTS = $(am_libharfbuzz_fuzzing_la_OBJECTS)
@HAVE_GOBJECT_TRUE@libharfbuzz_gobject_la_DEPENDENCIES = \
@HAVE_GOBJECT_TRUE@ $(am__DEPENDENCIES_1) libharfbuzz.la
am__libharfbuzz_gobject_la_SOURCES_DIST = hb-gobject-structs.cc
-am__objects_36 = libharfbuzz_gobject_la-hb-gobject-structs.lo
-@HAVE_GOBJECT_TRUE@am_libharfbuzz_gobject_la_OBJECTS = \
-@HAVE_GOBJECT_TRUE@ $(am__objects_36)
-am__objects_37 = libharfbuzz_gobject_la-hb-gobject-enums.lo
+@HAVE_GOBJECT_TRUE@am_libharfbuzz_gobject_la_OBJECTS = libharfbuzz_gobject_la-hb-gobject-structs.lo
@HAVE_GOBJECT_TRUE@nodist_libharfbuzz_gobject_la_OBJECTS = \
-@HAVE_GOBJECT_TRUE@ $(am__objects_37)
+@HAVE_GOBJECT_TRUE@ libharfbuzz_gobject_la-hb-gobject-enums.lo
libharfbuzz_gobject_la_OBJECTS = $(am_libharfbuzz_gobject_la_OBJECTS) \
$(nodist_libharfbuzz_gobject_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
@@ -358,21 +246,27 @@ libharfbuzz_gobject_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
$(AM_CXXFLAGS) $(CXXFLAGS) $(libharfbuzz_gobject_la_LDFLAGS) \
$(LDFLAGS) -o $@
@HAVE_GOBJECT_TRUE@am_libharfbuzz_gobject_la_rpath = -rpath $(libdir)
-@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@libharfbuzz_icu_la_DEPENDENCIES = \
-@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@ $(am__DEPENDENCIES_1) \
-@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@ libharfbuzz.la
+@HAVE_ICU_TRUE@libharfbuzz_icu_la_DEPENDENCIES = \
+@HAVE_ICU_TRUE@ $(am__DEPENDENCIES_1) libharfbuzz.la
am__libharfbuzz_icu_la_SOURCES_DIST = hb-icu.cc
-am__objects_38 = libharfbuzz_icu_la-hb-icu.lo
-@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@am_libharfbuzz_icu_la_OBJECTS = \
-@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@ $(am__objects_38)
+@HAVE_ICU_TRUE@am_libharfbuzz_icu_la_OBJECTS = \
+@HAVE_ICU_TRUE@ libharfbuzz_icu_la-hb-icu.lo
libharfbuzz_icu_la_OBJECTS = $(am_libharfbuzz_icu_la_OBJECTS)
libharfbuzz_icu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
$(AM_CXXFLAGS) $(CXXFLAGS) $(libharfbuzz_icu_la_LDFLAGS) \
$(LDFLAGS) -o $@
-@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@am_libharfbuzz_icu_la_rpath = \
-@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@ -rpath $(libdir)
-libharfbuzz_la_DEPENDENCIES = $(am__DEPENDENCIES_11)
+@HAVE_ICU_TRUE@am_libharfbuzz_icu_la_rpath = -rpath $(libdir)
+@HAVE_PTHREAD_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
+@HAVE_GLIB_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1)
+@HAVE_FREETYPE_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1)
+@HAVE_GRAPHITE2_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1)
+@HAVE_UNISCRIBE_TRUE@am__DEPENDENCIES_6 = $(am__DEPENDENCIES_1)
+@HAVE_CORETEXT_TRUE@am__DEPENDENCIES_7 = $(am__DEPENDENCIES_1)
+am__DEPENDENCIES_8 = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \
+ $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_5) \
+ $(am__DEPENDENCIES_6) $(am__DEPENDENCIES_7) $(am__append_28)
+libharfbuzz_la_DEPENDENCIES = $(am__DEPENDENCIES_8)
am__libharfbuzz_la_SOURCES_DIST = hb-atomic-private.hh hb-blob.cc \
hb-buffer-deserialize-json.hh hb-buffer-deserialize-text.hh \
hb-buffer-private.hh hb-buffer-serialize.cc hb-buffer.cc \
@@ -380,9 +274,8 @@ am__libharfbuzz_la_SOURCES_DIST = hb-atomic-private.hh hb-blob.cc \
hb-font-private.hh hb-font.cc hb-mutex-private.hh \
hb-object-private.hh hb-open-file-private.hh \
hb-open-type-private.hh hb-ot-cmap-table.hh \
- hb-ot-glyf-table.hh hb-ot-head-table.hh hb-ot-hhea-table.hh \
- hb-ot-hmtx-table.hh hb-ot-maxp-table.hh hb-ot-name-table.hh \
- hb-ot-os2-table.hh hb-ot-post-table.hh hb-ot-tag.cc \
+ hb-ot-head-table.hh hb-ot-hhea-table.hh hb-ot-hmtx-table.hh \
+ hb-ot-maxp-table.hh hb-ot-name-table.hh hb-ot-tag.cc \
hb-private.hh hb-set-private.hh hb-set.cc hb-shape.cc \
hb-shape-plan-private.hh hb-shape-plan.cc hb-shaper-list.hh \
hb-shaper-impl-private.hh hb-shaper-private.hh hb-shaper.cc \
@@ -394,7 +287,6 @@ am__libharfbuzz_la_SOURCES_DIST = hb-atomic-private.hh hb-blob.cc \
hb-ot-layout-private.hh hb-ot-map.cc hb-ot-map-private.hh \
hb-ot-shape.cc hb-ot-shape-complex-arabic.cc \
hb-ot-shape-complex-arabic-fallback.hh \
- hb-ot-shape-complex-arabic-private.hh \
hb-ot-shape-complex-arabic-table.hh \
hb-ot-shape-complex-arabic-win1256.hh \
hb-ot-shape-complex-default.cc hb-ot-shape-complex-hangul.cc \
@@ -404,98 +296,86 @@ am__libharfbuzz_la_SOURCES_DIST = hb-atomic-private.hh hb-blob.cc \
hb-ot-shape-complex-indic-table.cc \
hb-ot-shape-complex-myanmar.cc \
hb-ot-shape-complex-myanmar-machine.hh \
+ hb-ot-shape-complex-sea.cc hb-ot-shape-complex-sea-machine.hh \
hb-ot-shape-complex-thai.cc hb-ot-shape-complex-tibetan.cc \
- hb-ot-shape-complex-use.cc hb-ot-shape-complex-use-machine.hh \
- hb-ot-shape-complex-use-private.hh \
- hb-ot-shape-complex-use-table.cc \
hb-ot-shape-complex-private.hh \
hb-ot-shape-normalize-private.hh hb-ot-shape-normalize.cc \
hb-ot-shape-fallback-private.hh hb-ot-shape-fallback.cc \
hb-ot-shape-private.hh hb-fallback-shape.cc hb-glib.cc \
- hb-ft.cc hb-graphite2.cc hb-uniscribe.cc hb-directwrite.cc \
- hb-coretext.cc hb-ucdn.cc hb-icu.cc hb.h hb-blob.h hb-buffer.h \
- hb-common.h hb-deprecated.h hb-face.h hb-font.h hb-set.h \
- hb-shape.h hb-shape-plan.h hb-unicode.h hb-ot.h hb-ot-font.h \
+ hb-ft.cc hb-graphite2.cc hb-uniscribe.cc hb-coretext.cc \
+ hb-ucdn.cc hb.h hb-blob.h hb-buffer.h hb-common.h \
+ hb-deprecated.h hb-face.h hb-font.h hb-set.h hb-shape.h \
+ hb-shape-plan.h hb-unicode.h hb-ot.h hb-ot-font.h \
hb-ot-layout.h hb-ot-shape.h hb-ot-tag.h hb-glib.h hb-ft.h \
- hb-graphite2.h hb-uniscribe.h hb-directwrite.h hb-coretext.h \
- hb-icu.h hb-version.h
-am__objects_39 = libharfbuzz_la-hb-blob.lo \
+ hb-graphite2.h hb-uniscribe.h hb-coretext.h hb-version.h
+am__objects_1 =
+@HAVE_OT_TRUE@am__objects_2 = libharfbuzz_la-hb-ot-font.lo \
+@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-layout.lo \
+@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-map.lo \
+@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape.lo \
+@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-arabic.lo \
+@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-default.lo \
+@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-hangul.lo \
+@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-hebrew.lo \
+@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-indic.lo \
+@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-indic-table.lo \
+@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-myanmar.lo \
+@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-sea.lo \
+@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-thai.lo \
+@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-complex-tibetan.lo \
+@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-normalize.lo \
+@HAVE_OT_TRUE@ libharfbuzz_la-hb-ot-shape-fallback.lo \
+@HAVE_OT_TRUE@ $(am__objects_1)
+@HAVE_FALLBACK_TRUE@am__objects_3 = \
+@HAVE_FALLBACK_TRUE@ libharfbuzz_la-hb-fallback-shape.lo
+@HAVE_GLIB_TRUE@am__objects_4 = libharfbuzz_la-hb-glib.lo
+@HAVE_FREETYPE_TRUE@am__objects_5 = libharfbuzz_la-hb-ft.lo
+@HAVE_GRAPHITE2_TRUE@am__objects_6 = libharfbuzz_la-hb-graphite2.lo
+@HAVE_UNISCRIBE_TRUE@am__objects_7 = libharfbuzz_la-hb-uniscribe.lo
+@HAVE_CORETEXT_TRUE@am__objects_8 = libharfbuzz_la-hb-coretext.lo
+@HAVE_UCDN_TRUE@am__objects_9 = libharfbuzz_la-hb-ucdn.lo
+am__objects_10 = libharfbuzz_la-hb-blob.lo \
libharfbuzz_la-hb-buffer-serialize.lo \
libharfbuzz_la-hb-buffer.lo libharfbuzz_la-hb-common.lo \
libharfbuzz_la-hb-face.lo libharfbuzz_la-hb-font.lo \
libharfbuzz_la-hb-ot-tag.lo libharfbuzz_la-hb-set.lo \
libharfbuzz_la-hb-shape.lo libharfbuzz_la-hb-shape-plan.lo \
libharfbuzz_la-hb-shaper.lo libharfbuzz_la-hb-unicode.lo \
- libharfbuzz_la-hb-warning.lo $(am__objects_1)
-am__objects_40 = libharfbuzz_la-hb-ot-font.lo \
- libharfbuzz_la-hb-ot-layout.lo libharfbuzz_la-hb-ot-map.lo \
- libharfbuzz_la-hb-ot-shape.lo \
- libharfbuzz_la-hb-ot-shape-complex-arabic.lo \
- libharfbuzz_la-hb-ot-shape-complex-default.lo \
- libharfbuzz_la-hb-ot-shape-complex-hangul.lo \
- libharfbuzz_la-hb-ot-shape-complex-hebrew.lo \
- libharfbuzz_la-hb-ot-shape-complex-indic.lo \
- libharfbuzz_la-hb-ot-shape-complex-indic-table.lo \
- libharfbuzz_la-hb-ot-shape-complex-myanmar.lo \
- libharfbuzz_la-hb-ot-shape-complex-thai.lo \
- libharfbuzz_la-hb-ot-shape-complex-tibetan.lo \
- libharfbuzz_la-hb-ot-shape-complex-use.lo \
- libharfbuzz_la-hb-ot-shape-complex-use-table.lo \
- libharfbuzz_la-hb-ot-shape-normalize.lo \
- libharfbuzz_la-hb-ot-shape-fallback.lo $(am__objects_1)
-@HAVE_OT_TRUE@am__objects_41 = $(am__objects_40)
-am__objects_42 = libharfbuzz_la-hb-fallback-shape.lo
-@HAVE_FALLBACK_TRUE@am__objects_43 = $(am__objects_42)
-am__objects_44 = libharfbuzz_la-hb-glib.lo
-@HAVE_GLIB_TRUE@am__objects_45 = $(am__objects_44)
-am__objects_46 = libharfbuzz_la-hb-ft.lo
-@HAVE_FREETYPE_TRUE@am__objects_47 = $(am__objects_46)
-am__objects_48 = libharfbuzz_la-hb-graphite2.lo
-@HAVE_GRAPHITE2_TRUE@am__objects_49 = $(am__objects_48)
-am__objects_50 = libharfbuzz_la-hb-uniscribe.lo
-@HAVE_UNISCRIBE_TRUE@am__objects_51 = $(am__objects_50)
-am__objects_52 = libharfbuzz_la-hb-directwrite.lo
-@HAVE_DIRECTWRITE_TRUE@am__objects_53 = $(am__objects_52)
-am__objects_54 = libharfbuzz_la-hb-coretext.lo
-@HAVE_CORETEXT_TRUE@am__objects_55 = $(am__objects_54)
-am__objects_56 = libharfbuzz_la-hb-ucdn.lo
-@HAVE_UCDN_TRUE@am__objects_57 = $(am__objects_56)
-am__objects_58 = libharfbuzz_la-hb-icu.lo
-@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@am__objects_59 = \
-@HAVE_ICU_BUILTIN_TRUE@@HAVE_ICU_TRUE@ $(am__objects_58)
-am__objects_60 = $(am__objects_39) $(am__objects_41) $(am__objects_43) \
- $(am__objects_45) $(am__objects_47) $(am__objects_49) \
- $(am__objects_51) $(am__objects_53) $(am__objects_55) \
- $(am__objects_57) $(am__objects_59)
-am_libharfbuzz_la_OBJECTS = $(am__objects_60) $(am__objects_33) \
- $(am__objects_34)
+ libharfbuzz_la-hb-warning.lo $(am__objects_1) $(am__objects_2) \
+ $(am__objects_3) $(am__objects_4) $(am__objects_5) \
+ $(am__objects_6) $(am__objects_7) $(am__objects_8) \
+ $(am__objects_9)
+@HAVE_OT_TRUE@am__objects_11 = $(am__objects_1)
+am__objects_12 = $(am__objects_1) $(am__objects_11) $(am__objects_1) \
+ $(am__objects_1) $(am__objects_1) $(am__objects_1) \
+ $(am__objects_1)
+am__objects_13 = $(am__objects_1)
+am_libharfbuzz_la_OBJECTS = $(am__objects_10) $(am__objects_12) \
+ $(am__objects_13)
libharfbuzz_la_OBJECTS = $(am_libharfbuzz_la_OBJECTS)
am__EXEEXT_1 =
PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
am_main_OBJECTS = main-main.$(OBJEXT)
main_OBJECTS = $(am_main_OBJECTS)
-main_DEPENDENCIES = libharfbuzz.la $(am__DEPENDENCIES_11)
+main_DEPENDENCIES = libharfbuzz.la $(am__DEPENDENCIES_8)
am_test_OBJECTS = test-test.$(OBJEXT)
test_OBJECTS = $(am_test_OBJECTS)
-test_DEPENDENCIES = libharfbuzz.la $(am__DEPENDENCIES_11) \
+test_DEPENDENCIES = libharfbuzz.la $(am__DEPENDENCIES_8) \
$(am__DEPENDENCIES_1)
am_test_buffer_serialize_OBJECTS = \
test_buffer_serialize-test-buffer-serialize.$(OBJEXT)
test_buffer_serialize_OBJECTS = $(am_test_buffer_serialize_OBJECTS)
test_buffer_serialize_DEPENDENCIES = libharfbuzz.la \
- $(am__DEPENDENCIES_11)
-am_test_ot_tag_OBJECTS = test_ot_tag-hb-ot-tag.$(OBJEXT)
-test_ot_tag_OBJECTS = $(am_test_ot_tag_OBJECTS)
-test_ot_tag_DEPENDENCIES = libharfbuzz.la $(am__DEPENDENCIES_11)
+ $(am__DEPENDENCIES_8)
am_test_size_params_OBJECTS = \
test_size_params-test-size-params.$(OBJEXT)
test_size_params_OBJECTS = $(am_test_size_params_OBJECTS)
-test_size_params_DEPENDENCIES = libharfbuzz.la $(am__DEPENDENCIES_11)
+test_size_params_DEPENDENCIES = libharfbuzz.la $(am__DEPENDENCIES_8)
am_test_would_substitute_OBJECTS = \
test_would_substitute-test-would-substitute.$(OBJEXT)
test_would_substitute_OBJECTS = $(am_test_would_substitute_OBJECTS)
test_would_substitute_DEPENDENCIES = libharfbuzz.la \
- $(am__DEPENDENCIES_11) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_8) $(am__DEPENDENCIES_1)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -548,20 +428,17 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
-SOURCES = $(libharfbuzz_fuzzing_la_SOURCES) \
- $(libharfbuzz_gobject_la_SOURCES) \
+SOURCES = $(libharfbuzz_gobject_la_SOURCES) \
$(nodist_libharfbuzz_gobject_la_SOURCES) \
$(libharfbuzz_icu_la_SOURCES) $(libharfbuzz_la_SOURCES) \
$(main_SOURCES) $(test_SOURCES) \
- $(test_buffer_serialize_SOURCES) $(test_ot_tag_SOURCES) \
- $(test_size_params_SOURCES) $(test_would_substitute_SOURCES)
-DIST_SOURCES = $(am__libharfbuzz_fuzzing_la_SOURCES_DIST) \
- $(am__libharfbuzz_gobject_la_SOURCES_DIST) \
+ $(test_buffer_serialize_SOURCES) $(test_size_params_SOURCES) \
+ $(test_would_substitute_SOURCES)
+DIST_SOURCES = $(am__libharfbuzz_gobject_la_SOURCES_DIST) \
$(am__libharfbuzz_icu_la_SOURCES_DIST) \
$(am__libharfbuzz_la_SOURCES_DIST) $(main_SOURCES) \
$(test_SOURCES) $(test_buffer_serialize_SOURCES) \
- $(test_ot_tag_SOURCES) $(test_size_params_SOURCES) \
- $(test_would_substitute_SOURCES)
+ $(test_size_params_SOURCES) $(test_would_substitute_SOURCES)
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
ctags-recursive dvi-recursive html-recursive info-recursive \
install-data-recursive install-dvi-recursive \
@@ -580,8 +457,8 @@ am__pkginclude_HEADERS_DIST = hb.h hb-blob.h hb-buffer.h hb-common.h \
hb-deprecated.h hb-face.h hb-font.h hb-set.h hb-shape.h \
hb-shape-plan.h hb-unicode.h hb-ot.h hb-ot-font.h \
hb-ot-layout.h hb-ot-shape.h hb-ot-tag.h hb-glib.h hb-ft.h \
- hb-graphite2.h hb-uniscribe.h hb-directwrite.h hb-coretext.h \
- hb-icu.h hb-gobject.h hb-gobject-structs.h
+ hb-graphite2.h hb-uniscribe.h hb-coretext.h hb-icu.h \
+ hb-gobject.h hb-gobject-structs.h
HEADERS = $(nodist_pkginclude_HEADERS) $(pkginclude_HEADERS)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
@@ -841,8 +718,6 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
-DIRECTWRITE_CXXFLAGS = @DIRECTWRITE_CXXFLAGS@
-DIRECTWRITE_LIBS = @DIRECTWRITE_LIBS@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
@@ -852,20 +727,15 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
-FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
-FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
-FREETYPE_DEPS = @FREETYPE_DEPS@
FREETYPE_LIBS = @FREETYPE_LIBS@
GIT = @GIT@
GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_DEPS = @GLIB_DEPS@
GLIB_LIBS = @GLIB_LIBS@
GLIB_MKENUMS = @GLIB_MKENUMS@
GOBJECT_CFLAGS = @GOBJECT_CFLAGS@
GOBJECT_LIBS = @GOBJECT_LIBS@
GRAPHITE2_CFLAGS = @GRAPHITE2_CFLAGS@
-GRAPHITE2_DEPS = @GRAPHITE2_DEPS@
GRAPHITE2_LIBS = @GRAPHITE2_LIBS@
GREP = @GREP@
GTKDOC_CHECK = @GTKDOC_CHECK@
@@ -988,183 +858,55 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-SUBDIRS = $(am__append_32)
+NULL =
+SUBDIRS = $(am__append_26)
DIST_SUBDIRS = hb-ucdn
-BUILT_SOURCES = $(am__append_47) $(RAGEL_GENERATED)
+BUILT_SOURCES = $(am__append_37) $(RAGEL_GENERATED)
EXTRA_DIST = harfbuzz.pc.in harfbuzz-icu.pc.in harfbuzz-gobject.pc.in \
hb-gobject-enums.cc.tmpl hb-gobject-enums.h.tmpl $(NULL) \
$(GENERATORS) hb-buffer-deserialize-json.rl \
hb-buffer-deserialize-text.rl \
hb-ot-shape-complex-indic-machine.rl \
hb-ot-shape-complex-myanmar-machine.rl \
- hb-ot-shape-complex-use-machine.rl $(NULL)
-CLEANFILES = libharfbuzz-fuzzing.la $(pkgconfig_DATA) harfbuzz.def \
- $(am__append_49)
-DISTCLEANFILES = $(am__append_48)
+ hb-ot-shape-complex-sea-machine.rl $(NULL)
+CLEANFILES = $(pkgconfig_DATA) harfbuzz.def $(am__append_39)
+DISTCLEANFILES = $(am__append_38)
MAINTAINERCLEANFILES = $(RAGEL_GENERATED)
DISTCHECK_CONFIGURE_FLAGS = --enable-introspection
-lib_LTLIBRARIES = libharfbuzz.la $(am__append_40) $(am__append_43)
-NULL =
-
-# Base and default-included sources and headers
-HB_BASE_sources = \
- hb-atomic-private.hh \
- hb-blob.cc \
- hb-buffer-deserialize-json.hh \
- hb-buffer-deserialize-text.hh \
- hb-buffer-private.hh \
- hb-buffer-serialize.cc \
- hb-buffer.cc \
- hb-cache-private.hh \
- hb-common.cc \
- hb-face-private.hh \
- hb-face.cc \
- hb-font-private.hh \
- hb-font.cc \
- hb-mutex-private.hh \
- hb-object-private.hh \
- hb-open-file-private.hh \
- hb-open-type-private.hh \
- hb-ot-cmap-table.hh \
- hb-ot-glyf-table.hh \
- hb-ot-head-table.hh \
- hb-ot-hhea-table.hh \
- hb-ot-hmtx-table.hh \
- hb-ot-maxp-table.hh \
- hb-ot-name-table.hh \
- hb-ot-os2-table.hh \
- hb-ot-post-table.hh \
- hb-ot-tag.cc \
- hb-private.hh \
- hb-set-private.hh \
- hb-set.cc \
- hb-shape.cc \
- hb-shape-plan-private.hh \
- hb-shape-plan.cc \
- hb-shaper-list.hh \
- hb-shaper-impl-private.hh \
- hb-shaper-private.hh \
- hb-shaper.cc \
- hb-unicode-private.hh \
- hb-unicode.cc \
- hb-utf-private.hh \
- hb-warning.cc \
- $(NULL)
-
-HB_BASE_headers = \
- hb.h \
- hb-blob.h \
- hb-buffer.h \
- hb-common.h \
- hb-deprecated.h \
- hb-face.h \
- hb-font.h \
- hb-set.h \
- hb-shape.h \
- hb-shape-plan.h \
- hb-unicode.h \
- $(NULL)
-
-HB_NODIST_headers = \
+lib_LTLIBRARIES = libharfbuzz.la $(am__append_30) $(am__append_33)
+HBCFLAGS = $(am__append_4) $(am__append_6) $(am__append_10) \
+ $(am__append_14) $(am__append_18) $(am__append_22) \
+ $(am__append_27)
+HBLIBS = $(am__append_5) $(am__append_7) $(am__append_11) \
+ $(am__append_15) $(am__append_19) $(am__append_23) \
+ $(am__append_28)
+HBSOURCES = hb-atomic-private.hh hb-blob.cc \
+ hb-buffer-deserialize-json.hh hb-buffer-deserialize-text.hh \
+ hb-buffer-private.hh hb-buffer-serialize.cc hb-buffer.cc \
+ hb-cache-private.hh hb-common.cc hb-face-private.hh hb-face.cc \
+ hb-font-private.hh hb-font.cc hb-mutex-private.hh \
+ hb-object-private.hh hb-open-file-private.hh \
+ hb-open-type-private.hh hb-ot-cmap-table.hh \
+ hb-ot-head-table.hh hb-ot-hhea-table.hh hb-ot-hmtx-table.hh \
+ hb-ot-maxp-table.hh hb-ot-name-table.hh hb-ot-tag.cc \
+ hb-private.hh hb-set-private.hh hb-set.cc hb-shape.cc \
+ hb-shape-plan-private.hh hb-shape-plan.cc hb-shaper-list.hh \
+ hb-shaper-impl-private.hh hb-shaper-private.hh hb-shaper.cc \
+ hb-unicode-private.hh hb-unicode.cc hb-utf-private.hh \
+ hb-warning.cc $(NULL) $(am__append_1) $(am__append_3) \
+ $(am__append_8) $(am__append_12) $(am__append_16) \
+ $(am__append_20) $(am__append_24) $(am__append_29)
+HBHEADERS = hb.h hb-blob.h hb-buffer.h hb-common.h hb-deprecated.h \
+ hb-face.h hb-font.h hb-set.h hb-shape.h hb-shape-plan.h \
+ hb-unicode.h $(NULL) $(am__append_2) $(am__append_9) \
+ $(am__append_13) $(am__append_17) $(am__append_21) \
+ $(am__append_25)
+HBNODISTHEADERS = \
hb-version.h \
$(NULL)
-HB_FALLBACK_sources = hb-fallback-shape.cc
-HB_OT_sources = \
- hb-ot-font.cc \
- hb-ot-layout.cc \
- hb-ot-layout-common-private.hh \
- hb-ot-layout-gdef-table.hh \
- hb-ot-layout-gpos-table.hh \
- hb-ot-layout-gsubgpos-private.hh \
- hb-ot-layout-gsub-table.hh \
- hb-ot-layout-jstf-table.hh \
- hb-ot-layout-private.hh \
- hb-ot-map.cc \
- hb-ot-map-private.hh \
- hb-ot-shape.cc \
- hb-ot-shape-complex-arabic.cc \
- hb-ot-shape-complex-arabic-fallback.hh \
- hb-ot-shape-complex-arabic-private.hh \
- hb-ot-shape-complex-arabic-table.hh \
- hb-ot-shape-complex-arabic-win1256.hh \
- hb-ot-shape-complex-default.cc \
- hb-ot-shape-complex-hangul.cc \
- hb-ot-shape-complex-hebrew.cc \
- hb-ot-shape-complex-indic.cc \
- hb-ot-shape-complex-indic-machine.hh \
- hb-ot-shape-complex-indic-private.hh \
- hb-ot-shape-complex-indic-table.cc \
- hb-ot-shape-complex-myanmar.cc \
- hb-ot-shape-complex-myanmar-machine.hh \
- hb-ot-shape-complex-thai.cc \
- hb-ot-shape-complex-tibetan.cc \
- hb-ot-shape-complex-use.cc \
- hb-ot-shape-complex-use-machine.hh \
- hb-ot-shape-complex-use-private.hh \
- hb-ot-shape-complex-use-table.cc \
- hb-ot-shape-complex-private.hh \
- hb-ot-shape-normalize-private.hh \
- hb-ot-shape-normalize.cc \
- hb-ot-shape-fallback-private.hh \
- hb-ot-shape-fallback.cc \
- hb-ot-shape-private.hh \
- $(NULL)
-
-HB_OT_headers = \
- hb-ot.h \
- hb-ot-font.h \
- hb-ot-layout.h \
- hb-ot-shape.h \
- hb-ot-tag.h \
- $(NULL)
-
-
-# Optional Sources and Headers with external deps
-HB_FT_sources = hb-ft.cc
-HB_FT_headers = hb-ft.h
-HB_GLIB_sources = hb-glib.cc
-HB_GLIB_headers = hb-glib.h
-HB_GRAPHITE2_sources = hb-graphite2.cc
-HB_GRAPHITE2_headers = hb-graphite2.h
-
-# System-dependent sources and headers
-HB_CORETEXT_sources = hb-coretext.cc
-HB_CORETEXT_headers = hb-coretext.h
-HB_DIRECTWRITE_sources = hb-directwrite.cc
-HB_DIRECTWRITE_headers = hb-directwrite.h
-HB_UNISCRIBE_sources = hb-uniscribe.cc
-HB_UNISCRIBE_headers = hb-uniscribe.h
-
-# Additional supplemental sources
-HB_UCDN_sources = hb-ucdn.cc
-
-# Sources for libharfbuzz-gobject and libharfbuzz-icu
-HB_ICU_sources = hb-icu.cc
-HB_ICU_headers = hb-icu.h
-HB_GOBJECT_sources = hb-gobject-structs.cc
-HB_GOBJECT_STRUCTS_headers = hb-gobject-structs.h
-HB_GOBJECT_headers = hb-gobject.h $(HB_GOBJECT_STRUCTS_headers)
-HB_GOBJECT_ENUM_sources = hb-gobject-enums.cc
-HB_GOBJECT_ENUM_headers = hb-gobject-enums.h
-HBCFLAGS = $(am__append_4) $(am__append_6) $(am__append_11) \
- $(am__append_15) $(am__append_20) $(am__append_24) \
- $(am__append_28) $(am__append_33) $(am__append_36)
# Put the library together
-HBLIBS = $(am__append_7) $(am__append_12) $(am__append_16) \
- $(am__append_34) $(HBNONPCLIBS) $(am__append_37)
-HBNONPCLIBS = $(am__append_5) $(am__append_21) $(am__append_25) \
- $(am__append_29)
-HBDEPS = $(am__append_8) $(am__append_17)
-HBSOURCES = $(HB_BASE_sources) $(am__append_1) $(am__append_3) \
- $(am__append_9) $(am__append_13) $(am__append_18) \
- $(am__append_22) $(am__append_26) $(am__append_30) \
- $(am__append_35) $(am__append_38)
-HBHEADERS = $(HB_BASE_headers) $(am__append_2) $(am__append_10) \
- $(am__append_14) $(am__append_19) $(am__append_23) \
- $(am__append_27) $(am__append_31) $(am__append_39)
-HBNODISTHEADERS = $(HB_NODIST_headers)
@OS_WIN32_TRUE@export_symbols = -export-symbols harfbuzz.def
@OS_WIN32_TRUE@harfbuzz_def_dependency = harfbuzz.def
@HAVE_GCC_FALSE@@OS_WIN32_FALSE@libharfbuzz_la_LINK = $(CXXLINK) $(libharfbuzz_la_LDFLAGS)
@@ -1176,39 +918,22 @@ libharfbuzz_la_CPPFLAGS = $(HBCFLAGS)
libharfbuzz_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) $(export_symbols) -no-undefined
libharfbuzz_la_LIBADD = $(HBLIBS)
EXTRA_libharfbuzz_la_DEPENDENCIES = $(harfbuzz_def_dependency)
-pkginclude_HEADERS = $(HBHEADERS) $(am__append_41) $(am__append_44)
-nodist_pkginclude_HEADERS = $(HBNODISTHEADERS) $(am__append_45)
+pkginclude_HEADERS = $(HBHEADERS) $(am__append_31) $(am__append_34)
+nodist_pkginclude_HEADERS = $(HBNODISTHEADERS) $(am__append_35)
pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = harfbuzz.pc $(am__append_42) $(am__append_46)
-FUZZING_CPPFLAGS = \
- -DHB_NDEBUG \
- -DHB_MAX_NESTING_LEVEL=3 \
- -DHB_SANITIZE_MAX_EDITS=3 \
- -DHB_BUFFER_MAX_EXPANSION_FACTOR=3 \
- -DHB_BUFFER_MAX_LEN_MIN=8 \
- -DHB_BUFFER_MAX_LEN_DEFAULT=128 \
- $(NULL)
-
-EXTRA_LTLIBRARIES = libharfbuzz-fuzzing.la
-libharfbuzz_fuzzing_la_LINK = $(libharfbuzz_la_LINK)
-libharfbuzz_fuzzing_la_SOURCES = $(libharfbuzz_la_SOURCES)
-libharfbuzz_fuzzing_la_CPPFLAGS = $(libharfbuzz_la_CPPFLAGS) $(FUZZING_CPPFLAGS)
-libharfbuzz_fuzzing_la_LDFLAGS = $(libharfbuzz_la_LDFLAGS)
-libharfbuzz_fuzzing_la_LIBADD = $(libharfbuzz_la_LIBADD)
-EXTRA_libharfbuzz_fuzzing_la_DEPENDENCIES = $(EXTRA_libharfbuzz_la_DEPENDENCIES)
-@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@libharfbuzz_icu_la_SOURCES = $(HB_ICU_sources)
-@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@libharfbuzz_icu_la_CPPFLAGS = $(ICU_CFLAGS)
-@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@libharfbuzz_icu_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined
-@HAVE_ICU_BUILTIN_FALSE@@HAVE_ICU_TRUE@libharfbuzz_icu_la_LIBADD = $(ICU_LIBS) libharfbuzz.la
-@HAVE_GOBJECT_TRUE@libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_sources)
-@HAVE_GOBJECT_TRUE@nodist_libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_ENUM_sources)
+pkgconfig_DATA = harfbuzz.pc $(am__append_32) $(am__append_36)
+@HAVE_ICU_TRUE@libharfbuzz_icu_la_SOURCES = hb-icu.cc
+@HAVE_ICU_TRUE@libharfbuzz_icu_la_CPPFLAGS = $(ICU_CFLAGS)
+@HAVE_ICU_TRUE@libharfbuzz_icu_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined
+@HAVE_ICU_TRUE@libharfbuzz_icu_la_LIBADD = $(ICU_LIBS) libharfbuzz.la
+@HAVE_GOBJECT_TRUE@libharfbuzz_gobject_la_SOURCES = hb-gobject-structs.cc
+@HAVE_GOBJECT_TRUE@nodist_libharfbuzz_gobject_la_SOURCES = hb-gobject-enums.cc
@HAVE_GOBJECT_TRUE@libharfbuzz_gobject_la_CPPFLAGS = $(GOBJECT_CFLAGS)
@HAVE_GOBJECT_TRUE@libharfbuzz_gobject_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined
@HAVE_GOBJECT_TRUE@libharfbuzz_gobject_la_LIBADD = $(GOBJECT_LIBS) libharfbuzz.la
GENERATORS = \
gen-arabic-table.py \
gen-indic-table.py \
- gen-use-table.py \
$(NULL)
RAGEL_GENERATED = \
@@ -1216,7 +941,7 @@ RAGEL_GENERATED = \
$(srcdir)/hb-buffer-deserialize-text.hh \
$(srcdir)/hb-ot-shape-complex-indic-machine.hh \
$(srcdir)/hb-ot-shape-complex-myanmar-machine.hh \
- $(srcdir)/hb-ot-shape-complex-use-machine.hh \
+ $(srcdir)/hb-ot-shape-complex-sea-machine.hh \
$(NULL)
main_SOURCES = main.cc
@@ -1244,9 +969,6 @@ dist_check_SCRIPTS = \
check-symbols.sh \
$(NULL)
-test_ot_tag_SOURCES = hb-ot-tag.cc
-test_ot_tag_CPPFLAGS = $(HBCFLAGS) -DMAIN
-test_ot_tag_LDADD = libharfbuzz.la $(HBLIBS)
TESTS_ENVIRONMENT = \
srcdir="$(srcdir)" \
MAKE="$(MAKE) $(AM_MAKEFLAGS)" \
@@ -1254,7 +976,7 @@ TESTS_ENVIRONMENT = \
HBHEADERS="$(HBHEADERS) $(HBNODISTHEADERS)" \
$(NULL)
-@HAVE_INTROSPECTION_TRUE@INTROSPECTION_GIRS = HarfBuzz-0.0.gir # What does the 0 mean anyway?!
+@HAVE_INTROSPECTION_TRUE@INTROSPECTION_GIRS = HarfBuzz-$(HB_VERSION_MAJOR).0.gir # What does the 0 mean anyway?!
@HAVE_INTROSPECTION_TRUE@INTROSPECTION_SCANNER_ARGS = -I$(srcdir) -n hb --identifier-prefix=hb_ --warn-all
@HAVE_INTROSPECTION_TRUE@INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
@HAVE_INTROSPECTION_TRUE@INTROSPECTION_SCANNER_ENV = CC="$(CC)"
@@ -1268,7 +990,6 @@ TESTS_ENVIRONMENT = \
@HAVE_INTROSPECTION_TRUE@ -DHB_OT_H_IN \
@HAVE_INTROSPECTION_TRUE@ -DHB_GOBJECT_H \
@HAVE_INTROSPECTION_TRUE@ -DHB_GOBJECT_H_IN \
-@HAVE_INTROSPECTION_TRUE@ -DHB_EXTERN= \
@HAVE_INTROSPECTION_TRUE@ $(NULL)
@HAVE_INTROSPECTION_TRUE@HarfBuzz_0_0_gir_LIBS = \
@@ -1280,10 +1001,10 @@ TESTS_ENVIRONMENT = \
@HAVE_INTROSPECTION_TRUE@ $(HBHEADERS) \
@HAVE_INTROSPECTION_TRUE@ $(HBNODISTHEADERS) \
@HAVE_INTROSPECTION_TRUE@ $(HBSOURCES) \
-@HAVE_INTROSPECTION_TRUE@ $(HB_GOBJECT_ENUM_sources) \
-@HAVE_INTROSPECTION_TRUE@ $(HB_GOBJECT_ENUM_headers) \
-@HAVE_INTROSPECTION_TRUE@ $(HB_GOBJECT_sources) \
-@HAVE_INTROSPECTION_TRUE@ $(HB_GOBJECT_STRUCTS_headers) \
+@HAVE_INTROSPECTION_TRUE@ hb-gobject-enums.cc \
+@HAVE_INTROSPECTION_TRUE@ hb-gobject-enums.h \
+@HAVE_INTROSPECTION_TRUE@ hb-gobject-structs.cc \
+@HAVE_INTROSPECTION_TRUE@ hb-gobject-structs.h \
@HAVE_INTROSPECTION_TRUE@ $(NULL)
@HAVE_INTROSPECTION_TRUE@girdir = $(datadir)/gir-1.0
@@ -1295,7 +1016,7 @@ all: $(BUILT_SOURCES)
.SUFFIXES:
.SUFFIXES: .cc .lo .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.sources $(am__configure_deps)
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -1316,7 +1037,6 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(srcdir)/Makefile.sources:
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -1364,9 +1084,6 @@ clean-libLTLIBRARIES:
rm -f $${locs}; \
}
-libharfbuzz-fuzzing.la: $(libharfbuzz_fuzzing_la_OBJECTS) $(libharfbuzz_fuzzing_la_DEPENDENCIES) $(EXTRA_libharfbuzz_fuzzing_la_DEPENDENCIES)
- $(AM_V_GEN)$(libharfbuzz_fuzzing_la_LINK) $(libharfbuzz_fuzzing_la_OBJECTS) $(libharfbuzz_fuzzing_la_LIBADD) $(LIBS)
-
libharfbuzz-gobject.la: $(libharfbuzz_gobject_la_OBJECTS) $(libharfbuzz_gobject_la_DEPENDENCIES) $(EXTRA_libharfbuzz_gobject_la_DEPENDENCIES)
$(AM_V_CXXLD)$(libharfbuzz_gobject_la_LINK) $(am_libharfbuzz_gobject_la_rpath) $(libharfbuzz_gobject_la_OBJECTS) $(libharfbuzz_gobject_la_LIBADD) $(LIBS)
@@ -1441,15 +1158,6 @@ installcheck-binPROGRAMS: $(bin_PROGRAMS)
done; \
done; rm -f c$${pid}_.???; exit $$bad
-clean-checkPROGRAMS:
- @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
- echo " rm -f" $$list; \
- rm -f $$list || exit $$?; \
- test -n "$(EXEEXT)" || exit 0; \
- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f" $$list; \
- rm -f $$list
-
clean-noinstPROGRAMS:
@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \
@@ -1471,10 +1179,6 @@ test-buffer-serialize$(EXEEXT): $(test_buffer_serialize_OBJECTS) $(test_buffer_s
@rm -f test-buffer-serialize$(EXEEXT)
$(AM_V_CXXLD)$(CXXLINK) $(test_buffer_serialize_OBJECTS) $(test_buffer_serialize_LDADD) $(LIBS)
-test-ot-tag$(EXEEXT): $(test_ot_tag_OBJECTS) $(test_ot_tag_DEPENDENCIES) $(EXTRA_test_ot_tag_DEPENDENCIES)
- @rm -f test-ot-tag$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(test_ot_tag_OBJECTS) $(test_ot_tag_LDADD) $(LIBS)
-
test-size-params$(EXEEXT): $(test_size_params_OBJECTS) $(test_size_params_DEPENDENCIES) $(EXTRA_test_size_params_DEPENDENCIES)
@rm -f test-size-params$(EXEEXT)
$(AM_V_CXXLD)$(CXXLINK) $(test_size_params_OBJECTS) $(test_size_params_LDADD) $(LIBS)
@@ -1489,45 +1193,6 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-blob.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-buffer-serialize.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-buffer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-common.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-coretext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-directwrite.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-face.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-fallback-shape.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-font.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ft.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-glib.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-graphite2.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-icu.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-font.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-layout.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-map.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-fallback.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-normalize.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-tag.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-set.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-shape-plan.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-shape.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-shaper.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-ucdn.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-unicode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-uniscribe.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_fuzzing_la-hb-warning.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_gobject_la-hb-gobject-enums.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_gobject_la-hb-gobject-structs.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_icu_la-hb-icu.Plo@am__quote@
@@ -1536,14 +1201,12 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-buffer.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-common.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-coretext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-directwrite.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-face.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-fallback-shape.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-font.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ft.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-glib.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-graphite2.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-icu.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-font.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-layout.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-map.Plo@am__quote@
@@ -1554,10 +1217,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-indic-table.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-indic.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-myanmar.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-sea.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-thai.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-tibetan.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-use-table.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-use.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-fallback.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape-normalize.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libharfbuzz_la-hb-ot-shape.Plo@am__quote@
@@ -1573,7 +1235,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main-main.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_buffer_serialize-test-buffer-serialize.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_ot_tag-hb-ot-tag.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_size_params-test-size-params.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_would_substitute-test-would-substitute.Po@am__quote@
@@ -1598,279 +1259,6 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-libharfbuzz_fuzzing_la-hb-blob.lo: hb-blob.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-blob.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-blob.Tpo -c -o libharfbuzz_fuzzing_la-hb-blob.lo `test -f 'hb-blob.cc' || echo '$(srcdir)/'`hb-blob.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-blob.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-blob.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-blob.cc' object='libharfbuzz_fuzzing_la-hb-blob.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-blob.lo `test -f 'hb-blob.cc' || echo '$(srcdir)/'`hb-blob.cc
-
-libharfbuzz_fuzzing_la-hb-buffer-serialize.lo: hb-buffer-serialize.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-buffer-serialize.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-buffer-serialize.Tpo -c -o libharfbuzz_fuzzing_la-hb-buffer-serialize.lo `test -f 'hb-buffer-serialize.cc' || echo '$(srcdir)/'`hb-buffer-serialize.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-buffer-serialize.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-buffer-serialize.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-buffer-serialize.cc' object='libharfbuzz_fuzzing_la-hb-buffer-serialize.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-buffer-serialize.lo `test -f 'hb-buffer-serialize.cc' || echo '$(srcdir)/'`hb-buffer-serialize.cc
-
-libharfbuzz_fuzzing_la-hb-buffer.lo: hb-buffer.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-buffer.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-buffer.Tpo -c -o libharfbuzz_fuzzing_la-hb-buffer.lo `test -f 'hb-buffer.cc' || echo '$(srcdir)/'`hb-buffer.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-buffer.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-buffer.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-buffer.cc' object='libharfbuzz_fuzzing_la-hb-buffer.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-buffer.lo `test -f 'hb-buffer.cc' || echo '$(srcdir)/'`hb-buffer.cc
-
-libharfbuzz_fuzzing_la-hb-common.lo: hb-common.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-common.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-common.Tpo -c -o libharfbuzz_fuzzing_la-hb-common.lo `test -f 'hb-common.cc' || echo '$(srcdir)/'`hb-common.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-common.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-common.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-common.cc' object='libharfbuzz_fuzzing_la-hb-common.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-common.lo `test -f 'hb-common.cc' || echo '$(srcdir)/'`hb-common.cc
-
-libharfbuzz_fuzzing_la-hb-face.lo: hb-face.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-face.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-face.Tpo -c -o libharfbuzz_fuzzing_la-hb-face.lo `test -f 'hb-face.cc' || echo '$(srcdir)/'`hb-face.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-face.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-face.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-face.cc' object='libharfbuzz_fuzzing_la-hb-face.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-face.lo `test -f 'hb-face.cc' || echo '$(srcdir)/'`hb-face.cc
-
-libharfbuzz_fuzzing_la-hb-font.lo: hb-font.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-font.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-font.Tpo -c -o libharfbuzz_fuzzing_la-hb-font.lo `test -f 'hb-font.cc' || echo '$(srcdir)/'`hb-font.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-font.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-font.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-font.cc' object='libharfbuzz_fuzzing_la-hb-font.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-font.lo `test -f 'hb-font.cc' || echo '$(srcdir)/'`hb-font.cc
-
-libharfbuzz_fuzzing_la-hb-ot-tag.lo: hb-ot-tag.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-tag.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-tag.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-tag.lo `test -f 'hb-ot-tag.cc' || echo '$(srcdir)/'`hb-ot-tag.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-tag.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-tag.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-tag.cc' object='libharfbuzz_fuzzing_la-hb-ot-tag.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-tag.lo `test -f 'hb-ot-tag.cc' || echo '$(srcdir)/'`hb-ot-tag.cc
-
-libharfbuzz_fuzzing_la-hb-set.lo: hb-set.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-set.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-set.Tpo -c -o libharfbuzz_fuzzing_la-hb-set.lo `test -f 'hb-set.cc' || echo '$(srcdir)/'`hb-set.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-set.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-set.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-set.cc' object='libharfbuzz_fuzzing_la-hb-set.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-set.lo `test -f 'hb-set.cc' || echo '$(srcdir)/'`hb-set.cc
-
-libharfbuzz_fuzzing_la-hb-shape.lo: hb-shape.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-shape.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shape.Tpo -c -o libharfbuzz_fuzzing_la-hb-shape.lo `test -f 'hb-shape.cc' || echo '$(srcdir)/'`hb-shape.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shape.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shape.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-shape.cc' object='libharfbuzz_fuzzing_la-hb-shape.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-shape.lo `test -f 'hb-shape.cc' || echo '$(srcdir)/'`hb-shape.cc
-
-libharfbuzz_fuzzing_la-hb-shape-plan.lo: hb-shape-plan.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-shape-plan.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shape-plan.Tpo -c -o libharfbuzz_fuzzing_la-hb-shape-plan.lo `test -f 'hb-shape-plan.cc' || echo '$(srcdir)/'`hb-shape-plan.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shape-plan.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shape-plan.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-shape-plan.cc' object='libharfbuzz_fuzzing_la-hb-shape-plan.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-shape-plan.lo `test -f 'hb-shape-plan.cc' || echo '$(srcdir)/'`hb-shape-plan.cc
-
-libharfbuzz_fuzzing_la-hb-shaper.lo: hb-shaper.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-shaper.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shaper.Tpo -c -o libharfbuzz_fuzzing_la-hb-shaper.lo `test -f 'hb-shaper.cc' || echo '$(srcdir)/'`hb-shaper.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shaper.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-shaper.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-shaper.cc' object='libharfbuzz_fuzzing_la-hb-shaper.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-shaper.lo `test -f 'hb-shaper.cc' || echo '$(srcdir)/'`hb-shaper.cc
-
-libharfbuzz_fuzzing_la-hb-unicode.lo: hb-unicode.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-unicode.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-unicode.Tpo -c -o libharfbuzz_fuzzing_la-hb-unicode.lo `test -f 'hb-unicode.cc' || echo '$(srcdir)/'`hb-unicode.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-unicode.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-unicode.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-unicode.cc' object='libharfbuzz_fuzzing_la-hb-unicode.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-unicode.lo `test -f 'hb-unicode.cc' || echo '$(srcdir)/'`hb-unicode.cc
-
-libharfbuzz_fuzzing_la-hb-warning.lo: hb-warning.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-warning.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-warning.Tpo -c -o libharfbuzz_fuzzing_la-hb-warning.lo `test -f 'hb-warning.cc' || echo '$(srcdir)/'`hb-warning.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-warning.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-warning.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-warning.cc' object='libharfbuzz_fuzzing_la-hb-warning.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-warning.lo `test -f 'hb-warning.cc' || echo '$(srcdir)/'`hb-warning.cc
-
-libharfbuzz_fuzzing_la-hb-ot-font.lo: hb-ot-font.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-font.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-font.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-font.lo `test -f 'hb-ot-font.cc' || echo '$(srcdir)/'`hb-ot-font.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-font.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-font.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-font.cc' object='libharfbuzz_fuzzing_la-hb-ot-font.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-font.lo `test -f 'hb-ot-font.cc' || echo '$(srcdir)/'`hb-ot-font.cc
-
-libharfbuzz_fuzzing_la-hb-ot-layout.lo: hb-ot-layout.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-layout.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-layout.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-layout.lo `test -f 'hb-ot-layout.cc' || echo '$(srcdir)/'`hb-ot-layout.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-layout.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-layout.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-layout.cc' object='libharfbuzz_fuzzing_la-hb-ot-layout.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-layout.lo `test -f 'hb-ot-layout.cc' || echo '$(srcdir)/'`hb-ot-layout.cc
-
-libharfbuzz_fuzzing_la-hb-ot-map.lo: hb-ot-map.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-map.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-map.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-map.lo `test -f 'hb-ot-map.cc' || echo '$(srcdir)/'`hb-ot-map.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-map.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-map.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-map.cc' object='libharfbuzz_fuzzing_la-hb-ot-map.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-map.lo `test -f 'hb-ot-map.cc' || echo '$(srcdir)/'`hb-ot-map.cc
-
-libharfbuzz_fuzzing_la-hb-ot-shape.lo: hb-ot-shape.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape.lo `test -f 'hb-ot-shape.cc' || echo '$(srcdir)/'`hb-ot-shape.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape.lo `test -f 'hb-ot-shape.cc' || echo '$(srcdir)/'`hb-ot-shape.cc
-
-libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.lo: hb-ot-shape-complex-arabic.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.lo `test -f 'hb-ot-shape-complex-arabic.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-arabic.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-arabic.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-arabic.lo `test -f 'hb-ot-shape-complex-arabic.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-arabic.cc
-
-libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.lo: hb-ot-shape-complex-default.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.lo `test -f 'hb-ot-shape-complex-default.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-default.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-default.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-default.lo `test -f 'hb-ot-shape-complex-default.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-default.cc
-
-libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.lo: hb-ot-shape-complex-hangul.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.lo `test -f 'hb-ot-shape-complex-hangul.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-hangul.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-hangul.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-hangul.lo `test -f 'hb-ot-shape-complex-hangul.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-hangul.cc
-
-libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.lo: hb-ot-shape-complex-hebrew.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.lo `test -f 'hb-ot-shape-complex-hebrew.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-hebrew.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-hebrew.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-hebrew.lo `test -f 'hb-ot-shape-complex-hebrew.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-hebrew.cc
-
-libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.lo: hb-ot-shape-complex-indic.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.lo `test -f 'hb-ot-shape-complex-indic.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-indic.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-indic.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic.lo `test -f 'hb-ot-shape-complex-indic.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-indic.cc
-
-libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.lo: hb-ot-shape-complex-indic-table.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.lo `test -f 'hb-ot-shape-complex-indic-table.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-indic-table.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-indic-table.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-indic-table.lo `test -f 'hb-ot-shape-complex-indic-table.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-indic-table.cc
-
-libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.lo: hb-ot-shape-complex-myanmar.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.lo `test -f 'hb-ot-shape-complex-myanmar.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-myanmar.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-myanmar.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-myanmar.lo `test -f 'hb-ot-shape-complex-myanmar.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-myanmar.cc
-
-libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.lo: hb-ot-shape-complex-thai.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.lo `test -f 'hb-ot-shape-complex-thai.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-thai.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-thai.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-thai.lo `test -f 'hb-ot-shape-complex-thai.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-thai.cc
-
-libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.lo: hb-ot-shape-complex-tibetan.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.lo `test -f 'hb-ot-shape-complex-tibetan.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-tibetan.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-tibetan.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-tibetan.lo `test -f 'hb-ot-shape-complex-tibetan.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-tibetan.cc
-
-libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.lo: hb-ot-shape-complex-use.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.lo `test -f 'hb-ot-shape-complex-use.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-use.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-use.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-use.lo `test -f 'hb-ot-shape-complex-use.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-use.cc
-
-libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.lo: hb-ot-shape-complex-use-table.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.lo `test -f 'hb-ot-shape-complex-use-table.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-use-table.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-use-table.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-complex-use-table.lo `test -f 'hb-ot-shape-complex-use-table.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-use-table.cc
-
-libharfbuzz_fuzzing_la-hb-ot-shape-normalize.lo: hb-ot-shape-normalize.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-normalize.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-normalize.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-normalize.lo `test -f 'hb-ot-shape-normalize.cc' || echo '$(srcdir)/'`hb-ot-shape-normalize.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-normalize.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-normalize.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-normalize.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-normalize.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-normalize.lo `test -f 'hb-ot-shape-normalize.cc' || echo '$(srcdir)/'`hb-ot-shape-normalize.cc
-
-libharfbuzz_fuzzing_la-hb-ot-shape-fallback.lo: hb-ot-shape-fallback.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ot-shape-fallback.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-fallback.Tpo -c -o libharfbuzz_fuzzing_la-hb-ot-shape-fallback.lo `test -f 'hb-ot-shape-fallback.cc' || echo '$(srcdir)/'`hb-ot-shape-fallback.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-fallback.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ot-shape-fallback.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-fallback.cc' object='libharfbuzz_fuzzing_la-hb-ot-shape-fallback.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ot-shape-fallback.lo `test -f 'hb-ot-shape-fallback.cc' || echo '$(srcdir)/'`hb-ot-shape-fallback.cc
-
-libharfbuzz_fuzzing_la-hb-fallback-shape.lo: hb-fallback-shape.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-fallback-shape.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-fallback-shape.Tpo -c -o libharfbuzz_fuzzing_la-hb-fallback-shape.lo `test -f 'hb-fallback-shape.cc' || echo '$(srcdir)/'`hb-fallback-shape.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-fallback-shape.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-fallback-shape.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-fallback-shape.cc' object='libharfbuzz_fuzzing_la-hb-fallback-shape.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-fallback-shape.lo `test -f 'hb-fallback-shape.cc' || echo '$(srcdir)/'`hb-fallback-shape.cc
-
-libharfbuzz_fuzzing_la-hb-glib.lo: hb-glib.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-glib.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-glib.Tpo -c -o libharfbuzz_fuzzing_la-hb-glib.lo `test -f 'hb-glib.cc' || echo '$(srcdir)/'`hb-glib.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-glib.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-glib.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-glib.cc' object='libharfbuzz_fuzzing_la-hb-glib.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-glib.lo `test -f 'hb-glib.cc' || echo '$(srcdir)/'`hb-glib.cc
-
-libharfbuzz_fuzzing_la-hb-ft.lo: hb-ft.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ft.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ft.Tpo -c -o libharfbuzz_fuzzing_la-hb-ft.lo `test -f 'hb-ft.cc' || echo '$(srcdir)/'`hb-ft.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ft.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ft.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ft.cc' object='libharfbuzz_fuzzing_la-hb-ft.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ft.lo `test -f 'hb-ft.cc' || echo '$(srcdir)/'`hb-ft.cc
-
-libharfbuzz_fuzzing_la-hb-graphite2.lo: hb-graphite2.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-graphite2.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-graphite2.Tpo -c -o libharfbuzz_fuzzing_la-hb-graphite2.lo `test -f 'hb-graphite2.cc' || echo '$(srcdir)/'`hb-graphite2.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-graphite2.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-graphite2.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-graphite2.cc' object='libharfbuzz_fuzzing_la-hb-graphite2.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-graphite2.lo `test -f 'hb-graphite2.cc' || echo '$(srcdir)/'`hb-graphite2.cc
-
-libharfbuzz_fuzzing_la-hb-uniscribe.lo: hb-uniscribe.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-uniscribe.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-uniscribe.Tpo -c -o libharfbuzz_fuzzing_la-hb-uniscribe.lo `test -f 'hb-uniscribe.cc' || echo '$(srcdir)/'`hb-uniscribe.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-uniscribe.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-uniscribe.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-uniscribe.cc' object='libharfbuzz_fuzzing_la-hb-uniscribe.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-uniscribe.lo `test -f 'hb-uniscribe.cc' || echo '$(srcdir)/'`hb-uniscribe.cc
-
-libharfbuzz_fuzzing_la-hb-directwrite.lo: hb-directwrite.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-directwrite.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-directwrite.Tpo -c -o libharfbuzz_fuzzing_la-hb-directwrite.lo `test -f 'hb-directwrite.cc' || echo '$(srcdir)/'`hb-directwrite.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-directwrite.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-directwrite.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-directwrite.cc' object='libharfbuzz_fuzzing_la-hb-directwrite.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-directwrite.lo `test -f 'hb-directwrite.cc' || echo '$(srcdir)/'`hb-directwrite.cc
-
-libharfbuzz_fuzzing_la-hb-coretext.lo: hb-coretext.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-coretext.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-coretext.Tpo -c -o libharfbuzz_fuzzing_la-hb-coretext.lo `test -f 'hb-coretext.cc' || echo '$(srcdir)/'`hb-coretext.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-coretext.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-coretext.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-coretext.cc' object='libharfbuzz_fuzzing_la-hb-coretext.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-coretext.lo `test -f 'hb-coretext.cc' || echo '$(srcdir)/'`hb-coretext.cc
-
-libharfbuzz_fuzzing_la-hb-ucdn.lo: hb-ucdn.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-ucdn.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ucdn.Tpo -c -o libharfbuzz_fuzzing_la-hb-ucdn.lo `test -f 'hb-ucdn.cc' || echo '$(srcdir)/'`hb-ucdn.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ucdn.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-ucdn.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ucdn.cc' object='libharfbuzz_fuzzing_la-hb-ucdn.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-ucdn.lo `test -f 'hb-ucdn.cc' || echo '$(srcdir)/'`hb-ucdn.cc
-
-libharfbuzz_fuzzing_la-hb-icu.lo: hb-icu.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_fuzzing_la-hb-icu.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_fuzzing_la-hb-icu.Tpo -c -o libharfbuzz_fuzzing_la-hb-icu.lo `test -f 'hb-icu.cc' || echo '$(srcdir)/'`hb-icu.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_fuzzing_la-hb-icu.Tpo $(DEPDIR)/libharfbuzz_fuzzing_la-hb-icu.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-icu.cc' object='libharfbuzz_fuzzing_la-hb-icu.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_fuzzing_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_fuzzing_la-hb-icu.lo `test -f 'hb-icu.cc' || echo '$(srcdir)/'`hb-icu.cc
-
libharfbuzz_gobject_la-hb-gobject-structs.lo: hb-gobject-structs.cc
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_gobject_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_gobject_la-hb-gobject-structs.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_gobject_la-hb-gobject-structs.Tpo -c -o libharfbuzz_gobject_la-hb-gobject-structs.lo `test -f 'hb-gobject-structs.cc' || echo '$(srcdir)/'`hb-gobject-structs.cc
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_gobject_la-hb-gobject-structs.Tpo $(DEPDIR)/libharfbuzz_gobject_la-hb-gobject-structs.Plo
@@ -2060,6 +1448,13 @@ libharfbuzz_la-hb-ot-shape-complex-myanmar.lo: hb-ot-shape-complex-myanmar.cc
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-ot-shape-complex-myanmar.lo `test -f 'hb-ot-shape-complex-myanmar.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-myanmar.cc
+libharfbuzz_la-hb-ot-shape-complex-sea.lo: hb-ot-shape-complex-sea.cc
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_la-hb-ot-shape-complex-sea.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-sea.Tpo -c -o libharfbuzz_la-hb-ot-shape-complex-sea.lo `test -f 'hb-ot-shape-complex-sea.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-sea.cc
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-sea.Tpo $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-sea.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-sea.cc' object='libharfbuzz_la-hb-ot-shape-complex-sea.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-ot-shape-complex-sea.lo `test -f 'hb-ot-shape-complex-sea.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-sea.cc
+
libharfbuzz_la-hb-ot-shape-complex-thai.lo: hb-ot-shape-complex-thai.cc
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_la-hb-ot-shape-complex-thai.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-thai.Tpo -c -o libharfbuzz_la-hb-ot-shape-complex-thai.lo `test -f 'hb-ot-shape-complex-thai.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-thai.cc
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-thai.Tpo $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-thai.Plo
@@ -2074,20 +1469,6 @@ libharfbuzz_la-hb-ot-shape-complex-tibetan.lo: hb-ot-shape-complex-tibetan.cc
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-ot-shape-complex-tibetan.lo `test -f 'hb-ot-shape-complex-tibetan.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-tibetan.cc
-libharfbuzz_la-hb-ot-shape-complex-use.lo: hb-ot-shape-complex-use.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_la-hb-ot-shape-complex-use.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-use.Tpo -c -o libharfbuzz_la-hb-ot-shape-complex-use.lo `test -f 'hb-ot-shape-complex-use.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-use.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-use.Tpo $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-use.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-use.cc' object='libharfbuzz_la-hb-ot-shape-complex-use.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-ot-shape-complex-use.lo `test -f 'hb-ot-shape-complex-use.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-use.cc
-
-libharfbuzz_la-hb-ot-shape-complex-use-table.lo: hb-ot-shape-complex-use-table.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_la-hb-ot-shape-complex-use-table.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-use-table.Tpo -c -o libharfbuzz_la-hb-ot-shape-complex-use-table.lo `test -f 'hb-ot-shape-complex-use-table.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-use-table.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-use-table.Tpo $(DEPDIR)/libharfbuzz_la-hb-ot-shape-complex-use-table.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-shape-complex-use-table.cc' object='libharfbuzz_la-hb-ot-shape-complex-use-table.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-ot-shape-complex-use-table.lo `test -f 'hb-ot-shape-complex-use-table.cc' || echo '$(srcdir)/'`hb-ot-shape-complex-use-table.cc
-
libharfbuzz_la-hb-ot-shape-normalize.lo: hb-ot-shape-normalize.cc
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_la-hb-ot-shape-normalize.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_la-hb-ot-shape-normalize.Tpo -c -o libharfbuzz_la-hb-ot-shape-normalize.lo `test -f 'hb-ot-shape-normalize.cc' || echo '$(srcdir)/'`hb-ot-shape-normalize.cc
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_la-hb-ot-shape-normalize.Tpo $(DEPDIR)/libharfbuzz_la-hb-ot-shape-normalize.Plo
@@ -2137,13 +1518,6 @@ libharfbuzz_la-hb-uniscribe.lo: hb-uniscribe.cc
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-uniscribe.lo `test -f 'hb-uniscribe.cc' || echo '$(srcdir)/'`hb-uniscribe.cc
-libharfbuzz_la-hb-directwrite.lo: hb-directwrite.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_la-hb-directwrite.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_la-hb-directwrite.Tpo -c -o libharfbuzz_la-hb-directwrite.lo `test -f 'hb-directwrite.cc' || echo '$(srcdir)/'`hb-directwrite.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_la-hb-directwrite.Tpo $(DEPDIR)/libharfbuzz_la-hb-directwrite.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-directwrite.cc' object='libharfbuzz_la-hb-directwrite.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-directwrite.lo `test -f 'hb-directwrite.cc' || echo '$(srcdir)/'`hb-directwrite.cc
-
libharfbuzz_la-hb-coretext.lo: hb-coretext.cc
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_la-hb-coretext.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_la-hb-coretext.Tpo -c -o libharfbuzz_la-hb-coretext.lo `test -f 'hb-coretext.cc' || echo '$(srcdir)/'`hb-coretext.cc
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_la-hb-coretext.Tpo $(DEPDIR)/libharfbuzz_la-hb-coretext.Plo
@@ -2158,13 +1532,6 @@ libharfbuzz_la-hb-ucdn.lo: hb-ucdn.cc
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-ucdn.lo `test -f 'hb-ucdn.cc' || echo '$(srcdir)/'`hb-ucdn.cc
-libharfbuzz_la-hb-icu.lo: hb-icu.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libharfbuzz_la-hb-icu.lo -MD -MP -MF $(DEPDIR)/libharfbuzz_la-hb-icu.Tpo -c -o libharfbuzz_la-hb-icu.lo `test -f 'hb-icu.cc' || echo '$(srcdir)/'`hb-icu.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libharfbuzz_la-hb-icu.Tpo $(DEPDIR)/libharfbuzz_la-hb-icu.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-icu.cc' object='libharfbuzz_la-hb-icu.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libharfbuzz_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libharfbuzz_la-hb-icu.lo `test -f 'hb-icu.cc' || echo '$(srcdir)/'`hb-icu.cc
-
main-main.o: main.cc
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(main_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT main-main.o -MD -MP -MF $(DEPDIR)/main-main.Tpo -c -o main-main.o `test -f 'main.cc' || echo '$(srcdir)/'`main.cc
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/main-main.Tpo $(DEPDIR)/main-main.Po
@@ -2207,20 +1574,6 @@ test_buffer_serialize-test-buffer-serialize.obj: test-buffer-serialize.cc
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_buffer_serialize_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o test_buffer_serialize-test-buffer-serialize.obj `if test -f 'test-buffer-serialize.cc'; then $(CYGPATH_W) 'test-buffer-serialize.cc'; else $(CYGPATH_W) '$(srcdir)/test-buffer-serialize.cc'; fi`
-test_ot_tag-hb-ot-tag.o: hb-ot-tag.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_ot_tag_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT test_ot_tag-hb-ot-tag.o -MD -MP -MF $(DEPDIR)/test_ot_tag-hb-ot-tag.Tpo -c -o test_ot_tag-hb-ot-tag.o `test -f 'hb-ot-tag.cc' || echo '$(srcdir)/'`hb-ot-tag.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_ot_tag-hb-ot-tag.Tpo $(DEPDIR)/test_ot_tag-hb-ot-tag.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-tag.cc' object='test_ot_tag-hb-ot-tag.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_ot_tag_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o test_ot_tag-hb-ot-tag.o `test -f 'hb-ot-tag.cc' || echo '$(srcdir)/'`hb-ot-tag.cc
-
-test_ot_tag-hb-ot-tag.obj: hb-ot-tag.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_ot_tag_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT test_ot_tag-hb-ot-tag.obj -MD -MP -MF $(DEPDIR)/test_ot_tag-hb-ot-tag.Tpo -c -o test_ot_tag-hb-ot-tag.obj `if test -f 'hb-ot-tag.cc'; then $(CYGPATH_W) 'hb-ot-tag.cc'; else $(CYGPATH_W) '$(srcdir)/hb-ot-tag.cc'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_ot_tag-hb-ot-tag.Tpo $(DEPDIR)/test_ot_tag-hb-ot-tag.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-ot-tag.cc' object='test_ot_tag-hb-ot-tag.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_ot_tag_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o test_ot_tag-hb-ot-tag.obj `if test -f 'hb-ot-tag.cc'; then $(CYGPATH_W) 'hb-ot-tag.cc'; else $(CYGPATH_W) '$(srcdir)/hb-ot-tag.cc'; fi`
-
test_size_params-test-size-params.o: test-size-params.cc
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_size_params_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT test_size_params-test-size-params.o -MD -MP -MF $(DEPDIR)/test_size_params-test-size-params.Tpo -c -o test_size_params-test-size-params.o `test -f 'test-size-params.cc' || echo '$(srcdir)/'`test-size-params.cc
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_size_params-test-size-params.Tpo $(DEPDIR)/test_size_params-test-size-params.Po
@@ -2589,7 +1942,7 @@ check-TESTS:
log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
exit $$?;
-recheck: all $(check_PROGRAMS) $(dist_check_SCRIPTS)
+recheck: all $(dist_check_SCRIPTS)
@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
@set +e; $(am__set_TESTS_bases); \
bases=`for i in $$bases; do echo $$i; done \
@@ -2649,13 +2002,6 @@ check-symbols.sh.log: check-symbols.sh
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
-test-ot-tag.log: test-ot-tag$(EXEEXT)
- @p='test-ot-tag$(EXEEXT)'; \
- b='test-ot-tag'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
.test.log:
@p='$<'; \
$(am__set_b); \
@@ -2727,8 +2073,7 @@ distdir: $(DISTFILES)
fi; \
done
check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) \
- $(dist_check_SCRIPTS)
+ $(MAKE) $(AM_MAKEFLAGS) $(dist_check_SCRIPTS)
$(MAKE) $(AM_MAKEFLAGS) check-TESTS
check: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) check-recursive
@@ -2780,9 +2125,8 @@ maintainer-clean-generic:
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-recursive
-clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
- clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS \
- mostlyclean-am
+clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
+ clean-libtool clean-noinstPROGRAMS mostlyclean-am
distclean: distclean-recursive
-rm -rf ./$(DEPDIR)
@@ -2859,15 +2203,14 @@ uninstall-am: uninstall-binPROGRAMS uninstall-girDATA \
install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
- check-TESTS check-am clean clean-binPROGRAMS \
- clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \
- clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
- ctags-am distclean distclean-compile distclean-generic \
- distclean-libtool distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-binPROGRAMS \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-girDATA install-html \
- install-html-am install-info install-info-am \
+ check-TESTS check-am clean clean-binPROGRAMS clean-generic \
+ clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS \
+ cscopelist-am ctags ctags-am distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-girDATA \
+ install-html install-html-am install-info install-info-am \
install-libLTLIBRARIES install-man \
install-nodist_pkgincludeHEADERS install-pdf install-pdf-am \
install-pkgconfigDATA install-pkgincludeHEADERS install-ps \
@@ -2886,8 +2229,7 @@ uninstall-am: uninstall-binPROGRAMS uninstall-girDATA \
#AM_CXXFLAGS =
# Convenience targets:
-lib: $(BUILT_SOURCES) libharfbuzz.la
-fuzzing: $(BUILT_SOURCES) libharfbuzz-fuzzing.la
+lib: libharfbuzz.la
@HAVE_GOBJECT_TRUE@hb-gobject-enums.%: hb-gobject-enums.%.tmpl $(HBHEADERS)
@HAVE_GOBJECT_TRUE@ $(AM_V_GEN) $(GLIB_MKENUMS) \
@HAVE_GOBJECT_TRUE@ --identifier-prefix hb_ --symbol-prefix hb_gobject \
@@ -2901,8 +2243,6 @@ fuzzing: $(BUILT_SOURCES) libharfbuzz-fuzzing.la
-e 's@%exec_prefix%@$(exec_prefix)@g' \
-e 's@%libdir%@$(libdir)@g' \
-e 's@%includedir%@$(includedir)@g' \
- -e 's@%libs_private%@$(HBNONPCLIBS)@g' \
- -e 's@%requires_private%@$(HBDEPS)@g' \
-e 's@%VERSION%@$(VERSION)@g' \
"$<" > "$@" \
|| ($(RM) "$@"; false)
@@ -2912,28 +2252,24 @@ harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS)
$(EGREP) '^hb_.* \(' | \
sed -e 's/ (.*//' | \
LANG=C sort; \
- echo LIBRARY libharfbuzz-0.dll; \
+ echo LIBRARY libharfbuzz-$(HB_VERSION_MAJOR).dll; \
) >"$@"
@ ! grep -q hb_ERROR "$@" \
|| ($(RM) "$@"; false)
-unicode-tables: arabic-table indic-table use-table
-
-arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
- $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-arabic-table.hh \
- || ($(RM) hb-ot-shape-complex-arabic-table.hh; false)
+unicode-tables: arabic-table indic-table
-indic-table: gen-indic-table.py IndicSyllabicCategory-7.0.0.txt IndicMatraCategory-7.0.0.txt Blocks.txt
+indic-table: gen-indic-table.py IndicSyllabicCategory.txt IndicMatraCategory.txt Blocks.txt
$(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-indic-table.cc \
|| ($(RM) hb-ot-shape-complex-indic-table.cc; false)
-use-table: gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt
- $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-use-table.cc \
- || ($(RM) hb-ot-shape-complex-use-table.cc; false)
+arabic-table: gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt
+ $(AM_V_GEN) $(builddir)/$^ > hb-ot-shape-complex-arabic-table.hh \
+ || ($(RM) hb-ot-shape-complex-arabic-table.hh; false)
built-sources: $(BUILT_SOURCES)
-.PHONY: unicode-tables arabic-table indic-table use-table built-sources
+.PHONY: unicode-tables arabic-table indic-table built-sources
$(srcdir)/%.hh: $(srcdir)/%.rl
$(AM_V_GEN)(cd $(srcdir) && $(RAGEL) -e -F1 -o "$*.hh" "$*.rl") \
|| ($(RM) "$@"; false)
diff --git a/src/Makefile.sources b/src/Makefile.sources
deleted file mode 100644
index ac80683..0000000
--- a/src/Makefile.sources
+++ /dev/null
@@ -1,151 +0,0 @@
-NULL =
-
-# Base and default-included sources and headers
-
-HB_BASE_sources = \
- hb-atomic-private.hh \
- hb-blob.cc \
- hb-buffer-deserialize-json.hh \
- hb-buffer-deserialize-text.hh \
- hb-buffer-private.hh \
- hb-buffer-serialize.cc \
- hb-buffer.cc \
- hb-cache-private.hh \
- hb-common.cc \
- hb-face-private.hh \
- hb-face.cc \
- hb-font-private.hh \
- hb-font.cc \
- hb-mutex-private.hh \
- hb-object-private.hh \
- hb-open-file-private.hh \
- hb-open-type-private.hh \
- hb-ot-cmap-table.hh \
- hb-ot-glyf-table.hh \
- hb-ot-head-table.hh \
- hb-ot-hhea-table.hh \
- hb-ot-hmtx-table.hh \
- hb-ot-maxp-table.hh \
- hb-ot-name-table.hh \
- hb-ot-os2-table.hh \
- hb-ot-post-table.hh \
- hb-ot-tag.cc \
- hb-private.hh \
- hb-set-private.hh \
- hb-set.cc \
- hb-shape.cc \
- hb-shape-plan-private.hh \
- hb-shape-plan.cc \
- hb-shaper-list.hh \
- hb-shaper-impl-private.hh \
- hb-shaper-private.hh \
- hb-shaper.cc \
- hb-unicode-private.hh \
- hb-unicode.cc \
- hb-utf-private.hh \
- hb-warning.cc \
- $(NULL)
-
-HB_BASE_headers = \
- hb.h \
- hb-blob.h \
- hb-buffer.h \
- hb-common.h \
- hb-deprecated.h \
- hb-face.h \
- hb-font.h \
- hb-set.h \
- hb-shape.h \
- hb-shape-plan.h \
- hb-unicode.h \
- $(NULL)
-
-HB_NODIST_headers = \
- hb-version.h \
- $(NULL)
-
-HB_FALLBACK_sources = hb-fallback-shape.cc
-
-HB_OT_sources = \
- hb-ot-font.cc \
- hb-ot-layout.cc \
- hb-ot-layout-common-private.hh \
- hb-ot-layout-gdef-table.hh \
- hb-ot-layout-gpos-table.hh \
- hb-ot-layout-gsubgpos-private.hh \
- hb-ot-layout-gsub-table.hh \
- hb-ot-layout-jstf-table.hh \
- hb-ot-layout-private.hh \
- hb-ot-map.cc \
- hb-ot-map-private.hh \
- hb-ot-shape.cc \
- hb-ot-shape-complex-arabic.cc \
- hb-ot-shape-complex-arabic-fallback.hh \
- hb-ot-shape-complex-arabic-private.hh \
- hb-ot-shape-complex-arabic-table.hh \
- hb-ot-shape-complex-arabic-win1256.hh \
- hb-ot-shape-complex-default.cc \
- hb-ot-shape-complex-hangul.cc \
- hb-ot-shape-complex-hebrew.cc \
- hb-ot-shape-complex-indic.cc \
- hb-ot-shape-complex-indic-machine.hh \
- hb-ot-shape-complex-indic-private.hh \
- hb-ot-shape-complex-indic-table.cc \
- hb-ot-shape-complex-myanmar.cc \
- hb-ot-shape-complex-myanmar-machine.hh \
- hb-ot-shape-complex-thai.cc \
- hb-ot-shape-complex-tibetan.cc \
- hb-ot-shape-complex-use.cc \
- hb-ot-shape-complex-use-machine.hh \
- hb-ot-shape-complex-use-private.hh \
- hb-ot-shape-complex-use-table.cc \
- hb-ot-shape-complex-private.hh \
- hb-ot-shape-normalize-private.hh \
- hb-ot-shape-normalize.cc \
- hb-ot-shape-fallback-private.hh \
- hb-ot-shape-fallback.cc \
- hb-ot-shape-private.hh \
- $(NULL)
-
-HB_OT_headers = \
- hb-ot.h \
- hb-ot-font.h \
- hb-ot-layout.h \
- hb-ot-shape.h \
- hb-ot-tag.h \
- $(NULL)
-
-# Optional Sources and Headers with external deps
-
-HB_FT_sources = hb-ft.cc
-HB_FT_headers = hb-ft.h
-
-HB_GLIB_sources = hb-glib.cc
-HB_GLIB_headers = hb-glib.h
-
-HB_GRAPHITE2_sources = hb-graphite2.cc
-HB_GRAPHITE2_headers = hb-graphite2.h
-
-# System-dependent sources and headers
-
-HB_CORETEXT_sources = hb-coretext.cc
-HB_CORETEXT_headers = hb-coretext.h
-
-HB_DIRECTWRITE_sources = hb-directwrite.cc
-HB_DIRECTWRITE_headers = hb-directwrite.h
-
-HB_UNISCRIBE_sources = hb-uniscribe.cc
-HB_UNISCRIBE_headers = hb-uniscribe.h
-
-# Additional supplemental sources
-HB_UCDN_sources = hb-ucdn.cc
-
-# Sources for libharfbuzz-gobject and libharfbuzz-icu
-HB_ICU_sources = hb-icu.cc
-HB_ICU_headers = hb-icu.h
-
-HB_GOBJECT_sources = hb-gobject-structs.cc
-HB_GOBJECT_STRUCTS_headers = hb-gobject-structs.h
-HB_GOBJECT_headers = hb-gobject.h $(HB_GOBJECT_STRUCTS_headers)
-HB_GOBJECT_ENUM_sources = hb-gobject-enums.cc
-HB_GOBJECT_ENUM_headers = hb-gobject-enums.h
diff --git a/src/check-header-guards.sh b/src/check-header-guards.sh
index 09c5ea8..9a3302c 100755
--- a/src/check-header-guards.sh
+++ b/src/check-header-guards.sh
@@ -9,12 +9,13 @@ stat=0
test "x$HBHEADERS" = x && HBHEADERS=`cd "$srcdir"; find . -maxdepth 1 -name 'hb*.h'`
test "x$HBSOURCES" = x && HBSOURCES=`cd "$srcdir"; find . -maxdepth 1 -name 'hb-*.cc' -or -name 'hb-*.hh'`
+
for x in $HBHEADERS $HBSOURCES; do
test -f "$srcdir/$x" && x="$srcdir/$x"
- echo "$x" | grep -q '[^h]$' && continue;
+ echo "$x" | grep '[^h]$' -q && continue;
xx=`echo "$x" | sed 's@.*/@@'`
tag=`echo "$xx" | tr 'a-z.-' 'A-Z_'`
- lines=`grep -w "$tag" "$x" | wc -l | sed 's/[ ]*//g'`
+ lines=`grep "\<$tag\>" "$x" | wc -l | sed 's/[ ]*//g'`
if test "x$lines" != x3; then
echo "Ouch, header file $x does not have correct preprocessor guards"
stat=1
diff --git a/src/check-libstdc++.sh b/src/check-libstdc++.sh
index b541828..27deb42 100755
--- a/src/check-libstdc++.sh
+++ b/src/check-libstdc++.sh
@@ -19,9 +19,9 @@ for suffix in so dylib; do
so=.libs/libharfbuzz.$suffix
if ! test -f "$so"; then continue; fi
- echo "Checking that we are not linking to libstdc++ or libc++"
- if ldd $so | grep 'libstdc[+][+]\|libc[+][+]'; then
- echo "Ouch, linked to libstdc++ or libc++"
+ echo "Checking that we are not linking to libstdc++"
+ if ldd $so | grep 'libstdc[+][+]'; then
+ echo "Ouch, linked to libstdc++"
stat=1
fi
tested=true
diff --git a/src/gen-indic-table.py b/src/gen-indic-table.py
index c055163..f5716bd 100755
--- a/src/gen-indic-table.py
+++ b/src/gen-indic-table.py
@@ -91,7 +91,6 @@ short = [{
"Visarga": 'Vs',
"Vowel": 'Vo',
"Vowel_Dependent": 'M',
- "Consonant_Prefixed": 'CPrf',
"Other": 'x',
},{
"Not_Applicable": 'x',
diff --git a/src/gen-use-table.py b/src/gen-use-table.py
deleted file mode 100755
index be04e4b..0000000
--- a/src/gen-use-table.py
+++ /dev/null
@@ -1,476 +0,0 @@
-#!/usr/bin/python
-
-import sys
-
-if len (sys.argv) != 5:
- print >>sys.stderr, "usage: ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt"
- sys.exit (1)
-
-BLACKLISTED_BLOCKS = ["Thai", "Lao", "Tibetan"]
-
-files = [file (x) for x in sys.argv[1:]]
-
-headers = [[f.readline () for i in range (2)] for j,f in enumerate(files) if j != 2]
-headers.append (["UnicodeData.txt does not have a header."])
-
-data = [{} for f in files]
-values = [{} for f in files]
-for i, f in enumerate (files):
- for line in f:
-
- j = line.find ('#')
- if j >= 0:
- line = line[:j]
-
- fields = [x.strip () for x in line.split (';')]
- if len (fields) == 1:
- continue
-
- uu = fields[0].split ('..')
- start = int (uu[0], 16)
- if len (uu) == 1:
- end = start
- else:
- end = int (uu[1], 16)
-
- t = fields[1 if i != 2 else 2]
-
- for u in range (start, end + 1):
- data[i][u] = t
- values[i][t] = values[i].get (t, 0) + end - start + 1
-
-defaults = ('Other', 'Not_Applicable', 'Cn', 'No_Block')
-
-# TODO Characters that are not in Unicode Indic files, but used in USE
-data[0][0x034F] = defaults[0]
-data[0][0x2060] = defaults[0]
-for u in range (0xFE00, 0xFE0F + 1):
- data[0][u] = defaults[0]
-
-# Merge data into one dict:
-for i,v in enumerate (defaults):
- values[i][v] = values[i].get (v, 0) + 1
-combined = {}
-for i,d in enumerate (data):
- for u,v in d.items ():
- if i >= 2 and not u in combined:
- continue
- if not u in combined:
- combined[u] = list (defaults)
- combined[u][i] = v
-combined = {k:v for k,v in combined.items() if v[3] not in BLACKLISTED_BLOCKS}
-data = combined
-del combined
-num = len (data)
-
-
-property_names = [
- # General_Category
- 'Cc', 'Cf', 'Cn', 'Co', 'Cs', 'Ll', 'Lm', 'Lo', 'Lt', 'Lu', 'Mc',
- 'Me', 'Mn', 'Nd', 'Nl', 'No', 'Pc', 'Pd', 'Pe', 'Pf', 'Pi', 'Po',
- 'Ps', 'Sc', 'Sk', 'Sm', 'So', 'Zl', 'Zp', 'Zs',
- # Indic_Syllabic_Category
- 'Other',
- 'Bindu',
- 'Visarga',
- 'Avagraha',
- 'Nukta',
- 'Virama',
- 'Pure_Killer',
- 'Invisible_Stacker',
- 'Vowel_Independent',
- 'Vowel_Dependent',
- 'Vowel',
- 'Consonant_Placeholder',
- 'Consonant',
- 'Consonant_Dead',
- 'Consonant_With_Stacker',
- 'Consonant_Prefixed',
- 'Consonant_Preceding_Repha',
- 'Consonant_Succeeding_Repha',
- 'Consonant_Subjoined',
- 'Consonant_Medial',
- 'Consonant_Final',
- 'Consonant_Head_Letter',
- 'Modifying_Letter',
- 'Tone_Letter',
- 'Tone_Mark',
- 'Gemination_Mark',
- 'Cantillation_Mark',
- 'Register_Shifter',
- 'Syllable_Modifier',
- 'Consonant_Killer',
- 'Non_Joiner',
- 'Joiner',
- 'Number_Joiner',
- 'Number',
- 'Brahmi_Joining_Number',
- # Indic_Positional_Category
- 'Not_Applicable',
- 'Right',
- 'Left',
- 'Visual_Order_Left',
- 'Left_And_Right',
- 'Top',
- 'Bottom',
- 'Top_And_Bottom',
- 'Top_And_Right',
- 'Top_And_Left',
- 'Top_And_Left_And_Right',
- 'Bottom_And_Right',
- 'Top_And_Bottom_And_Right',
- 'Overstruck',
-]
-
-class PropertyValue(object):
- def __init__(self, name_):
- self.name = name_
- def __str__(self):
- return self.name
- def __eq__(self, other):
- return self.name == (other if isinstance(other, basestring) else other.name)
- def __ne__(self, other):
- return not (self == other)
-
-property_values = {}
-
-for name in property_names:
- value = PropertyValue(name)
- assert value not in property_values
- assert value not in globals()
- property_values[name] = value
-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
- (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)
- return (UISC in [Consonant_Dead, Modifying_Letter] or
- (UGC == Po and not is_BASE_OTHER(U, UISC, UGC))) # for 104E
-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]
-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]
- 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
- return UISC == Consonant_Subjoined and UGC != Lo
-def is_HALANT(U, UISC, UGC):
- return UISC in [Virama, Invisible_Stacker]
-def is_HALANT_NUM(U, UISC, UGC):
- return UISC == Number_Joiner
-def is_ZWNJ(U, UISC, UGC):
- return UISC == Non_Joiner
-def is_ZWJ(U, UISC, UGC):
- return UISC == Joiner
-def is_Word_Joiner(U, UISC, UGC):
- return U == 0x2060
-def is_OTHER(U, UISC, UGC):
- #SPEC-OUTDATED return UGC == Zs # or any other SCRIPT_COMMON characters
- return (UISC == Other
- and not is_SYM_MOD(U, UISC, UGC)
- and not is_CGJ(U, UISC, UGC)
- and not is_Word_Joiner(U, UISC, UGC)
- and not is_VARIATION_SELECTOR(U, UISC, UGC)
- )
-def is_Reserved(U, UISC, UGC):
- return UGC == 'Cn'
-def is_REPHA(U, UISC, UGC):
- #return UISC == Consonant_Preceding_Repha
- #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
- return UGC in [So, Sc]
-def is_SYM_MOD(U, UISC, UGC):
- return U in [0x1B6B, 0x1B6C, 0x1B6D, 0x1B6E, 0x1B6F, 0x1B70, 0x1B71, 0x1B72, 0x1B73]
-def is_VARIATION_SELECTOR(U, UISC, UGC):
- return 0xFE00 <= U <= 0xFE0F
-def is_VOWEL(U, UISC, UGC):
- return (UISC == Pure_Killer or
- (UGC != Lo and UISC in [Vowel, Vowel_Dependent]))
-def is_VOWEL_MOD(U, UISC, UGC):
- return (UISC in [Tone_Mark, Cantillation_Mark, Register_Shifter, Visarga] or
- (UGC != Lo and UISC == Bindu))
-
-use_mapping = {
- 'B': is_BASE,
- 'IV': is_BASE_VOWEL,
- 'IND': is_BASE_IND,
- 'N': is_BASE_NUM,
- 'GB': is_BASE_OTHER,
- 'CGJ': is_CGJ,
- 'F': is_CONS_FINAL,
- 'FM': is_CONS_FINAL_MOD,
- 'M': is_CONS_MED,
- 'CM': is_CONS_MOD,
- 'SUB': is_CONS_SUB,
- 'H': is_HALANT,
- 'HN': is_HALANT_NUM,
- 'ZWNJ': is_ZWNJ,
- 'ZWJ': is_ZWJ,
- 'WJ': is_Word_Joiner,
- 'O': is_OTHER,
- 'Rsv': is_Reserved,
- 'R': is_REPHA,
- 'S': is_SYM,
- 'SM': is_SYM_MOD,
- 'VS': is_VARIATION_SELECTOR,
- 'V': is_VOWEL,
- 'VM': is_VOWEL_MOD,
-}
-
-use_positions = {
- 'F': {
- 'Abv': [Top],
- 'Blw': [Bottom],
- 'Pst': [Right],
- },
- 'M': {
- 'Abv': [Top],
- 'Blw': [Bottom],
- 'Pst': [Right],
- 'Pre': [Left],
- },
- 'CM': {
- 'Abv': [Top],
- 'Blw': [Bottom],
- },
- 'V': {
- 'Abv': [Top, Top_And_Bottom, Top_And_Bottom_And_Right, Top_And_Right],
- 'Blw': [Bottom, Overstruck, Bottom_And_Right],
- 'Pst': [Right],
- 'Pre': [Left, Top_And_Left, Top_And_Left_And_Right, Left_And_Right],
- },
- 'VM': {
- 'Abv': [Top],
- 'Blw': [Bottom, Overstruck],
- 'Pst': [Right],
- 'Pre': [Left],
- },
- 'SM': {
- 'Abv': [Top],
- 'Blw': [Bottom],
- },
- 'H': None,
- 'B': None,
- 'FM': None,
- 'SUB': None,
-}
-
-def map_to_use(data):
- out = {}
- items = use_mapping.items()
- for U,(UISC,UIPC,UGC,UBlock) in data.items():
-
- # Resolve Indic_Syllabic_Category
-
- # TODO: These don't have UISC assigned in Unicode 8.0, but
- # have UIPC
- if U == 0x17DD: UISC = Vowel_Dependent
- if 0x1CE2 <= U <= 0x1CE8: UISC = Cantillation_Mark
-
- # TODO: U+1CED should only be allowed after some of
- # the nasalization marks, maybe only for U+1CE9..U+1CF1.
- if U == 0x1CED: UISC = Tone_Mark
-
- evals = [(k, v(U,UISC,UGC)) for k,v in items]
- values = [k for k,v in evals if v]
- assert len(values) == 1, "%s %s %s %s" % (hex(U), UISC, UGC, values)
- USE = values[0]
-
- # Resolve Indic_Positional_Category
-
- # TODO: Not in Unicode 8.0 yet, but in spec.
- if U == 0x1B6C: UIPC = Bottom
-
- # TODO: These should die, but have UIPC in Unicode 8.0
- if U in [0x953, 0x954]: UIPC = Not_Applicable
-
- # TODO: In USE's override list but not in Unicode 8.0
- if U == 0x103C: UIPC = Left
-
- # TODO: These are not in USE's override list that we have, nor are they in Unicode 8.0
- if 0xA926 <= U <= 0xA92A: UIPC = Top
- if U == 0x111CA: UIPC = Bottom
- if U == 0x11300: UIPC = Top
- if U == 0x1133C: UIPC = Bottom
- if U == 0x1171E: UIPC = Left # Correct?!
- if 0x1CF2 <= U <= 0x1CF3: UIPC = Right
- if 0x1CF8 <= U <= 0x1CF9: UIPC = Top
-
- assert (UIPC in [Not_Applicable, Visual_Order_Left] or
- USE in use_positions), "%s %s %s %s %s" % (hex(U), UIPC, USE, UISC, UGC)
-
- pos_mapping = use_positions.get(USE, None)
- if pos_mapping:
- values = [k for k,v in pos_mapping.items() if v and UIPC in v]
- assert len(values) == 1, "%s %s %s %s %s %s" % (hex(U), UIPC, USE, UISC, UGC, values)
- USE = USE + values[0]
-
- out[U] = (USE, UBlock)
- return out
-
-defaults = ('O', 'No_Block')
-data = map_to_use(data)
-
-# Remove the outliers
-singles = {}
-for u in [0x034F, 0x25CC, 0x1107F]:
- singles[u] = data[u]
- del data[u]
-
-print "/* == Start of generated table == */"
-print "/*"
-print " * The following table is generated by running:"
-print " *"
-print " * ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt"
-print " *"
-print " * on files with these headers:"
-print " *"
-for h in headers:
- for l in h:
- print " * %s" % (l.strip())
-print " */"
-print
-print '#include "hb-ot-shape-complex-use-private.hh"'
-print
-
-total = 0
-used = 0
-last_block = None
-def print_block (block, start, end, data):
- global total, used, last_block
- if block and block != last_block:
- print
- print
- print " /* %s */" % block
- if start % 16:
- print ' ' * (20 + (start % 16 * 6)),
- num = 0
- assert start % 8 == 0
- assert (end+1) % 8 == 0
- for u in range (start, end+1):
- if u % 16 == 0:
- print
- print " /* %04X */" % u,
- if u in data:
- num += 1
- d = data.get (u, defaults)
- sys.stdout.write ("%6s," % d[0])
-
- total += end - start + 1
- used += num
- if block:
- last_block = block
-
-uu = data.keys ()
-uu.sort ()
-
-last = -100000
-num = 0
-offset = 0
-starts = []
-ends = []
-for k,v in sorted(use_mapping.items()):
- if k in use_positions and use_positions[k]: continue
- print "#define %s USE_%s /* %s */" % (k, k, v.__name__[3:])
-for k,v in sorted(use_positions.items()):
- if not v: continue
- for suf in v.keys():
- tag = k + suf
- print "#define %s USE_%s" % (tag, tag)
-print ""
-print "static const USE_TABLE_ELEMENT_TYPE use_table[] = {"
-for u in uu:
- if u <= last:
- continue
- block = data[u][1]
-
- start = u//8*8
- end = start+1
- while end in uu and block == data[end][1]:
- end += 1
- end = (end-1)//8*8 + 7
-
- if start != last + 1:
- if start - last <= 1+16*3:
- print_block (None, last+1, start-1, data)
- last = start-1
- else:
- if last >= 0:
- ends.append (last + 1)
- offset += ends[-1] - starts[-1]
- print
- print
- print "#define use_offset_0x%04xu %d" % (start, offset)
- starts.append (start)
-
- print_block (block, start, end, data)
- last = end
-ends.append (last + 1)
-offset += ends[-1] - starts[-1]
-print
-print
-occupancy = used * 100. / total
-page_bits = 12
-print "}; /* Table items: %d; occupancy: %d%% */" % (offset, occupancy)
-print
-print "USE_TABLE_ELEMENT_TYPE"
-print "hb_use_get_categories (hb_codepoint_t u)"
-print "{"
-print " switch (u >> %d)" % page_bits
-print " {"
-pages = set([u>>page_bits for u in starts+ends+singles.keys()])
-for p in sorted(pages):
- print " case 0x%0Xu:" % p
- for (start,end) in zip (starts, ends):
- if p not in [start>>page_bits, end>>page_bits]: continue
- offset = "use_offset_0x%04xu" % start
- print " if (hb_in_range (u, 0x%04Xu, 0x%04Xu)) return use_table[u - 0x%04Xu + %s];" % (start, end-1, start, offset)
- for u,d in singles.items ():
- if p != u>>page_bits: continue
- print " if (unlikely (u == 0x%04Xu)) return %s;" % (u, d[0])
- print " break;"
- print ""
-print " default:"
-print " break;"
-print " }"
-print " return USE_O;"
-print "}"
-print
-for k in sorted(use_mapping.keys()):
- if k in use_positions and use_positions[k]: continue
- print "#undef %s" % k
-for k,v in sorted(use_positions.items()):
- if not v: continue
- for suf in v.keys():
- tag = k + suf
- print "#undef %s" % tag
-print
-print "/* == End of generated table == */"
-
-# Maintain at least 50% occupancy in the table */
-if occupancy < 50:
- raise Exception ("Table too sparse, please investigate: ", occupancy)
diff --git a/src/harfbuzz.pc.in b/src/harfbuzz.pc.in
index b3e124a..7f27bbb 100644
--- a/src/harfbuzz.pc.in
+++ b/src/harfbuzz.pc.in
@@ -8,6 +8,4 @@ Description: HarfBuzz text shaping library
Version: %VERSION%
Libs: -L${libdir} -lharfbuzz
-Libs.private: %libs_private%
-Requires.private: %requires_private%
Cflags: -I${includedir}/harfbuzz
diff --git a/src/hb-atomic-private.hh b/src/hb-atomic-private.hh
index 100ba53..e6738b7 100644
--- a/src/hb-atomic-private.hh
+++ b/src/hb-atomic-private.hh
@@ -39,11 +39,7 @@
/* We need external help for these */
-#if defined(hb_atomic_int_impl_add) \
- && defined(hb_atomic_ptr_impl_get) \
- && defined(hb_atomic_ptr_impl_cmpexch)
-
-/* Defined externally, i.e. in config.h; must have typedef'ed hb_atomic_int_impl_t as well. */
+#if 0
#elif !defined(HB_NO_MT) && (defined(_WIN32) || defined(__CYGWIN__))
@@ -62,12 +58,11 @@ static inline void _HBMemoryBarrier (void) {
#endif
}
-typedef LONG hb_atomic_int_impl_t;
-#define HB_ATOMIC_INT_IMPL_INIT(V) (V)
-#define hb_atomic_int_impl_add(AI, V) InterlockedExchangeAdd (&(AI), (V))
+typedef LONG hb_atomic_int_t;
+#define hb_atomic_int_add(AI, V) InterlockedExchangeAdd (&(AI), (V))
-#define hb_atomic_ptr_impl_get(P) (_HBMemoryBarrier (), (void *) *(P))
-#define hb_atomic_ptr_impl_cmpexch(P,O,N) (InterlockedCompareExchangePointer ((void **) (P), (void *) (N), (void *) (O)) == (void *) (O))
+#define hb_atomic_ptr_get(P) (_HBMemoryBarrier (), (void *) *(P))
+#define hb_atomic_ptr_cmpexch(P,O,N) (InterlockedCompareExchangePointer ((void **) (P), (void *) (N), (void *) (O)) == (void *) (O))
#elif !defined(HB_NO_MT) && defined(__APPLE__)
@@ -79,31 +74,28 @@ typedef LONG hb_atomic_int_impl_t;
#include <Availability.h>
#endif
+typedef int32_t hb_atomic_int_t;
+#define hb_atomic_int_add(AI, V) (OSAtomicAdd32Barrier ((V), &(AI)) - (V))
-typedef int32_t hb_atomic_int_impl_t;
-#define HB_ATOMIC_INT_IMPL_INIT(V) (V)
-#define hb_atomic_int_impl_add(AI, V) (OSAtomicAdd32Barrier ((V), &(AI)) - (V))
-
-#define hb_atomic_ptr_impl_get(P) (OSMemoryBarrier (), (void *) *(P))
+#define hb_atomic_ptr_get(P) (OSMemoryBarrier (), (void *) *(P))
#if (MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_4 || __IPHONE_VERSION_MIN_REQUIRED >= 20100)
-#define hb_atomic_ptr_impl_cmpexch(P,O,N) OSAtomicCompareAndSwapPtrBarrier ((void *) (O), (void *) (N), (void **) (P))
+#define hb_atomic_ptr_cmpexch(P,O,N) OSAtomicCompareAndSwapPtrBarrier ((void *) (O), (void *) (N), (void **) (P))
#else
#if __ppc64__ || __x86_64__ || __aarch64__
-#define hb_atomic_ptr_impl_cmpexch(P,O,N) OSAtomicCompareAndSwap64Barrier ((int64_t) (O), (int64_t) (N), (int64_t*) (P))
+#define hb_atomic_ptr_cmpexch(P,O,N) OSAtomicCompareAndSwap64Barrier ((int64_t) (O), (int64_t) (N), (int64_t*) (P))
#else
-#define hb_atomic_ptr_impl_cmpexch(P,O,N) OSAtomicCompareAndSwap32Barrier ((int32_t) (O), (int32_t) (N), (int32_t*) (P))
+#define hb_atomic_ptr_cmpexch(P,O,N) OSAtomicCompareAndSwap32Barrier ((int32_t) (O), (int32_t) (N), (int32_t*) (P))
#endif
#endif
#elif !defined(HB_NO_MT) && defined(HAVE_INTEL_ATOMIC_PRIMITIVES)
-typedef int hb_atomic_int_impl_t;
-#define HB_ATOMIC_INT_IMPL_INIT(V) (V)
-#define hb_atomic_int_impl_add(AI, V) __sync_fetch_and_add (&(AI), (V))
+typedef int hb_atomic_int_t;
+#define hb_atomic_int_add(AI, V) __sync_fetch_and_add (&(AI), (V))
-#define hb_atomic_ptr_impl_get(P) (void *) (__sync_synchronize (), *(P))
-#define hb_atomic_ptr_impl_cmpexch(P,O,N) __sync_bool_compare_and_swap ((P), (O), (N))
+#define hb_atomic_ptr_get(P) (void *) (__sync_synchronize (), *(P))
+#define hb_atomic_ptr_cmpexch(P,O,N) __sync_bool_compare_and_swap ((P), (O), (N))
#elif !defined(HB_NO_MT) && defined(HAVE_SOLARIS_ATOMIC_OPS)
@@ -111,79 +103,33 @@ typedef int hb_atomic_int_impl_t;
#include <atomic.h>
#include <mbarrier.h>
-typedef unsigned int hb_atomic_int_impl_t;
-#define HB_ATOMIC_INT_IMPL_INIT(V) (V)
-#define hb_atomic_int_impl_add(AI, V) ( ({__machine_rw_barrier ();}), atomic_add_int_nv (&(AI), (V)) - (V))
-
-#define hb_atomic_ptr_impl_get(P) ( ({__machine_rw_barrier ();}), (void *) *(P))
-#define hb_atomic_ptr_impl_cmpexch(P,O,N) ( ({__machine_rw_barrier ();}), atomic_cas_ptr ((void **) (P), (void *) (O), (void *) (N)) == (void *) (O) ? true : false)
-
-
-#elif !defined(HB_NO_MT) && defined(_AIX) && defined(__IBMCPP__)
-
-#include <builtins.h>
-
-
-static inline int hb_fetch_and_add(volatile int* AI, unsigned int V) {
- __lwsync();
- int result = __fetch_and_add(AI, V);
- __isync();
- return result;
-}
-static inline int hb_compare_and_swaplp(volatile long* P, long O, long N) {
- __sync();
- int result = __compare_and_swaplp (P, &O, N);
- __sync();
- return result;
-}
+typedef unsigned int hb_atomic_int_t;
+#define hb_atomic_int_add(AI, V) ( ({__machine_rw_barrier ();}), atomic_add_int_nv (&(AI), (V)) - (V))
-typedef int hb_atomic_int_impl_t;
-#define HB_ATOMIC_INT_IMPL_INIT(V) (V)
-#define hb_atomic_int_impl_add(AI, V) hb_fetch_and_add (&(AI), (V))
+#define hb_atomic_ptr_get(P) ( ({__machine_rw_barrier ();}), (void *) *(P))
+#define hb_atomic_ptr_cmpexch(P,O,N) ( ({__machine_rw_barrier ();}), atomic_cas_ptr ((void **) (P), (void *) (O), (void *) (N)) == (void *) (O) ? true : false)
-#define hb_atomic_ptr_impl_get(P) (__sync(), (void *) *(P))
-#define hb_atomic_ptr_impl_cmpexch(P,O,N) hb_compare_and_swaplp ((long*)(P), (long)(O), (long)(N))
#elif !defined(HB_NO_MT)
#define HB_ATOMIC_INT_NIL 1 /* Warn that fallback implementation is in use. */
+typedef volatile int hb_atomic_int_t;
+#define hb_atomic_int_add(AI, V) (((AI) += (V)) - (V))
-typedef volatile int hb_atomic_int_impl_t;
-#define HB_ATOMIC_INT_IMPL_INIT(V) (V)
-#define hb_atomic_int_impl_add(AI, V) (((AI) += (V)) - (V))
-
-#define hb_atomic_ptr_impl_get(P) ((void *) *(P))
-#define hb_atomic_ptr_impl_cmpexch(P,O,N) (* (void * volatile *) (P) == (void *) (O) ? (* (void * volatile *) (P) = (void *) (N), true) : false)
+#define hb_atomic_ptr_get(P) ((void *) *(P))
+#define hb_atomic_ptr_cmpexch(P,O,N) (* (void * volatile *) (P) == (void *) (O) ? (* (void * volatile *) (P) = (void *) (N), true) : false)
#else /* HB_NO_MT */
-typedef int hb_atomic_int_impl_t;
-#define HB_ATOMIC_INT_IMPL_INIT(V) (V)
-#define hb_atomic_int_impl_add(AI, V) (((AI) += (V)) - (V))
-
-#define hb_atomic_ptr_impl_get(P) ((void *) *(P))
-#define hb_atomic_ptr_impl_cmpexch(P,O,N) (* (void **) (P) == (void *) (O) ? (* (void **) (P) = (void *) (N), true) : false)
+typedef int hb_atomic_int_t;
+#define hb_atomic_int_add(AI, V) (((AI) += (V)) - (V))
+#define hb_atomic_ptr_get(P) ((void *) *(P))
+#define hb_atomic_ptr_cmpexch(P,O,N) (* (void **) (P) == (void *) (O) ? (* (void **) (P) = (void *) (N), true) : false)
#endif
-
-#define HB_ATOMIC_INT_INIT(V) {HB_ATOMIC_INT_IMPL_INIT(V)}
-
-struct hb_atomic_int_t
-{
- hb_atomic_int_impl_t v;
-
- inline void set_unsafe (int v_) { v = v_; }
- inline int get_unsafe (void) const { return v; }
- inline int inc (void) { return hb_atomic_int_impl_add (const_cast<hb_atomic_int_impl_t &> (v), 1); }
- inline int dec (void) { return hb_atomic_int_impl_add (const_cast<hb_atomic_int_impl_t &> (v), -1); }
-};
-
-
-#define hb_atomic_ptr_get(P) hb_atomic_ptr_impl_get(P)
-#define hb_atomic_ptr_cmpexch(P,O,N) hb_atomic_ptr_impl_cmpexch((P),(O),(N))
-
+/* TODO Add tracing. */
#endif /* HB_ATOMIC_PRIVATE_HH */
diff --git a/src/hb-blob.cc b/src/hb-blob.cc
index fb48f03..8759a25 100644
--- a/src/hb-blob.cc
+++ b/src/hb-blob.cc
@@ -91,7 +91,7 @@ _hb_blob_destroy_user_data (hb_blob_t *blob)
* Return value: New blob, or the empty blob if something failed or if @length is
* zero. Destroy with hb_blob_destroy().
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_blob_t *
hb_blob_create (const char *data,
@@ -104,6 +104,7 @@ hb_blob_create (const char *data,
if (!length ||
length >= 1u << 31 ||
+ data + length < data /* overflows */ ||
!(blob = hb_object_create<hb_blob_t> ())) {
if (destroy)
destroy (user_data);
@@ -146,7 +147,7 @@ hb_blob_create (const char *data,
* @length is zero or @offset is beyond the end of @parent's data. Destroy
* with hb_blob_destroy().
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_blob_t *
hb_blob_create_sub_blob (hb_blob_t *parent,
@@ -178,7 +179,7 @@ hb_blob_create_sub_blob (hb_blob_t *parent,
*
* Return value: (transfer full): the empty blob.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_blob_t *
hb_blob_get_empty (void)
@@ -209,7 +210,7 @@ hb_blob_get_empty (void)
*
* Return value: @blob.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_blob_t *
hb_blob_reference (hb_blob_t *blob)
@@ -227,7 +228,7 @@ hb_blob_reference (hb_blob_t *blob)
*
* See TODO:link object types for more information.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_blob_destroy (hb_blob_t *blob)
@@ -249,7 +250,7 @@ hb_blob_destroy (hb_blob_t *blob)
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_blob_set_user_data (hb_blob_t *blob,
@@ -270,7 +271,7 @@ hb_blob_set_user_data (hb_blob_t *blob,
*
* Return value: (transfer none):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void *
hb_blob_get_user_data (hb_blob_t *blob,
@@ -286,7 +287,7 @@ hb_blob_get_user_data (hb_blob_t *blob,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_blob_make_immutable (hb_blob_t *blob)
@@ -305,7 +306,7 @@ hb_blob_make_immutable (hb_blob_t *blob)
*
* Return value: TODO
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_blob_is_immutable (hb_blob_t *blob)
@@ -322,7 +323,7 @@ hb_blob_is_immutable (hb_blob_t *blob)
*
* Return value: the length of blob data in bytes.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
unsigned int
hb_blob_get_length (hb_blob_t *blob)
@@ -339,7 +340,7 @@ hb_blob_get_length (hb_blob_t *blob)
*
* Returns: (transfer none) (array length=length):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
const char *
hb_blob_get_data (hb_blob_t *blob, unsigned int *length)
@@ -364,7 +365,7 @@ hb_blob_get_data (hb_blob_t *blob, unsigned int *length)
* Returns: (transfer none) (array length=length): Writable blob data,
* or %NULL if failed.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
char *
hb_blob_get_data_writable (hb_blob_t *blob, unsigned int *length)
diff --git a/src/hb-blob.h b/src/hb-blob.h
index ef3fc98..b2419ab 100644
--- a/src/hb-blob.h
+++ b/src/hb-blob.h
@@ -64,7 +64,7 @@ typedef enum {
typedef struct hb_blob_t hb_blob_t;
-HB_EXTERN hb_blob_t *
+hb_blob_t *
hb_blob_create (const char *data,
unsigned int length,
hb_memory_mode_t mode,
@@ -77,21 +77,21 @@ hb_blob_create (const char *data,
* modify the parent data as that data may be
* shared among multiple sub-blobs.
*/
-HB_EXTERN hb_blob_t *
+hb_blob_t *
hb_blob_create_sub_blob (hb_blob_t *parent,
unsigned int offset,
unsigned int length);
-HB_EXTERN hb_blob_t *
+hb_blob_t *
hb_blob_get_empty (void);
-HB_EXTERN hb_blob_t *
+hb_blob_t *
hb_blob_reference (hb_blob_t *blob);
-HB_EXTERN void
+void
hb_blob_destroy (hb_blob_t *blob);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_blob_set_user_data (hb_blob_t *blob,
hb_user_data_key_t *key,
void * data,
@@ -99,25 +99,25 @@ hb_blob_set_user_data (hb_blob_t *blob,
hb_bool_t replace);
-HB_EXTERN void *
+void *
hb_blob_get_user_data (hb_blob_t *blob,
hb_user_data_key_t *key);
-HB_EXTERN void
+void
hb_blob_make_immutable (hb_blob_t *blob);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_blob_is_immutable (hb_blob_t *blob);
-HB_EXTERN unsigned int
+unsigned int
hb_blob_get_length (hb_blob_t *blob);
-HB_EXTERN const char *
+const char *
hb_blob_get_data (hb_blob_t *blob, unsigned int *length);
-HB_EXTERN char *
+char *
hb_blob_get_data_writable (hb_blob_t *blob, unsigned int *length);
diff --git a/src/hb-buffer-deserialize-text.hh b/src/hb-buffer-deserialize-text.hh
index d2d8daa..7a46ab2 100644
--- a/src/hb-buffer-deserialize-text.hh
+++ b/src/hb-buffer-deserialize-text.hh
@@ -336,8 +336,8 @@ _hb_buffer_deserialize_glyphs_text (hb_buffer_t *buffer,
const char *eof = pe, *tok = NULL;
int cs;
- hb_glyph_info_t info = {0};
- hb_glyph_position_t pos = {0};
+ hb_glyph_info_t info;
+ hb_glyph_position_t pos;
#line 343 "hb-buffer-deserialize-text.hh"
{
diff --git a/src/hb-buffer-deserialize-text.rl b/src/hb-buffer-deserialize-text.rl
index 8a682f7..8856580 100644
--- a/src/hb-buffer-deserialize-text.rl
+++ b/src/hb-buffer-deserialize-text.rl
@@ -111,8 +111,8 @@ _hb_buffer_deserialize_glyphs_text (hb_buffer_t *buffer,
const char *eof = pe, *tok = NULL;
int cs;
- hb_glyph_info_t info = {0};
- hb_glyph_position_t pos = {0};
+ hb_glyph_info_t info;
+ hb_glyph_position_t pos;
%%{
write init;
write exec;
diff --git a/src/hb-buffer-private.hh b/src/hb-buffer-private.hh
index ed592f4..069f925 100644
--- a/src/hb-buffer-private.hh
+++ b/src/hb-buffer-private.hh
@@ -35,36 +35,9 @@
#include "hb-unicode-private.hh"
-#ifndef HB_BUFFER_MAX_EXPANSION_FACTOR
-#define HB_BUFFER_MAX_EXPANSION_FACTOR 32
-#endif
-#ifndef HB_BUFFER_MAX_LEN_MIN
-#define HB_BUFFER_MAX_LEN_MIN 8192
-#endif
-#ifndef HB_BUFFER_MAX_LEN_DEFAULT
-#define HB_BUFFER_MAX_LEN_DEFAULT 0x3FFFFFFF /* Shaping more than a billion chars? Let us know! */
-#endif
-
ASSERT_STATIC (sizeof (hb_glyph_info_t) == 20);
ASSERT_STATIC (sizeof (hb_glyph_info_t) == sizeof (hb_glyph_position_t));
-HB_MARK_AS_FLAG_T (hb_buffer_flags_t);
-HB_MARK_AS_FLAG_T (hb_buffer_serialize_flags_t);
-
-enum hb_buffer_scratch_flags_t {
- HB_BUFFER_SCRATCH_FLAG_DEFAULT = 0x00000000u,
- HB_BUFFER_SCRATCH_FLAG_HAS_NON_ASCII = 0x00000001u,
- HB_BUFFER_SCRATCH_FLAG_HAS_DEFAULT_IGNORABLES = 0x00000002u,
- HB_BUFFER_SCRATCH_FLAG_HAS_SPACE_FALLBACK = 0x00000004u,
- HB_BUFFER_SCRATCH_FLAG_HAS_GPOS_ATTACHMENT = 0x00000008u,
- /* Reserved for complex shapers' internal use. */
- HB_BUFFER_SCRATCH_FLAG_COMPLEX0 = 0x01000000u,
- HB_BUFFER_SCRATCH_FLAG_COMPLEX1 = 0x02000000u,
- HB_BUFFER_SCRATCH_FLAG_COMPLEX2 = 0x04000000u,
- HB_BUFFER_SCRATCH_FLAG_COMPLEX3 = 0x08000000u,
-};
-HB_MARK_AS_FLAG_T (hb_buffer_scratch_flags_t);
-
/*
* hb_buffer_t
@@ -77,10 +50,7 @@ struct hb_buffer_t {
/* Information about how the text in the buffer should be treated */
hb_unicode_funcs_t *unicode; /* Unicode functions */
hb_buffer_flags_t flags; /* BOT / EOT / etc. */
- hb_buffer_cluster_level_t cluster_level;
hb_codepoint_t replacement; /* U+FFFD or something else. */
- hb_buffer_scratch_flags_t scratch_flags; /* Have space-flallback, etc. */
- unsigned int max_len; /* Maximum allowed len. */
/* Buffer contents */
hb_buffer_content_type_t content_type;
@@ -105,13 +75,17 @@ struct hb_buffer_t {
inline hb_glyph_position_t &cur_pos (unsigned int i = 0) { return pos[idx + i]; }
inline hb_glyph_position_t cur_pos (unsigned int i = 0) const { return pos[idx + i]; }
- inline hb_glyph_info_t &prev (void) { return out_info[out_len ? out_len - 1 : 0]; }
- inline hb_glyph_info_t prev (void) const { return out_info[out_len ? out_len - 1 : 0]; }
+ inline hb_glyph_info_t &prev (void) { return out_info[out_len - 1]; }
+ inline hb_glyph_info_t prev (void) const { return info[out_len - 1]; }
inline bool has_separate_output (void) const { return info != out_info; }
unsigned int serial;
+ /* These reflect current allocations of the bytes in glyph_info_t's var1 and var2. */
+ uint8_t allocated_var_bytes[8];
+ const char *allocated_var_owner[8];
+
/* Text before / after the main buffer contents.
* Always in Unicode, and ordered outward.
* Index 0 is for "pre-context", 1 for "post-context". */
@@ -119,52 +93,6 @@ struct hb_buffer_t {
hb_codepoint_t context[2][CONTEXT_LENGTH];
unsigned int context_len[2];
- /* Debugging API */
- hb_buffer_message_func_t message_func;
- void *message_data;
- hb_destroy_func_t message_destroy;
-
- /* Internal debugging. */
- /* The bits here reflect current allocations of the bytes in glyph_info_t's var1 and var2. */
-#ifndef HB_NDEBUG
- uint8_t allocated_var_bits;
-#endif
- inline void allocate_var (unsigned int start, unsigned int count)
- {
-#ifndef HB_NDEBUG
- unsigned int end = start + count;
- assert (end <= 8);
- unsigned int bits = (1<<end) - (1<<start);
- assert (0 == (allocated_var_bits & bits));
- allocated_var_bits |= bits;
-#endif
- }
- inline void deallocate_var (unsigned int start, unsigned int count)
- {
-#ifndef HB_NDEBUG
- unsigned int end = start + count;
- assert (end <= 8);
- unsigned int bits = (1<<end) - (1<<start);
- assert (bits == (allocated_var_bits & bits));
- allocated_var_bits &= ~bits;
-#endif
- }
- inline void assert_var (unsigned int start, unsigned int count)
- {
-#ifndef HB_NDEBUG
- unsigned int end = start + count;
- assert (end <= 8);
- unsigned int bits = (1<<end) - (1<<start);
- assert (bits == (allocated_var_bits & bits));
-#endif
- }
- inline void deallocate_var_all (void)
- {
-#ifndef HB_NDEBUG
- allocated_var_bits = 0;
-#endif
- }
-
/* Methods */
@@ -177,6 +105,11 @@ struct hb_buffer_t {
{ return len - idx; }
inline unsigned int next_serial (void) { return serial++; }
+ HB_INTERNAL void allocate_var (unsigned int byte_i, unsigned int count, const char *owner);
+ HB_INTERNAL void deallocate_var (unsigned int byte_i, unsigned int count, const char *owner);
+ HB_INTERNAL void assert_var (unsigned int byte_i, unsigned int count, const char *owner);
+ HB_INTERNAL void deallocate_var_all (void);
+
HB_INTERNAL void add (hb_codepoint_t codepoint,
unsigned int cluster);
HB_INTERNAL void add_info (const hb_glyph_info_t &glyph_info);
@@ -238,18 +171,9 @@ struct hb_buffer_t {
unsigned int cluster_end);
HB_INTERNAL void merge_clusters (unsigned int start,
- unsigned int end)
- {
- if (end - start < 2)
- return;
- merge_clusters_impl (start, end);
- }
- HB_INTERNAL void merge_clusters_impl (unsigned int start,
- unsigned int end);
+ unsigned int end);
HB_INTERNAL void merge_out_clusters (unsigned int start,
unsigned int end);
- /* Merge clusters for deleting current glyph, and skip it. */
- HB_INTERNAL void delete_glyph (void);
/* Internal methods */
HB_INTERNAL bool enlarge (unsigned int size);
@@ -267,30 +191,18 @@ struct hb_buffer_t {
HB_INTERNAL scratch_buffer_t *get_scratch_buffer (unsigned int *size);
inline void clear_context (unsigned int side) { context_len[side] = 0; }
-
- HB_INTERNAL void sort (unsigned int start, unsigned int end, int(*compar)(const hb_glyph_info_t *, const hb_glyph_info_t *));
-
- inline bool messaging (void) { return unlikely (message_func); }
- inline bool message (hb_font_t *font, const char *fmt, ...) HB_PRINTF_FUNC(3, 4)
- {
- if (!messaging ())
- return true;
- va_list ap;
- va_start (ap, fmt);
- bool ret = message_impl (font, fmt, ap);
- va_end (ap);
- return ret;
- }
- HB_INTERNAL bool message_impl (hb_font_t *font, const char *fmt, va_list ap) HB_PRINTF_FUNC(3, 0);
};
-#define HB_BUFFER_XALLOCATE_VAR(b, func, var) \
+#define HB_BUFFER_XALLOCATE_VAR(b, func, var, owner) \
b->func (offsetof (hb_glyph_info_t, var) - offsetof(hb_glyph_info_t, var1), \
- sizeof (b->info[0].var))
-#define HB_BUFFER_ALLOCATE_VAR(b, var) HB_BUFFER_XALLOCATE_VAR (b, allocate_var, var ())
-#define HB_BUFFER_DEALLOCATE_VAR(b, var) HB_BUFFER_XALLOCATE_VAR (b, deallocate_var, var ())
-#define HB_BUFFER_ASSERT_VAR(b, var) HB_BUFFER_XALLOCATE_VAR (b, assert_var, var ())
+ sizeof (b->info[0].var), owner)
+#define HB_BUFFER_ALLOCATE_VAR(b, var) \
+ HB_BUFFER_XALLOCATE_VAR (b, allocate_var, var (), #var)
+#define HB_BUFFER_DEALLOCATE_VAR(b, var) \
+ HB_BUFFER_XALLOCATE_VAR (b, deallocate_var, var (), #var)
+#define HB_BUFFER_ASSERT_VAR(b, var) \
+ HB_BUFFER_XALLOCATE_VAR (b, assert_var, var (), #var)
#endif /* HB_BUFFER_PRIVATE_HH */
diff --git a/src/hb-buffer-serialize.cc b/src/hb-buffer-serialize.cc
index 63a0f34..406d69d 100644
--- a/src/hb-buffer-serialize.cc
+++ b/src/hb-buffer-serialize.cc
@@ -36,12 +36,11 @@ static const char *serialize_formats[] = {
/**
* hb_buffer_serialize_list_formats:
*
- * Returns a list of supported buffer serialization formats.
+ *
*
* Return value: (transfer none):
- * A string array of buffer serialization formats. Should not be freed.
*
- * Since: 0.9.7
+ * Since: 1.0
**/
const char **
hb_buffer_serialize_list_formats (void)
@@ -51,17 +50,14 @@ hb_buffer_serialize_list_formats (void)
/**
* hb_buffer_serialize_format_from_string:
- * @str: (array length=len) (element-type uint8_t): a string to parse
- * @len: length of @str, or -1 if string is %NULL terminated
+ * @str:
+ * @len:
*
- * Parses a string into an #hb_buffer_serialize_format_t. Does not check if
- * @str is a valid buffer serialization format, use
- * hb_buffer_serialize_list_formats() to get the list of supported formats.
+ *
*
* Return value:
- * The parsed #hb_buffer_serialize_format_t.
*
- * Since: 0.9.7
+ * Since: 1.0
**/
hb_buffer_serialize_format_t
hb_buffer_serialize_format_from_string (const char *str, int len)
@@ -72,15 +68,13 @@ hb_buffer_serialize_format_from_string (const char *str, int len)
/**
* hb_buffer_serialize_format_to_string:
- * @format: an #hb_buffer_serialize_format_t to convert.
+ * @format:
*
- * Converts @format to the string corresponding it, or %NULL if it is not a valid
- * #hb_buffer_serialize_format_t.
+ *
*
- * Return value: (transfer none):
- * A %NULL terminated string corresponding to @format. Should not be freed.
+ * Return value:
*
- * Since: 0.9.7
+ * Since: 1.0
**/
const char *
hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format)
@@ -105,8 +99,7 @@ _hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer,
hb_buffer_serialize_flags_t flags)
{
hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, NULL);
- hb_glyph_position_t *pos = (flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS) ?
- NULL : hb_buffer_get_glyph_positions (buffer, NULL);
+ hb_glyph_position_t *pos = hb_buffer_get_glyph_positions (buffer, NULL);
*buf_consumed = 0;
for (unsigned int i = start; i < end; i++)
@@ -151,16 +144,6 @@ _hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer,
pos[i].x_advance, pos[i].y_advance);
}
- if (flags & HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS)
- {
- hb_glyph_extents_t extents;
- hb_font_get_glyph_extents(font, info[i].codepoint, &extents);
- p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"xb\":%d,\"yb\":%d",
- extents.x_bearing, extents.y_bearing));
- p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"w\":%d,\"h\":%d",
- extents.width, extents.height));
- }
-
*p++ = '}';
unsigned int l = p - b;
@@ -189,8 +172,7 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer,
hb_buffer_serialize_flags_t flags)
{
hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, NULL);
- hb_glyph_position_t *pos = (flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS) ?
- NULL : hb_buffer_get_glyph_positions (buffer, NULL);
+ hb_glyph_position_t *pos = hb_buffer_get_glyph_positions (buffer, NULL);
*buf_consumed = 0;
for (unsigned int i = start; i < end; i++)
@@ -226,13 +208,6 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer,
p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",%d", pos[i].y_advance));
}
- if (flags & HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS)
- {
- hb_glyph_extents_t extents;
- hb_font_get_glyph_extents(font, info[i].codepoint, &extents);
- p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "<%d,%d,%d,%d>", extents.x_bearing, extents.y_bearing, extents.width, extents.height));
- }
-
unsigned int l = p - b;
if (buf_size > l)
{
@@ -248,51 +223,24 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer,
return end - start;
}
+/* Returns number of items, starting at start, that were serialized. */
/**
* hb_buffer_serialize_glyphs:
- * @buffer: an #hb_buffer_t buffer.
- * @start: the first item in @buffer to serialize.
- * @end: the last item in @buffer to serialize.
- * @buf: (out) (array length=buf_size) (element-type uint8_t): output string to
- * write serialized buffer into.
- * @buf_size: the size of @buf.
- * @buf_consumed: (out) (allow-none): if not %NULL, will be set to the number of byes written into @buf.
- * @font: (allow-none): the #hb_font_t used to shape this buffer, needed to
- * read glyph names and extents. If %NULL, and empty font will be used.
- * @format: the #hb_buffer_serialize_format_t to use for formatting the output.
- * @flags: the #hb_buffer_serialize_flags_t that control what glyph properties
- * to serialize.
- *
- * Serializes @buffer into a textual representation of its glyph content,
- * useful for showing the contents of the buffer, for example during debugging.
- * There are currently two supported serialization formats:
- *
- * ## text
- * A human-readable, plain text format.
- * The serialized glyphs will look something like:
- *
- * ```
- * [uni0651=0@518,0+0|uni0628=0+1897]
- * ```
- * - The serialized glyphs are delimited with `[` and `]`.
- * - Glyphs are separated with `|`
- * - Each glyph starts with glyph name, or glyph index if
- * #HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES flag is set. Then,
- * - If #HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS is not set, `=` then #hb_glyph_info_t.cluster.
- * - If #HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS is not set, the #hb_glyph_position_t in the format:
- * - If both #hb_glyph_position_t.x_offset and #hb_glyph_position_t.y_offset are not 0, `@x_offset,y_offset`. Then,
- * - `+x_advance`, then `,y_advance` if #hb_glyph_position_t.y_advance is not 0. Then,
- * - If #HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS is set, the
- * #hb_glyph_extents_t in the format
- * `&lt;x_bearing,y_bearing,width,height&gt;`
+ * @buffer: a buffer.
+ * @start:
+ * @end:
+ * @buf: (array length=buf_size):
+ * @buf_size:
+ * @buf_consumed: (out):
+ * @font:
+ * @format:
+ * @flags:
*
- * ## json
- * TODO.
+ *
*
* Return value:
- * The number of serialized items.
*
- * Since: 0.9.7
+ * Since: 1.0
**/
unsigned int
hb_buffer_serialize_glyphs (hb_buffer_t *buffer,
@@ -300,8 +248,8 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer,
unsigned int end,
char *buf,
unsigned int buf_size,
- unsigned int *buf_consumed,
- hb_font_t *font,
+ unsigned int *buf_consumed, /* May be NULL */
+ hb_font_t *font, /* May be NULL */
hb_buffer_serialize_format_t format,
hb_buffer_serialize_flags_t flags)
{
@@ -315,9 +263,6 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer,
assert ((!buffer->len && buffer->content_type == HB_BUFFER_CONTENT_TYPE_INVALID) ||
buffer->content_type == HB_BUFFER_CONTENT_TYPE_GLYPHS);
- if (!buffer->have_positions)
- flags |= HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS;
-
if (unlikely (start == end))
return 0;
@@ -391,7 +336,7 @@ parse_int (const char *pp, const char *end, int32_t *pv)
/**
* hb_buffer_deserialize_glyphs:
- * @buffer: an #hb_buffer_t buffer.
+ * @buffer: a buffer.
* @buf: (array length=buf_len):
* @buf_len:
* @end_ptr: (out):
@@ -402,7 +347,7 @@ parse_int (const char *pp, const char *end, int32_t *pv)
*
* Return value:
*
- * Since: 0.9.7
+ * Since: 1.0
**/
hb_bool_t
hb_buffer_deserialize_glyphs (hb_buffer_t *buffer,
diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc
index 406db9c..b9fe263 100644
--- a/src/hb-buffer.cc
+++ b/src/hb-buffer.cc
@@ -35,28 +35,7 @@
#define HB_DEBUG_BUFFER (HB_DEBUG+0)
#endif
-/**
- * SECTION: hb-buffer
- * @title: Buffers
- * @short_description: Input and output buffers
- * @include: hb.h
- *
- * Buffers serve dual role in HarfBuzz; they hold the input characters that are
- * passed hb_shape(), and after shaping they hold the output glyphs.
- **/
-/**
- * hb_segment_properties_equal:
- * @a: first #hb_segment_properties_t to compare.
- * @b: second #hb_segment_properties_t to compare.
- *
- * Checks the equality of two #hb_segment_properties_t's.
- *
- * Return value: (transfer full):
- * %true if all properties of @a equal those of @b, false otherwise.
- *
- * Since: 0.9.7
- **/
hb_bool_t
hb_segment_properties_equal (const hb_segment_properties_t *a,
const hb_segment_properties_t *b)
@@ -69,17 +48,6 @@ hb_segment_properties_equal (const hb_segment_properties_t *a,
}
-/**
- * hb_segment_properties_hash:
- * @p: #hb_segment_properties_t to hash.
- *
- * Creates a hash representing @p.
- *
- * Return value:
- * A hash of @p.
- *
- * Since: 0.9.7
- **/
unsigned int
hb_segment_properties_hash (const hb_segment_properties_t *p)
{
@@ -117,11 +85,6 @@ hb_buffer_t::enlarge (unsigned int size)
{
if (unlikely (in_error))
return false;
- if (unlikely (size > max_len))
- {
- in_error = true;
- return false;
- }
unsigned int new_allocated = allocated;
hb_glyph_position_t *new_pos = NULL;
@@ -229,7 +192,6 @@ hb_buffer_t::clear (void)
hb_segment_properties_t default_props = HB_SEGMENT_PROPERTIES_DEFAULT;
props = default_props;
- scratch_flags = HB_BUFFER_SCRATCH_FLAG_DEFAULT;
content_type = HB_BUFFER_CONTENT_TYPE_INVALID;
in_error = false;
@@ -242,11 +204,11 @@ hb_buffer_t::clear (void)
out_info = info;
serial = 0;
+ memset (allocated_var_bytes, 0, sizeof allocated_var_bytes);
+ memset (allocated_var_owner, 0, sizeof allocated_var_owner);
memset (context, 0, sizeof context);
memset (context_len, 0, sizeof context_len);
-
- deallocate_var_all ();
}
void
@@ -407,8 +369,6 @@ hb_buffer_t::move_to (unsigned int i)
idx = i;
return true;
}
- if (unlikely (in_error))
- return false;
assert (i <= out_len + (len - idx));
@@ -538,10 +498,14 @@ hb_buffer_t::reverse_clusters (void)
}
void
-hb_buffer_t::merge_clusters_impl (unsigned int start,
- unsigned int end)
+hb_buffer_t::merge_clusters (unsigned int start,
+ unsigned int end)
{
- if (cluster_level == HB_BUFFER_CLUSTER_LEVEL_CHARACTERS)
+#ifdef HB_NO_MERGE_CLUSTERS
+ return;
+#endif
+
+ if (unlikely (end - start < 2))
return;
unsigned int cluster = info[start].cluster;
@@ -559,7 +523,7 @@ hb_buffer_t::merge_clusters_impl (unsigned int start,
/* If we hit the start of buffer, continue in out-buffer. */
if (idx == start)
- for (unsigned int i = out_len; i && out_info[i - 1].cluster == info[start].cluster; i--)
+ for (unsigned i = out_len; i && out_info[i - 1].cluster == info[start].cluster; i--)
out_info[i - 1].cluster = cluster;
for (unsigned int i = start; i < end; i++)
@@ -569,8 +533,9 @@ void
hb_buffer_t::merge_out_clusters (unsigned int start,
unsigned int end)
{
- if (cluster_level == HB_BUFFER_CLUSTER_LEVEL_CHARACTERS)
- return;
+#ifdef HB_NO_MERGE_CLUSTERS
+ return;
+#endif
if (unlikely (end - start < 2))
return;
@@ -590,44 +555,12 @@ hb_buffer_t::merge_out_clusters (unsigned int start,
/* If we hit the end of out-buffer, continue in buffer. */
if (end == out_len)
- for (unsigned int i = idx; i < len && info[i].cluster == out_info[end - 1].cluster; i++)
+ for (unsigned i = idx; i < len && info[i].cluster == out_info[end - 1].cluster; i++)
info[i].cluster = cluster;
for (unsigned int i = start; i < end; i++)
out_info[i].cluster = cluster;
}
-void
-hb_buffer_t::delete_glyph ()
-{
- unsigned int cluster = info[idx].cluster;
- if (idx + 1 < len && cluster == info[idx + 1].cluster)
- {
- /* Cluster survives; do nothing. */
- goto done;
- }
-
- if (out_len)
- {
- /* Merge cluster backward. */
- if (cluster < out_info[out_len - 1].cluster)
- {
- unsigned int old_cluster = out_info[out_len - 1].cluster;
- for (unsigned i = out_len; i && out_info[i - 1].cluster == old_cluster; i--)
- out_info[i - 1].cluster = cluster;
- }
- goto done;
- }
-
- if (idx + 1 < len)
- {
- /* Merge cluster forward. */
- merge_clusters (idx, idx + 2);
- goto done;
- }
-
-done:
- skip_glyph ();
-}
void
hb_buffer_t::guess_segment_properties (void)
@@ -661,21 +594,84 @@ hb_buffer_t::guess_segment_properties (void)
}
+static inline void
+dump_var_allocation (const hb_buffer_t *buffer)
+{
+ char buf[80];
+ for (unsigned int i = 0; i < 8; i++)
+ buf[i] = '0' + buffer->allocated_var_bytes[7 - i];
+ buf[8] = '\0';
+ DEBUG_MSG (BUFFER, buffer,
+ "Current var allocation: %s",
+ buf);
+}
+
+void hb_buffer_t::allocate_var (unsigned int byte_i, unsigned int count, const char *owner)
+{
+ assert (byte_i < 8 && byte_i + count <= 8);
+
+ if (DEBUG_ENABLED (BUFFER))
+ dump_var_allocation (this);
+ DEBUG_MSG (BUFFER, this,
+ "Allocating var bytes %d..%d for %s",
+ byte_i, byte_i + count - 1, owner);
+
+ for (unsigned int i = byte_i; i < byte_i + count; i++) {
+ assert (!allocated_var_bytes[i]);
+ allocated_var_bytes[i]++;
+ allocated_var_owner[i] = owner;
+ }
+}
+
+void hb_buffer_t::deallocate_var (unsigned int byte_i, unsigned int count, const char *owner)
+{
+ if (DEBUG_ENABLED (BUFFER))
+ dump_var_allocation (this);
+
+ DEBUG_MSG (BUFFER, this,
+ "Deallocating var bytes %d..%d for %s",
+ byte_i, byte_i + count - 1, owner);
+
+ assert (byte_i < 8 && byte_i + count <= 8);
+ for (unsigned int i = byte_i; i < byte_i + count; i++) {
+ assert (allocated_var_bytes[i]);
+ assert (0 == strcmp (allocated_var_owner[i], owner));
+ allocated_var_bytes[i]--;
+ }
+}
+
+void hb_buffer_t::assert_var (unsigned int byte_i, unsigned int count, const char *owner)
+{
+ if (DEBUG_ENABLED (BUFFER))
+ dump_var_allocation (this);
+
+ DEBUG_MSG (BUFFER, this,
+ "Asserting var bytes %d..%d for %s",
+ byte_i, byte_i + count - 1, owner);
+
+ assert (byte_i < 8 && byte_i + count <= 8);
+ for (unsigned int i = byte_i; i < byte_i + count; i++) {
+ assert (allocated_var_bytes[i]);
+ assert (0 == strcmp (allocated_var_owner[i], owner));
+ }
+}
+
+void hb_buffer_t::deallocate_var_all (void)
+{
+ memset (allocated_var_bytes, 0, sizeof (allocated_var_bytes));
+ memset (allocated_var_owner, 0, sizeof (allocated_var_owner));
+}
+
/* Public API */
/**
* hb_buffer_create: (Xconstructor)
*
- * Creates a new #hb_buffer_t with all properties to defaults.
+ *
*
- * Return value: (transfer full):
- * A newly allocated #hb_buffer_t with a reference count of 1. The initial
- * reference count should be released with hb_buffer_destroy() when you are done
- * using the #hb_buffer_t. This function never returns %NULL. If memory cannot
- * be allocated, a special #hb_buffer_t object will be returned on which
- * hb_buffer_allocation_successful() returns %false.
+ * Return value: (transfer full)
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_buffer_t *
hb_buffer_create (void)
@@ -685,8 +681,6 @@ hb_buffer_create (void)
if (!(buffer = hb_object_create<hb_buffer_t> ()))
return hb_buffer_get_empty ();
- buffer->max_len = HB_BUFFER_MAX_LEN_DEFAULT;
-
buffer->reset ();
return buffer;
@@ -699,7 +693,7 @@ hb_buffer_create (void)
*
* Return value: (transfer full):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_buffer_t *
hb_buffer_get_empty (void)
@@ -709,10 +703,7 @@ hb_buffer_get_empty (void)
const_cast<hb_unicode_funcs_t *> (&_hb_unicode_funcs_nil),
HB_BUFFER_FLAG_DEFAULT,
- HB_BUFFER_CLUSTER_LEVEL_DEFAULT,
HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT,
- HB_BUFFER_SCRATCH_FLAG_DEFAULT,
- HB_BUFFER_MAX_LEN_DEFAULT,
HB_BUFFER_CONTENT_TYPE_INVALID,
HB_SEGMENT_PROPERTIES_DEFAULT,
@@ -728,15 +719,13 @@ hb_buffer_get_empty (void)
/**
* hb_buffer_reference: (skip)
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
*
- * Increases the reference count on @buffer by one. This prevents @buffer from
- * being destroyed until a matching call to hb_buffer_destroy() is made.
+ *
*
* Return value: (transfer full):
- * The referenced #hb_buffer_t.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_buffer_t *
hb_buffer_reference (hb_buffer_t *buffer)
@@ -746,13 +735,11 @@ hb_buffer_reference (hb_buffer_t *buffer)
/**
* hb_buffer_destroy: (skip)
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
*
- * Deallocate the @buffer.
- * Decreases the reference count on @buffer by one. If the result is zero, then
- * @buffer and all associated resources are freed. See hb_buffer_reference().
+ *
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_buffer_destroy (hb_buffer_t *buffer)
@@ -763,15 +750,13 @@ hb_buffer_destroy (hb_buffer_t *buffer)
free (buffer->info);
free (buffer->pos);
- if (buffer->message_destroy)
- buffer->message_destroy (buffer->message_data);
free (buffer);
}
/**
* hb_buffer_set_user_data: (skip)
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
* @key:
* @data:
* @destroy:
@@ -781,7 +766,7 @@ hb_buffer_destroy (hb_buffer_t *buffer)
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_buffer_set_user_data (hb_buffer_t *buffer,
@@ -795,14 +780,14 @@ hb_buffer_set_user_data (hb_buffer_t *buffer,
/**
* hb_buffer_get_user_data: (skip)
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
* @key:
*
*
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void *
hb_buffer_get_user_data (hb_buffer_t *buffer,
@@ -814,13 +799,12 @@ hb_buffer_get_user_data (hb_buffer_t *buffer,
/**
* hb_buffer_set_content_type:
- * @buffer: an #hb_buffer_t.
- * @content_type: the type of buffer contents to set
+ * @buffer: a buffer.
+ * @content_type:
*
- * Sets the type of @buffer contents, buffers are either empty, contain
- * characters (before shaping) or glyphs (the result of shaping).
+ *
*
- * Since: 0.9.5
+ * Since: 1.0
**/
void
hb_buffer_set_content_type (hb_buffer_t *buffer,
@@ -831,14 +815,13 @@ hb_buffer_set_content_type (hb_buffer_t *buffer,
/**
* hb_buffer_get_content_type:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
*
- * see hb_buffer_set_content_type().
+ *
*
- * Return value:
- * The type of @buffer contents.
+ * Return value:
*
- * Since: 0.9.5
+ * Since: 1.0
**/
hb_buffer_content_type_t
hb_buffer_get_content_type (hb_buffer_t *buffer)
@@ -849,12 +832,12 @@ hb_buffer_get_content_type (hb_buffer_t *buffer)
/**
* hb_buffer_set_unicode_funcs:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
* @unicode_funcs:
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_buffer_set_unicode_funcs (hb_buffer_t *buffer,
@@ -874,13 +857,13 @@ hb_buffer_set_unicode_funcs (hb_buffer_t *buffer,
/**
* hb_buffer_get_unicode_funcs:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
*
*
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_unicode_funcs_t *
hb_buffer_get_unicode_funcs (hb_buffer_t *buffer)
@@ -890,18 +873,12 @@ hb_buffer_get_unicode_funcs (hb_buffer_t *buffer)
/**
* hb_buffer_set_direction:
- * @buffer: an #hb_buffer_t.
- * @direction: the #hb_direction_t of the @buffer
- *
- * Set the text flow direction of the buffer. No shaping can happen without
- * setting @buffer direction, and it controls the visual direction for the
- * output glyphs; for RTL direction the glyphs will be reversed. Many layout
- * features depend on the proper setting of the direction, for example,
- * reversing RTL text before shaping, then shaping with LTR direction is not
- * the same as keeping the text in logical order and shaping with RTL
- * direction.
- *
- * Since: 0.9.2
+ * @buffer: a buffer.
+ * @direction:
+ *
+ *
+ *
+ * Since: 1.0
**/
void
hb_buffer_set_direction (hb_buffer_t *buffer,
@@ -916,14 +893,13 @@ hb_buffer_set_direction (hb_buffer_t *buffer,
/**
* hb_buffer_get_direction:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
*
- * See hb_buffer_set_direction()
+ *
*
- * Return value:
- * The direction of the @buffer.
+ * Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_direction_t
hb_buffer_get_direction (hb_buffer_t *buffer)
@@ -933,20 +909,12 @@ hb_buffer_get_direction (hb_buffer_t *buffer)
/**
* hb_buffer_set_script:
- * @buffer: an #hb_buffer_t.
- * @script: an #hb_script_t to set.
+ * @buffer: a buffer.
+ * @script:
*
- * Sets the script of @buffer to @script.
- *
- * Script is crucial for choosing the proper shaping behaviour for scripts that
- * require it (e.g. Arabic) and the which OpenType features defined in the font
- * to be applied.
- *
- * You can pass one of the predefined #hb_script_t values, or use
- * hb_script_from_string() or hb_script_from_iso15924_tag() to get the
- * corresponding script from an ISO 15924 script tag.
+ *
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_buffer_set_script (hb_buffer_t *buffer,
@@ -960,14 +928,13 @@ hb_buffer_set_script (hb_buffer_t *buffer,
/**
* hb_buffer_get_script:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
*
- * See hb_buffer_set_script().
+ *
*
- * Return value:
- * The #hb_script_t of the @buffer.
+ * Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_script_t
hb_buffer_get_script (hb_buffer_t *buffer)
@@ -977,20 +944,12 @@ hb_buffer_get_script (hb_buffer_t *buffer)
/**
* hb_buffer_set_language:
- * @buffer: an #hb_buffer_t.
- * @language: an hb_language_t to set.
- *
- * Sets the language of @buffer to @language.
+ * @buffer: a buffer.
+ * @language:
*
- * Languages are crucial for selecting which OpenType feature to apply to the
- * buffer which can result in applying language-specific behaviour. Languages
- * are orthogonal to the scripts, and though they are related, they are
- * different concepts and should not be confused with each other.
- *
- * Use hb_language_from_string() to convert from ISO 639 language codes to
- * #hb_language_t.
+ *
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_buffer_set_language (hb_buffer_t *buffer,
@@ -1004,14 +963,13 @@ hb_buffer_set_language (hb_buffer_t *buffer,
/**
* hb_buffer_get_language:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
*
- * See hb_buffer_set_language().
+ *
*
- * Return value: (transfer none):
- * The #hb_language_t of the buffer. Must not be freed by the caller.
+ * Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_language_t
hb_buffer_get_language (hb_buffer_t *buffer)
@@ -1021,14 +979,12 @@ hb_buffer_get_language (hb_buffer_t *buffer)
/**
* hb_buffer_set_segment_properties:
- * @buffer: an #hb_buffer_t.
- * @props: an #hb_segment_properties_t to use.
+ * @buffer: a buffer.
+ * @props:
*
- * Sets the segment properties of the buffer, a shortcut for calling
- * hb_buffer_set_direction(), hb_buffer_set_script() and
- * hb_buffer_set_language() individually.
+ *
*
- * Since: 0.9.7
+ * Since: 1.0
**/
void
hb_buffer_set_segment_properties (hb_buffer_t *buffer,
@@ -1042,12 +998,12 @@ hb_buffer_set_segment_properties (hb_buffer_t *buffer,
/**
* hb_buffer_get_segment_properties:
- * @buffer: an #hb_buffer_t.
- * @props: (out): the output #hb_segment_properties_t.
+ * @buffer: a buffer.
+ * @props:
*
- * Sets @props to the #hb_segment_properties_t of @buffer.
+ *
*
- * Since: 0.9.7
+ * Since: 1.0
**/
void
hb_buffer_get_segment_properties (hb_buffer_t *buffer,
@@ -1059,12 +1015,12 @@ hb_buffer_get_segment_properties (hb_buffer_t *buffer,
/**
* hb_buffer_set_flags:
- * @buffer: an #hb_buffer_t.
- * @flags: the buffer flags to set.
+ * @buffer: a buffer.
+ * @flags:
*
- * Sets @buffer flags to @flags. See #hb_buffer_flags_t.
+ *
*
- * Since: 0.9.7
+ * Since: 1.0
**/
void
hb_buffer_set_flags (hb_buffer_t *buffer,
@@ -1078,14 +1034,13 @@ hb_buffer_set_flags (hb_buffer_t *buffer,
/**
* hb_buffer_get_flags:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
*
- * See hb_buffer_set_flags().
+ *
*
* Return value:
- * The @buffer flags.
*
- * Since: 0.9.7
+ * Since: 1.0
**/
hb_buffer_flags_t
hb_buffer_get_flags (hb_buffer_t *buffer)
@@ -1093,53 +1048,15 @@ hb_buffer_get_flags (hb_buffer_t *buffer)
return buffer->flags;
}
-/**
- * hb_buffer_set_cluster_level:
- * @buffer: an #hb_buffer_t.
- * @cluster_level:
- *
- *
- *
- * Since: 0.9.42
- **/
-void
-hb_buffer_set_cluster_level (hb_buffer_t *buffer,
- hb_buffer_cluster_level_t cluster_level)
-{
- if (unlikely (hb_object_is_inert (buffer)))
- return;
-
- buffer->cluster_level = cluster_level;
-}
-
-/**
- * hb_buffer_get_cluster_level:
- * @buffer: an #hb_buffer_t.
- *
- *
- *
- * Return value:
- *
- * Since: 0.9.42
- **/
-hb_buffer_cluster_level_t
-hb_buffer_get_cluster_level (hb_buffer_t *buffer)
-{
- return buffer->cluster_level;
-}
-
/**
* hb_buffer_set_replacement_codepoint:
- * @buffer: an #hb_buffer_t.
- * @replacement: the replacement #hb_codepoint_t
- *
- * Sets the #hb_codepoint_t that replaces invalid entries for a given encoding
- * when adding text to @buffer.
+ * @buffer: a buffer.
+ * @replacement:
*
- * Default is %HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT.
+ *
*
- * Since: 0.9.31
+ * Since: 1.0
**/
void
hb_buffer_set_replacement_codepoint (hb_buffer_t *buffer,
@@ -1153,14 +1070,13 @@ hb_buffer_set_replacement_codepoint (hb_buffer_t *buffer,
/**
* hb_buffer_get_replacement_codepoint:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
*
- * See hb_buffer_set_replacement_codepoint().
+ *
*
* Return value:
- * The @buffer replacement #hb_codepoint_t.
*
- * Since: 0.9.31
+ * Since: 1.0
**/
hb_codepoint_t
hb_buffer_get_replacement_codepoint (hb_buffer_t *buffer)
@@ -1171,12 +1087,11 @@ hb_buffer_get_replacement_codepoint (hb_buffer_t *buffer)
/**
* hb_buffer_reset:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
*
- * Resets the buffer to its initial status, as if it was just newly created
- * with hb_buffer_create().
+ *
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_buffer_reset (hb_buffer_t *buffer)
@@ -1186,12 +1101,11 @@ hb_buffer_reset (hb_buffer_t *buffer)
/**
* hb_buffer_clear_contents:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
*
- * Similar to hb_buffer_reset(), but does not clear the Unicode functions and
- * the replacement code point.
+ *
*
- * Since: 0.9.11
+ * Since: 1.0
**/
void
hb_buffer_clear_contents (hb_buffer_t *buffer)
@@ -1201,15 +1115,14 @@ hb_buffer_clear_contents (hb_buffer_t *buffer)
/**
* hb_buffer_pre_allocate:
- * @buffer: an #hb_buffer_t.
- * @size: number of items to pre allocate.
+ * @buffer: a buffer.
+ * @size:
*
- * Pre allocates memory for @buffer to fit at least @size number of items.
+ *
*
- * Return value:
- * %true if @buffer memory allocation succeeded, %false otherwise.
+ * Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size)
@@ -1219,14 +1132,13 @@ hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size)
/**
* hb_buffer_allocation_successful:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
*
- * Check if allocating memory for the buffer succeeded.
+ *
*
- * Return value:
- * %true if @buffer memory allocation succeeded, %false otherwise.
+ * Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_buffer_allocation_successful (hb_buffer_t *buffer)
@@ -1236,20 +1148,13 @@ hb_buffer_allocation_successful (hb_buffer_t *buffer)
/**
* hb_buffer_add:
- * @buffer: an #hb_buffer_t.
- * @codepoint: a Unicode code point.
- * @cluster: the cluster value of @codepoint.
+ * @buffer: a buffer.
+ * @codepoint:
+ * @cluster:
*
- * Appends a character with the Unicode value of @codepoint to @buffer, and
- * gives it the initial cluster value of @cluster. Clusters can be any thing
- * the client wants, they are usually used to refer to the index of the
- * character in the input text stream and are output in
- * #hb_glyph_info_t.cluster field.
- *
- * This function does not check the validity of @codepoint, it is up to the
- * caller to ensure it is a valid Unicode code point.
+ *
*
- * Since: 0.9.7
+ * Since: 1.0
**/
void
hb_buffer_add (hb_buffer_t *buffer,
@@ -1262,16 +1167,14 @@ hb_buffer_add (hb_buffer_t *buffer,
/**
* hb_buffer_set_length:
- * @buffer: an #hb_buffer_t.
- * @length: the new length of @buffer.
+ * @buffer: a buffer.
+ * @length:
*
- * Similar to hb_buffer_pre_allocate(), but clears any new items added at the
- * end.
+ *
*
* Return value:
- * %true if @buffer memory allocation succeeded, %false otherwise.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_buffer_set_length (hb_buffer_t *buffer,
@@ -1304,15 +1207,13 @@ hb_buffer_set_length (hb_buffer_t *buffer,
/**
* hb_buffer_get_length:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
*
* Returns the number of items in the buffer.
*
- * Return value:
- * The @buffer length.
- * The value valid as long as buffer has not been modified.
+ * Return value: buffer length.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
unsigned int
hb_buffer_get_length (hb_buffer_t *buffer)
@@ -1322,17 +1223,15 @@ hb_buffer_get_length (hb_buffer_t *buffer)
/**
* hb_buffer_get_glyph_infos:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
* @length: (out): output array length.
*
- * Returns @buffer glyph information array. Returned pointer
- * is valid as long as @buffer contents are not modified.
+ * Returns buffer glyph information array. Returned pointer
+ * is valid as long as buffer contents are not modified.
*
- * Return value: (transfer none) (array length=length):
- * The @buffer glyph information array.
- * The value valid as long as buffer has not been modified.
+ * Return value: (transfer none) (array length=length): buffer glyph information array.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_glyph_info_t *
hb_buffer_get_glyph_infos (hb_buffer_t *buffer,
@@ -1346,17 +1245,15 @@ hb_buffer_get_glyph_infos (hb_buffer_t *buffer,
/**
* hb_buffer_get_glyph_positions:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
* @length: (out): output length.
*
- * Returns @buffer glyph position array. Returned pointer
- * is valid as long as @buffer contents are not modified.
+ * Returns buffer glyph position array. Returned pointer
+ * is valid as long as buffer contents are not modified.
*
- * Return value: (transfer none) (array length=length):
- * The @buffer glyph position array.
- * The value valid as long as buffer has not been modified.
+ * Return value: (transfer none) (array length=length): buffer glyph position array.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_glyph_position_t *
hb_buffer_get_glyph_positions (hb_buffer_t *buffer,
@@ -1373,11 +1270,11 @@ hb_buffer_get_glyph_positions (hb_buffer_t *buffer,
/**
* hb_buffer_reverse:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
*
* Reverses buffer contents.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_buffer_reverse (hb_buffer_t *buffer)
@@ -1386,31 +1283,14 @@ hb_buffer_reverse (hb_buffer_t *buffer)
}
/**
- * hb_buffer_reverse_range:
- * @buffer: an #hb_buffer_t.
- * @start: start index.
- * @end: end index.
- *
- * Reverses buffer contents between start to end.
- *
- * Since: 0.9.41
- **/
-void
-hb_buffer_reverse_range (hb_buffer_t *buffer,
- unsigned int start, unsigned int end)
-{
- buffer->reverse_range (start, end);
-}
-
-/**
* hb_buffer_reverse_clusters:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
*
* Reverses buffer clusters. That is, the buffer contents are
* reversed, then each cluster (consecutive items having the
* same cluster number) are reversed again.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_buffer_reverse_clusters (hb_buffer_t *buffer)
@@ -1420,7 +1300,7 @@ hb_buffer_reverse_clusters (hb_buffer_t *buffer)
/**
* hb_buffer_guess_segment_properties:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
*
* Sets unset buffer segment properties based on buffer Unicode
* contents. If buffer is not empty, it must have content type
@@ -1440,7 +1320,7 @@ hb_buffer_reverse_clusters (hb_buffer_t *buffer)
* hb_language_get_default(). This may change in the future by
* taking buffer script into consideration when choosing a language.
*
- * Since: 0.9.7
+ * Since: 1.0
**/
void
hb_buffer_guess_segment_properties (hb_buffer_t *buffer)
@@ -1519,20 +1399,15 @@ hb_buffer_add_utf (hb_buffer_t *buffer,
/**
* hb_buffer_add_utf8:
- * @buffer: an #hb_buffer_t.
- * @text: (array length=text_length) (element-type uint8_t): an array of UTF-8
- * characters to append.
- * @text_length: the length of the @text, or -1 if it is %NULL terminated.
- * @item_offset: the offset of the first character to add to the @buffer.
- * @item_length: the number of characters to add to the @buffer, or -1 for the
- * end of @text (assuming it is %NULL terminated).
+ * @buffer: a buffer.
+ * @text: (array length=text_length) (element-type uint8_t):
+ * @text_length:
+ * @item_offset:
+ * @item_length:
*
- * See hb_buffer_add_codepoints().
- *
- * Replaces invalid UTF-8 characters with the @buffer replacement code point,
- * see hb_buffer_set_replacement_codepoint().
+ *
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_buffer_add_utf8 (hb_buffer_t *buffer,
@@ -1546,19 +1421,15 @@ hb_buffer_add_utf8 (hb_buffer_t *buffer,
/**
* hb_buffer_add_utf16:
- * @buffer: an #hb_buffer_t.
- * @text: (array length=text_length): an array of UTF-16 characters to append.
- * @text_length: the length of the @text, or -1 if it is %NULL terminated.
- * @item_offset: the offset of the first character to add to the @buffer.
- * @item_length: the number of characters to add to the @buffer, or -1 for the
- * end of @text (assuming it is %NULL terminated).
- *
- * See hb_buffer_add_codepoints().
+ * @buffer: a buffer.
+ * @text: (array length=text_length):
+ * @text_length:
+ * @item_offset:
+ * @item_length:
*
- * Replaces invalid UTF-16 characters with the @buffer replacement code point,
- * see hb_buffer_set_replacement_codepoint().
+ *
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_buffer_add_utf16 (hb_buffer_t *buffer,
@@ -1572,19 +1443,15 @@ hb_buffer_add_utf16 (hb_buffer_t *buffer,
/**
* hb_buffer_add_utf32:
- * @buffer: an #hb_buffer_t.
- * @text: (array length=text_length): an array of UTF-32 characters to append.
- * @text_length: the length of the @text, or -1 if it is %NULL terminated.
- * @item_offset: the offset of the first character to add to the @buffer.
- * @item_length: the number of characters to add to the @buffer, or -1 for the
- * end of @text (assuming it is %NULL terminated).
- *
- * See hb_buffer_add_codepoints().
+ * @buffer: a buffer.
+ * @text: (array length=text_length):
+ * @text_length:
+ * @item_offset:
+ * @item_length:
*
- * Replaces invalid UTF-32 characters with the @buffer replacement code point,
- * see hb_buffer_set_replacement_codepoint().
+ *
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_buffer_add_utf32 (hb_buffer_t *buffer,
@@ -1598,20 +1465,15 @@ hb_buffer_add_utf32 (hb_buffer_t *buffer,
/**
* hb_buffer_add_latin1:
- * @buffer: an #hb_buffer_t.
- * @text: (array length=text_length) (element-type uint8_t): an array of UTF-8
- * characters to append.
- * @text_length: the length of the @text, or -1 if it is %NULL terminated.
- * @item_offset: the offset of the first character to add to the @buffer.
- * @item_length: the number of characters to add to the @buffer, or -1 for the
- * end of @text (assuming it is %NULL terminated).
+ * @buffer: a buffer.
+ * @text: (array length=text_length) (element-type uint8_t):
+ * @text_length:
+ * @item_offset:
+ * @item_length:
*
- * Similar to hb_buffer_add_codepoints(), but allows only access to first 256
- * Unicode code points that can fit in 8-bit strings.
- *
- * <note>Has nothing to do with non-Unicode Latin-1 encoding.</note>
+ *
*
- * Since: 0.9.39
+ * Since: 1.0
**/
void
hb_buffer_add_latin1 (hb_buffer_t *buffer,
@@ -1625,27 +1487,15 @@ hb_buffer_add_latin1 (hb_buffer_t *buffer,
/**
* hb_buffer_add_codepoints:
- * @buffer: a #hb_buffer_t to append characters to.
- * @text: (array length=text_length): an array of Unicode code points to append.
- * @text_length: the length of the @text, or -1 if it is %NULL terminated.
- * @item_offset: the offset of the first code point to add to the @buffer.
- * @item_length: the number of code points to add to the @buffer, or -1 for the
- * end of @text (assuming it is %NULL terminated).
- *
- * Appends characters from @text array to @buffer. The @item_offset is the
- * position of the first character from @text that will be appended, and
- * @item_length is the number of character. When shaping part of a larger text
- * (e.g. a run of text from a paragraph), instead of passing just the substring
- * corresponding to the run, it is preferable to pass the whole
- * paragraph and specify the run start and length as @item_offset and
- * @item_length, respectively, to give HarfBuzz the full context to be able,
- * for example, to do cross-run Arabic shaping or properly handle combining
- * marks at stat of run.
- *
- * This function does not check the validity of @text, it is up to the caller
- * to ensure it contains a valid Unicode code points.
- *
- * Since: 0.9.31
+ * @buffer: a buffer.
+ * @text: (array length=text_length):
+ * @text_length:
+ * @item_offset:
+ * @item_length:
+ *
+ *
+ *
+ * Since: 1.0
**/
void
hb_buffer_add_codepoints (hb_buffer_t *buffer,
@@ -1700,7 +1550,7 @@ normalize_glyphs_cluster (hb_buffer_t *buffer,
pos[end - 1].x_advance = total_x_advance;
pos[end - 1].y_advance = total_y_advance;
- hb_stable_sort (buffer->info + start, end - start - 1, compare_info_codepoint, buffer->pos + start);
+ hb_bubble_sort (buffer->info + start, end - start - 1, compare_info_codepoint, buffer->pos + start);
} else {
/* Transfer all cluster advance to the first glyph. */
pos[start].x_advance += total_x_advance;
@@ -1709,20 +1559,17 @@ normalize_glyphs_cluster (hb_buffer_t *buffer,
pos[i].x_offset -= total_x_advance;
pos[i].y_offset -= total_y_advance;
}
- hb_stable_sort (buffer->info + start + 1, end - start - 1, compare_info_codepoint, buffer->pos + start + 1);
+ hb_bubble_sort (buffer->info + start + 1, end - start - 1, compare_info_codepoint, buffer->pos + start + 1);
}
}
/**
* hb_buffer_normalize_glyphs:
- * @buffer: an #hb_buffer_t.
+ * @buffer: a buffer.
*
- * Reorders a glyph buffer to have canonical in-cluster glyph order / position.
- * The resulting clusters should behave identical to pre-reordering clusters.
- *
- * <note>This has nothing to do with Unicode normalization.</note>
+ *
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_buffer_normalize_glyphs (hb_buffer_t *buffer)
@@ -1745,66 +1592,3 @@ hb_buffer_normalize_glyphs (hb_buffer_t *buffer)
}
normalize_glyphs_cluster (buffer, start, end, backward);
}
-
-void
-hb_buffer_t::sort (unsigned int start, unsigned int end, int(*compar)(const hb_glyph_info_t *, const hb_glyph_info_t *))
-{
- assert (!have_positions);
- for (unsigned int i = start + 1; i < end; i++)
- {
- unsigned int j = i;
- while (j > start && compar (&info[j - 1], &info[i]) > 0)
- j--;
- if (i == j)
- continue;
- /* Move item i to occupy place for item j, shift what's in between. */
- merge_clusters (j, i + 1);
- {
- hb_glyph_info_t t = info[i];
- memmove (&info[j + 1], &info[j], (i - j) * sizeof (hb_glyph_info_t));
- info[j] = t;
- }
- }
-}
-
-/*
- * Debugging.
- */
-
-/**
- * hb_buffer_set_message_func:
- * @buffer: an #hb_buffer_t.
- * @func: (closure user_data) (destroy destroy) (scope notified):
- * @user_data:
- * @destroy:
- *
- *
- *
- * Since: 1.1.3
- **/
-void
-hb_buffer_set_message_func (hb_buffer_t *buffer,
- hb_buffer_message_func_t func,
- void *user_data, hb_destroy_func_t destroy)
-{
- if (buffer->message_destroy)
- buffer->message_destroy (buffer->message_data);
-
- if (func) {
- buffer->message_func = func;
- buffer->message_data = user_data;
- buffer->message_destroy = destroy;
- } else {
- buffer->message_func = NULL;
- buffer->message_data = NULL;
- buffer->message_destroy = NULL;
- }
-}
-
-bool
-hb_buffer_t::message_impl (hb_font_t *font, const char *fmt, va_list ap)
-{
- char buf[100];
- vsnprintf (buf, sizeof (buf), fmt, ap);
- return (bool) this->message_func (this, font, buf, this->message_data);
-}
diff --git a/src/hb-buffer.h b/src/hb-buffer.h
index bf289c1..e5b46d8 100644
--- a/src/hb-buffer.h
+++ b/src/hb-buffer.h
@@ -40,27 +40,7 @@
HB_BEGIN_DECLS
-/**
- * hb_glyph_info_t:
- * @codepoint: either a Unicode code point (before shaping) or a glyph index
- * (after shaping).
- * @mask:
- * @cluster: the index of the character in the original text that corresponds
- * to this #hb_glyph_info_t, or whatever the client passes to
- * hb_buffer_add(). More than one #hb_glyph_info_t can have the same
- * @cluster value, if they resulted from the same character (e.g. one
- * to many glyph substitution), and when more than one character gets
- * merged in the same glyph (e.g. many to one glyph substitution) the
- * #hb_glyph_info_t will have the smallest cluster value of them.
- * By default some characters are merged into the same cluster
- * (e.g. combining marks have the same cluster as their bases)
- * even if they are separate glyphs, hb_buffer_set_cluster_level()
- * allow selecting more fine-grained cluster handling.
- *
- * The #hb_glyph_info_t is the structure that holds information about the
- * glyphs and their relation to input text.
- *
- */
+
typedef struct hb_glyph_info_t {
hb_codepoint_t codepoint;
hb_mask_t mask;
@@ -71,22 +51,6 @@ typedef struct hb_glyph_info_t {
hb_var_int_t var2;
} hb_glyph_info_t;
-/**
- * hb_glyph_position_t:
- * @x_advance: how much the line advances after drawing this glyph when setting
- * text in horizontal direction.
- * @y_advance: how much the line advances after drawing this glyph when setting
- * text in vertical direction.
- * @x_offset: how much the glyph moves on the X-axis before drawing it, this
- * should not affect how much the line advances.
- * @y_offset: how much the glyph moves on the Y-axis before drawing it, this
- * should not affect how much the line advances.
- *
- * The #hb_glyph_position_t is the structure that holds the positions of the
- * glyph in both horizontal and vertical directions. All positions in
- * #hb_glyph_position_t are relative to the current point.
- *
- */
typedef struct hb_glyph_position_t {
hb_position_t x_advance;
hb_position_t y_advance;
@@ -97,16 +61,7 @@ typedef struct hb_glyph_position_t {
hb_var_int_t var;
} hb_glyph_position_t;
-/**
- * hb_segment_properties_t:
- * @direction: the #hb_direction_t of the buffer, see hb_buffer_set_direction().
- * @script: the #hb_script_t of the buffer, see hb_buffer_set_script().
- * @language: the #hb_language_t of the buffer, see hb_buffer_set_language().
- *
- * The structure that holds various text properties of an #hb_buffer_t. Can be
- * set and retrieved using hb_buffer_set_segment_properties() and
- * hb_buffer_get_segment_properties(), respectively.
- */
+
typedef struct hb_segment_properties_t {
hb_direction_t direction;
hb_script_t script;
@@ -122,127 +77,100 @@ typedef struct hb_segment_properties_t {
NULL, \
NULL}
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_segment_properties_equal (const hb_segment_properties_t *a,
const hb_segment_properties_t *b);
-HB_EXTERN unsigned int
+unsigned int
hb_segment_properties_hash (const hb_segment_properties_t *p);
-/**
- * hb_buffer_t:
- *
- * The main structure holding the input text and its properties before shaping,
- * and output glyphs and their information after shaping.
+/*
+ * hb_buffer_t
*/
typedef struct hb_buffer_t hb_buffer_t;
-HB_EXTERN hb_buffer_t *
+hb_buffer_t *
hb_buffer_create (void);
-HB_EXTERN hb_buffer_t *
+hb_buffer_t *
hb_buffer_get_empty (void);
-HB_EXTERN hb_buffer_t *
+hb_buffer_t *
hb_buffer_reference (hb_buffer_t *buffer);
-HB_EXTERN void
+void
hb_buffer_destroy (hb_buffer_t *buffer);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_buffer_set_user_data (hb_buffer_t *buffer,
hb_user_data_key_t *key,
void * data,
hb_destroy_func_t destroy,
hb_bool_t replace);
-HB_EXTERN void *
+void *
hb_buffer_get_user_data (hb_buffer_t *buffer,
hb_user_data_key_t *key);
-/**
- * hb_buffer_content_type_t:
- * @HB_BUFFER_CONTENT_TYPE_INVALID: Initial value for new buffer.
- * @HB_BUFFER_CONTENT_TYPE_UNICODE: The buffer contains input characters (before shaping).
- * @HB_BUFFER_CONTENT_TYPE_GLYPHS: The buffer contains output glyphs (after shaping).
- */
+
typedef enum {
HB_BUFFER_CONTENT_TYPE_INVALID = 0,
HB_BUFFER_CONTENT_TYPE_UNICODE,
HB_BUFFER_CONTENT_TYPE_GLYPHS
} hb_buffer_content_type_t;
-HB_EXTERN void
+void
hb_buffer_set_content_type (hb_buffer_t *buffer,
hb_buffer_content_type_t content_type);
-HB_EXTERN hb_buffer_content_type_t
+hb_buffer_content_type_t
hb_buffer_get_content_type (hb_buffer_t *buffer);
-HB_EXTERN void
+void
hb_buffer_set_unicode_funcs (hb_buffer_t *buffer,
hb_unicode_funcs_t *unicode_funcs);
-HB_EXTERN hb_unicode_funcs_t *
+hb_unicode_funcs_t *
hb_buffer_get_unicode_funcs (hb_buffer_t *buffer);
-HB_EXTERN void
+void
hb_buffer_set_direction (hb_buffer_t *buffer,
hb_direction_t direction);
-HB_EXTERN hb_direction_t
+hb_direction_t
hb_buffer_get_direction (hb_buffer_t *buffer);
-HB_EXTERN void
+void
hb_buffer_set_script (hb_buffer_t *buffer,
hb_script_t script);
-HB_EXTERN hb_script_t
+hb_script_t
hb_buffer_get_script (hb_buffer_t *buffer);
-HB_EXTERN void
+void
hb_buffer_set_language (hb_buffer_t *buffer,
hb_language_t language);
-HB_EXTERN hb_language_t
+hb_language_t
hb_buffer_get_language (hb_buffer_t *buffer);
-HB_EXTERN void
+void
hb_buffer_set_segment_properties (hb_buffer_t *buffer,
const hb_segment_properties_t *props);
-HB_EXTERN void
+void
hb_buffer_get_segment_properties (hb_buffer_t *buffer,
hb_segment_properties_t *props);
-HB_EXTERN void
+void
hb_buffer_guess_segment_properties (hb_buffer_t *buffer);
-/**
- * hb_buffer_flags_t:
- * @HB_BUFFER_FLAG_DEFAULT: the default buffer flag.
- * @HB_BUFFER_FLAG_BOT: flag indicating that special handling of the beginning
- * of text paragraph can be applied to this buffer. Should usually
- * be set, unless you are passing to the buffer only part
- * of the text without the full context.
- * @HB_BUFFER_FLAG_EOT: flag indicating that special handling of the end of text
- * paragraph can be applied to this buffer, similar to
- * @HB_BUFFER_FLAG_EOT.
- * @HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES:
- * flag indication that character with Default_Ignorable
- * Unicode property should use the corresponding glyph
- * from the font, instead of hiding them (currently done
- * by replacing them with the space glyph and zeroing the
- * advance width.)
- *
- * Since: 0.9.20
- */
typedef enum { /*< flags >*/
HB_BUFFER_FLAG_DEFAULT = 0x00000000u,
HB_BUFFER_FLAG_BOT = 0x00000001u, /* Beginning-of-text */
@@ -250,109 +178,91 @@ typedef enum { /*< flags >*/
HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES = 0x00000004u
} hb_buffer_flags_t;
-HB_EXTERN void
+void
hb_buffer_set_flags (hb_buffer_t *buffer,
hb_buffer_flags_t flags);
-HB_EXTERN hb_buffer_flags_t
+hb_buffer_flags_t
hb_buffer_get_flags (hb_buffer_t *buffer);
-/*
- * Since: 0.9.42
- */
-typedef enum {
- HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES = 0,
- HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS = 1,
- HB_BUFFER_CLUSTER_LEVEL_CHARACTERS = 2,
- HB_BUFFER_CLUSTER_LEVEL_DEFAULT = HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES
-} hb_buffer_cluster_level_t;
-
-HB_EXTERN void
-hb_buffer_set_cluster_level (hb_buffer_t *buffer,
- hb_buffer_cluster_level_t cluster_level);
-HB_EXTERN hb_buffer_cluster_level_t
-hb_buffer_get_cluster_level (hb_buffer_t *buffer);
-/**
- * HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT:
- *
- * The default code point for replacing invalid characters in a given encoding.
- * Set to U+FFFD REPLACEMENT CHARACTER.
- *
- * Since: 0.9.31
- */
#define HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT 0xFFFDu
-HB_EXTERN void
+/* Sets codepoint used to replace invalid UTF-8/16/32 entries.
+ * Default is 0xFFFDu. */
+void
hb_buffer_set_replacement_codepoint (hb_buffer_t *buffer,
hb_codepoint_t replacement);
-HB_EXTERN hb_codepoint_t
+hb_codepoint_t
hb_buffer_get_replacement_codepoint (hb_buffer_t *buffer);
-HB_EXTERN void
+/* Resets the buffer. Afterwards it's as if it was just created,
+ * except that it has a larger buffer allocated perhaps... */
+void
hb_buffer_reset (hb_buffer_t *buffer);
-HB_EXTERN void
+/* Like reset, but does NOT clear unicode_funcs and replacement_codepoint. */
+void
hb_buffer_clear_contents (hb_buffer_t *buffer);
-HB_EXTERN hb_bool_t
+/* Returns false if allocation failed */
+hb_bool_t
hb_buffer_pre_allocate (hb_buffer_t *buffer,
unsigned int size);
-HB_EXTERN hb_bool_t
+/* Returns false if allocation has failed before */
+hb_bool_t
hb_buffer_allocation_successful (hb_buffer_t *buffer);
-HB_EXTERN void
+void
hb_buffer_reverse (hb_buffer_t *buffer);
-HB_EXTERN void
-hb_buffer_reverse_range (hb_buffer_t *buffer,
- unsigned int start, unsigned int end);
-
-HB_EXTERN void
+void
hb_buffer_reverse_clusters (hb_buffer_t *buffer);
/* Filling the buffer in */
-HB_EXTERN void
+void
hb_buffer_add (hb_buffer_t *buffer,
hb_codepoint_t codepoint,
unsigned int cluster);
-HB_EXTERN void
+void
hb_buffer_add_utf8 (hb_buffer_t *buffer,
const char *text,
int text_length,
unsigned int item_offset,
int item_length);
-HB_EXTERN void
+void
hb_buffer_add_utf16 (hb_buffer_t *buffer,
const uint16_t *text,
int text_length,
unsigned int item_offset,
int item_length);
-HB_EXTERN void
+void
hb_buffer_add_utf32 (hb_buffer_t *buffer,
const uint32_t *text,
int text_length,
unsigned int item_offset,
int item_length);
-HB_EXTERN void
+/* Allows only access to first 256 Unicode codepoints. */
+void
hb_buffer_add_latin1 (hb_buffer_t *buffer,
const uint8_t *text,
int text_length,
unsigned int item_offset,
int item_length);
-HB_EXTERN void
+/* Like add_utf32 but does NOT check for invalid Unicode codepoints. */
+void
hb_buffer_add_codepoints (hb_buffer_t *buffer,
const hb_codepoint_t *text,
int text_length,
@@ -360,25 +270,32 @@ hb_buffer_add_codepoints (hb_buffer_t *buffer,
int item_length);
-HB_EXTERN hb_bool_t
+/* Clears any new items added at the end */
+hb_bool_t
hb_buffer_set_length (hb_buffer_t *buffer,
unsigned int length);
-HB_EXTERN unsigned int
+/* Return value valid as long as buffer not modified */
+unsigned int
hb_buffer_get_length (hb_buffer_t *buffer);
/* Getting glyphs out of the buffer */
-HB_EXTERN hb_glyph_info_t *
+/* Return value valid as long as buffer not modified */
+hb_glyph_info_t *
hb_buffer_get_glyph_infos (hb_buffer_t *buffer,
unsigned int *length);
-HB_EXTERN hb_glyph_position_t *
+/* Return value valid as long as buffer not modified */
+hb_glyph_position_t *
hb_buffer_get_glyph_positions (hb_buffer_t *buffer,
unsigned int *length);
-HB_EXTERN void
+/* Reorders a glyph buffer to have canonical in-cluster glyph order / position.
+ * The resulting clusters should behave identical to pre-reordering clusters.
+ * NOTE: This has nothing to do with Unicode normalization. */
+void
hb_buffer_normalize_glyphs (hb_buffer_t *buffer);
@@ -386,87 +303,50 @@ hb_buffer_normalize_glyphs (hb_buffer_t *buffer);
* Serialize
*/
-/**
- * hb_buffer_serialize_flags_t:
- * @HB_BUFFER_SERIALIZE_FLAG_DEFAULT: serialize glyph names, clusters and positions.
- * @HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS: do not serialize glyph cluster.
- * @HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS: do not serialize glyph position information.
- * @HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES: do no serialize glyph name.
- * @HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS: serialize glyph extents.
- *
- * Flags that control what glyph information are serialized in hb_buffer_serialize_glyphs().
- *
- * Since: 0.9.20
- */
typedef enum { /*< flags >*/
HB_BUFFER_SERIALIZE_FLAG_DEFAULT = 0x00000000u,
HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS = 0x00000001u,
HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS = 0x00000002u,
- HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES = 0x00000004u,
- HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS = 0x00000008u
+ HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES = 0x00000004u
} hb_buffer_serialize_flags_t;
-/**
- * hb_buffer_serialize_format_t:
- * @HB_BUFFER_SERIALIZE_FORMAT_TEXT: a human-readable, plain text format.
- * @HB_BUFFER_SERIALIZE_FORMAT_JSON: a machine-readable JSON format.
- * @HB_BUFFER_SERIALIZE_FORMAT_INVALID: invalid format.
- *
- * The buffer serialization and de-serialization format used in
- * hb_buffer_serialize_glyphs() and hb_buffer_deserialize_glyphs().
- *
- * Since: 0.9.2
- */
typedef enum {
HB_BUFFER_SERIALIZE_FORMAT_TEXT = HB_TAG('T','E','X','T'),
HB_BUFFER_SERIALIZE_FORMAT_JSON = HB_TAG('J','S','O','N'),
HB_BUFFER_SERIALIZE_FORMAT_INVALID = HB_TAG_NONE
} hb_buffer_serialize_format_t;
-HB_EXTERN hb_buffer_serialize_format_t
+/* len=-1 means str is NUL-terminated. */
+hb_buffer_serialize_format_t
hb_buffer_serialize_format_from_string (const char *str, int len);
-HB_EXTERN const char *
+const char *
hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format);
-HB_EXTERN const char **
+const char **
hb_buffer_serialize_list_formats (void);
-HB_EXTERN unsigned int
+/* Returns number of items, starting at start, that were serialized. */
+unsigned int
hb_buffer_serialize_glyphs (hb_buffer_t *buffer,
unsigned int start,
unsigned int end,
char *buf,
unsigned int buf_size,
- unsigned int *buf_consumed,
- hb_font_t *font,
+ unsigned int *buf_consumed, /* May be NULL */
+ hb_font_t *font, /* May be NULL */
hb_buffer_serialize_format_t format,
hb_buffer_serialize_flags_t flags);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_buffer_deserialize_glyphs (hb_buffer_t *buffer,
const char *buf,
- int buf_len,
- const char **end_ptr,
- hb_font_t *font,
+ int buf_len, /* -1 means nul-terminated */
+ const char **end_ptr, /* May be NULL */
+ hb_font_t *font, /* May be NULL */
hb_buffer_serialize_format_t format);
-/*
- * Debugging.
- */
-
-typedef hb_bool_t (*hb_buffer_message_func_t) (hb_buffer_t *buffer,
- hb_font_t *font,
- const char *message,
- void *user_data);
-
-HB_EXTERN void
-hb_buffer_set_message_func (hb_buffer_t *buffer,
- hb_buffer_message_func_t func,
- void *user_data, hb_destroy_func_t destroy);
-
-
HB_END_DECLS
#endif /* HB_BUFFER_H */
diff --git a/src/hb-common.cc b/src/hb-common.cc
index 140ee0a..05a1f9c 100644
--- a/src/hb-common.cc
+++ b/src/hb-common.cc
@@ -57,14 +57,14 @@ _hb_options_init (void)
/**
* hb_tag_from_string:
- * @str: (array length=len) (element-type uint8_t):
+ * @str: (array length=len):
* @len:
*
*
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_tag_t
hb_tag_from_string (const char *str, int len)
@@ -92,7 +92,7 @@ hb_tag_from_string (const char *str, int len)
*
*
*
- * Since: 0.9.5
+ * Since: 1.0
**/
void
hb_tag_to_string (hb_tag_t tag, char *buf)
@@ -115,14 +115,14 @@ const char direction_strings[][4] = {
/**
* hb_direction_from_string:
- * @str: (array length=len) (element-type uint8_t):
+ * @str: (array length=len):
* @len:
*
*
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_direction_t
hb_direction_from_string (const char *str, int len)
@@ -149,7 +149,7 @@ hb_direction_from_string (const char *str, int len)
*
* Return value: (transfer none):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
const char *
hb_direction_to_string (hb_direction_t direction)
@@ -179,7 +179,7 @@ static const char canon_map[256] = {
'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 0, 0, 0, 0, 0
};
-static bool
+static hb_bool_t
lang_equal (hb_language_t v1,
const void *v2)
{
@@ -281,51 +281,46 @@ retry:
/**
* hb_language_from_string:
- * @str: (array length=len) (element-type uint8_t): a string representing
- * ISO 639 language code
- * @len: length of the @str, or -1 if it is %NULL-terminated.
+ * @str: (array length=len):
+ * @len:
*
- * Converts @str representing an ISO 639 language code to the corresponding
- * #hb_language_t.
+ *
*
- * Return value: (transfer none):
- * The #hb_language_t corresponding to the ISO 639 language code.
+ * Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_language_t
hb_language_from_string (const char *str, int len)
{
+ char strbuf[64];
+
if (!str || !len || !*str)
return HB_LANGUAGE_INVALID;
- hb_language_item_t *item = NULL;
if (len >= 0)
{
/* NUL-terminate it. */
- char strbuf[64];
len = MIN (len, (int) sizeof (strbuf) - 1);
memcpy (strbuf, str, len);
strbuf[len] = '\0';
- item = lang_find_or_insert (strbuf);
+ str = strbuf;
}
- else
- item = lang_find_or_insert (str);
+
+ hb_language_item_t *item = lang_find_or_insert (str);
return likely (item) ? item->lang : HB_LANGUAGE_INVALID;
}
/**
* hb_language_to_string:
- * @language: an #hb_language_t to convert.
+ * @language:
*
- * See hb_language_from_string().
+ *
*
- * Return value: (transfer none):
- * A %NULL-terminated string representing the @language. Must not be freed by
- * the caller.
+ * Return value: (transfer none):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
const char *
hb_language_to_string (hb_language_t language)
@@ -339,9 +334,9 @@ hb_language_to_string (hb_language_t language)
*
*
*
- * Return value: (transfer none):
+ * Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_language_t
hb_language_get_default (void)
@@ -362,14 +357,13 @@ hb_language_get_default (void)
/**
* hb_script_from_iso15924_tag:
- * @tag: an #hb_tag_t representing an ISO 15924 tag.
+ * @tag:
*
- * Converts an ISO 15924 script tag to a corresponding #hb_script_t.
+ *
*
* Return value:
- * An #hb_script_t corresponding to the ISO 15924 tag.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_script_t
hb_script_from_iso15924_tag (hb_tag_t tag)
@@ -407,35 +401,30 @@ hb_script_from_iso15924_tag (hb_tag_t tag)
/**
* hb_script_from_string:
- * @str: (array length=len) (element-type uint8_t): a string representing an
- * ISO 15924 tag.
- * @len: length of the @str, or -1 if it is %NULL-terminated.
+ * @s: (array length=len):
+ * @len:
*
- * Converts a string @str representing an ISO 15924 script tag to a
- * corresponding #hb_script_t. Shorthand for hb_tag_from_string() then
- * hb_script_from_iso15924_tag().
+ *
*
* Return value:
- * An #hb_script_t corresponding to the ISO 15924 tag.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_script_t
-hb_script_from_string (const char *str, int len)
+hb_script_from_string (const char *s, int len)
{
- return hb_script_from_iso15924_tag (hb_tag_from_string (str, len));
+ return hb_script_from_iso15924_tag (hb_tag_from_string (s, len));
}
/**
* hb_script_to_iso15924_tag:
- * @script: an #hb_script_ to convert.
+ * @script:
*
- * See hb_script_from_iso15924_tag().
+ *
*
- * Return value:
- * An #hb_tag_t representing an ISO 15924 script tag.
+ * Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_tag_t
hb_script_to_iso15924_tag (hb_script_t script)
@@ -451,7 +440,7 @@ hb_script_to_iso15924_tag (hb_script_t script)
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_direction_t
hb_script_get_horizontal_direction (hb_script_t script)
@@ -504,9 +493,6 @@ hb_script_get_horizontal_direction (hb_script_t script)
case HB_SCRIPT_PALMYRENE:
case HB_SCRIPT_PSALTER_PAHLAVI:
- /* Unicode-8.0 additions */
- case HB_SCRIPT_OLD_HUNGARIAN:
-
return HB_DIRECTION_RTL;
}
@@ -532,7 +518,7 @@ hb_user_data_array_t::set (hb_user_data_key_t *key,
}
}
hb_user_data_item_t item = {key, data, destroy};
- bool ret = !!items.replace_or_insert (item, lock, (bool) replace);
+ bool ret = !!items.replace_or_insert (item, lock, replace);
return ret;
}
@@ -540,7 +526,7 @@ hb_user_data_array_t::set (hb_user_data_key_t *key,
void *
hb_user_data_array_t::get (hb_user_data_key_t *key)
{
- hb_user_data_item_t item = {NULL, NULL, NULL};
+ hb_user_data_item_t item = {NULL };
return items.find (key, &item, lock) ? item.data : NULL;
}
@@ -556,7 +542,7 @@ hb_user_data_array_t::get (hb_user_data_key_t *key)
*
* Returns library version as three integer components.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_version (unsigned int *major,
@@ -575,7 +561,7 @@ hb_version (unsigned int *major,
*
* Return value: library version string.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
const char *
hb_version_string (void)
@@ -593,7 +579,7 @@ hb_version_string (void)
*
* Return value:
*
- * Since: 0.9.30
+ * Since: 1.0
**/
hb_bool_t
hb_version_atleast (unsigned int major,
diff --git a/src/hb-common.h b/src/hb-common.h
index 5b0a0b6..b6ce3f7 100644
--- a/src/hb-common.h
+++ b/src/hb-common.h
@@ -98,22 +98,16 @@ typedef uint32_t hb_tag_t;
#define HB_TAG_MAX_SIGNED HB_TAG(0x7f,0xff,0xff,0xff)
/* len=-1 means str is NUL-terminated. */
-HB_EXTERN hb_tag_t
+hb_tag_t
hb_tag_from_string (const char *str, int len);
/* buf should have 4 bytes. */
-HB_EXTERN void
+void
hb_tag_to_string (hb_tag_t tag, char *buf);
-/**
- * hb_direction_t:
- * @HB_DIRECTION_INVALID: Initial, unset direction.
- * @HB_DIRECTION_LTR: Text is set horizontally from left to right.
- * @HB_DIRECTION_RTL: Text is set horizontally from right to left.
- * @HB_DIRECTION_TTB: Text is set vertically from top to bottom.
- * @HB_DIRECTION_BTT: Text is set vertically from bottom to top.
- */
+/* hb_direction_t */
+
typedef enum {
HB_DIRECTION_INVALID = 0,
HB_DIRECTION_LTR = 4,
@@ -123,10 +117,10 @@ typedef enum {
} hb_direction_t;
/* len=-1 means str is NUL-terminated */
-HB_EXTERN hb_direction_t
+hb_direction_t
hb_direction_from_string (const char *str, int len);
-HB_EXTERN const char *
+const char *
hb_direction_to_string (hb_direction_t direction);
#define HB_DIRECTION_IS_VALID(dir) ((((unsigned int) (dir)) & ~3U) == 4)
@@ -142,15 +136,16 @@ hb_direction_to_string (hb_direction_t direction);
typedef const struct hb_language_impl_t *hb_language_t;
-HB_EXTERN hb_language_t
+/* len=-1 means str is NUL-terminated */
+hb_language_t
hb_language_from_string (const char *str, int len);
-HB_EXTERN const char *
+const char *
hb_language_to_string (hb_language_t language);
#define HB_LANGUAGE_INVALID ((hb_language_t) NULL)
-HB_EXTERN hb_language_t
+hb_language_t
hb_language_get_default (void);
@@ -277,9 +272,6 @@ typedef enum
/*6.1*/ HB_SCRIPT_SORA_SOMPENG = HB_TAG ('S','o','r','a'),
/*6.1*/ HB_SCRIPT_TAKRI = HB_TAG ('T','a','k','r'),
- /*
- * Since: 0.9.30
- */
/*7.0*/ HB_SCRIPT_BASSA_VAH = HB_TAG ('B','a','s','s'),
/*7.0*/ HB_SCRIPT_CAUCASIAN_ALBANIAN = HB_TAG ('A','g','h','b'),
/*7.0*/ HB_SCRIPT_DUPLOYAN = HB_TAG ('D','u','p','l'),
@@ -304,13 +296,6 @@ 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'),
-
/* No script set. */
HB_SCRIPT_INVALID = HB_TAG_NONE,
@@ -329,16 +314,18 @@ typedef enum
/* Script functions */
-HB_EXTERN hb_script_t
+hb_script_t
hb_script_from_iso15924_tag (hb_tag_t tag);
-HB_EXTERN hb_script_t
-hb_script_from_string (const char *str, int len);
+/* sugar for tag_from_string() then script_from_iso15924_tag */
+/* len=-1 means s is NUL-terminated */
+hb_script_t
+hb_script_from_string (const char *s, int len);
-HB_EXTERN hb_tag_t
+hb_tag_t
hb_script_to_iso15924_tag (hb_script_t script);
-HB_EXTERN hb_direction_t
+hb_direction_t
hb_script_get_horizontal_direction (hb_script_t script);
diff --git a/src/hb-coretext.cc b/src/hb-coretext.cc
index e64d265..4a45175 100644
--- a/src/hb-coretext.cc
+++ b/src/hb-coretext.cc
@@ -27,6 +27,7 @@
*/
#define HB_SHAPER coretext
+#define hb_coretext_shaper_face_data_t CGFont
#include "hb-shaper-impl-private.hh"
#include "hb-coretext.h"
@@ -77,29 +78,6 @@ HB_SHAPER_DATA_ENSURE_DECLARE(coretext, font)
* shaper face data
*/
-static CTFontDescriptorRef
-get_last_resort_font_desc (void)
-{
- // TODO Handle allocation failures?
- CTFontDescriptorRef last_resort = CTFontDescriptorCreateWithNameAndSize (CFSTR("LastResort"), 0);
- CFArrayRef cascade_list = CFArrayCreate (kCFAllocatorDefault,
- (const void **) &last_resort,
- 1,
- &kCFTypeArrayCallBacks);
- CFRelease (last_resort);
- CFDictionaryRef attributes = CFDictionaryCreate (kCFAllocatorDefault,
- (const void **) &kCTFontCascadeListAttribute,
- (const void **) &cascade_list,
- 1,
- &kCFTypeDictionaryKeyCallBacks,
- &kCFTypeDictionaryValueCallBacks);
- CFRelease (cascade_list);
-
- CTFontDescriptorRef font_desc = CTFontDescriptorCreateWithAttributes (attributes);
- CFRelease (attributes);
- return font_desc;
-}
-
static void
release_data (void *info, const void *data, size_t size)
{
@@ -109,13 +87,14 @@ release_data (void *info, const void *data, size_t size)
hb_blob_destroy ((hb_blob_t *) info);
}
-static CGFontRef
-create_cg_font (hb_face_t *face)
+hb_coretext_shaper_face_data_t *
+_hb_coretext_shaper_face_data_create (hb_face_t *face)
{
- CGFontRef cg_font = NULL;
+ hb_coretext_shaper_face_data_t *data = NULL;
+
if (face->destroy == (hb_destroy_func_t) CGFontRelease)
{
- cg_font = CGFontRetain ((CGFontRef) face->user_data);
+ data = CGFontRetain ((CGFontRef) face->user_data);
}
else
{
@@ -128,76 +107,13 @@ create_cg_font (hb_face_t *face)
CGDataProviderRef provider = CGDataProviderCreateWithData (blob, blob_data, blob_length, &release_data);
if (likely (provider))
{
- cg_font = CGFontCreateWithDataProvider (provider);
- if (unlikely (!cg_font))
- DEBUG_MSG (CORETEXT, face, "Face CGFontCreateWithDataProvider() failed");
+ data = CGFontCreateWithDataProvider (provider);
CGDataProviderRelease (provider);
}
}
- return cg_font;
-}
-
-static CTFontRef
-create_ct_font (CGFontRef cg_font, CGFloat font_size)
-{
- CTFontRef ct_font = CTFontCreateWithGraphicsFont (cg_font, font_size, NULL, NULL);
- if (unlikely (!ct_font)) {
- DEBUG_MSG (CORETEXT, cg_font, "Font CTFontCreateWithGraphicsFont() failed");
- return NULL;
- }
-
- /* Create font copy with cascade list that has LastResort first; this speeds up CoreText
- * font fallback which we don't need anyway. */
- {
- CTFontDescriptorRef last_resort_font_desc = get_last_resort_font_desc ();
- CTFontRef new_ct_font = CTFontCreateCopyWithAttributes (ct_font, 0.0, NULL, last_resort_font_desc);
- CFRelease (last_resort_font_desc);
- if (new_ct_font)
- {
- CFRelease (ct_font);
- ct_font = new_ct_font;
- }
- else
- DEBUG_MSG (CORETEXT, ct_font, "Font copy with empty cascade list failed");
- }
- return ct_font;
-}
-
-struct hb_coretext_shaper_face_data_t {
- CGFontRef cg_font;
- CTFontRef ct_font;
-};
-
-hb_coretext_shaper_face_data_t *
-_hb_coretext_shaper_face_data_create (hb_face_t *face)
-{
- hb_coretext_shaper_face_data_t *data = (hb_coretext_shaper_face_data_t *) calloc (1, sizeof (hb_coretext_shaper_face_data_t));
- if (unlikely (!data))
- return NULL;
-
- data->cg_font = create_cg_font (face);
- if (unlikely (!data->cg_font))
- {
- DEBUG_MSG (CORETEXT, face, "CGFont creation failed..");
- free (data);
- return NULL;
- }
-
- /* We use 36pt size instead of UPEM, because CoreText implements the 'trak' table,
- * which can make the font too tight at large sizes. 36pt should be a good semi-neutral
- * size.
- *
- * Since we always create CTFont at a fixed size, our CTFont lives in face_data
- * instead of font_data. Which is good, because when people change scale on
- * hb_font_t, we won't need to update our CTFont. */
- data->ct_font = create_ct_font (data->cg_font, 36.);
- if (unlikely (!data->ct_font))
- {
- DEBUG_MSG (CORETEXT, face, "CTFont creation failed.");
- CFRelease (data->cg_font);
- free (data);
- return NULL;
+ if (unlikely (!data)) {
+ DEBUG_MSG (CORETEXT, face, "Face CGFontCreateWithDataProvider() failed");
}
return data;
@@ -206,20 +122,15 @@ _hb_coretext_shaper_face_data_create (hb_face_t *face)
void
_hb_coretext_shaper_face_data_destroy (hb_coretext_shaper_face_data_t *data)
{
- CFRelease (data->ct_font);
- CFRelease (data->cg_font);
- free (data);
+ CFRelease (data);
}
-/*
- * Since: 0.9.10
- */
CGFontRef
hb_coretext_face_get_cg_font (hb_face_t *face)
{
if (unlikely (!hb_coretext_shaper_face_data_ensure (face))) return NULL;
hb_coretext_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face);
- return face_data->cg_font;
+ return face_data;
}
@@ -227,17 +138,48 @@ hb_coretext_face_get_cg_font (hb_face_t *face)
* shaper font data
*/
-struct hb_coretext_shaper_font_data_t {};
+struct hb_coretext_shaper_font_data_t {
+ CTFontRef ct_font;
+ CGFloat x_mult, y_mult; /* From CT space to HB space. */
+};
hb_coretext_shaper_font_data_t *
-_hb_coretext_shaper_font_data_create (hb_font_t *font HB_UNUSED)
+_hb_coretext_shaper_font_data_create (hb_font_t *font)
{
- return (hb_coretext_shaper_font_data_t *) HB_SHAPER_DATA_SUCCEEDED;
+ if (unlikely (!hb_coretext_shaper_face_data_ensure (font->face))) return NULL;
+
+ hb_coretext_shaper_font_data_t *data = (hb_coretext_shaper_font_data_t *) calloc (1, sizeof (hb_coretext_shaper_font_data_t));
+ if (unlikely (!data))
+ return NULL;
+
+ hb_face_t *face = font->face;
+ hb_coretext_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face);
+
+ /* Choose a CoreText font size and calculate multipliers to convert to HarfBuzz space. */
+ CGFloat font_size = 36.; /* Default... */
+ /* No idea if the following is even a good idea. */
+ if (font->y_ppem)
+ font_size = font->y_ppem;
+
+ if (font_size < 0)
+ font_size = -font_size;
+ data->x_mult = (CGFloat) font->x_scale / font_size;
+ data->y_mult = (CGFloat) font->y_scale / font_size;
+ data->ct_font = CTFontCreateWithGraphicsFont (face_data, font_size, NULL, NULL);
+ if (unlikely (!data->ct_font)) {
+ DEBUG_MSG (CORETEXT, font, "Font CTFontCreateWithGraphicsFont() failed");
+ free (data);
+ return NULL;
+ }
+
+ return data;
}
void
_hb_coretext_shaper_font_data_destroy (hb_coretext_shaper_font_data_t *data)
{
+ CFRelease (data->ct_font);
+ free (data);
}
@@ -263,10 +205,9 @@ _hb_coretext_shaper_shape_plan_data_destroy (hb_coretext_shaper_shape_plan_data_
CTFontRef
hb_coretext_font_get_ct_font (hb_font_t *font)
{
- hb_face_t *face = font->face;
- if (unlikely (!hb_coretext_shaper_face_data_ensure (face))) return NULL;
- hb_coretext_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face);
- return face_data->ct_font;
+ if (unlikely (!hb_coretext_shaper_font_data_ensure (font))) return NULL;
+ hb_coretext_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font);
+ return font_data->ct_font;
}
@@ -499,10 +440,7 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan,
{
hb_face_t *face = font->face;
hb_coretext_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face);
-
- CGFloat ct_font_size = CTFontGetSize (face_data->ct_font);
- CGFloat x_mult = (CGFloat) font->x_scale / ct_font_size;
- CGFloat y_mult = (CGFloat) font->y_scale / ct_font_size;
+ hb_coretext_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font);
/* Attach marks to their bases, to match the 'ot' shaper.
* Adapted from hb-ot-shape:hb_form_clusters().
@@ -511,7 +449,6 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan,
* B1 M1 B2 M2, and B1-B2 form a ligature, M2's cluster will
* continue pointing to B2 even though B2 was merged into B1's
* cluster... */
- if (buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES)
{
hb_unicode_funcs_t *unicode = buffer->unicode;
unsigned int count = buffer->len;
@@ -634,7 +571,7 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan,
CTFontDescriptorRef font_desc = CTFontDescriptorCreateWithAttributes (attributes);
CFRelease (attributes);
- range->font = CTFontCreateCopyWithAttributes (face_data->ct_font, 0.0, NULL, font_desc);
+ range->font = CTFontCreateCopyWithAttributes (font_data->ct_font, 0.0, NULL, font_desc);
CFRelease (font_desc);
}
else
@@ -752,6 +689,7 @@ resize_and_retry:
scratch += old_scratch_used;
scratch_size -= old_scratch_used;
}
+retry:
{
string_ref = CFStringCreateWithCharactersNoCopy (NULL,
pchars, chars_len,
@@ -791,7 +729,7 @@ resize_and_retry:
CFRelease (lang);
}
CFAttributedStringSetAttribute (attr_string, CFRangeMake (0, chars_len),
- kCTFontAttributeName, face_data->ct_font);
+ kCTFontAttributeName, font_data->ct_font);
if (num_features)
{
@@ -850,17 +788,6 @@ resize_and_retry:
buffer->len = 0;
uint32_t status_and = ~0, status_or = 0;
double advances_so_far = 0;
- /* For right-to-left runs, CoreText returns the glyphs positioned such that
- * any trailing whitespace is to the left of (0,0). Adjust coordinate system
- * to fix for that. Test with any RTL string with trailing spaces.
- * https://code.google.com/p/chromium/issues/detail?id=469028
- */
- if (HB_DIRECTION_IS_BACKWARD (buffer->props.direction))
- {
- advances_so_far -= CTLineGetTrailingWhitespaceWidth (line);
- if (HB_DIRECTION_IS_VERTICAL (buffer->props.direction))
- advances_so_far = -advances_so_far;
- }
const CFRange range_all = CFRangeMake (0, 0);
@@ -884,7 +811,7 @@ resize_and_retry:
*/
CFDictionaryRef attributes = CTRunGetAttributes (run);
CTFontRef run_ct_font = static_cast<CTFontRef>(CFDictionaryGetValue (attributes, kCTFontAttributeName));
- if (!CFEqual (run_ct_font, face_data->ct_font))
+ if (!CFEqual (run_ct_font, font_data->ct_font))
{
/* The run doesn't use our main font instance. We have to figure out
* whether font fallback happened, or this is just CoreText giving us
@@ -904,11 +831,15 @@ resize_and_retry:
* backend.
*
* However, even that wouldn't work if we were passed in the CGFont to
- * construct a hb_face to begin with.
+ * begin with.
*
- * See: http://github.com/behdad/harfbuzz/pull/36
+ * Webkit uses a slightly different approach: it installs LastResort
+ * as fallback chain, and then checks PS name of used font against
+ * LastResort. That one is safe for any font except for LastResort,
+ * as opposed to ours, which can fail if we are using any uninstalled
+ * font that has the same name as an installed font.
*
- * Also see: https://bugs.chromium.org/p/chromium/issues/detail?id=597098
+ * See: http://github.com/behdad/harfbuzz/pull/36
*/
bool matched = false;
for (unsigned int i = 0; i < range_records.len; i++)
@@ -922,13 +853,13 @@ resize_and_retry:
CGFontRef run_cg_font = CTFontCopyGraphicsFont (run_ct_font, 0);
if (run_cg_font)
{
- matched = CFEqual (run_cg_font, face_data->cg_font);
+ matched = CFEqual (run_cg_font, face_data);
CFRelease (run_cg_font);
}
}
if (!matched)
{
- CFStringRef font_ps_name = CTFontCopyName (face_data->ct_font, kCTFontPostScriptNameKey);
+ CFStringRef font_ps_name = CTFontCopyName (font_data->ct_font, kCTFontPostScriptNameKey);
CFStringRef run_ps_name = CTFontCopyName (run_ct_font, kCTFontPostScriptNameKey);
CFComparisonResult result = CFStringCompare (run_ps_name, font_ps_name, 0);
CFRelease (run_ps_name);
@@ -973,8 +904,8 @@ resize_and_retry:
info->cluster = log_clusters[j];
info->mask = advance;
- info->var1.i32 = x_offset;
- info->var2.i32 = y_offset;
+ info->var1.u32 = x_offset;
+ info->var2.u32 = y_offset;
info++;
buffer->len++;
@@ -1048,6 +979,7 @@ resize_and_retry:
positions = position_buf;
}
hb_glyph_info_t *info = run_info;
+ CGFloat x_mult = font_data->x_mult, y_mult = font_data->y_mult;
if (HB_DIRECTION_IS_HORIZONTAL (buffer->props.direction))
{
hb_position_t x_offset = (positions[0].x - advances_so_far) * x_mult;
@@ -1059,8 +991,8 @@ resize_and_retry:
else /* last glyph */
advance = run_advance - (positions[j].x - positions[0].x);
info->mask = advance * x_mult;
- info->var1.i32 = x_offset;
- info->var2.i32 = positions[j].y * y_mult;
+ info->var1.u32 = x_offset;
+ info->var2.u32 = positions[j].y * y_mult;
info++;
}
}
@@ -1075,8 +1007,8 @@ resize_and_retry:
else /* last glyph */
advance = run_advance - (positions[j].y - positions[0].y);
info->mask = advance * y_mult;
- info->var1.i32 = positions[j].x * x_mult;
- info->var2.i32 = y_offset;
+ info->var1.u32 = positions[j].x * x_mult;
+ info->var2.u32 = y_offset;
info++;
}
}
@@ -1091,20 +1023,10 @@ resize_and_retry:
buffer->len += num_glyphs;
}
- /* Mac OS 10.6 doesn't have kCTTypesetterOptionForcedEmbeddingLevel,
- * or if it does, it doesn't resepct it. So we get runs with wrong
- * directions. As such, disable the assert... It wouldn't crash, but
- * cursoring will be off...
- *
- * http://crbug.com/419769
- */
- if (0)
- {
- /* Make sure all runs had the expected direction. */
- bool backward = HB_DIRECTION_IS_BACKWARD (buffer->props.direction);
- assert (bool (status_and & kCTRunStatusRightToLeft) == backward);
- assert (bool (status_or & kCTRunStatusRightToLeft) == backward);
- }
+ /* Make sure all runs had the expected direction. */
+ bool backward = HB_DIRECTION_IS_BACKWARD (buffer->props.direction);
+ assert (bool (status_and & kCTRunStatusRightToLeft) == backward);
+ assert (bool (status_or & kCTRunStatusRightToLeft) == backward);
buffer->clear_positions ();
@@ -1115,16 +1037,16 @@ resize_and_retry:
for (unsigned int i = 0; i < count; i++)
{
pos->x_advance = info->mask;
- pos->x_offset = info->var1.i32;
- pos->y_offset = info->var2.i32;
+ pos->x_offset = info->var1.u32;
+ pos->y_offset = info->var2.u32;
info++, pos++;
}
else
for (unsigned int i = 0; i < count; i++)
{
pos->y_advance = info->mask;
- pos->x_offset = info->var1.i32;
- pos->y_offset = info->var2.i32;
+ pos->x_offset = info->var1.u32;
+ pos->y_offset = info->var2.u32;
info++, pos++;
}
@@ -1182,6 +1104,10 @@ fail:
* AAT shaper
*/
+HB_SHAPER_DATA_ENSURE_DECLARE(coretext_aat, face)
+HB_SHAPER_DATA_ENSURE_DECLARE(coretext_aat, font)
+
+
/*
* shaper face data
*/
diff --git a/src/hb-coretext.h b/src/hb-coretext.h
index 82066e4..25267bc 100644
--- a/src/hb-coretext.h
+++ b/src/hb-coretext.h
@@ -44,14 +44,14 @@ HB_BEGIN_DECLS
#define HB_CORETEXT_TAG_MORX HB_TAG('m','o','r','x')
-HB_EXTERN hb_face_t *
+hb_face_t *
hb_coretext_face_create (CGFontRef cg_font);
-HB_EXTERN CGFontRef
+CGFontRef
hb_coretext_face_get_cg_font (hb_face_t *face);
-HB_EXTERN CTFontRef
+CTFontRef
hb_coretext_font_get_ct_font (hb_font_t *font);
diff --git a/src/hb-deprecated.h b/src/hb-deprecated.h
index 0398dfa..30ae4b1 100644
--- a/src/hb-deprecated.h
+++ b/src/hb-deprecated.h
@@ -44,16 +44,6 @@ HB_BEGIN_DECLS
#define HB_BUFFER_FLAGS_DEFAULT HB_BUFFER_FLAG_DEFAULT
#define HB_BUFFER_SERIALIZE_FLAGS_DEFAULT HB_BUFFER_SERIALIZE_FLAG_DEFAULT
-typedef hb_bool_t (*hb_font_get_glyph_func_t) (hb_font_t *font, void *font_data,
- hb_codepoint_t unicode, hb_codepoint_t variation_selector,
- hb_codepoint_t *glyph,
- void *user_data);
-
-HB_EXTERN void
-hb_font_funcs_set_glyph_func (hb_font_funcs_t *ffuncs,
- hb_font_get_glyph_func_t func,
- void *user_data, hb_destroy_func_t destroy);
-
#endif
HB_END_DECLS
diff --git a/src/hb-directwrite.cc b/src/hb-directwrite.cc
deleted file mode 100644
index 96d1870..0000000
--- a/src/hb-directwrite.cc
+++ /dev/null
@@ -1,970 +0,0 @@
-/*
- * Copyright © 2015-2016 Ebrahim Byagowi
- *
- * This is part of HarfBuzz, a text shaping library.
- *
- * Permission is hereby granted, without written agreement and without
- * license or royalty fees, to use, copy, modify, and distribute this
- * software and its documentation for any purpose, provided that the
- * above copyright notice and the following two paragraphs appear in
- * all copies of this software.
- *
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
- * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
- * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
- * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- */
-
-#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 "hb-directwrite.h"
-
-#include "hb-open-file-private.hh"
-#include "hb-ot-name-table.hh"
-#include "hb-ot-tag.h"
-
-
-#ifndef HB_DEBUG_DIRECTWRITE
-#define HB_DEBUG_DIRECTWRITE (HB_DEBUG+0)
-#endif
-
-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];
-};
-
-/* 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)
-{
- /* 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;
-}
-
-/* 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.
- */
-
- blob = OT::Sanitizer<OT::OpenTypeFontFile>::sanitize (blob);
-
- unsigned int length, new_length, name_str_len;
- const char *orig_sfnt_data = hb_blob_get_data (blob, &length);
-
- _hb_generate_unique_face_name (new_name, &name_str_len);
-
- static const uint16_t name_IDs[] = { 1, 2, 3, 4, 6 };
-
- 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;
-
- 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;
- }
-
- memcpy(new_sfnt_data, orig_sfnt_data, length);
-
- 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++)
- {
- 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;
- }
-
- /* 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++)
- {
- /* 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;
- }
- }
-
- /* 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);
-}
-
-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));
- if (unlikely (!data))
- return NULL;
-
- hb_blob_t *blob = hb_face_reference_blob (face);
- if (unlikely (!hb_blob_get_length (blob)))
- DEBUG_MSG(DIRECTWRITE, face, "Face has empty blob");
-
- blob = _hb_rename_font (blob, data->face_name);
- if (unlikely (!blob))
- {
- free(data);
- return NULL;
- }
-
- 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;
- }
-
- return data;
-}
-
-void
-_hb_directwrite_shaper_face_data_destroy(hb_directwrite_shaper_face_data_t *data)
-{
- RemoveFontMemResourceEx(data->fh);
- free(data);
-}
-
-
-/*
- * shaper font 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));
- 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
- */
-
-struct hb_directwrite_shaper_shape_plan_data_t {};
-
-hb_directwrite_shaper_shape_plan_data_t *
-_hb_directwrite_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan HB_UNUSED,
- const hb_feature_t *user_features HB_UNUSED,
- unsigned int num_user_features HB_UNUSED)
-{
- return (hb_directwrite_shaper_shape_plan_data_t *) HB_SHAPER_DATA_SUCCEEDED;
-}
-
-void
-_hb_directwrite_shaper_shape_plan_data_destroy (hb_directwrite_shaper_shape_plan_data_t *data HB_UNUSED)
-{
-}
-
-// Most of here 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
-{
-public:
-
- IFACEMETHOD(QueryInterface)(IID const& iid, OUT void** ppObject) { return S_OK; }
- IFACEMETHOD_(ULONG, AddRef)() { return 1; }
- IFACEMETHOD_(ULONG, Release)() { return 1; }
-
- // A single contiguous run of characters containing the same analysis
- // results.
- struct Run
- {
- uint32_t mTextStart; // starting text position of this run
- uint32_t mTextLength; // number of contiguous code units covered
- uint32_t mGlyphStart; // starting glyph in the glyphs array
- uint32_t mGlyphCount; // number of glyphs associated with this run of
- // text
- DWRITE_SCRIPT_ANALYSIS mScript;
- uint8_t mBidiLevel;
- bool mIsSideways;
-
- inline bool ContainsTextPosition(uint32_t aTextPosition) const
- {
- return aTextPosition >= mTextStart
- && aTextPosition < mTextStart + mTextLength;
- }
-
- Run *nextRun;
- };
-
-public:
- TextAnalysis(const wchar_t* text,
- uint32_t textLength,
- const wchar_t* localeName,
- DWRITE_READING_DIRECTION readingDirection)
- : mText(text)
- , mTextLength(textLength)
- , mLocaleName(localeName)
- , mReadingDirection(readingDirection)
- , mCurrentRun(NULL) { };
-
- ~TextAnalysis() {
- // delete runs, except mRunHead which is part of the TextAnalysis object
- for (Run *run = mRunHead.nextRun; run;) {
- Run *origRun = run;
- run = run->nextRun;
- free (origRun);
- }
- }
-
- STDMETHODIMP GenerateResults(IDWriteTextAnalyzer* textAnalyzer,
- Run **runHead) {
- // Analyzes the text using the script analyzer and returns
- // the result as a series of runs.
-
- HRESULT hr = S_OK;
-
- // Initially start out with one result that covers the entire range.
- // This result will be subdivided by the analysis processes.
- mRunHead.mTextStart = 0;
- mRunHead.mTextLength = mTextLength;
- mRunHead.mBidiLevel =
- (mReadingDirection == DWRITE_READING_DIRECTION_RIGHT_TO_LEFT);
- mRunHead.nextRun = NULL;
- mCurrentRun = &mRunHead;
-
- // Call each of the analyzers in sequence, recording their results.
- if (SUCCEEDED (hr = textAnalyzer->AnalyzeScript (this, 0, mTextLength, this))) {
- *runHead = &mRunHead;
- }
-
- return hr;
- }
-
- // IDWriteTextAnalysisSource implementation
-
- IFACEMETHODIMP GetTextAtPosition(uint32_t textPosition,
- OUT wchar_t const** textString,
- OUT uint32_t* textLength)
- {
- if (textPosition >= mTextLength) {
- // No text at this position, valid query though.
- *textString = NULL;
- *textLength = 0;
- }
- else {
- *textString = mText + textPosition;
- *textLength = mTextLength - textPosition;
- }
- return S_OK;
- }
-
- IFACEMETHODIMP GetTextBeforePosition(uint32_t textPosition,
- OUT wchar_t const** textString,
- OUT uint32_t* textLength)
- {
- if (textPosition == 0 || textPosition > mTextLength) {
- // Either there is no text before here (== 0), or this
- // is an invalid position. The query is considered valid thouh.
- *textString = NULL;
- *textLength = 0;
- }
- else {
- *textString = mText;
- *textLength = textPosition;
- }
- return S_OK;
- }
-
- IFACEMETHODIMP_(DWRITE_READING_DIRECTION)
- GetParagraphReadingDirection() { return mReadingDirection; }
-
- IFACEMETHODIMP GetLocaleName(uint32_t textPosition,
- uint32_t* textLength,
- wchar_t const** localeName) {
- return S_OK;
- }
-
- IFACEMETHODIMP
- GetNumberSubstitution(uint32_t textPosition,
- OUT uint32_t* textLength,
- OUT IDWriteNumberSubstitution** numberSubstitution)
- {
- // We do not support number substitution.
- *numberSubstitution = NULL;
- *textLength = mTextLength - textPosition;
-
- return S_OK;
- }
-
- // IDWriteTextAnalysisSink implementation
-
- IFACEMETHODIMP
- SetScriptAnalysis(uint32_t textPosition,
- uint32_t textLength,
- DWRITE_SCRIPT_ANALYSIS const* scriptAnalysis)
- {
- SetCurrentRun(textPosition);
- SplitCurrentRun(textPosition);
- while (textLength > 0) {
- Run *run = FetchNextRun(&textLength);
- run->mScript = *scriptAnalysis;
- }
-
- return S_OK;
- }
-
- IFACEMETHODIMP
- SetLineBreakpoints(uint32_t textPosition,
- uint32_t textLength,
- const DWRITE_LINE_BREAKPOINT* lineBreakpoints) { return S_OK; }
-
- IFACEMETHODIMP SetBidiLevel(uint32_t textPosition,
- uint32_t textLength,
- uint8_t explicitLevel,
- uint8_t resolvedLevel) { return S_OK; }
-
- IFACEMETHODIMP
- SetNumberSubstitution(uint32_t textPosition,
- uint32_t textLength,
- IDWriteNumberSubstitution* numberSubstitution) { return S_OK; }
-
-protected:
- Run *FetchNextRun(IN OUT uint32_t* textLength)
- {
- // Used by the sink setters, this returns a reference to the next run.
- // Position and length are adjusted to now point after the current run
- // being returned.
-
- 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);
- }
- else {
- // Just advance the current run.
- mCurrentRun = mCurrentRun->nextRun;
- }
- *textLength -= origRun->mTextLength;
-
- // Return a reference to the run that was just current.
- return origRun;
- }
-
- void SetCurrentRun(uint32_t textPosition)
- {
- // Move the current run to the given position.
- // Since the analyzers generally return results in a forward manner,
- // this will usually just return early. If not, find the
- // corresponding run for the text position.
-
- if (mCurrentRun && mCurrentRun->ContainsTextPosition(textPosition)) {
- return;
- }
-
- for (Run *run = &mRunHead; run; run = run->nextRun) {
- if (run->ContainsTextPosition(textPosition)) {
- mCurrentRun = run;
- return;
- }
- }
- //NS_NOTREACHED("We should always be able to find the text position in one \
- // of our runs");
- }
-
- void SplitCurrentRun(uint32_t splitPosition)
- {
- 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) {
- // No need to split, already the start of a run
- // or before it. Usually the first.
- return;
- }
- Run *newRun = (Run*) malloc (sizeof (Run));
-
- *newRun = *mCurrentRun;
-
- // Insert the new run in our linked list.
- newRun->nextRun = mCurrentRun->nextRun;
- mCurrentRun->nextRun = newRun;
-
- // Adjust runs' text positions and lengths.
- uint32_t splitPoint = splitPosition - mCurrentRun->mTextStart;
- newRun->mTextStart += splitPoint;
- newRun->mTextLength -= splitPoint;
- mCurrentRun->mTextLength = splitPoint;
- mCurrentRun = newRun;
- }
-
-protected:
- // Input
- // (weak references are fine here, since this class is a transient
- // stack-based helper that doesn't need to copy data)
- uint32_t mTextLength;
- const wchar_t* mText;
- const wchar_t* mLocaleName;
- DWRITE_READING_DIRECTION mReadingDirection;
-
- // Current processing state.
- Run *mCurrentRun;
-
- // Output is a list of runs starting here
- Run mRunHead;
-};
-
-static inline uint16_t hb_uint16_swap (const uint16_t v)
-{ return (v >> 8) | (v << 8); }
-static inline uint32_t hb_uint32_swap (const uint32_t v)
-{ return (hb_uint16_swap(v) << 16) | hb_uint16_swap(v >> 16); }
-
-/*
- * shaper
- */
-
-hb_bool_t
-_hb_directwrite_shape(hb_shape_plan_t *shape_plan,
- hb_font_t *font,
- hb_buffer_t *buffer,
- const hb_feature_t *features,
- unsigned int num_features)
-{
- 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);
-
- // 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);
-#define ALLOCATE_ARRAY(Type, name, len) \
- Type *name = (Type *) scratch; \
- { \
- unsigned int _consumed = DIV_CEIL ((len) * sizeof (Type), sizeof (*scratch)); \
- assert (_consumed <= scratch_size); \
- scratch += _consumed; \
- scratch_size -= _consumed; \
- }
-
-#define utf16_index() var1.u32
-
- ALLOCATE_ARRAY(wchar_t, textString, buffer->len * 2);
-
- unsigned int chars_len = 0;
- for (unsigned int i = 0; i < buffer->len; i++)
- {
- hb_codepoint_t c = buffer->info[i].codepoint;
- buffer->info[i].utf16_index() = chars_len;
- if (likely(c <= 0xFFFFu))
- textString[chars_len++] = c;
- else if (unlikely(c > 0x10FFFFu))
- textString[chars_len++] = 0xFFFDu;
- else {
- textString[chars_len++] = 0xD800u + ((c - 0x10000u) >> 10);
- textString[chars_len++] = 0xDC00u + ((c - 0x10000u) & ((1 << 10) - 1));
- }
- }
-
- ALLOCATE_ARRAY(WORD, log_clusters, chars_len);
- // if (num_features)
- {
- /* Need log_clusters to assign features. */
- chars_len = 0;
- for (unsigned int i = 0; i < buffer->len; i++)
- {
- hb_codepoint_t c = buffer->info[i].codepoint;
- unsigned int cluster = buffer->info[i].cluster;
- log_clusters[chars_len++] = cluster;
- if (hb_in_range(c, 0x10000u, 0x10FFFFu))
- log_clusters[chars_len++] = cluster; /* Surrogates. */
- }
- }
-
- HRESULT hr;
- // TODO: Handle TEST_DISABLE_OPTIONAL_LIGATURES
-
- DWRITE_READING_DIRECTION readingDirection = buffer->props.direction ?
- DWRITE_READING_DIRECTION_RIGHT_TO_LEFT :
- DWRITE_READING_DIRECTION_LEFT_TO_RIGHT;
-
- /*
- * There's an internal 16-bit limit on some things inside the analyzer,
- * but we never attempt to shape a word longer than 64K characters
- * in a single gfxShapedWord, so we cannot exceed that limit.
- */
- uint32_t textLength = buffer->len;
-
- TextAnalysis analysis(textString, textLength, NULL, readingDirection);
- TextAnalysis::Run *runHead;
- hr = analysis.GenerateResults(analyzer, &runHead);
-
-#define FAIL(...) \
- HB_STMT_START { \
- DEBUG_MSG (DIRECTWRITE, NULL, __VA_ARGS__); \
- return false; \
- } HB_STMT_END;
-
- if (FAILED (hr))
- {
- FAIL ("Analyzer failed to generate results.");
- return false;
- }
-
- uint32_t maxGlyphCount = 3 * textLength / 2 + 16;
- uint32_t glyphCount;
- bool isRightToLeft = HB_DIRECTION_IS_BACKWARD (buffer->props.direction);
-
- const wchar_t localeName[20] = {0};
- if (buffer->props.language != NULL)
- {
- mbstowcs ((wchar_t*) localeName,
- hb_language_to_string (buffer->props.language), 20);
- }
-
- DWRITE_TYPOGRAPHIC_FEATURES singleFeatures;
- singleFeatures.featureCount = num_features;
- if (num_features)
- {
- DWRITE_FONT_FEATURE* dwfeatureArray = (DWRITE_FONT_FEATURE*)
- malloc (sizeof (DWRITE_FONT_FEATURE) * num_features);
- for (unsigned int i = 0; i < num_features; ++i)
- {
- dwfeatureArray[i].nameTag = (DWRITE_FONT_FEATURE_TAG)
- hb_uint32_swap (features[i].tag);
- dwfeatureArray[i].parameter = features[i].value;
- }
- singleFeatures.features = dwfeatureArray;
- }
- const DWRITE_TYPOGRAPHIC_FEATURES* dwFeatures =
- (const DWRITE_TYPOGRAPHIC_FEATURES*) &singleFeatures;
- const uint32_t featureRangeLengths[] = { textLength };
-
-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));
-
- hr = analyzer->GetGlyphs (textString, textLength, fontFace, FALSE,
- isRightToLeft, &runHead->mScript, localeName, NULL, &dwFeatures,
- featureRangeLengths, 1, maxGlyphCount, clusterMap, textProperties, glyphIndices,
- glyphProperties, &glyphCount);
-
- if (unlikely (hr == HRESULT_FROM_WIN32 (ERROR_INSUFFICIENT_BUFFER)))
- {
- free (clusterMap);
- free (glyphIndices);
- free (textProperties);
- free (glyphProperties);
-
- maxGlyphCount *= 2;
-
- goto retry_getglyphs;
- }
- if (FAILED (hr))
- {
- FAIL ("Analyzer failed to get glyphs.");
- return false;
- }
-
- float* glyphAdvances = (float*) malloc (maxGlyphCount * sizeof (float));
- DWRITE_GLYPH_OFFSET* glyphOffsets = (DWRITE_GLYPH_OFFSET*)
- malloc(maxGlyphCount * sizeof (DWRITE_GLYPH_OFFSET));
-
- /* The -2 in the following is to compensate for possible
- * alignment needed after the WORD array. sizeof(WORD) == 2. */
- unsigned int glyphs_size = (scratch_size * sizeof(int) - 2)
- / (sizeof(WORD) +
- sizeof(DWRITE_SHAPING_GLYPH_PROPERTIES) +
- sizeof(int) +
- sizeof(DWRITE_GLYPH_OFFSET) +
- sizeof(uint32_t));
- ALLOCATE_ARRAY (uint32_t, vis_clusters, glyphs_size);
-
-#undef ALLOCATE_ARRAY
-
- int fontEmSize = font->face->get_upem();
- if (fontEmSize < 0)
- fontEmSize = -fontEmSize;
-
- if (fontEmSize < 0)
- fontEmSize = -fontEmSize;
- double x_mult = (double) font->x_scale / fontEmSize;
- double y_mult = (double) font->y_scale / fontEmSize;
-
- hr = analyzer->GetGlyphPlacements (textString,
- clusterMap, textProperties, textLength, glyphIndices,
- glyphProperties, glyphCount, fontFace, fontEmSize,
- FALSE, isRightToLeft, &runHead->mScript, localeName,
- &dwFeatures, featureRangeLengths, 1,
- glyphAdvances, glyphOffsets);
-
- if (FAILED (hr))
- {
- FAIL ("Analyzer failed to get glyph placements.");
- return false;
- }
-
-#ifdef HB_DIRECTWRITE_EXPERIMENTAL_JUSTIFICATION
-
- 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);
-
- if (FAILED (hr))
- {
- FAIL ("Analyzer failed to get justification opportunities.");
- return false;
- }
-
- // TODO: get lineWith from somewhere
- float lineWidth = 60000;
-
- 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 justified glyph advances.");
- return false;
- }
-
- 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 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,
- 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);
-
- maxGlyphCount = actualGlyphsCount;
-
- goto retry_getjustifiedglyphs;
- }
- if (FAILED (hr))
- {
- FAIL ("Analyzer failed to get justified glyphs.");
- return false;
- }
-
- free (clusterMap);
- free (glyphIndices);
- free (glyphAdvances);
- free (glyphOffsets);
-
- glyphCount = actualGlyphsCount;
- clusterMap = modifiedClusterMap;
- glyphIndices = modifiedGlyphIndices;
- glyphAdvances = modifiedGlyphAdvances;
- glyphOffsets = modifiedGlyphOffsets;
-
- free(justifiedGlyphAdvances);
- free(justifiedGlyphOffsets);
- }
- else
- {
- free(glyphAdvances);
- free(glyphOffsets);
-
- glyphAdvances = justifiedGlyphAdvances;
- glyphOffsets = justifiedGlyphOffsets;
- }
-
- free(justificationOpportunities);
-
-#endif
-
- /* Ok, we've got everything we need, now compose output buffer,
- * very, *very*, carefully! */
-
- /* Calculate visual-clusters. That's what we ship. */
- for (unsigned int i = 0; i < glyphCount; i++)
- vis_clusters[i] = -1;
- for (unsigned int i = 0; i < buffer->len; i++)
- {
- uint32_t *p =
- &vis_clusters[log_clusters[buffer->info[i].utf16_index()]];
- *p = MIN (*p, buffer->info[i].cluster);
- }
- for (unsigned int i = 1; i < glyphCount; i++)
- if (vis_clusters[i] == -1)
- vis_clusters[i] = vis_clusters[i - 1];
-
-#undef utf16_index
-
- if (unlikely (!buffer->ensure (glyphCount)))
- FAIL ("Buffer in error");
-
-#undef FAIL
-
- /* Set glyph infos */
- buffer->len = 0;
- for (unsigned int i = 0; i < glyphCount; i++)
- {
- hb_glyph_info_t *info = &buffer->info[buffer->len++];
-
- info->codepoint = glyphIndices[i];
- info->cluster = vis_clusters[i];
-
- /* The rest is crap. Let's store position info there for now. */
- info->mask = glyphAdvances[i];
- info->var1.i32 = glyphOffsets[i].advanceOffset;
- info->var2.i32 = glyphOffsets[i].ascenderOffset;
- }
-
- /* Set glyph positions */
- buffer->clear_positions ();
- for (unsigned int i = 0; i < glyphCount; i++)
- {
- hb_glyph_info_t *info = &buffer->info[i];
- hb_glyph_position_t *pos = &buffer->pos[i];
-
- /* TODO vertical */
- pos->x_advance = x_mult * (int32_t) info->mask;
- pos->x_offset =
- x_mult * (isRightToLeft ? -info->var1.i32 : info->var1.i32);
- pos->y_offset = y_mult * info->var2.i32;
- }
-
- if (isRightToLeft)
- hb_buffer_reverse (buffer);
-
- free (clusterMap);
- free (glyphIndices);
- free (textProperties);
- free (glyphProperties);
- free (glyphAdvances);
- free (glyphOffsets);
-
- if (num_features)
- free (singleFeatures.features);
-
- /* Wow, done! */
- return true;
-}
diff --git a/src/hb-directwrite.h b/src/hb-directwrite.h
deleted file mode 100644
index adf33df..0000000
--- a/src/hb-directwrite.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright © 2015 Ebrahim Byagowi
- *
- * This is part of HarfBuzz, a text shaping library.
- *
- * Permission is hereby granted, without written agreement and without
- * license or royalty fees, to use, copy, modify, and distribute this
- * software and its documentation for any purpose, provided that the
- * above copyright notice and the following two paragraphs appear in
- * all copies of this software.
- *
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
- * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
- * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
- * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- */
-
-#ifndef HB_DIRECTWRITE_H
-#define HB_DIRECTWRITE_H
-
-#include "hb.h"
-
-HB_BEGIN_DECLS
-
-HB_END_DECLS
-
-#endif /* HB_UNISCRIBE_H */
diff --git a/src/hb-face.cc b/src/hb-face.cc
index 9effc41..9348af7 100644
--- a/src/hb-face.cc
+++ b/src/hb-face.cc
@@ -77,7 +77,7 @@ const hb_face_t _hb_face_nil = {
*
* Return value: (transfer full)
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_face_t *
hb_face_create_for_tables (hb_reference_table_func_t reference_table_func,
@@ -113,7 +113,7 @@ _hb_face_for_data_closure_create (hb_blob_t *blob, unsigned int index)
{
hb_face_for_data_closure_t *closure;
- closure = (hb_face_for_data_closure_t *) calloc (1, sizeof (hb_face_for_data_closure_t));
+ closure = (hb_face_for_data_closure_t *) malloc (sizeof (hb_face_for_data_closure_t));
if (unlikely (!closure))
return NULL;
@@ -157,7 +157,7 @@ _hb_face_for_data_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void
*
* Return value: (transfer full):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_face_t *
hb_face_create (hb_blob_t *blob,
@@ -165,8 +165,8 @@ hb_face_create (hb_blob_t *blob,
{
hb_face_t *face;
- if (unlikely (!blob))
- blob = hb_blob_get_empty ();
+ if (unlikely (!blob || !hb_blob_get_length (blob)))
+ return hb_face_get_empty ();
hb_face_for_data_closure_t *closure = _hb_face_for_data_closure_create (OT::Sanitizer<OT::OpenTypeFontFile>::sanitize (hb_blob_reference (blob)), index);
@@ -189,7 +189,7 @@ hb_face_create (hb_blob_t *blob,
*
* Return value: (transfer full)
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_face_t *
hb_face_get_empty (void)
@@ -206,7 +206,7 @@ hb_face_get_empty (void)
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_face_t *
hb_face_reference (hb_face_t *face)
@@ -220,7 +220,7 @@ hb_face_reference (hb_face_t *face)
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_face_destroy (hb_face_t *face)
@@ -257,7 +257,7 @@ hb_face_destroy (hb_face_t *face)
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_face_set_user_data (hb_face_t *face,
@@ -278,7 +278,7 @@ hb_face_set_user_data (hb_face_t *face,
*
* Return value: (transfer none):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void *
hb_face_get_user_data (hb_face_t *face,
@@ -293,7 +293,7 @@ hb_face_get_user_data (hb_face_t *face,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_face_make_immutable (hb_face_t *face)
@@ -312,7 +312,7 @@ hb_face_make_immutable (hb_face_t *face)
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_face_is_immutable (hb_face_t *face)
@@ -330,7 +330,7 @@ hb_face_is_immutable (hb_face_t *face)
*
* Return value: (transfer full):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_blob_t *
hb_face_reference_table (hb_face_t *face,
@@ -347,7 +347,7 @@ hb_face_reference_table (hb_face_t *face,
*
* Return value: (transfer full):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_blob_t *
hb_face_reference_blob (hb_face_t *face)
@@ -362,7 +362,7 @@ hb_face_reference_blob (hb_face_t *face)
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_face_set_index (hb_face_t *face,
@@ -382,7 +382,7 @@ hb_face_set_index (hb_face_t *face,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
unsigned int
hb_face_get_index (hb_face_t *face)
@@ -397,7 +397,7 @@ hb_face_get_index (hb_face_t *face)
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_face_set_upem (hb_face_t *face,
@@ -417,7 +417,7 @@ hb_face_set_upem (hb_face_t *face,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
unsigned int
hb_face_get_upem (hb_face_t *face)
@@ -441,7 +441,7 @@ hb_face_t::load_upem (void) const
*
*
*
- * Since: 0.9.7
+ * Since: 1.0
**/
void
hb_face_set_glyph_count (hb_face_t *face,
@@ -461,7 +461,7 @@ hb_face_set_glyph_count (hb_face_t *face,
*
* Return value:
*
- * Since: 0.9.7
+ * Since: 1.0
**/
unsigned int
hb_face_get_glyph_count (hb_face_t *face)
diff --git a/src/hb-face.h b/src/hb-face.h
index 91237b7..f682c46 100644
--- a/src/hb-face.h
+++ b/src/hb-face.h
@@ -43,28 +43,28 @@ HB_BEGIN_DECLS
typedef struct hb_face_t hb_face_t;
-HB_EXTERN hb_face_t *
+hb_face_t *
hb_face_create (hb_blob_t *blob,
unsigned int index);
typedef hb_blob_t * (*hb_reference_table_func_t) (hb_face_t *face, hb_tag_t tag, void *user_data);
/* calls destroy() when not needing user_data anymore */
-HB_EXTERN hb_face_t *
+hb_face_t *
hb_face_create_for_tables (hb_reference_table_func_t reference_table_func,
void *user_data,
hb_destroy_func_t destroy);
-HB_EXTERN hb_face_t *
+hb_face_t *
hb_face_get_empty (void);
-HB_EXTERN hb_face_t *
+hb_face_t *
hb_face_reference (hb_face_t *face);
-HB_EXTERN void
+void
hb_face_destroy (hb_face_t *face);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_face_set_user_data (hb_face_t *face,
hb_user_data_key_t *key,
void * data,
@@ -72,43 +72,43 @@ hb_face_set_user_data (hb_face_t *face,
hb_bool_t replace);
-HB_EXTERN void *
+void *
hb_face_get_user_data (hb_face_t *face,
hb_user_data_key_t *key);
-HB_EXTERN void
+void
hb_face_make_immutable (hb_face_t *face);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_face_is_immutable (hb_face_t *face);
-HB_EXTERN hb_blob_t *
+hb_blob_t *
hb_face_reference_table (hb_face_t *face,
hb_tag_t tag);
-HB_EXTERN hb_blob_t *
+hb_blob_t *
hb_face_reference_blob (hb_face_t *face);
-HB_EXTERN void
+void
hb_face_set_index (hb_face_t *face,
unsigned int index);
-HB_EXTERN unsigned int
+unsigned int
hb_face_get_index (hb_face_t *face);
-HB_EXTERN void
+void
hb_face_set_upem (hb_face_t *face,
unsigned int upem);
-HB_EXTERN unsigned int
+unsigned int
hb_face_get_upem (hb_face_t *face);
-HB_EXTERN void
+void
hb_face_set_glyph_count (hb_face_t *face,
unsigned int glyph_count);
-HB_EXTERN unsigned int
+unsigned int
hb_face_get_glyph_count (hb_face_t *face);
diff --git a/src/hb-fallback-shape.cc b/src/hb-fallback-shape.cc
index e2ad240..9d061a9 100644
--- a/src/hb-fallback-shape.cc
+++ b/src/hb-fallback-shape.cc
@@ -106,7 +106,7 @@ _hb_fallback_shape (hb_shape_plan_t *shape_plan HB_UNUSED,
*/
hb_codepoint_t space;
- bool has_space = (bool) font->get_nominal_glyph (' ', &space);
+ bool has_space = font->get_glyph (' ', 0, &space);
buffer->clear_positions ();
@@ -123,7 +123,7 @@ _hb_fallback_shape (hb_shape_plan_t *shape_plan HB_UNUSED,
pos[i].y_advance = 0;
continue;
}
- font->get_nominal_glyph (info[i].codepoint, &info[i].codepoint);
+ font->get_glyph (info[i].codepoint, 0, &info[i].codepoint);
font->get_glyph_advance_for_direction (info[i].codepoint,
direction,
&pos[i].x_advance,
diff --git a/src/hb-font-private.hh b/src/hb-font-private.hh
index 8da40a9..33bbf71 100644
--- a/src/hb-font-private.hh
+++ b/src/hb-font-private.hh
@@ -42,10 +42,7 @@
*/
#define HB_FONT_FUNCS_IMPLEMENT_CALLBACKS \
- HB_FONT_FUNC_IMPLEMENT (font_h_extents) \
- HB_FONT_FUNC_IMPLEMENT (font_v_extents) \
- HB_FONT_FUNC_IMPLEMENT (nominal_glyph) \
- HB_FONT_FUNC_IMPLEMENT (variation_glyph) \
+ HB_FONT_FUNC_IMPLEMENT (glyph) \
HB_FONT_FUNC_IMPLEMENT (glyph_h_advance) \
HB_FONT_FUNC_IMPLEMENT (glyph_v_advance) \
HB_FONT_FUNC_IMPLEMENT (glyph_h_origin) \
@@ -64,6 +61,14 @@ struct hb_font_funcs_t {
hb_bool_t immutable;
+ /* Don't access these directly. Call hb_font_get_*() instead. */
+
+ struct {
+#define HB_FONT_FUNC_IMPLEMENT(name) hb_font_get_##name##_func_t name;
+ HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
+#undef HB_FONT_FUNC_IMPLEMENT
+ } get;
+
struct {
#define HB_FONT_FUNC_IMPLEMENT(name) void *name;
HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
@@ -75,16 +80,6 @@ struct hb_font_funcs_t {
HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
#undef HB_FONT_FUNC_IMPLEMENT
} destroy;
-
- /* Don't access these directly. Call font->get_*() instead. */
- union get_t {
- struct get_funcs_t {
-#define HB_FONT_FUNC_IMPLEMENT(name) hb_font_get_##name##_func_t name;
- HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
-#undef HB_FONT_FUNC_IMPLEMENT
- } f;
- void (*array[VAR]) (void);
- } get;
};
@@ -149,133 +144,95 @@ struct hb_font_t {
/* Public getters */
- HB_INTERNAL bool has_func (unsigned int i);
-
- /* has_* ... */
-#define HB_FONT_FUNC_IMPLEMENT(name) \
- bool \
- has_##name##_func (void) \
- { \
- hb_font_funcs_t *funcs = this->klass; \
- unsigned int i = offsetof (hb_font_funcs_t::get_t::get_funcs_t, name) / sizeof (funcs->get.array[0]); \
- return has_func (i); \
- }
- HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
-#undef HB_FONT_FUNC_IMPLEMENT
-
- inline hb_bool_t get_font_h_extents (hb_font_extents_t *extents)
- {
- memset (extents, 0, sizeof (*extents));
- return klass->get.f.font_h_extents (this, user_data,
- extents,
- klass->user_data.font_h_extents);
- }
- inline hb_bool_t get_font_v_extents (hb_font_extents_t *extents)
- {
- memset (extents, 0, sizeof (*extents));
- return klass->get.f.font_v_extents (this, user_data,
- extents,
- klass->user_data.font_v_extents);
- }
-
- inline bool has_glyph (hb_codepoint_t unicode)
+ inline hb_bool_t has_glyph (hb_codepoint_t unicode)
{
hb_codepoint_t glyph;
- return get_nominal_glyph (unicode, &glyph);
+ return get_glyph (unicode, 0, &glyph);
}
- inline hb_bool_t get_nominal_glyph (hb_codepoint_t unicode,
- hb_codepoint_t *glyph)
- {
- *glyph = 0;
- return klass->get.f.nominal_glyph (this, user_data,
- unicode, glyph,
- klass->user_data.nominal_glyph);
- }
-
- inline hb_bool_t get_variation_glyph (hb_codepoint_t unicode, hb_codepoint_t variation_selector,
- hb_codepoint_t *glyph)
+ inline hb_bool_t get_glyph (hb_codepoint_t unicode, hb_codepoint_t variation_selector,
+ hb_codepoint_t *glyph)
{
*glyph = 0;
- return klass->get.f.variation_glyph (this, user_data,
- unicode, variation_selector, glyph,
- klass->user_data.variation_glyph);
+ return klass->get.glyph (this, user_data,
+ unicode, variation_selector, glyph,
+ klass->user_data.glyph);
}
inline hb_position_t get_glyph_h_advance (hb_codepoint_t glyph)
{
- return klass->get.f.glyph_h_advance (this, user_data,
- glyph,
- klass->user_data.glyph_h_advance);
+ return klass->get.glyph_h_advance (this, user_data,
+ glyph,
+ klass->user_data.glyph_h_advance);
}
inline hb_position_t get_glyph_v_advance (hb_codepoint_t glyph)
{
- return klass->get.f.glyph_v_advance (this, user_data,
- glyph,
- klass->user_data.glyph_v_advance);
+ return klass->get.glyph_v_advance (this, user_data,
+ glyph,
+ klass->user_data.glyph_v_advance);
}
inline hb_bool_t get_glyph_h_origin (hb_codepoint_t glyph,
hb_position_t *x, hb_position_t *y)
{
*x = *y = 0;
- return klass->get.f.glyph_h_origin (this, user_data,
- glyph, x, y,
- klass->user_data.glyph_h_origin);
+ return klass->get.glyph_h_origin (this, user_data,
+ glyph, x, y,
+ klass->user_data.glyph_h_origin);
}
inline hb_bool_t get_glyph_v_origin (hb_codepoint_t glyph,
hb_position_t *x, hb_position_t *y)
{
*x = *y = 0;
- return klass->get.f.glyph_v_origin (this, user_data,
- glyph, x, y,
- klass->user_data.glyph_v_origin);
+ return klass->get.glyph_v_origin (this, user_data,
+ glyph, x, y,
+ klass->user_data.glyph_v_origin);
}
inline hb_position_t get_glyph_h_kerning (hb_codepoint_t left_glyph, hb_codepoint_t right_glyph)
{
- return klass->get.f.glyph_h_kerning (this, user_data,
- left_glyph, right_glyph,
- klass->user_data.glyph_h_kerning);
+ return klass->get.glyph_h_kerning (this, user_data,
+ left_glyph, right_glyph,
+ klass->user_data.glyph_h_kerning);
}
inline hb_position_t get_glyph_v_kerning (hb_codepoint_t top_glyph, hb_codepoint_t bottom_glyph)
{
- return klass->get.f.glyph_v_kerning (this, user_data,
- top_glyph, bottom_glyph,
- klass->user_data.glyph_v_kerning);
+ return klass->get.glyph_v_kerning (this, user_data,
+ top_glyph, bottom_glyph,
+ klass->user_data.glyph_v_kerning);
}
inline hb_bool_t get_glyph_extents (hb_codepoint_t glyph,
hb_glyph_extents_t *extents)
{
memset (extents, 0, sizeof (*extents));
- return klass->get.f.glyph_extents (this, user_data,
- glyph,
- extents,
- klass->user_data.glyph_extents);
+ return klass->get.glyph_extents (this, user_data,
+ glyph,
+ extents,
+ klass->user_data.glyph_extents);
}
inline hb_bool_t get_glyph_contour_point (hb_codepoint_t glyph, unsigned int point_index,
hb_position_t *x, hb_position_t *y)
{
*x = *y = 0;
- return klass->get.f.glyph_contour_point (this, user_data,
- glyph, point_index,
- x, y,
- klass->user_data.glyph_contour_point);
+ return klass->get.glyph_contour_point (this, user_data,
+ glyph, point_index,
+ x, y,
+ klass->user_data.glyph_contour_point);
}
inline hb_bool_t get_glyph_name (hb_codepoint_t glyph,
char *name, unsigned int size)
{
if (size) *name = '\0';
- return klass->get.f.glyph_name (this, user_data,
- glyph,
- name, size,
- klass->user_data.glyph_name);
+ return klass->get.glyph_name (this, user_data,
+ glyph,
+ name, size,
+ klass->user_data.glyph_name);
}
inline hb_bool_t get_glyph_from_name (const char *name, int len, /* -1 means nul-terminated */
@@ -283,35 +240,15 @@ struct hb_font_t {
{
*glyph = 0;
if (len == -1) len = strlen (name);
- return klass->get.f.glyph_from_name (this, user_data,
- name, len,
- glyph,
- klass->user_data.glyph_from_name);
+ return klass->get.glyph_from_name (this, user_data,
+ name, len,
+ glyph,
+ klass->user_data.glyph_from_name);
}
/* A bit higher-level, and with fallback */
- inline void get_extents_for_direction (hb_direction_t direction,
- hb_font_extents_t *extents)
- {
- if (likely (HB_DIRECTION_IS_HORIZONTAL (direction))) {
- if (!get_font_h_extents (extents))
- {
- extents->ascender = y_scale * .8;
- extents->descender = y_scale - extents->ascender;
- extents->line_gap = 0;
- }
- } else {
- if (!get_font_v_extents (extents))
- {
- extents->ascender = x_scale / 2;
- extents->descender = x_scale - extents->ascender;
- extents->line_gap = 0;
- }
- }
- }
-
inline void get_glyph_advance_for_direction (hb_codepoint_t glyph,
hb_direction_t direction,
hb_position_t *x, hb_position_t *y)
@@ -331,7 +268,7 @@ struct hb_font_t {
{
*x = get_glyph_h_advance (glyph) / 2;
- /* TODO use font_extents.ascender */
+ /* TODO use font_metics.ascent */
*y = y_scale;
}
@@ -361,26 +298,6 @@ struct hb_font_t {
}
}
- inline void add_glyph_h_origin (hb_codepoint_t glyph,
- hb_position_t *x, hb_position_t *y)
- {
- hb_position_t origin_x, origin_y;
-
- get_glyph_h_origin (glyph, &origin_x, &origin_y);
-
- *x += origin_x;
- *y += origin_y;
- }
- inline void add_glyph_v_origin (hb_codepoint_t glyph,
- hb_position_t *x, hb_position_t *y)
- {
- hb_position_t origin_x, origin_y;
-
- get_glyph_v_origin (glyph, &origin_x, &origin_y);
-
- *x += origin_x;
- *y += origin_y;
- }
inline void add_glyph_origin_for_direction (hb_codepoint_t glyph,
hb_direction_t direction,
hb_position_t *x, hb_position_t *y)
@@ -393,26 +310,6 @@ struct hb_font_t {
*y += origin_y;
}
- inline void subtract_glyph_h_origin (hb_codepoint_t glyph,
- hb_position_t *x, hb_position_t *y)
- {
- hb_position_t origin_x, origin_y;
-
- get_glyph_h_origin (glyph, &origin_x, &origin_y);
-
- *x -= origin_x;
- *y -= origin_y;
- }
- inline void subtract_glyph_v_origin (hb_codepoint_t glyph,
- hb_position_t *x, hb_position_t *y)
- {
- hb_position_t origin_x, origin_y;
-
- get_glyph_v_origin (glyph, &origin_x, &origin_y);
-
- *x -= origin_x;
- *y -= origin_y;
- }
inline void subtract_glyph_origin_for_direction (hb_codepoint_t glyph,
hb_direction_t direction,
hb_position_t *x, hb_position_t *y)
@@ -497,7 +394,7 @@ struct hb_font_t {
hb_codepoint_t unichar;
if (0 == strncmp (s, "uni", 3) &&
hb_codepoint_parse (s + 3, len - 3, 16, &unichar) &&
- get_nominal_glyph (unichar, glyph))
+ get_glyph (unichar, 0, glyph))
return true;
}
diff --git a/src/hb-font.cc b/src/hb-font.cc
index 6a4823a..4364ca7 100644
--- a/src/hb-font.cc
+++ b/src/hb-font.cc
@@ -45,245 +45,130 @@
*/
static hb_bool_t
-hb_font_get_font_h_extents_nil (hb_font_t *font,
- void *font_data HB_UNUSED,
- hb_font_extents_t *metrics,
- void *user_data HB_UNUSED)
-{
- memset (metrics, 0, sizeof (*metrics));
- return false;
-}
-static hb_bool_t
-hb_font_get_font_h_extents_parent (hb_font_t *font,
- void *font_data HB_UNUSED,
- hb_font_extents_t *metrics,
- void *user_data HB_UNUSED)
-{
- hb_bool_t ret = font->parent->get_font_h_extents (metrics);
- if (ret) {
- metrics->ascender = font->parent_scale_y_distance (metrics->ascender);
- metrics->descender = font->parent_scale_y_distance (metrics->descender);
- metrics->line_gap = font->parent_scale_y_distance (metrics->line_gap);
- }
- return ret;
-}
-
-static hb_bool_t
-hb_font_get_font_v_extents_nil (hb_font_t *font,
- void *font_data HB_UNUSED,
- hb_font_extents_t *metrics,
- void *user_data HB_UNUSED)
-{
- memset (metrics, 0, sizeof (*metrics));
- return false;
-}
-static hb_bool_t
-hb_font_get_font_v_extents_parent (hb_font_t *font,
- void *font_data HB_UNUSED,
- hb_font_extents_t *metrics,
- void *user_data HB_UNUSED)
+hb_font_get_glyph_nil (hb_font_t *font,
+ void *font_data HB_UNUSED,
+ hb_codepoint_t unicode,
+ hb_codepoint_t variation_selector,
+ hb_codepoint_t *glyph,
+ void *user_data HB_UNUSED)
{
- hb_bool_t ret = font->parent->get_font_v_extents (metrics);
- if (ret) {
- metrics->ascender = font->parent_scale_x_distance (metrics->ascender);
- metrics->descender = font->parent_scale_x_distance (metrics->descender);
- metrics->line_gap = font->parent_scale_x_distance (metrics->line_gap);
- }
- return ret;
-}
+ if (font->parent)
+ return font->parent->get_glyph (unicode, variation_selector, glyph);
-static hb_bool_t
-hb_font_get_nominal_glyph_nil (hb_font_t *font HB_UNUSED,
- void *font_data HB_UNUSED,
- hb_codepoint_t unicode,
- hb_codepoint_t *glyph,
- void *user_data HB_UNUSED)
-{
*glyph = 0;
return false;
}
-static hb_bool_t
-hb_font_get_nominal_glyph_parent (hb_font_t *font,
- void *font_data HB_UNUSED,
- hb_codepoint_t unicode,
- hb_codepoint_t *glyph,
- void *user_data HB_UNUSED)
-{
- return font->parent->get_nominal_glyph (unicode, glyph);
-}
-
-static hb_bool_t
-hb_font_get_variation_glyph_nil (hb_font_t *font HB_UNUSED,
- void *font_data HB_UNUSED,
- hb_codepoint_t unicode,
- hb_codepoint_t variation_selector,
- hb_codepoint_t *glyph,
- void *user_data HB_UNUSED)
-{
- *glyph = 0;
- return false;
-}
-static hb_bool_t
-hb_font_get_variation_glyph_parent (hb_font_t *font,
- void *font_data HB_UNUSED,
- hb_codepoint_t unicode,
- hb_codepoint_t variation_selector,
- hb_codepoint_t *glyph,
- void *user_data HB_UNUSED)
-{
- return font->parent->get_variation_glyph (unicode, variation_selector, glyph);
-}
-
static hb_position_t
-hb_font_get_glyph_h_advance_nil (hb_font_t *font HB_UNUSED,
+hb_font_get_glyph_h_advance_nil (hb_font_t *font,
void *font_data HB_UNUSED,
hb_codepoint_t glyph,
void *user_data HB_UNUSED)
{
+ if (font->parent)
+ return font->parent_scale_x_distance (font->parent->get_glyph_h_advance (glyph));
+
return font->x_scale;
}
-static hb_position_t
-hb_font_get_glyph_h_advance_parent (hb_font_t *font,
- void *font_data HB_UNUSED,
- hb_codepoint_t glyph,
- void *user_data HB_UNUSED)
-{
- return font->parent_scale_x_distance (font->parent->get_glyph_h_advance (glyph));
-}
static hb_position_t
-hb_font_get_glyph_v_advance_nil (hb_font_t *font HB_UNUSED,
+hb_font_get_glyph_v_advance_nil (hb_font_t *font,
void *font_data HB_UNUSED,
hb_codepoint_t glyph,
void *user_data HB_UNUSED)
{
+ if (font->parent)
+ return font->parent_scale_y_distance (font->parent->get_glyph_v_advance (glyph));
+
return font->y_scale;
}
-static hb_position_t
-hb_font_get_glyph_v_advance_parent (hb_font_t *font,
- void *font_data HB_UNUSED,
- hb_codepoint_t glyph,
- void *user_data HB_UNUSED)
-{
- return font->parent_scale_y_distance (font->parent->get_glyph_v_advance (glyph));
-}
static hb_bool_t
-hb_font_get_glyph_h_origin_nil (hb_font_t *font HB_UNUSED,
+hb_font_get_glyph_h_origin_nil (hb_font_t *font,
void *font_data HB_UNUSED,
hb_codepoint_t glyph,
hb_position_t *x,
hb_position_t *y,
void *user_data HB_UNUSED)
{
+ if (font->parent) {
+ hb_bool_t ret = font->parent->get_glyph_h_origin (glyph, x, y);
+ if (ret)
+ font->parent_scale_position (x, y);
+ return ret;
+ }
+
*x = *y = 0;
- return true;
-}
-static hb_bool_t
-hb_font_get_glyph_h_origin_parent (hb_font_t *font,
- void *font_data HB_UNUSED,
- hb_codepoint_t glyph,
- hb_position_t *x,
- hb_position_t *y,
- void *user_data HB_UNUSED)
-{
- hb_bool_t ret = font->parent->get_glyph_h_origin (glyph, x, y);
- if (ret)
- font->parent_scale_position (x, y);
- return ret;
+ return false;
}
static hb_bool_t
-hb_font_get_glyph_v_origin_nil (hb_font_t *font HB_UNUSED,
+hb_font_get_glyph_v_origin_nil (hb_font_t *font,
void *font_data HB_UNUSED,
hb_codepoint_t glyph,
hb_position_t *x,
hb_position_t *y,
void *user_data HB_UNUSED)
{
+ if (font->parent) {
+ hb_bool_t ret = font->parent->get_glyph_v_origin (glyph, x, y);
+ if (ret)
+ font->parent_scale_position (x, y);
+ return ret;
+ }
+
*x = *y = 0;
return false;
}
-static hb_bool_t
-hb_font_get_glyph_v_origin_parent (hb_font_t *font,
- void *font_data HB_UNUSED,
- hb_codepoint_t glyph,
- hb_position_t *x,
- hb_position_t *y,
- void *user_data HB_UNUSED)
-{
- hb_bool_t ret = font->parent->get_glyph_v_origin (glyph, x, y);
- if (ret)
- font->parent_scale_position (x, y);
- return ret;
-}
static hb_position_t
-hb_font_get_glyph_h_kerning_nil (hb_font_t *font HB_UNUSED,
+hb_font_get_glyph_h_kerning_nil (hb_font_t *font,
void *font_data HB_UNUSED,
hb_codepoint_t left_glyph,
hb_codepoint_t right_glyph,
void *user_data HB_UNUSED)
{
+ if (font->parent)
+ return font->parent_scale_x_distance (font->parent->get_glyph_h_kerning (left_glyph, right_glyph));
+
return 0;
}
-static hb_position_t
-hb_font_get_glyph_h_kerning_parent (hb_font_t *font,
- void *font_data HB_UNUSED,
- hb_codepoint_t left_glyph,
- hb_codepoint_t right_glyph,
- void *user_data HB_UNUSED)
-{
- return font->parent_scale_x_distance (font->parent->get_glyph_h_kerning (left_glyph, right_glyph));
-}
static hb_position_t
-hb_font_get_glyph_v_kerning_nil (hb_font_t *font HB_UNUSED,
+hb_font_get_glyph_v_kerning_nil (hb_font_t *font,
void *font_data HB_UNUSED,
hb_codepoint_t top_glyph,
hb_codepoint_t bottom_glyph,
void *user_data HB_UNUSED)
{
+ if (font->parent)
+ return font->parent_scale_y_distance (font->parent->get_glyph_v_kerning (top_glyph, bottom_glyph));
+
return 0;
}
-static hb_position_t
-hb_font_get_glyph_v_kerning_parent (hb_font_t *font,
- void *font_data HB_UNUSED,
- hb_codepoint_t top_glyph,
- hb_codepoint_t bottom_glyph,
- void *user_data HB_UNUSED)
-{
- return font->parent_scale_y_distance (font->parent->get_glyph_v_kerning (top_glyph, bottom_glyph));
-}
static hb_bool_t
-hb_font_get_glyph_extents_nil (hb_font_t *font HB_UNUSED,
+hb_font_get_glyph_extents_nil (hb_font_t *font,
void *font_data HB_UNUSED,
hb_codepoint_t glyph,
hb_glyph_extents_t *extents,
void *user_data HB_UNUSED)
{
+ if (font->parent) {
+ hb_bool_t ret = font->parent->get_glyph_extents (glyph, extents);
+ if (ret) {
+ font->parent_scale_position (&extents->x_bearing, &extents->y_bearing);
+ font->parent_scale_distance (&extents->width, &extents->height);
+ }
+ return ret;
+ }
+
memset (extents, 0, sizeof (*extents));
return false;
}
-static hb_bool_t
-hb_font_get_glyph_extents_parent (hb_font_t *font,
- void *font_data HB_UNUSED,
- hb_codepoint_t glyph,
- hb_glyph_extents_t *extents,
- void *user_data HB_UNUSED)
-{
- hb_bool_t ret = font->parent->get_glyph_extents (glyph, extents);
- if (ret) {
- font->parent_scale_position (&extents->x_bearing, &extents->y_bearing);
- font->parent_scale_distance (&extents->width, &extents->height);
- }
- return ret;
-}
static hb_bool_t
-hb_font_get_glyph_contour_point_nil (hb_font_t *font HB_UNUSED,
+hb_font_get_glyph_contour_point_nil (hb_font_t *font,
void *font_data HB_UNUSED,
hb_codepoint_t glyph,
unsigned int point_index,
@@ -291,63 +176,45 @@ hb_font_get_glyph_contour_point_nil (hb_font_t *font HB_UNUSED,
hb_position_t *y,
void *user_data HB_UNUSED)
{
+ if (font->parent) {
+ hb_bool_t ret = font->parent->get_glyph_contour_point (glyph, point_index, x, y);
+ if (ret)
+ font->parent_scale_position (x, y);
+ return ret;
+ }
+
*x = *y = 0;
return false;
}
-static hb_bool_t
-hb_font_get_glyph_contour_point_parent (hb_font_t *font,
- void *font_data HB_UNUSED,
- hb_codepoint_t glyph,
- unsigned int point_index,
- hb_position_t *x,
- hb_position_t *y,
- void *user_data HB_UNUSED)
-{
- hb_bool_t ret = font->parent->get_glyph_contour_point (glyph, point_index, x, y);
- if (ret)
- font->parent_scale_position (x, y);
- return ret;
-}
static hb_bool_t
-hb_font_get_glyph_name_nil (hb_font_t *font HB_UNUSED,
+hb_font_get_glyph_name_nil (hb_font_t *font,
void *font_data HB_UNUSED,
hb_codepoint_t glyph,
char *name, unsigned int size,
void *user_data HB_UNUSED)
{
+ if (font->parent)
+ return font->parent->get_glyph_name (glyph, name, size);
+
if (size) *name = '\0';
return false;
}
-static hb_bool_t
-hb_font_get_glyph_name_parent (hb_font_t *font,
- void *font_data HB_UNUSED,
- hb_codepoint_t glyph,
- char *name, unsigned int size,
- void *user_data HB_UNUSED)
-{
- return font->parent->get_glyph_name (glyph, name, size);
-}
static hb_bool_t
-hb_font_get_glyph_from_name_nil (hb_font_t *font HB_UNUSED,
+hb_font_get_glyph_from_name_nil (hb_font_t *font,
void *font_data HB_UNUSED,
const char *name, int len, /* -1 means nul-terminated */
hb_codepoint_t *glyph,
void *user_data HB_UNUSED)
{
+ if (font->parent)
+ return font->parent->get_glyph_from_name (name, len, glyph);
+
*glyph = 0;
return false;
}
-static hb_bool_t
-hb_font_get_glyph_from_name_parent (hb_font_t *font,
- void *font_data HB_UNUSED,
- const char *name, int len, /* -1 means nul-terminated */
- hb_codepoint_t *glyph,
- void *user_data HB_UNUSED)
-{
- return font->parent->get_glyph_from_name (name, len, glyph);
-}
+
static const hb_font_funcs_t _hb_font_funcs_nil = {
HB_OBJECT_HEADER_STATIC,
@@ -355,44 +222,9 @@ static const hb_font_funcs_t _hb_font_funcs_nil = {
true, /* immutable */
{
-#define HB_FONT_FUNC_IMPLEMENT(name) NULL,
- HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
-#undef HB_FONT_FUNC_IMPLEMENT
- },
- {
-#define HB_FONT_FUNC_IMPLEMENT(name) NULL,
- HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
-#undef HB_FONT_FUNC_IMPLEMENT
- },
- {
- {
#define HB_FONT_FUNC_IMPLEMENT(name) hb_font_get_##name##_nil,
- HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
-#undef HB_FONT_FUNC_IMPLEMENT
- }
- }
-};
-static const hb_font_funcs_t _hb_font_funcs_parent = {
- HB_OBJECT_HEADER_STATIC,
-
- true, /* immutable */
-
- {
-#define HB_FONT_FUNC_IMPLEMENT(name) NULL,
HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
#undef HB_FONT_FUNC_IMPLEMENT
- },
- {
-#define HB_FONT_FUNC_IMPLEMENT(name) NULL,
- HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
-#undef HB_FONT_FUNC_IMPLEMENT
- },
- {
- {
-#define HB_FONT_FUNC_IMPLEMENT(name) hb_font_get_##name##_parent,
- HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
-#undef HB_FONT_FUNC_IMPLEMENT
- }
}
};
@@ -404,7 +236,7 @@ static const hb_font_funcs_t _hb_font_funcs_parent = {
*
* Return value: (transfer full):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_font_funcs_t *
hb_font_funcs_create (void)
@@ -414,7 +246,7 @@ hb_font_funcs_create (void)
if (!(ffuncs = hb_object_create<hb_font_funcs_t> ()))
return hb_font_funcs_get_empty ();
- ffuncs->get = _hb_font_funcs_parent.get;
+ ffuncs->get = _hb_font_funcs_nil.get;
return ffuncs;
}
@@ -426,12 +258,12 @@ hb_font_funcs_create (void)
*
* Return value: (transfer full):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_font_funcs_t *
hb_font_funcs_get_empty (void)
{
- return const_cast<hb_font_funcs_t *> (&_hb_font_funcs_parent);
+ return const_cast<hb_font_funcs_t *> (&_hb_font_funcs_nil);
}
/**
@@ -442,7 +274,7 @@ hb_font_funcs_get_empty (void)
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_font_funcs_t *
hb_font_funcs_reference (hb_font_funcs_t *ffuncs)
@@ -456,7 +288,7 @@ hb_font_funcs_reference (hb_font_funcs_t *ffuncs)
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_font_funcs_destroy (hb_font_funcs_t *ffuncs)
@@ -483,7 +315,7 @@ hb_font_funcs_destroy (hb_font_funcs_t *ffuncs)
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_font_funcs_set_user_data (hb_font_funcs_t *ffuncs,
@@ -504,7 +336,7 @@ hb_font_funcs_set_user_data (hb_font_funcs_t *ffuncs,
*
* Return value: (transfer none):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void *
hb_font_funcs_get_user_data (hb_font_funcs_t *ffuncs,
@@ -520,7 +352,7 @@ hb_font_funcs_get_user_data (hb_font_funcs_t *ffuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs)
@@ -539,7 +371,7 @@ hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs)
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_font_funcs_is_immutable (hb_font_funcs_t *ffuncs)
@@ -566,11 +398,11 @@ hb_font_funcs_set_##name##_func (hb_font_funcs_t *ffuncs, \
ffuncs->destroy.name (ffuncs->user_data.name); \
\
if (func) { \
- ffuncs->get.f.name = func; \
+ ffuncs->get.name = func; \
ffuncs->user_data.name = user_data; \
ffuncs->destroy.name = destroy; \
} else { \
- ffuncs->get.f.name = hb_font_get_##name##_parent; \
+ ffuncs->get.name = hb_font_get_##name##_nil; \
ffuncs->user_data.name = NULL; \
ffuncs->destroy.name = NULL; \
} \
@@ -579,53 +411,10 @@ hb_font_funcs_set_##name##_func (hb_font_funcs_t *ffuncs, \
HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
#undef HB_FONT_FUNC_IMPLEMENT
-bool
-hb_font_t::has_func (unsigned int i)
-{
- if (parent && parent != hb_font_get_empty () && parent->has_func (i))
- return true;
- return this->klass->get.array[i] != _hb_font_funcs_parent.get.array[i];
-}
/* Public getters */
/**
- * hb_font_get_h_extents:
- * @font: a font.
- * @extents: (out):
- *
- *
- *
- * Return value:
- *
- * Since: 1.1.3
- **/
-hb_bool_t
-hb_font_get_h_extents (hb_font_t *font,
- hb_font_extents_t *extents)
-{
- return font->get_font_h_extents (extents);
-}
-
-/**
- * hb_font_get_v_extents:
- * @font: a font.
- * @extents: (out):
- *
- *
- *
- * Return value:
- *
- * Since: 1.1.3
- **/
-hb_bool_t
-hb_font_get_v_extents (hb_font_t *font,
- hb_font_extents_t *extents)
-{
- return font->get_font_v_extents (extents);
-}
-
-/**
* hb_font_get_glyph:
* @font: a font.
* @unicode:
@@ -636,57 +425,14 @@ hb_font_get_v_extents (hb_font_t *font,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_font_get_glyph (hb_font_t *font,
hb_codepoint_t unicode, hb_codepoint_t variation_selector,
hb_codepoint_t *glyph)
{
- if (unlikely (variation_selector))
- return font->get_variation_glyph (unicode, variation_selector, glyph);
- return font->get_nominal_glyph (unicode, glyph);
-}
-
-/**
- * hb_font_get_nominal_glyph:
- * @font: a font.
- * @unicode:
- * @glyph: (out):
- *
- *
- *
- * Return value:
- *
- * Since: 1.2.3
- **/
-hb_bool_t
-hb_font_get_nominal_glyph (hb_font_t *font,
- hb_codepoint_t unicode,
- hb_codepoint_t *glyph)
-{
- return font->get_nominal_glyph (unicode, glyph);
-}
-
-/**
- * hb_font_get_variation_glyph:
- * @font: a font.
- * @unicode:
- * @variation_selector:
- * @glyph: (out):
- *
- *
- *
- * Return value:
- *
- * Since: 1.2.3
- **/
-hb_bool_t
-hb_font_get_variation_glyph (hb_font_t *font,
- hb_codepoint_t unicode, hb_codepoint_t variation_selector,
- hb_codepoint_t *glyph)
-{
- return font->get_variation_glyph (unicode, variation_selector, glyph);
+ return font->get_glyph (unicode, variation_selector, glyph);
}
/**
@@ -698,7 +444,7 @@ hb_font_get_variation_glyph (hb_font_t *font,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_position_t
hb_font_get_glyph_h_advance (hb_font_t *font,
@@ -716,7 +462,7 @@ hb_font_get_glyph_h_advance (hb_font_t *font,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_position_t
hb_font_get_glyph_v_advance (hb_font_t *font,
@@ -736,7 +482,7 @@ hb_font_get_glyph_v_advance (hb_font_t *font,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_font_get_glyph_h_origin (hb_font_t *font,
@@ -757,7 +503,7 @@ hb_font_get_glyph_h_origin (hb_font_t *font,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_font_get_glyph_v_origin (hb_font_t *font,
@@ -777,7 +523,7 @@ hb_font_get_glyph_v_origin (hb_font_t *font,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_position_t
hb_font_get_glyph_h_kerning (hb_font_t *font,
@@ -796,7 +542,7 @@ hb_font_get_glyph_h_kerning (hb_font_t *font,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_position_t
hb_font_get_glyph_v_kerning (hb_font_t *font,
@@ -815,7 +561,7 @@ hb_font_get_glyph_v_kerning (hb_font_t *font,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_font_get_glyph_extents (hb_font_t *font,
@@ -837,7 +583,7 @@ hb_font_get_glyph_extents (hb_font_t *font,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_font_get_glyph_contour_point (hb_font_t *font,
@@ -858,7 +604,7 @@ hb_font_get_glyph_contour_point (hb_font_t *font,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_font_get_glyph_name (hb_font_t *font,
@@ -879,7 +625,7 @@ hb_font_get_glyph_name (hb_font_t *font,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_font_get_glyph_from_name (hb_font_t *font,
@@ -893,23 +639,6 @@ hb_font_get_glyph_from_name (hb_font_t *font,
/* A bit higher-level, and with fallback */
/**
- * hb_font_get_extents_for_direction:
- * @font: a font.
- * @direction:
- * @extents:
- *
- *
- *
- * Since: 1.1.3
- **/
-void
-hb_font_get_extents_for_direction (hb_font_t *font,
- hb_direction_t direction,
- hb_font_extents_t *extents)
-{
- return font->get_extents_for_direction (direction, extents);
-}
-/**
* hb_font_get_glyph_advance_for_direction:
* @font: a font.
* @glyph:
@@ -919,7 +648,7 @@ hb_font_get_extents_for_direction (hb_font_t *font,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_font_get_glyph_advance_for_direction (hb_font_t *font,
@@ -940,7 +669,7 @@ hb_font_get_glyph_advance_for_direction (hb_font_t *font,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_font_get_glyph_origin_for_direction (hb_font_t *font,
@@ -961,7 +690,7 @@ hb_font_get_glyph_origin_for_direction (hb_font_t *font,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_font_add_glyph_origin_for_direction (hb_font_t *font,
@@ -982,7 +711,7 @@ hb_font_add_glyph_origin_for_direction (hb_font_t *font,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_font_subtract_glyph_origin_for_direction (hb_font_t *font,
@@ -1004,7 +733,7 @@ hb_font_subtract_glyph_origin_for_direction (hb_font_t *font,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_font_get_glyph_kerning_for_direction (hb_font_t *font,
@@ -1026,7 +755,7 @@ hb_font_get_glyph_kerning_for_direction (hb_font_t *font,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_font_get_glyph_extents_for_origin (hb_font_t *font,
@@ -1050,7 +779,7 @@ hb_font_get_glyph_extents_for_origin (hb_font_t *font,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_font_get_glyph_contour_point_for_origin (hb_font_t *font,
@@ -1071,7 +800,7 @@ hb_font_get_glyph_contour_point_for_origin (hb_font_t *font,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_font_glyph_to_string (hb_font_t *font,
@@ -1085,7 +814,7 @@ hb_font_glyph_to_string (hb_font_t *font,
/**
* hb_font_glyph_from_string:
* @font: a font.
- * @s: (array length=len) (element-type uint8_t):
+ * @s: (array length=len):
* @len:
* @glyph: (out):
*
@@ -1093,7 +822,7 @@ hb_font_glyph_to_string (hb_font_t *font,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_font_glyph_from_string (hb_font_t *font,
@@ -1116,7 +845,7 @@ hb_font_glyph_from_string (hb_font_t *font,
*
* Return value: (transfer full):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_font_t *
hb_font_create (hb_face_t *face)
@@ -1125,16 +854,15 @@ hb_font_create (hb_face_t *face)
if (unlikely (!face))
face = hb_face_get_empty ();
+ if (unlikely (hb_object_is_inert (face)))
+ return hb_font_get_empty ();
if (!(font = hb_object_create<hb_font_t> ()))
return hb_font_get_empty ();
hb_face_make_immutable (face);
- font->parent = hb_font_get_empty ();
font->face = hb_face_reference (face);
font->klass = hb_font_funcs_get_empty ();
- font->x_scale = font->y_scale = hb_face_get_upem (face);
-
return font;
}
@@ -1146,19 +874,20 @@ hb_font_create (hb_face_t *face)
*
* Return value: (transfer full):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_font_t *
hb_font_create_sub_font (hb_font_t *parent)
{
if (unlikely (!parent))
- parent = hb_font_get_empty ();
+ return hb_font_get_empty ();
hb_font_t *font = hb_font_create (parent->face);
if (unlikely (hb_object_is_inert (font)))
return font;
+ hb_font_make_immutable (parent);
font->parent = hb_font_reference (parent);
font->x_scale = parent->x_scale;
@@ -1176,7 +905,7 @@ hb_font_create_sub_font (hb_font_t *parent)
*
* Return value: (transfer full)
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_font_t *
hb_font_get_empty (void)
@@ -1189,8 +918,8 @@ hb_font_get_empty (void)
NULL, /* parent */
const_cast<hb_face_t *> (&_hb_face_nil),
- 1000, /* x_scale */
- 1000, /* y_scale */
+ 0, /* x_scale */
+ 0, /* y_scale */
0, /* x_ppem */
0, /* y_ppem */
@@ -1217,7 +946,7 @@ hb_font_get_empty (void)
*
* Return value: (transfer full):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_font_t *
hb_font_reference (hb_font_t *font)
@@ -1231,7 +960,7 @@ hb_font_reference (hb_font_t *font)
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_font_destroy (hb_font_t *font)
@@ -1264,7 +993,7 @@ hb_font_destroy (hb_font_t *font)
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_font_set_user_data (hb_font_t *font,
@@ -1285,7 +1014,7 @@ hb_font_set_user_data (hb_font_t *font,
*
* Return value: (transfer none):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void *
hb_font_get_user_data (hb_font_t *font,
@@ -1300,7 +1029,7 @@ hb_font_get_user_data (hb_font_t *font,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_font_make_immutable (hb_font_t *font)
@@ -1308,9 +1037,6 @@ hb_font_make_immutable (hb_font_t *font)
if (unlikely (hb_object_is_inert (font)))
return;
- if (font->parent)
- hb_font_make_immutable (font->parent);
-
font->immutable = true;
}
@@ -1322,7 +1048,7 @@ hb_font_make_immutable (hb_font_t *font)
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_font_is_immutable (hb_font_t *font)
@@ -1331,32 +1057,6 @@ hb_font_is_immutable (hb_font_t *font)
}
/**
- * hb_font_set_parent:
- * @font: a font.
- * @parent: new parent.
- *
- * Sets parent font of @font.
- *
- * Since: 1.0.5
- **/
-void
-hb_font_set_parent (hb_font_t *font,
- hb_font_t *parent)
-{
- if (font->immutable)
- return;
-
- if (!parent)
- parent = hb_font_get_empty ();
-
- hb_font_t *old = font->parent;
-
- font->parent = hb_font_reference (parent);
-
- hb_font_destroy (old);
-}
-
-/**
* hb_font_get_parent:
* @font: a font.
*
@@ -1364,7 +1064,7 @@ hb_font_set_parent (hb_font_t *font,
*
* Return value: (transfer none):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_font_t *
hb_font_get_parent (hb_font_t *font)
@@ -1380,7 +1080,7 @@ hb_font_get_parent (hb_font_t *font)
*
* Return value: (transfer none):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_face_t *
hb_font_get_face (hb_font_t *font)
@@ -1398,7 +1098,7 @@ hb_font_get_face (hb_font_t *font)
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_font_set_funcs (hb_font_t *font,
@@ -1433,7 +1133,7 @@ hb_font_set_funcs (hb_font_t *font,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_font_set_funcs_data (hb_font_t *font,
@@ -1463,7 +1163,7 @@ hb_font_set_funcs_data (hb_font_t *font,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_font_set_scale (hb_font_t *font,
@@ -1485,7 +1185,7 @@ hb_font_set_scale (hb_font_t *font,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_font_get_scale (hb_font_t *font,
@@ -1504,7 +1204,7 @@ hb_font_get_scale (hb_font_t *font,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_font_set_ppem (hb_font_t *font,
@@ -1526,7 +1226,7 @@ hb_font_set_ppem (hb_font_t *font,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_font_get_ppem (hb_font_t *font,
@@ -1536,131 +1236,3 @@ hb_font_get_ppem (hb_font_t *font,
if (x_ppem) *x_ppem = font->x_ppem;
if (y_ppem) *y_ppem = font->y_ppem;
}
-
-
-#ifndef HB_DISABLE_DEPRECATED
-
-/*
- * Deprecated get_glyph_func():
- */
-
-struct hb_trampoline_closure_t
-{
- void *user_data;
- hb_destroy_func_t destroy;
- unsigned int ref_count;
-};
-
-template <typename FuncType>
-struct hb_trampoline_t
-{
- hb_trampoline_closure_t closure; /* Must be first. */
- FuncType func;
-};
-
-template <typename FuncType>
-static hb_trampoline_t<FuncType> *
-trampoline_create (FuncType func,
- void *user_data,
- hb_destroy_func_t destroy)
-{
- typedef hb_trampoline_t<FuncType> trampoline_t;
-
- trampoline_t *trampoline = (trampoline_t *) calloc (1, sizeof (trampoline_t));
-
- if (unlikely (!trampoline))
- return NULL;
-
- trampoline->closure.user_data = user_data;
- trampoline->closure.destroy = destroy;
- trampoline->closure.ref_count = 1;
- trampoline->func = func;
-
- return trampoline;
-}
-
-static void
-trampoline_reference (hb_trampoline_closure_t *closure)
-{
- closure->ref_count++;
-}
-
-static void
-trampoline_destroy (void *user_data)
-{
- hb_trampoline_closure_t *closure = (hb_trampoline_closure_t *) user_data;
-
- if (--closure->ref_count)
- return;
-
- if (closure->destroy)
- closure->destroy (closure->user_data);
- free (closure);
-}
-
-typedef hb_trampoline_t<hb_font_get_glyph_func_t> hb_font_get_glyph_trampoline_t;
-
-static hb_bool_t
-hb_font_get_nominal_glyph_trampoline (hb_font_t *font,
- void *font_data,
- hb_codepoint_t unicode,
- hb_codepoint_t *glyph,
- void *user_data)
-{
- hb_font_get_glyph_trampoline_t *trampoline = (hb_font_get_glyph_trampoline_t *) user_data;
- return trampoline->func (font, font_data, unicode, 0, glyph, trampoline->closure.user_data);
-}
-
-static hb_bool_t
-hb_font_get_variation_glyph_trampoline (hb_font_t *font,
- void *font_data,
- hb_codepoint_t unicode,
- hb_codepoint_t variation_selector,
- hb_codepoint_t *glyph,
- void *user_data)
-{
- hb_font_get_glyph_trampoline_t *trampoline = (hb_font_get_glyph_trampoline_t *) user_data;
- return trampoline->func (font, font_data, unicode, variation_selector, glyph, trampoline->closure.user_data);
-}
-
-/**
- * hb_font_funcs_set_glyph_func:
- * @ffuncs: font functions.
- * @func: (closure user_data) (destroy destroy) (scope notified):
- * @user_data:
- * @destroy:
- *
- * Deprecated. Use hb_font_funcs_set_nominal_glyph_func() and
- * hb_font_funcs_set_variation_glyph_func() instead.
- *
- * Since: 0.9.2
- * Deprecated: 1.2.3
- **/
-void
-hb_font_funcs_set_glyph_func (hb_font_funcs_t *ffuncs,
- hb_font_get_glyph_func_t func,
- void *user_data, hb_destroy_func_t destroy)
-{
- hb_font_get_glyph_trampoline_t *trampoline;
-
- trampoline = trampoline_create (func, user_data, destroy);
- if (unlikely (!trampoline))
- {
- if (destroy)
- destroy (user_data);
- return;
- }
-
- hb_font_funcs_set_nominal_glyph_func (ffuncs,
- hb_font_get_nominal_glyph_trampoline,
- trampoline,
- trampoline_destroy);
-
- trampoline_reference (&trampoline->closure);
- hb_font_funcs_set_variation_glyph_func (ffuncs,
- hb_font_get_variation_glyph_trampoline,
- trampoline,
- trampoline_destroy);
-}
-
-#endif /* HB_DISABLE_DEPRECATED */
diff --git a/src/hb-font.h b/src/hb-font.h
index 2b6ab50..7273db4 100644
--- a/src/hb-font.h
+++ b/src/hb-font.h
@@ -46,19 +46,19 @@ typedef struct hb_font_t hb_font_t;
typedef struct hb_font_funcs_t hb_font_funcs_t;
-HB_EXTERN hb_font_funcs_t *
+hb_font_funcs_t *
hb_font_funcs_create (void);
-HB_EXTERN hb_font_funcs_t *
+hb_font_funcs_t *
hb_font_funcs_get_empty (void);
-HB_EXTERN hb_font_funcs_t *
+hb_font_funcs_t *
hb_font_funcs_reference (hb_font_funcs_t *ffuncs);
-HB_EXTERN void
+void
hb_font_funcs_destroy (hb_font_funcs_t *ffuncs);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_font_funcs_set_user_data (hb_font_funcs_t *ffuncs,
hb_user_data_key_t *key,
void * data,
@@ -66,64 +66,35 @@ hb_font_funcs_set_user_data (hb_font_funcs_t *ffuncs,
hb_bool_t replace);
-HB_EXTERN void *
+void *
hb_font_funcs_get_user_data (hb_font_funcs_t *ffuncs,
hb_user_data_key_t *key);
-HB_EXTERN void
+void
hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_font_funcs_is_immutable (hb_font_funcs_t *ffuncs);
-/* font and glyph extents */
+/* glyph extents */
-/* Note that typically ascender is positive and descender negative in coordinate systems that grow up. */
-typedef struct hb_font_extents_t
-{
- hb_position_t ascender; /* typographic ascender. */
- hb_position_t descender; /* typographic descender. */
- hb_position_t line_gap; /* suggested line spacing gap. */
- /*< private >*/
- hb_position_t reserved9;
- hb_position_t reserved8;
- hb_position_t reserved7;
- hb_position_t reserved6;
- hb_position_t reserved5;
- hb_position_t reserved4;
- hb_position_t reserved3;
- hb_position_t reserved2;
- hb_position_t reserved1;
-} hb_font_extents_t;
-
-/* Note that height is negative in coordinate systems that grow up. */
typedef struct hb_glyph_extents_t
{
- hb_position_t x_bearing; /* left side of glyph from origin. */
- hb_position_t y_bearing; /* top side of glyph from origin. */
- hb_position_t width; /* distance from left to right side. */
- hb_position_t height; /* distance from top to bottom side. */
+ hb_position_t x_bearing;
+ hb_position_t y_bearing;
+ hb_position_t width;
+ hb_position_t height;
} hb_glyph_extents_t;
-/* func types */
-
-typedef hb_bool_t (*hb_font_get_font_extents_func_t) (hb_font_t *font, void *font_data,
- hb_font_extents_t *metrics,
- void *user_data);
-typedef hb_font_get_font_extents_func_t hb_font_get_font_h_extents_func_t;
-typedef hb_font_get_font_extents_func_t hb_font_get_font_v_extents_func_t;
+/* func types */
-typedef hb_bool_t (*hb_font_get_nominal_glyph_func_t) (hb_font_t *font, void *font_data,
- hb_codepoint_t unicode,
- hb_codepoint_t *glyph,
- void *user_data);
-typedef hb_bool_t (*hb_font_get_variation_glyph_func_t) (hb_font_t *font, void *font_data,
- hb_codepoint_t unicode, hb_codepoint_t variation_selector,
- hb_codepoint_t *glyph,
- void *user_data);
+typedef hb_bool_t (*hb_font_get_glyph_func_t) (hb_font_t *font, void *font_data,
+ hb_codepoint_t unicode, hb_codepoint_t variation_selector,
+ hb_codepoint_t *glyph,
+ void *user_data);
typedef hb_position_t (*hb_font_get_glyph_advance_func_t) (hb_font_t *font, void *font_data,
@@ -169,39 +140,7 @@ typedef hb_bool_t (*hb_font_get_glyph_from_name_func_t) (hb_font_t *font, void *
/* func setters */
/**
- * hb_font_funcs_set_font_h_extents_func:
- * @ffuncs: font functions.
- * @func: (closure user_data) (destroy destroy) (scope notified):
- * @user_data:
- * @destroy:
- *
- *
- *
- * Since: 1.1.2
- **/
-HB_EXTERN void
-hb_font_funcs_set_font_h_extents_func (hb_font_funcs_t *ffuncs,
- hb_font_get_font_h_extents_func_t func,
- void *user_data, hb_destroy_func_t destroy);
-
-/**
- * hb_font_funcs_set_font_v_extents_func:
- * @ffuncs: font functions.
- * @func: (closure user_data) (destroy destroy) (scope notified):
- * @user_data:
- * @destroy:
- *
- *
- *
- * Since: 1.1.2
- **/
-HB_EXTERN void
-hb_font_funcs_set_font_v_extents_func (hb_font_funcs_t *ffuncs,
- hb_font_get_font_v_extents_func_t func,
- void *user_data, hb_destroy_func_t destroy);
-
-/**
- * hb_font_funcs_set_nominal_glyph_func:
+ * hb_font_funcs_set_glyph_func:
* @ffuncs: font functions.
* @func: (closure user_data) (destroy destroy) (scope notified):
* @user_data:
@@ -209,28 +148,12 @@ hb_font_funcs_set_font_v_extents_func (hb_font_funcs_t *ffuncs,
*
*
*
- * Since: 1.2.3
+ * Since: 1.0
**/
-HB_EXTERN void
-hb_font_funcs_set_nominal_glyph_func (hb_font_funcs_t *ffuncs,
- hb_font_get_nominal_glyph_func_t func,
- void *user_data, hb_destroy_func_t destroy);
-
-/**
- * hb_font_funcs_set_variation_glyph_func:
- * @ffuncs: font functions.
- * @func: (closure user_data) (destroy destroy) (scope notified):
- * @user_data:
- * @destroy:
- *
- *
- *
- * Since: 1.2.3
- **/
-HB_EXTERN void
-hb_font_funcs_set_variation_glyph_func (hb_font_funcs_t *ffuncs,
- hb_font_get_variation_glyph_func_t func,
- void *user_data, hb_destroy_func_t destroy);
+void
+hb_font_funcs_set_glyph_func (hb_font_funcs_t *ffuncs,
+ hb_font_get_glyph_func_t func,
+ void *user_data, hb_destroy_func_t destroy);
/**
* hb_font_funcs_set_glyph_h_advance_func:
@@ -241,9 +164,9 @@ hb_font_funcs_set_variation_glyph_func (hb_font_funcs_t *ffuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_font_funcs_set_glyph_h_advance_func (hb_font_funcs_t *ffuncs,
hb_font_get_glyph_h_advance_func_t func,
void *user_data, hb_destroy_func_t destroy);
@@ -257,9 +180,9 @@ hb_font_funcs_set_glyph_h_advance_func (hb_font_funcs_t *ffuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_font_funcs_set_glyph_v_advance_func (hb_font_funcs_t *ffuncs,
hb_font_get_glyph_v_advance_func_t func,
void *user_data, hb_destroy_func_t destroy);
@@ -273,9 +196,9 @@ hb_font_funcs_set_glyph_v_advance_func (hb_font_funcs_t *ffuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_font_funcs_set_glyph_h_origin_func (hb_font_funcs_t *ffuncs,
hb_font_get_glyph_h_origin_func_t func,
void *user_data, hb_destroy_func_t destroy);
@@ -289,9 +212,9 @@ hb_font_funcs_set_glyph_h_origin_func (hb_font_funcs_t *ffuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_font_funcs_set_glyph_v_origin_func (hb_font_funcs_t *ffuncs,
hb_font_get_glyph_v_origin_func_t func,
void *user_data, hb_destroy_func_t destroy);
@@ -305,9 +228,9 @@ hb_font_funcs_set_glyph_v_origin_func (hb_font_funcs_t *ffuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_font_funcs_set_glyph_h_kerning_func (hb_font_funcs_t *ffuncs,
hb_font_get_glyph_h_kerning_func_t func,
void *user_data, hb_destroy_func_t destroy);
@@ -321,9 +244,9 @@ hb_font_funcs_set_glyph_h_kerning_func (hb_font_funcs_t *ffuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_font_funcs_set_glyph_v_kerning_func (hb_font_funcs_t *ffuncs,
hb_font_get_glyph_v_kerning_func_t func,
void *user_data, hb_destroy_func_t destroy);
@@ -337,9 +260,9 @@ hb_font_funcs_set_glyph_v_kerning_func (hb_font_funcs_t *ffuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_font_funcs_set_glyph_extents_func (hb_font_funcs_t *ffuncs,
hb_font_get_glyph_extents_func_t func,
void *user_data, hb_destroy_func_t destroy);
@@ -353,9 +276,9 @@ hb_font_funcs_set_glyph_extents_func (hb_font_funcs_t *ffuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_font_funcs_set_glyph_contour_point_func (hb_font_funcs_t *ffuncs,
hb_font_get_glyph_contour_point_func_t func,
void *user_data, hb_destroy_func_t destroy);
@@ -369,9 +292,9 @@ hb_font_funcs_set_glyph_contour_point_func (hb_font_funcs_t *ffuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_font_funcs_set_glyph_name_func (hb_font_funcs_t *ffuncs,
hb_font_get_glyph_name_func_t func,
void *user_data, hb_destroy_func_t destroy);
@@ -385,69 +308,59 @@ hb_font_funcs_set_glyph_name_func (hb_font_funcs_t *ffuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_font_funcs_set_glyph_from_name_func (hb_font_funcs_t *ffuncs,
hb_font_get_glyph_from_name_func_t func,
void *user_data, hb_destroy_func_t destroy);
-/* func dispatch */
-HB_EXTERN hb_bool_t
-hb_font_get_h_extents (hb_font_t *font,
- hb_font_extents_t *extents);
-HB_EXTERN hb_bool_t
-hb_font_get_v_extents (hb_font_t *font,
- hb_font_extents_t *extents);
+/* func dispatch */
-HB_EXTERN hb_bool_t
-hb_font_get_nominal_glyph (hb_font_t *font,
- hb_codepoint_t unicode,
- hb_codepoint_t *glyph);
-HB_EXTERN hb_bool_t
-hb_font_get_variation_glyph (hb_font_t *font,
- hb_codepoint_t unicode, hb_codepoint_t variation_selector,
- hb_codepoint_t *glyph);
+hb_bool_t
+hb_font_get_glyph (hb_font_t *font,
+ hb_codepoint_t unicode, hb_codepoint_t variation_selector,
+ hb_codepoint_t *glyph);
-HB_EXTERN hb_position_t
+hb_position_t
hb_font_get_glyph_h_advance (hb_font_t *font,
hb_codepoint_t glyph);
-HB_EXTERN hb_position_t
+hb_position_t
hb_font_get_glyph_v_advance (hb_font_t *font,
hb_codepoint_t glyph);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_font_get_glyph_h_origin (hb_font_t *font,
hb_codepoint_t glyph,
hb_position_t *x, hb_position_t *y);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_font_get_glyph_v_origin (hb_font_t *font,
hb_codepoint_t glyph,
hb_position_t *x, hb_position_t *y);
-HB_EXTERN hb_position_t
+hb_position_t
hb_font_get_glyph_h_kerning (hb_font_t *font,
hb_codepoint_t left_glyph, hb_codepoint_t right_glyph);
-HB_EXTERN hb_position_t
+hb_position_t
hb_font_get_glyph_v_kerning (hb_font_t *font,
hb_codepoint_t top_glyph, hb_codepoint_t bottom_glyph);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_font_get_glyph_extents (hb_font_t *font,
hb_codepoint_t glyph,
hb_glyph_extents_t *extents);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_font_get_glyph_contour_point (hb_font_t *font,
hb_codepoint_t glyph, unsigned int point_index,
hb_position_t *x, hb_position_t *y);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_font_get_glyph_name (hb_font_t *font,
hb_codepoint_t glyph,
char *name, unsigned int size);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_font_get_glyph_from_name (hb_font_t *font,
const char *name, int len, /* -1 means nul-terminated */
hb_codepoint_t *glyph);
@@ -455,63 +368,52 @@ hb_font_get_glyph_from_name (hb_font_t *font,
/* high-level funcs, with fallback */
-/* Calls either hb_font_get_nominal_glyph() if variation_selector is 0,
- * otherwise callse hb_font_get_variation_glyph(). */
-HB_EXTERN hb_bool_t
-hb_font_get_glyph (hb_font_t *font,
- hb_codepoint_t unicode, hb_codepoint_t variation_selector,
- hb_codepoint_t *glyph);
-
-HB_EXTERN void
-hb_font_get_extents_for_direction (hb_font_t *font,
- hb_direction_t direction,
- hb_font_extents_t *extents);
-HB_EXTERN void
+void
hb_font_get_glyph_advance_for_direction (hb_font_t *font,
hb_codepoint_t glyph,
hb_direction_t direction,
hb_position_t *x, hb_position_t *y);
-HB_EXTERN void
+void
hb_font_get_glyph_origin_for_direction (hb_font_t *font,
hb_codepoint_t glyph,
hb_direction_t direction,
hb_position_t *x, hb_position_t *y);
-HB_EXTERN void
+void
hb_font_add_glyph_origin_for_direction (hb_font_t *font,
hb_codepoint_t glyph,
hb_direction_t direction,
hb_position_t *x, hb_position_t *y);
-HB_EXTERN void
+void
hb_font_subtract_glyph_origin_for_direction (hb_font_t *font,
hb_codepoint_t glyph,
hb_direction_t direction,
hb_position_t *x, hb_position_t *y);
-HB_EXTERN void
+void
hb_font_get_glyph_kerning_for_direction (hb_font_t *font,
hb_codepoint_t first_glyph, hb_codepoint_t second_glyph,
hb_direction_t direction,
hb_position_t *x, hb_position_t *y);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_font_get_glyph_extents_for_origin (hb_font_t *font,
hb_codepoint_t glyph,
hb_direction_t direction,
hb_glyph_extents_t *extents);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_font_get_glyph_contour_point_for_origin (hb_font_t *font,
hb_codepoint_t glyph, unsigned int point_index,
hb_direction_t direction,
hb_position_t *x, hb_position_t *y);
/* Generates gidDDD if glyph has no name. */
-HB_EXTERN void
+void
hb_font_glyph_to_string (hb_font_t *font,
hb_codepoint_t glyph,
char *s, unsigned int size);
/* Parses gidDDD and uniUUUU strings automatically. */
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_font_glyph_from_string (hb_font_t *font,
const char *s, int len, /* -1 means nul-terminated */
hb_codepoint_t *glyph);
@@ -523,22 +425,22 @@ hb_font_glyph_from_string (hb_font_t *font,
/* Fonts are very light-weight objects */
-HB_EXTERN hb_font_t *
+hb_font_t *
hb_font_create (hb_face_t *face);
-HB_EXTERN hb_font_t *
+hb_font_t *
hb_font_create_sub_font (hb_font_t *parent);
-HB_EXTERN hb_font_t *
+hb_font_t *
hb_font_get_empty (void);
-HB_EXTERN hb_font_t *
+hb_font_t *
hb_font_reference (hb_font_t *font);
-HB_EXTERN void
+void
hb_font_destroy (hb_font_t *font);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_font_set_user_data (hb_font_t *font,
hb_user_data_key_t *key,
void * data,
@@ -546,46 +448,42 @@ hb_font_set_user_data (hb_font_t *font,
hb_bool_t replace);
-HB_EXTERN void *
+void *
hb_font_get_user_data (hb_font_t *font,
hb_user_data_key_t *key);
-HB_EXTERN void
+void
hb_font_make_immutable (hb_font_t *font);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_font_is_immutable (hb_font_t *font);
-HB_EXTERN void
-hb_font_set_parent (hb_font_t *font,
- hb_font_t *parent);
-
-HB_EXTERN hb_font_t *
+hb_font_t *
hb_font_get_parent (hb_font_t *font);
-HB_EXTERN hb_face_t *
+hb_face_t *
hb_font_get_face (hb_font_t *font);
-HB_EXTERN void
+void
hb_font_set_funcs (hb_font_t *font,
hb_font_funcs_t *klass,
void *font_data,
hb_destroy_func_t destroy);
/* Be *very* careful with this function! */
-HB_EXTERN void
+void
hb_font_set_funcs_data (hb_font_t *font,
void *font_data,
hb_destroy_func_t destroy);
-HB_EXTERN void
+void
hb_font_set_scale (hb_font_t *font,
int x_scale,
int y_scale);
-HB_EXTERN void
+void
hb_font_get_scale (hb_font_t *font,
int *x_scale,
int *y_scale);
@@ -593,12 +491,12 @@ hb_font_get_scale (hb_font_t *font,
/*
* A zero value means "no hinting in that direction"
*/
-HB_EXTERN void
+void
hb_font_set_ppem (hb_font_t *font,
unsigned int x_ppem,
unsigned int y_ppem);
-HB_EXTERN void
+void
hb_font_get_ppem (hb_font_t *font,
unsigned int *x_ppem,
unsigned int *y_ppem);
diff --git a/src/hb-ft.cc b/src/hb-ft.cc
index 2cad8c2..322f93a 100644
--- a/src/hb-ft.cc
+++ b/src/hb-ft.cc
@@ -1,7 +1,6 @@
/*
* Copyright © 2009 Red Hat, Inc.
* Copyright © 2009 Keith Stribley
- * Copyright © 2015 Google, Inc.
*
* This is part of HarfBuzz, a text shaping library.
*
@@ -24,7 +23,6 @@
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
* Red Hat Author(s): Behdad Esfahbod
- * Google Author(s): Behdad Esfahbod
*/
#include "hb-private.hh"
@@ -48,15 +46,17 @@
* In general, this file does a fine job of what it's supposed to do.
* There are, however, things that need more work:
*
- * - I remember seeing FT_Get_Advance() without the NO_HINTING flag to be buggy.
- * Have not investigated.
+ * - We don't handle any load_flags. That definitely has API implications. :(
+ * I believe hb_ft_font_create() should take load_flags input.
+ * In particular, FT_Get_Advance() without the NO_HINTING flag seems to be
+ * buggy.
*
- * - FreeType works in 26.6 mode. Clients can decide to use that mode, and everything
+ * FreeType works in 26.6 mode. Clients can decide to use that mode, and everything
* would work fine. However, we also abuse this API for performing in font-space,
* but don't pass the correct flags to FreeType. We just abuse the no-hinting mode
* for that, such that no rounding etc happens. As such, we don't set ppem, and
- * pass NO_HINTING as load_flags. Would be much better to use NO_SCALE, and scale
- * ourselves, like we do in uniscribe, etc.
+ * pass NO_HINTING around. This seems to work best, until we go ahead and add a full
+ * load_flags API.
*
* - We don't handle / allow for emboldening / obliqueing.
*
@@ -66,127 +66,24 @@
*/
-struct hb_ft_font_t
-{
- FT_Face ft_face;
- int load_flags;
- 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_t *ft_font = (hb_ft_font_t *) calloc (1, sizeof (hb_ft_font_t));
-
- if (unlikely (!ft_font))
- return NULL;
-
- ft_font->ft_face = ft_face;
- ft_font->unref = unref;
-
- ft_font->load_flags = FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING;
-
- return ft_font;
-}
-
-static void
-_hb_ft_font_destroy (hb_ft_font_t *ft_font)
-{
- if (ft_font->unref)
- FT_Done_Face (ft_font->ft_face);
-
- free (ft_font);
-}
-
-/**
- * hb_ft_font_set_load_flags:
- * @font:
- * @load_flags:
- *
- *
- *
- * Since: 1.0.5
- **/
-void
-hb_ft_font_set_load_flags (hb_font_t *font, int load_flags)
-{
- if (font->immutable)
- return;
-
- if (font->destroy != (hb_destroy_func_t) _hb_ft_font_destroy)
- return;
-
- hb_ft_font_t *ft_font = (hb_ft_font_t *) font->user_data;
-
- ft_font->load_flags = load_flags;
-}
-
-/**
- * hb_ft_font_get_load_flags:
- * @font:
- *
- *
- *
- * Return value:
- * Since: 1.0.5
- **/
-int
-hb_ft_font_get_load_flags (hb_font_t *font)
-{
- if (font->destroy != (hb_destroy_func_t) _hb_ft_font_destroy)
- return 0;
-
- const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font->user_data;
-
- return ft_font->load_flags;
-}
-
-FT_Face
-hb_ft_font_get_face (hb_font_t *font)
-{
- if (font->destroy != (hb_destroy_func_t) _hb_ft_font_destroy)
- return NULL;
-
- const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font->user_data;
-
- return ft_font->ft_face;
-}
-
-
-
static hb_bool_t
-hb_ft_get_nominal_glyph (hb_font_t *font HB_UNUSED,
- void *font_data,
- hb_codepoint_t unicode,
- hb_codepoint_t *glyph,
- void *user_data HB_UNUSED)
-{
- const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data;
- unsigned int g = FT_Get_Char_Index (ft_font->ft_face, unicode);
-
- if (unlikely (!g))
- return false;
+hb_ft_get_glyph (hb_font_t *font HB_UNUSED,
+ void *font_data,
+ hb_codepoint_t unicode,
+ hb_codepoint_t variation_selector,
+ hb_codepoint_t *glyph,
+ void *user_data HB_UNUSED)
- *glyph = g;
- return true;
-}
-
-static hb_bool_t
-hb_ft_get_variation_glyph (hb_font_t *font HB_UNUSED,
- void *font_data,
- hb_codepoint_t unicode,
- hb_codepoint_t variation_selector,
- hb_codepoint_t *glyph,
- void *user_data HB_UNUSED)
{
- const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data;
- unsigned int g = FT_Face_GetCharVariantIndex (ft_font->ft_face, unicode, variation_selector);
+ FT_Face ft_face = (FT_Face) font_data;
- if (unlikely (!g))
- return false;
+ if (unlikely (variation_selector)) {
+ *glyph = FT_Face_GetCharVariantIndex (ft_face, unicode, variation_selector);
+ return *glyph != 0;
+ }
- *glyph = g;
- return true;
+ *glyph = FT_Get_Char_Index (ft_face, unicode);
+ return *glyph != 0;
}
static hb_position_t
@@ -195,10 +92,11 @@ hb_ft_get_glyph_h_advance (hb_font_t *font HB_UNUSED,
hb_codepoint_t glyph,
void *user_data HB_UNUSED)
{
- const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data;
+ FT_Face ft_face = (FT_Face) font_data;
+ int load_flags = FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING;
FT_Fixed v;
- if (unlikely (FT_Get_Advance (ft_font->ft_face, glyph, ft_font->load_flags, &v)))
+ if (unlikely (FT_Get_Advance (ft_face, glyph, load_flags, &v)))
return 0;
if (font->x_scale < 0)
@@ -213,10 +111,11 @@ hb_ft_get_glyph_v_advance (hb_font_t *font HB_UNUSED,
hb_codepoint_t glyph,
void *user_data HB_UNUSED)
{
- const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data;
+ FT_Face ft_face = (FT_Face) font_data;
+ int load_flags = FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING | FT_LOAD_VERTICAL_LAYOUT;
FT_Fixed v;
- if (unlikely (FT_Get_Advance (ft_font->ft_face, glyph, ft_font->load_flags | FT_LOAD_VERTICAL_LAYOUT, &v)))
+ if (unlikely (FT_Get_Advance (ft_face, glyph, load_flags, &v)))
return 0;
if (font->y_scale < 0)
@@ -228,6 +127,18 @@ hb_ft_get_glyph_v_advance (hb_font_t *font HB_UNUSED,
}
static hb_bool_t
+hb_ft_get_glyph_h_origin (hb_font_t *font HB_UNUSED,
+ void *font_data HB_UNUSED,
+ hb_codepoint_t glyph HB_UNUSED,
+ hb_position_t *x HB_UNUSED,
+ hb_position_t *y HB_UNUSED,
+ void *user_data HB_UNUSED)
+{
+ /* We always work in the horizontal coordinates. */
+ return true;
+}
+
+static hb_bool_t
hb_ft_get_glyph_v_origin (hb_font_t *font HB_UNUSED,
void *font_data,
hb_codepoint_t glyph,
@@ -235,10 +146,10 @@ hb_ft_get_glyph_v_origin (hb_font_t *font HB_UNUSED,
hb_position_t *y,
void *user_data HB_UNUSED)
{
- const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data;
- FT_Face ft_face = ft_font->ft_face;
+ FT_Face ft_face = (FT_Face) font_data;
+ int load_flags = FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING;
- if (unlikely (FT_Load_Glyph (ft_face, glyph, ft_font->load_flags)))
+ if (unlikely (FT_Load_Glyph (ft_face, glyph, load_flags)))
return false;
/* Note: FreeType's vertical metrics grows downward while other FreeType coordinates
@@ -261,16 +172,27 @@ hb_ft_get_glyph_h_kerning (hb_font_t *font,
hb_codepoint_t right_glyph,
void *user_data HB_UNUSED)
{
- const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data;
+ FT_Face ft_face = (FT_Face) font_data;
FT_Vector kerningv;
FT_Kerning_Mode mode = font->x_ppem ? FT_KERNING_DEFAULT : FT_KERNING_UNFITTED;
- if (FT_Get_Kerning (ft_font->ft_face, left_glyph, right_glyph, mode, &kerningv))
+ if (FT_Get_Kerning (ft_face, left_glyph, right_glyph, mode, &kerningv))
return 0;
return kerningv.x;
}
+static hb_position_t
+hb_ft_get_glyph_v_kerning (hb_font_t *font HB_UNUSED,
+ void *font_data HB_UNUSED,
+ hb_codepoint_t top_glyph HB_UNUSED,
+ hb_codepoint_t bottom_glyph HB_UNUSED,
+ void *user_data HB_UNUSED)
+{
+ /* FreeType API doesn't support vertical kerning */
+ return 0;
+}
+
static hb_bool_t
hb_ft_get_glyph_extents (hb_font_t *font HB_UNUSED,
void *font_data,
@@ -278,26 +200,16 @@ hb_ft_get_glyph_extents (hb_font_t *font HB_UNUSED,
hb_glyph_extents_t *extents,
void *user_data HB_UNUSED)
{
- const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data;
- FT_Face ft_face = ft_font->ft_face;
+ FT_Face ft_face = (FT_Face) font_data;
+ int load_flags = FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING;
- if (unlikely (FT_Load_Glyph (ft_face, glyph, ft_font->load_flags)))
+ if (unlikely (FT_Load_Glyph (ft_face, glyph, load_flags)))
return false;
extents->x_bearing = ft_face->glyph->metrics.horiBearingX;
extents->y_bearing = ft_face->glyph->metrics.horiBearingY;
extents->width = ft_face->glyph->metrics.width;
extents->height = -ft_face->glyph->metrics.height;
- if (font->x_scale < 0)
- {
- extents->x_bearing = -extents->x_bearing;
- extents->width = -extents->width;
- }
- if (font->y_scale < 0)
- {
- extents->y_bearing = -extents->y_bearing;
- extents->height = -extents->height;
- }
return true;
}
@@ -310,10 +222,10 @@ hb_ft_get_glyph_contour_point (hb_font_t *font HB_UNUSED,
hb_position_t *y,
void *user_data HB_UNUSED)
{
- const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data;
- FT_Face ft_face = ft_font->ft_face;
+ FT_Face ft_face = (FT_Face) font_data;
+ int load_flags = FT_LOAD_DEFAULT;
- if (unlikely (FT_Load_Glyph (ft_face, glyph, ft_font->load_flags)))
+ if (unlikely (FT_Load_Glyph (ft_face, glyph, load_flags)))
return false;
if (unlikely (ft_face->glyph->format != FT_GLYPH_FORMAT_OUTLINE))
@@ -335,9 +247,9 @@ hb_ft_get_glyph_name (hb_font_t *font HB_UNUSED,
char *name, unsigned int size,
void *user_data HB_UNUSED)
{
- const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data;
+ FT_Face ft_face = (FT_Face) font_data;
- hb_bool_t ret = !FT_Get_Glyph_Name (ft_font->ft_face, glyph, name, size);
+ hb_bool_t ret = !FT_Get_Glyph_Name (ft_face, glyph, name, size);
if (ret && (size && !*name))
ret = false;
@@ -351,8 +263,7 @@ hb_ft_get_glyph_from_name (hb_font_t *font HB_UNUSED,
hb_codepoint_t *glyph,
void *user_data HB_UNUSED)
{
- const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data;
- FT_Face ft_face = ft_font->ft_face;
+ FT_Face ft_face = (FT_Face) font_data;
if (len < 0)
*glyph = FT_Get_Name_Index (ft_face, (FT_String *) name);
@@ -377,77 +288,23 @@ hb_ft_get_glyph_from_name (hb_font_t *font HB_UNUSED,
return *glyph != 0;
}
-static hb_bool_t
-hb_ft_get_font_h_extents (hb_font_t *font HB_UNUSED,
- void *font_data,
- hb_font_extents_t *metrics,
- void *user_data HB_UNUSED)
-{
- const hb_ft_font_t *ft_font = (const hb_ft_font_t *) font_data;
- FT_Face ft_face = ft_font->ft_face;
- metrics->ascender = ft_face->size->metrics.ascender;
- metrics->descender = ft_face->size->metrics.descender;
- metrics->line_gap = ft_face->size->metrics.height - (ft_face->size->metrics.ascender - ft_face->size->metrics.descender);
- if (font->y_scale < 0)
- {
- metrics->ascender = -metrics->ascender;
- metrics->descender = -metrics->descender;
- metrics->line_gap = -metrics->line_gap;
- }
- return true;
-}
-
-static hb_font_funcs_t *static_ft_funcs = NULL;
-#ifdef HB_USE_ATEXIT
-static
-void free_static_ft_funcs (void)
+static hb_font_funcs_t *
+_hb_ft_get_font_funcs (void)
{
- hb_font_funcs_destroy (static_ft_funcs);
-}
-#endif
+ static const hb_font_funcs_t ft_ffuncs = {
+ HB_OBJECT_HEADER_STATIC,
-static void
-_hb_ft_font_set_funcs (hb_font_t *font, FT_Face ft_face, bool unref)
-{
-retry:
- hb_font_funcs_t *funcs = (hb_font_funcs_t *) hb_atomic_ptr_get (&static_ft_funcs);
+ true, /* immutable */
- if (unlikely (!funcs))
- {
- funcs = hb_font_funcs_create ();
-
- hb_font_funcs_set_font_h_extents_func (funcs, hb_ft_get_font_h_extents, NULL, NULL);
- //hb_font_funcs_set_font_v_extents_func (funcs, hb_ft_get_font_v_extents, NULL, NULL);
- hb_font_funcs_set_nominal_glyph_func (funcs, hb_ft_get_nominal_glyph, NULL, NULL);
- hb_font_funcs_set_variation_glyph_func (funcs, hb_ft_get_variation_glyph, NULL, NULL);
- hb_font_funcs_set_glyph_h_advance_func (funcs, hb_ft_get_glyph_h_advance, NULL, NULL);
- hb_font_funcs_set_glyph_v_advance_func (funcs, hb_ft_get_glyph_v_advance, NULL, NULL);
- //hb_font_funcs_set_glyph_h_origin_func (funcs, hb_ft_get_glyph_h_origin, NULL, NULL);
- hb_font_funcs_set_glyph_v_origin_func (funcs, hb_ft_get_glyph_v_origin, NULL, NULL);
- hb_font_funcs_set_glyph_h_kerning_func (funcs, hb_ft_get_glyph_h_kerning, NULL, NULL);
- //hb_font_funcs_set_glyph_v_kerning_func (funcs, hb_ft_get_glyph_v_kerning, NULL, NULL);
- hb_font_funcs_set_glyph_extents_func (funcs, hb_ft_get_glyph_extents, NULL, NULL);
- hb_font_funcs_set_glyph_contour_point_func (funcs, hb_ft_get_glyph_contour_point, NULL, NULL);
- hb_font_funcs_set_glyph_name_func (funcs, hb_ft_get_glyph_name, NULL, NULL);
- hb_font_funcs_set_glyph_from_name_func (funcs, hb_ft_get_glyph_from_name, NULL, NULL);
-
- hb_font_funcs_make_immutable (funcs);
-
- if (!hb_atomic_ptr_cmpexch (&static_ft_funcs, NULL, funcs)) {
- hb_font_funcs_destroy (funcs);
- goto retry;
+ {
+#define HB_FONT_FUNC_IMPLEMENT(name) hb_ft_get_##name,
+ HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
+#undef HB_FONT_FUNC_IMPLEMENT
}
-
-#ifdef HB_USE_ATEXIT
- atexit (free_static_ft_funcs); /* First person registers atexit() callback. */
-#endif
};
- hb_font_set_funcs (font,
- funcs,
- _hb_ft_font_create (ft_face, unref),
- (hb_destroy_func_t) _hb_ft_font_destroy);
+ return const_cast<hb_font_funcs_t *> (&ft_ffuncs);
}
@@ -486,7 +343,7 @@ reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data)
*
*
* Return value: (transfer full):
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_face_t *
hb_ft_face_create (FT_Face ft_face,
@@ -520,7 +377,7 @@ hb_ft_face_create (FT_Face ft_face,
*
*
* Return value: (transfer full):
- * Since: 0.9.38
+ * Since: 1.0
**/
hb_face_t *
hb_ft_face_create_referenced (FT_Face ft_face)
@@ -542,7 +399,7 @@ hb_ft_face_finalize (FT_Face ft_face)
*
*
* Return value: (transfer full):
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_face_t *
hb_ft_face_create_cached (FT_Face ft_face)
@@ -559,6 +416,11 @@ hb_ft_face_create_cached (FT_Face ft_face)
return hb_face_reference ((hb_face_t *) ft_face->generic.data);
}
+static void
+_do_nothing (void)
+{
+}
+
/**
* hb_ft_font_create:
@@ -568,7 +430,7 @@ hb_ft_face_create_cached (FT_Face ft_face)
*
*
* Return value: (transfer full):
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_font_t *
hb_ft_font_create (FT_Face ft_face,
@@ -580,7 +442,9 @@ hb_ft_font_create (FT_Face ft_face,
face = hb_ft_face_create (ft_face, destroy);
font = hb_font_create (face);
hb_face_destroy (face);
- _hb_ft_font_set_funcs (font, ft_face, false);
+ hb_font_set_funcs (font,
+ _hb_ft_get_font_funcs (),
+ ft_face, (hb_destroy_func_t) _do_nothing);
hb_font_set_scale (font,
(int) (((uint64_t) ft_face->size->metrics.x_scale * (uint64_t) ft_face->units_per_EM + (1<<15)) >> 16),
(int) (((uint64_t) ft_face->size->metrics.y_scale * (uint64_t) ft_face->units_per_EM + (1<<15)) >> 16));
@@ -600,7 +464,7 @@ hb_ft_font_create (FT_Face ft_face,
*
*
* Return value: (transfer full):
- * Since: 0.9.38
+ * Since: 1.0
**/
hb_font_t *
hb_ft_font_create_referenced (FT_Face ft_face)
@@ -694,6 +558,18 @@ hb_ft_font_set_funcs (hb_font_t *font)
ft_face->generic.data = blob;
ft_face->generic.finalizer = (FT_Generic_Finalizer) _release_blob;
- _hb_ft_font_set_funcs (font, ft_face, true);
- hb_ft_font_set_load_flags (font, FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING);
+ hb_font_set_funcs (font,
+ _hb_ft_get_font_funcs (),
+ ft_face,
+ (hb_destroy_func_t) FT_Done_Face);
+}
+
+FT_Face
+hb_ft_font_get_face (hb_font_t *font)
+{
+ if (font->destroy == (hb_destroy_func_t) FT_Done_Face ||
+ font->destroy == (hb_destroy_func_t) _do_nothing)
+ return (FT_Face) font->user_data;
+
+ return NULL;
}
diff --git a/src/hb-ft.h b/src/hb-ft.h
index dc8ef85..92f4b36 100644
--- a/src/hb-ft.h
+++ b/src/hb-ft.h
@@ -1,6 +1,5 @@
/*
* Copyright © 2009 Red Hat, Inc.
- * Copyright © 2015 Google, Inc.
*
* This is part of HarfBuzz, a text shaping library.
*
@@ -23,7 +22,6 @@
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
* Red Hat Author(s): Behdad Esfahbod
- * Google Author(s): Behdad Esfahbod
*/
#ifndef HB_FT_H
@@ -59,7 +57,7 @@ HB_BEGIN_DECLS
* probably should use (the more recent) hb_ft_face_create_referenced()
* instead.
*/
-HB_EXTERN hb_face_t *
+hb_face_t *
hb_ft_face_create (FT_Face ft_face,
hb_destroy_func_t destroy);
@@ -71,7 +69,7 @@ hb_ft_face_create (FT_Face ft_face,
* Client is still responsible for making sure that ft-face is destroyed
* after hb-face is.
*/
-HB_EXTERN hb_face_t *
+hb_face_t *
hb_ft_face_create_cached (FT_Face ft_face);
/* This version is like hb_ft_face_create(), except that it calls
@@ -81,7 +79,7 @@ hb_ft_face_create_cached (FT_Face ft_face);
* This is the most convenient version to use. Use it unless you have
* very good reasons not to.
*/
-HB_EXTERN hb_face_t *
+hb_face_t *
hb_ft_face_create_referenced (FT_Face ft_face);
@@ -98,28 +96,23 @@ hb_ft_face_create_referenced (FT_Face ft_face);
/* See notes on hb_ft_face_create(). Same issues re lifecycle-management
* apply here. Use hb_ft_font_create_referenced() if you can. */
-HB_EXTERN hb_font_t *
+hb_font_t *
hb_ft_font_create (FT_Face ft_face,
hb_destroy_func_t destroy);
/* See notes on hb_ft_face_create_referenced() re lifecycle-management
* issues. */
-HB_EXTERN hb_font_t *
+hb_font_t *
hb_ft_font_create_referenced (FT_Face ft_face);
-HB_EXTERN FT_Face
-hb_ft_font_get_face (hb_font_t *font);
-
-HB_EXTERN void
-hb_ft_font_set_load_flags (hb_font_t *font, int load_flags);
-
-HB_EXTERN int
-hb_ft_font_get_load_flags (hb_font_t *font);
/* Makes an hb_font_t use FreeType internally to implement font functions. */
-HB_EXTERN void
+void
hb_ft_font_set_funcs (hb_font_t *font);
+FT_Face
+hb_ft_font_get_face (hb_font_t *font);
+
HB_END_DECLS
diff --git a/src/hb-glib.cc b/src/hb-glib.cc
index e203524..61dff5e 100644
--- a/src/hb-glib.cc
+++ b/src/hb-glib.cc
@@ -382,11 +382,6 @@ hb_glib_get_unicode_funcs (void)
return const_cast<hb_unicode_funcs_t *> (&_hb_glib_unicode_funcs);
}
-/**
- * hb_glib_blob_create:
- *
- * Since: 0.9.38
- **/
hb_blob_t *
hb_glib_blob_create (GBytes *gbytes)
{
diff --git a/src/hb-glib.h b/src/hb-glib.h
index 12c3e3b..1a8f42e 100644
--- a/src/hb-glib.h
+++ b/src/hb-glib.h
@@ -36,17 +36,17 @@
HB_BEGIN_DECLS
-HB_EXTERN hb_script_t
+hb_script_t
hb_glib_script_to_script (GUnicodeScript script);
-HB_EXTERN GUnicodeScript
+GUnicodeScript
hb_glib_script_from_script (hb_script_t script);
-HB_EXTERN hb_unicode_funcs_t *
+hb_unicode_funcs_t *
hb_glib_get_unicode_funcs (void);
-HB_EXTERN hb_blob_t *
+hb_blob_t *
hb_glib_blob_create (GBytes *gbytes);
diff --git a/src/hb-gobject-enums.h.tmpl b/src/hb-gobject-enums.h.tmpl
index e28510c..6ecda06 100644
--- a/src/hb-gobject-enums.h.tmpl
+++ b/src/hb-gobject-enums.h.tmpl
@@ -42,7 +42,7 @@ HB_BEGIN_DECLS
/*** END file-header ***/
/*** BEGIN value-header ***/
-HB_EXTERN GType @enum_name@_get_type (void) G_GNUC_CONST;
+GType @enum_name@_get_type (void) G_GNUC_CONST;
#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ())
/*** END value-header ***/
diff --git a/src/hb-gobject-structs.cc b/src/hb-gobject-structs.cc
index 6bd6336..2451b66 100644
--- a/src/hb-gobject-structs.cc
+++ b/src/hb-gobject-structs.cc
@@ -54,17 +54,6 @@ hb_gobject_##name##_get_type (void) \
#define HB_DEFINE_OBJECT_TYPE(name) \
HB_DEFINE_BOXED_TYPE (name, hb_##name##_reference, hb_##name##_destroy);
-#define HB_DEFINE_VALUE_TYPE(name) \
- static hb_##name##_t *_hb_##name##_reference (const hb_##name##_t *l) \
- { \
- hb_##name##_t *c = (hb_##name##_t *) calloc (1, sizeof (hb_##name##_t)); \
- if (unlikely (!c)) return NULL; \
- *c = *l; \
- return c; \
- } \
- static void _hb_##name##_destroy (hb_##name##_t *l) { free (l); } \
- HB_DEFINE_BOXED_TYPE (name, _hb_##name##_reference, _hb_##name##_destroy);
-
HB_DEFINE_OBJECT_TYPE (buffer)
HB_DEFINE_OBJECT_TYPE (blob)
HB_DEFINE_OBJECT_TYPE (face)
@@ -73,8 +62,59 @@ HB_DEFINE_OBJECT_TYPE (font_funcs)
HB_DEFINE_OBJECT_TYPE (set)
HB_DEFINE_OBJECT_TYPE (shape_plan)
HB_DEFINE_OBJECT_TYPE (unicode_funcs)
-HB_DEFINE_VALUE_TYPE (feature)
-HB_DEFINE_VALUE_TYPE (glyph_info)
-HB_DEFINE_VALUE_TYPE (glyph_position)
-HB_DEFINE_VALUE_TYPE (segment_properties)
-HB_DEFINE_VALUE_TYPE (user_data_key)
+
+
+static hb_feature_t *feature_reference (hb_feature_t *g)
+{
+ hb_feature_t *c = (hb_feature_t *) calloc (1, sizeof (hb_feature_t));
+ if (unlikely (!c)) return NULL;
+ *c = *g;
+ return c;
+}
+static void feature_destroy (hb_feature_t *g) { free (g); }
+HB_DEFINE_BOXED_TYPE (feature, feature_reference, feature_destroy)
+
+static hb_glyph_info_t *glyph_info_reference (hb_glyph_info_t *g)
+{
+ hb_glyph_info_t *c = (hb_glyph_info_t *) calloc (1, sizeof (hb_glyph_info_t));
+ if (unlikely (!c)) return NULL;
+ *c = *g;
+ return c;
+}
+static void glyph_info_destroy (hb_glyph_info_t *g) { free (g); }
+HB_DEFINE_BOXED_TYPE (glyph_info, glyph_info_reference, glyph_info_destroy)
+
+static hb_glyph_position_t *glyph_position_reference (hb_glyph_position_t *g)
+{
+ hb_glyph_position_t *c = (hb_glyph_position_t *) calloc (1, sizeof (hb_glyph_position_t));
+ if (unlikely (!c)) return NULL;
+ *c = *g;
+ return c;
+}
+static void glyph_position_destroy (hb_glyph_position_t *g) { free (g); }
+HB_DEFINE_BOXED_TYPE (glyph_position, glyph_position_reference, glyph_position_destroy)
+
+static hb_segment_properties_t *segment_properties_reference (hb_segment_properties_t *g)
+{
+ hb_segment_properties_t *c = (hb_segment_properties_t *) calloc (1, sizeof (hb_segment_properties_t));
+ if (unlikely (!c)) return NULL;
+ *c = *g;
+ return c;
+}
+static void segment_properties_destroy (hb_segment_properties_t *g) { free (g); }
+HB_DEFINE_BOXED_TYPE (segment_properties, segment_properties_reference, segment_properties_destroy)
+
+static hb_user_data_key_t user_data_key_reference (hb_user_data_key_t l) { return l; }
+static void user_data_key_destroy (hb_user_data_key_t l) { }
+HB_DEFINE_BOXED_TYPE (user_data_key, user_data_key_reference, user_data_key_destroy)
+
+
+static hb_language_t *language_reference (hb_language_t *l)
+{
+ hb_language_t *c = (hb_language_t *) calloc (1, sizeof (hb_language_t));
+ if (unlikely (!c)) return NULL;
+ *c = *l;
+ return c;
+}
+static void language_destroy (hb_language_t *l) { free (l); }
+HB_DEFINE_BOXED_TYPE (language, language_reference, language_destroy)
diff --git a/src/hb-gobject-structs.h b/src/hb-gobject-structs.h
index 0ea3b12..4a88d56 100644
--- a/src/hb-gobject-structs.h
+++ b/src/hb-gobject-structs.h
@@ -40,65 +40,55 @@ HB_BEGIN_DECLS
/* Object types */
-/**
- * Since: 0.9.2
- **/
-HB_EXTERN GType hb_gobject_blob_get_type (void);
+GType hb_gobject_blob_get_type (void);
#define HB_GOBJECT_TYPE_BLOB (hb_gobject_blob_get_type ())
-/**
- * Since: 0.9.2
- **/
-HB_EXTERN GType hb_gobject_buffer_get_type (void);
+GType hb_gobject_buffer_get_type (void);
#define HB_GOBJECT_TYPE_BUFFER (hb_gobject_buffer_get_type ())
-/**
- * Since: 0.9.2
- **/
-HB_EXTERN GType hb_gobject_face_get_type (void);
+GType hb_gobject_face_get_type (void);
#define HB_GOBJECT_TYPE_FACE (hb_gobject_face_get_type ())
-/**
- * Since: 0.9.2
- **/
-HB_EXTERN GType hb_gobject_font_get_type (void);
+GType hb_gobject_font_get_type (void);
#define HB_GOBJECT_TYPE_FONT (hb_gobject_font_get_type ())
-/**
- * Since: 0.9.2
- **/
-HB_EXTERN GType hb_gobject_font_funcs_get_type (void);
+GType hb_gobject_font_funcs_get_type (void);
#define HB_GOBJECT_TYPE_FONT_FUNCS (hb_gobject_font_funcs_get_type ())
-HB_EXTERN GType hb_gobject_set_get_type (void);
+GType hb_gobject_set_get_type (void);
#define HB_GOBJECT_TYPE_SET (hb_gobject_set_get_type ())
-HB_EXTERN GType hb_gobject_shape_plan_get_type (void);
+GType hb_gobject_shape_plan_get_type (void);
#define HB_GOBJECT_TYPE_SHAPE_PLAN (hb_gobject_shape_plan_get_type ())
-/**
- * Since: 0.9.2
- **/
-HB_EXTERN GType hb_gobject_unicode_funcs_get_type (void);
+GType hb_gobject_unicode_funcs_get_type (void);
#define HB_GOBJECT_TYPE_UNICODE_FUNCS (hb_gobject_unicode_funcs_get_type ())
/* Value types */
-HB_EXTERN GType hb_gobject_feature_get_type (void);
+GType hb_gobject_feature_get_type (void);
#define HB_GOBJECT_TYPE_FEATURE (hb_gobject_feature_get_type ())
-HB_EXTERN GType hb_gobject_glyph_info_get_type (void);
+GType hb_gobject_glyph_info_get_type (void);
#define HB_GOBJECT_TYPE_GLYPH_INFO (hb_gobject_glyph_info_get_type ())
-HB_EXTERN GType hb_gobject_glyph_position_get_type (void);
+GType hb_gobject_glyph_position_get_type (void);
#define HB_GOBJECT_TYPE_GLYPH_POSITION (hb_gobject_glyph_position_get_type ())
-HB_EXTERN GType hb_gobject_segment_properties_get_type (void);
+GType hb_gobject_segment_properties_get_type (void);
#define HB_GOBJECT_TYPE_SEGMENT_PROPERTIES (hb_gobject_segment_properties_get_type ())
-HB_EXTERN GType hb_gobject_user_data_key_get_type (void);
+GType hb_gobject_user_data_key_get_type (void);
#define HB_GOBJECT_TYPE_USER_DATA_KEY (hb_gobject_user_data_key_get_type ())
+/* Currently gobject-introspection doesn't understand that hb_language_t
+ * can be passed by-value. As such we box it up. May remove in the
+ * future.
+ *
+ * https://bugzilla.gnome.org/show_bug.cgi?id=707656
+ */
+GType hb_gobject_language_get_type (void);
+#define HB_GOBJECT_TYPE_LANGUAGE (hb_gobject_language_get_type ())
HB_END_DECLS
diff --git a/src/hb-graphite2.cc b/src/hb-graphite2.cc
index c32318d..807c330 100644
--- a/src/hb-graphite2.cc
+++ b/src/hb-graphite2.cc
@@ -138,9 +138,6 @@ _hb_graphite2_shaper_face_data_destroy (hb_graphite2_shaper_face_data_t *data)
free (data);
}
-/*
- * Since: 0.9.10
- */
gr_face *
hb_graphite2_face_get_gr_face (hb_face_t *face)
{
@@ -175,9 +172,6 @@ _hb_graphite2_shaper_font_data_destroy (hb_graphite2_shaper_font_data_t *data)
gr_font_destroy (data);
}
-/*
- * Since: 0.9.10
- */
gr_font *
hb_graphite2_font_get_gr_font (hb_font_t *font)
{
@@ -216,7 +210,6 @@ struct hb_graphite2_cluster_t {
unsigned int base_glyph;
unsigned int num_glyphs;
unsigned int cluster;
- float advance;
};
hb_bool_t
@@ -235,11 +228,12 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan,
int lang_len = lang_end ? lang_end - lang : -1;
gr_feature_val *feats = gr_face_featureval_for_lang (grface, lang ? hb_tag_from_string (lang, lang_len) : 0);
- for (unsigned int i = 0; i < num_features; i++)
+ while (num_features--)
{
- const gr_feature_ref *fref = gr_face_find_fref (grface, features[i].tag);
+ const gr_feature_ref *fref = gr_face_find_fref (grface, features->tag);
if (fref)
- gr_fref_set_feature_value (fref, features[i].value, feats);
+ gr_fref_set_feature_value (fref, features->value, feats);
+ features++;
}
gr_segment *seg = NULL;
@@ -255,8 +249,6 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan,
for (unsigned int i = 0; i < buffer->len; ++i)
chars[i] = buffer->info[i].codepoint;
- /* TODO ensure_native_direction. */
-
hb_tag_t script_tag[2];
hb_ot_tags_from_script (hb_buffer_get_script (buffer), &script_tag[0], &script_tag[1]);
@@ -275,11 +267,9 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan,
if (unlikely (!glyph_count)) {
if (feats) gr_featureval_destroy (feats);
gr_seg_destroy (seg);
- buffer->len = 0;
- return true;
+ return false;
}
- buffer->ensure (glyph_count);
scratch = buffer->get_scratch_buffer (&scratch_size);
while ((DIV_CEIL (sizeof (hb_graphite2_cluster_t) * buffer->len, sizeof (*scratch)) +
DIV_CEIL (sizeof (hb_codepoint_t) * glyph_count, sizeof (*scratch))) > scratch_size)
@@ -311,12 +301,6 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan,
hb_codepoint_t *pg = gids;
clusters[0].cluster = buffer->info[0].cluster;
- float curradv = HB_DIRECTION_IS_BACKWARD(buffer->props.direction) ? gr_slot_origin_X(gr_seg_first_slot(seg)) : 0.;
- if (HB_DIRECTION_IS_BACKWARD(buffer->props.direction))
- {
- curradv = gr_slot_origin_X(gr_seg_first_slot(seg));
- clusters[0].advance = gr_seg_advance_X(seg) - curradv;
- }
for (is = gr_seg_first_slot (seg), ic = 0; is; is = gr_slot_next_in_segment (is), ic++)
{
unsigned int before = gr_slot_before (is);
@@ -327,7 +311,6 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan,
{
clusters[ci-1].num_chars += clusters[ci].num_chars;
clusters[ci-1].num_glyphs += clusters[ci].num_glyphs;
- clusters[ci-1].advance += clusters[ci].advance;
ci--;
}
@@ -339,26 +322,16 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan,
c->num_chars = before - c->base_char;
c->base_glyph = ic;
c->num_glyphs = 0;
- if (HB_DIRECTION_IS_BACKWARD(buffer->props.direction))
- {
- ci++;
- clusters[ci].advance = curradv - gr_slot_origin_X(is);
- } else {
- clusters[ci].advance = gr_slot_origin_X(is) - curradv;
- ci++;
- }
- curradv = gr_slot_origin_X(is);
+ ci++;
}
clusters[ci].num_glyphs++;
if (clusters[ci].base_char + clusters[ci].num_chars < after + 1)
clusters[ci].num_chars = after + 1 - clusters[ci].base_char;
}
-
- if (!HB_DIRECTION_IS_BACKWARD(buffer->props.direction))
- clusters[ci].advance = gr_seg_advance_X(seg) - curradv;
ci++;
+ //buffer->clear_output ();
for (unsigned int i = 0; i < ci; ++i)
{
for (unsigned int j = 0; j < clusters[i].num_glyphs; ++j)
@@ -366,57 +339,35 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan,
hb_glyph_info_t *info = &buffer->info[clusters[i].base_glyph + j];
info->codepoint = gids[clusters[i].base_glyph + j];
info->cluster = clusters[i].cluster;
- info->var1.i32 = clusters[i].advance; // all glyphs in the cluster get the same advance
}
}
buffer->len = glyph_count;
+ //buffer->swap_buffers ();
- float yscale = font->y_scale / font->x_scale;
- /* Positioning. */
- if (!HB_DIRECTION_IS_BACKWARD(buffer->props.direction))
+ if (HB_DIRECTION_IS_BACKWARD(buffer->props.direction))
+ curradvx = gr_seg_advance_X(seg);
+
+ hb_glyph_position_t *pPos;
+ for (pPos = hb_buffer_get_glyph_positions (buffer, NULL), is = gr_seg_first_slot (seg);
+ is; pPos++, is = gr_slot_next_in_segment (is))
{
- int currclus = -1;
- const hb_glyph_info_t *info = buffer->info;
- hb_glyph_position_t *pPos = hb_buffer_get_glyph_positions (buffer, NULL);
- curradvx = 0;
- for (is = gr_seg_first_slot (seg); is; pPos++, ++info, is = gr_slot_next_in_segment (is))
- {
- pPos->x_offset = gr_slot_origin_X (is) - curradvx;
- pPos->y_offset = gr_slot_origin_Y (is) * yscale - curradvy;
- if (info->cluster != currclus) {
- pPos->x_advance = info->var1.i32;
- curradvx += pPos->x_advance;
- currclus = info->cluster;
- } else
- pPos->x_advance = 0.;
-
- pPos->y_advance = gr_slot_advance_Y (is, grface, grfont) * yscale;
- curradvy += pPos->y_advance;
- }
+ pPos->x_offset = gr_slot_origin_X (is) - curradvx;
+ pPos->y_offset = gr_slot_origin_Y (is) - curradvy;
+ pPos->x_advance = gr_slot_advance_X (is, grface, grfont);
+ pPos->y_advance = gr_slot_advance_Y (is, grface, grfont);
+ if (HB_DIRECTION_IS_BACKWARD (buffer->props.direction))
+ curradvx -= pPos->x_advance;
+ pPos->x_offset = gr_slot_origin_X (is) - curradvx;
+ if (!HB_DIRECTION_IS_BACKWARD (buffer->props.direction))
+ curradvx += pPos->x_advance;
+ pPos->y_offset = gr_slot_origin_Y (is) - curradvy;
+ curradvy += pPos->y_advance;
}
- else
- {
- int currclus = -1;
- const hb_glyph_info_t *info = buffer->info;
- hb_glyph_position_t *pPos = hb_buffer_get_glyph_positions (buffer, NULL);
- curradvx = gr_seg_advance_X(seg);
- for (is = gr_seg_first_slot (seg); is; pPos++, info++, is = gr_slot_next_in_segment (is))
- {
- if (info->cluster != currclus)
- {
- pPos->x_advance = info->var1.i32;
- if (currclus != -1) curradvx -= info[-1].var1.i32;
- currclus = info->cluster;
- } else
- pPos->x_advance = 0.;
-
- pPos->y_advance = gr_slot_advance_Y (is, grface, grfont) * yscale;
- curradvy -= pPos->y_advance;
- pPos->x_offset = gr_slot_origin_X (is) - curradvx + pPos->x_advance;
- pPos->y_offset = gr_slot_origin_Y (is) * yscale - curradvy;
- }
+ if (!HB_DIRECTION_IS_BACKWARD (buffer->props.direction))
+ pPos[-1].x_advance += gr_seg_advance_X(seg) - curradvx;
+
+ if (HB_DIRECTION_IS_BACKWARD (buffer->props.direction))
hb_buffer_reverse_clusters (buffer);
- }
if (feats) gr_featureval_destroy (feats);
gr_seg_destroy (seg);
diff --git a/src/hb-graphite2.h b/src/hb-graphite2.h
index 122c3e4..3eae54a 100644
--- a/src/hb-graphite2.h
+++ b/src/hb-graphite2.h
@@ -36,10 +36,10 @@ HB_BEGIN_DECLS
#define HB_GRAPHITE2_TAG_SILF HB_TAG('S','i','l','f')
-HB_EXTERN gr_face *
+gr_face *
hb_graphite2_face_get_gr_face (hb_face_t *face);
-HB_EXTERN gr_font *
+gr_font *
hb_graphite2_font_get_gr_font (hb_font_t *font);
diff --git a/src/hb-icu.cc b/src/hb-icu.cc
index ee54721..24cec9d 100644
--- a/src/hb-icu.cc
+++ b/src/hb-icu.cc
@@ -36,7 +36,6 @@
#include <unicode/uchar.h>
#include <unicode/unorm.h>
#include <unicode/ustring.h>
-#include <unicode/utf16.h>
#include <unicode/uversion.h>
diff --git a/src/hb-icu.h b/src/hb-icu.h
index 2db6a7b..f2f35f0 100644
--- a/src/hb-icu.h
+++ b/src/hb-icu.h
@@ -36,14 +36,14 @@
HB_BEGIN_DECLS
-HB_EXTERN hb_script_t
+hb_script_t
hb_icu_script_to_script (UScriptCode script);
-HB_EXTERN UScriptCode
+UScriptCode
hb_icu_script_from_script (hb_script_t script);
-HB_EXTERN hb_unicode_funcs_t *
+hb_unicode_funcs_t *
hb_icu_get_unicode_funcs (void);
diff --git a/src/hb-mutex-private.hh b/src/hb-mutex-private.hh
index ed27035..a8ea39c 100644
--- a/src/hb-mutex-private.hh
+++ b/src/hb-mutex-private.hh
@@ -39,13 +39,7 @@
/* We need external help for these */
-#if defined(HB_MUTEX_IMPL_INIT) \
- && defined(hb_mutex_impl_init) \
- && defined(hb_mutex_impl_lock) \
- && defined(hb_mutex_impl_unlock) \
- && defined(hb_mutex_impl_finish)
-
-/* Defined externally, i.e. in config.h; must have typedef'ed hb_mutex_impl_t as well. */
+#if 0
#elif !defined(HB_NO_MT) && (defined(_WIN32) || defined(__CYGWIN__))
@@ -119,12 +113,10 @@ typedef int hb_mutex_impl_t;
#define hb_mutex_impl_unlock(M) HB_STMT_START {} HB_STMT_END
#define hb_mutex_impl_finish(M) HB_STMT_START {} HB_STMT_END
-
#endif
#define HB_MUTEX_INIT {HB_MUTEX_IMPL_INIT}
-
struct hb_mutex_t
{
/* TODO Add tracing. */
diff --git a/src/hb-object-private.hh b/src/hb-object-private.hh
index 6b73ff9..7bd0f16 100644
--- a/src/hb-object-private.hh
+++ b/src/hb-object-private.hh
@@ -47,22 +47,19 @@
/* reference_count */
-#define HB_REFERENCE_COUNT_INERT_VALUE -1
-#define HB_REFERENCE_COUNT_POISON_VALUE -0x0000DEAD
-#define HB_REFERENCE_COUNT_INIT {HB_ATOMIC_INT_INIT(HB_REFERENCE_COUNT_INERT_VALUE)}
-
+#define HB_REFERENCE_COUNT_INVALID_VALUE ((hb_atomic_int_t) -1)
+#define HB_REFERENCE_COUNT_INVALID {HB_REFERENCE_COUNT_INVALID_VALUE}
struct hb_reference_count_t
{
hb_atomic_int_t ref_count;
- inline void init (int v) { ref_count.set_unsafe (v); }
- inline int get_unsafe (void) const { return ref_count.get_unsafe (); }
- inline int inc (void) { return ref_count.inc (); }
- inline int dec (void) { return ref_count.dec (); }
- inline void finish (void) { ref_count.set_unsafe (HB_REFERENCE_COUNT_POISON_VALUE); }
+ inline void init (int v) { ref_count = v; }
+ inline int inc (void) { return hb_atomic_int_add (const_cast<hb_atomic_int_t &> (ref_count), 1); }
+ inline int dec (void) { return hb_atomic_int_add (const_cast<hb_atomic_int_t &> (ref_count), -1); }
+ inline void finish (void) { ref_count = HB_REFERENCE_COUNT_INVALID_VALUE; }
+
+ inline bool is_invalid (void) const { return ref_count == HB_REFERENCE_COUNT_INVALID_VALUE; }
- inline bool is_inert (void) const { return ref_count.get_unsafe () == HB_REFERENCE_COUNT_INERT_VALUE; }
- inline bool is_valid (void) const { return ref_count.get_unsafe () > 0; }
};
@@ -105,7 +102,7 @@ struct hb_object_header_t
hb_reference_count_t ref_count;
hb_user_data_array_t user_data;
-#define HB_OBJECT_HEADER_STATIC {HB_REFERENCE_COUNT_INIT, HB_USER_DATA_ARRAY_INIT}
+#define HB_OBJECT_HEADER_STATIC {HB_REFERENCE_COUNT_INVALID, HB_USER_DATA_ARRAY_INIT}
private:
ASSERT_POD ();
@@ -120,7 +117,7 @@ static inline void hb_object_trace (const Type *obj, const char *function)
DEBUG_MSG (OBJECT, (void *) obj,
"%s refcount=%d",
function,
- obj ? obj->header.ref_count.get_unsafe () : 0);
+ obj ? obj->header.ref_count.ref_count : 0);
}
template <typename Type>
@@ -144,12 +141,7 @@ static inline void hb_object_init (Type *obj)
template <typename Type>
static inline bool hb_object_is_inert (const Type *obj)
{
- return unlikely (obj->header.ref_count.is_inert ());
-}
-template <typename Type>
-static inline bool hb_object_is_valid (const Type *obj)
-{
- return likely (obj->header.ref_count.is_valid ());
+ return unlikely (obj->header.ref_count.is_invalid ());
}
template <typename Type>
static inline Type *hb_object_reference (Type *obj)
@@ -157,7 +149,6 @@ static inline Type *hb_object_reference (Type *obj)
hb_object_trace (obj, HB_FUNC);
if (unlikely (!obj || hb_object_is_inert (obj)))
return obj;
- assert (hb_object_is_valid (obj));
obj->header.ref_count.inc ();
return obj;
}
@@ -167,7 +158,6 @@ static inline bool hb_object_destroy (Type *obj)
hb_object_trace (obj, HB_FUNC);
if (unlikely (!obj || hb_object_is_inert (obj)))
return false;
- assert (hb_object_is_valid (obj));
if (obj->header.ref_count.dec () != 1)
return false;
@@ -184,7 +174,6 @@ static inline bool hb_object_set_user_data (Type *obj,
{
if (unlikely (!obj || hb_object_is_inert (obj)))
return false;
- assert (hb_object_is_valid (obj));
return obj->header.user_data.set (key, data, destroy, replace);
}
@@ -194,7 +183,6 @@ static inline void *hb_object_get_user_data (Type *obj,
{
if (unlikely (!obj || hb_object_is_inert (obj)))
return NULL;
- assert (hb_object_is_valid (obj));
return obj->header.user_data.get (key);
}
diff --git a/src/hb-open-file-private.hh b/src/hb-open-file-private.hh
index 5357ddc..178bc7c 100644
--- a/src/hb-open-file-private.hh
+++ b/src/hb-open-file-private.hh
@@ -56,7 +56,7 @@ typedef struct TableRecord
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this));
+ return TRACE_RETURN (c->check_struct (this));
}
Tag tag; /* 4-byte identifier. */
@@ -106,7 +106,7 @@ typedef struct OffsetTable
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) && c->check_array (tables, TableRecord::static_size, numTables));
+ return TRACE_RETURN (c->check_struct (this) && c->check_array (tables, TableRecord::static_size, numTables));
}
protected:
@@ -135,12 +135,12 @@ struct TTCHeaderVersion1
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (table.sanitize (c, this));
+ return TRACE_RETURN (table.sanitize (c, this));
}
protected:
Tag ttcTag; /* TrueType Collection ID string: 'ttcf' */
- FixedVersion<>version; /* Version of the TTC Header (1.0),
+ FixedVersion version; /* Version of the TTC Header (1.0),
* 0x00010000u */
ArrayOf<OffsetTo<OffsetTable, ULONG>, ULONG>
table; /* Array of offsets to the OffsetTable for each font
@@ -175,11 +175,11 @@ struct TTCHeader
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (unlikely (!u.header.version.sanitize (c))) return_trace (false);
+ if (unlikely (!u.header.version.sanitize (c))) return TRACE_RETURN (false);
switch (u.header.version.major) {
case 2: /* version 2 is compatible with version 1 */
- case 1: return_trace (u.version1.sanitize (c));
- default:return_trace (true);
+ case 1: return TRACE_RETURN (u.version1.sanitize (c));
+ default:return TRACE_RETURN (true);
}
}
@@ -187,7 +187,7 @@ struct TTCHeader
union {
struct {
Tag ttcTag; /* TrueType Collection ID string: 'ttcf' */
- FixedVersion<>version; /* Version of the TTC Header (1.0 or 2.0),
+ FixedVersion version; /* Version of the TTC Header (1.0 or 2.0),
* 0x00010000u or 0x00020000u */
} header;
TTCHeaderVersion1 version1;
@@ -240,14 +240,14 @@ struct OpenTypeFontFile
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (unlikely (!u.tag.sanitize (c))) return_trace (false);
+ if (unlikely (!u.tag.sanitize (c))) return TRACE_RETURN (false);
switch (u.tag) {
case CFFTag: /* All the non-collection tags */
case TrueTag:
case Typ1Tag:
- case TrueTypeTag: return_trace (u.fontFace.sanitize (c));
- case TTCTag: return_trace (u.ttcHeader.sanitize (c));
- default: return_trace (true);
+ case TrueTypeTag: return TRACE_RETURN (u.fontFace.sanitize (c));
+ case TTCTag: return TRACE_RETURN (u.ttcHeader.sanitize (c));
+ default: return TRACE_RETURN (true);
}
}
diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh
index df683ca..75a0f56 100644
--- a/src/hb-open-type-private.hh
+++ b/src/hb-open-type-private.hh
@@ -101,8 +101,10 @@ static inline Type& StructAfter(TObject &X)
#define DEFINE_SIZE_STATIC(size) \
DEFINE_INSTANCE_ASSERTION (sizeof (*this) == (size)); \
static const unsigned int static_size = (size); \
- static const unsigned int min_size = (size); \
- inline unsigned int get_size (void) const { return (size); }
+ static const unsigned int min_size = (size)
+
+/* Size signifying variable-sized array */
+#define VAR 1
#define DEFINE_SIZE_UNION(size, _member) \
DEFINE_INSTANCE_ASSERTION (this->u._member.static_size == (size)); \
@@ -152,20 +154,6 @@ ASSERT_STATIC (Type::min_size + 1 <= sizeof (_Null##Type))
#define Null(Type) Null<Type>()
-/*
- * Dispatch
- */
-
-template <typename Context, typename Return, unsigned int MaxDebugDepth>
-struct hb_dispatch_context_t
-{
- static const unsigned int max_debug_depth = MaxDebugDepth;
- typedef Return return_t;
- template <typename T, typename F>
- inline bool may_dispatch (const T *obj, const F *format) { return true; }
- static return_t no_dispatch_return_value (void) { return Context::default_return_value (); }
-};
-
/*
* Sanitize
@@ -183,26 +171,20 @@ struct hb_dispatch_context_t
/* This limits sanitizing time on really broken fonts. */
#ifndef HB_SANITIZE_MAX_EDITS
-#define HB_SANITIZE_MAX_EDITS 32
+#define HB_SANITIZE_MAX_EDITS 100
#endif
-struct hb_sanitize_context_t :
- hb_dispatch_context_t<hb_sanitize_context_t, bool, HB_DEBUG_SANITIZE>
+struct hb_sanitize_context_t
{
- inline hb_sanitize_context_t (void) :
- debug_depth (0),
- start (NULL), end (NULL),
- writable (false), edit_count (0),
- blob (NULL) {}
-
inline const char *get_name (void) { return "SANITIZE"; }
+ static const unsigned int max_debug_depth = HB_DEBUG_SANITIZE;
+ typedef bool return_t;
template <typename T, typename F>
inline bool may_dispatch (const T *obj, const F *format)
{ return format->sanitize (this); }
template <typename T>
inline return_t dispatch (const T &obj) { return obj.sanitize (this); }
static return_t default_return_value (void) { return true; }
- static return_t no_dispatch_return_value (void) { return false; }
bool stop_sublookup_iteration (const return_t r) const { return !r; }
inline void init (hb_blob_t *b)
@@ -313,7 +295,7 @@ template <typename Type>
struct Sanitizer
{
static hb_blob_t *sanitize (hb_blob_t *blob) {
- hb_sanitize_context_t c[1];
+ hb_sanitize_context_t c[1] = {{0, NULL, NULL, false, 0, NULL}};
bool sane;
/* TODO is_sane() stuff */
@@ -397,9 +379,9 @@ struct Sanitizer
struct hb_serialize_context_t
{
- inline hb_serialize_context_t (void *start_, unsigned int size)
+ inline hb_serialize_context_t (void *start, unsigned int size)
{
- this->start = (char *) start_;
+ this->start = (char *) start;
this->end = this->start + size;
this->ran_out_of_room = false;
@@ -493,10 +475,10 @@ struct hb_serialize_context_t
return reinterpret_cast<Type *> (&obj);
}
- inline void truncate (void *new_head)
+ inline void truncate (void *head)
{
- assert (this->start < new_head && new_head <= this->head);
- this->head = (char *) new_head;
+ assert (this->start < head && head <= this->head);
+ this->head = (char *) head;
}
unsigned int debug_depth;
@@ -554,20 +536,6 @@ struct Supplier
template <typename Type, int Bytes> struct BEInt;
template <typename Type>
-struct BEInt<Type, 1>
-{
- public:
- inline void set (Type V)
- {
- v = V;
- }
- inline operator Type (void) const
- {
- return v;
- }
- private: uint8_t v;
-};
-template <typename Type>
struct BEInt<Type, 2>
{
public:
@@ -642,7 +610,7 @@ struct IntType
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (likely (c->check_struct (this)));
+ return TRACE_RETURN (likely (c->check_struct (this)));
}
protected:
BEInt<Type, Size> v;
@@ -650,7 +618,7 @@ struct IntType
DEFINE_SIZE_STATIC (Size);
};
-typedef IntType<uint8_t , 1> BYTE; /* 8-bit unsigned integer. */
+typedef uint8_t BYTE; /* 8-bit unsigned integer. */
typedef IntType<uint16_t, 2> USHORT; /* 16-bit unsigned integer. */
typedef IntType<int16_t, 2> SHORT; /* 16-bit signed integer. */
typedef IntType<uint32_t, 4> ULONG; /* 32-bit unsigned integer. */
@@ -663,24 +631,6 @@ typedef SHORT FWORD;
/* 16-bit unsigned integer (USHORT) that describes a quantity in FUnits. */
typedef USHORT UFWORD;
-/* 16-bit signed fixed number with the low 14 bits of fraction (2.14). */
-struct F2DOT14 : SHORT
-{
- //inline float to_float (void) const { return ???; }
- //inline void set_float (float f) { v.set (f * ???); }
- public:
- DEFINE_SIZE_STATIC (2);
-};
-
-/* 32-bit signed fixed-point number (16.16). */
-struct Fixed: LONG
-{
- //inline float to_float (void) const { return ???; }
- //inline void set_float (float f) { v.set (f * ???); }
- public:
- DEFINE_SIZE_STATIC (4);
-};
-
/* Date represented in number of seconds since 12:00 midnight, January 1,
* 1904. The value is represented as a signed 64-bit integer. */
struct LONGDATETIME
@@ -688,7 +638,7 @@ struct LONGDATETIME
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (likely (c->check_struct (this)));
+ return TRACE_RETURN (likely (c->check_struct (this)));
}
protected:
LONG major;
@@ -758,21 +708,20 @@ struct CheckSum : ULONG
* Version Numbers
*/
-template <typename FixedType=USHORT>
struct FixedVersion
{
- inline uint32_t to_int (void) const { return (major << (sizeof(FixedType) * 8)) + minor; }
+ inline uint32_t to_int (void) const { return (major << 16) + minor; }
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this));
+ return TRACE_RETURN (c->check_struct (this));
}
- FixedType major;
- FixedType minor;
+ USHORT major;
+ USHORT minor;
public:
- DEFINE_SIZE_STATIC (2 * sizeof(FixedType));
+ DEFINE_SIZE_STATIC (4);
};
@@ -802,21 +751,21 @@ struct OffsetTo : Offset<OffsetType>
inline bool sanitize (hb_sanitize_context_t *c, const void *base) const
{
TRACE_SANITIZE (this);
- if (unlikely (!c->check_struct (this))) return_trace (false);
+ if (unlikely (!c->check_struct (this))) return TRACE_RETURN (false);
unsigned int offset = *this;
- if (unlikely (!offset)) return_trace (true);
+ if (unlikely (!offset)) return TRACE_RETURN (true);
const Type &obj = StructAtOffset<Type> (base, offset);
- return_trace (likely (obj.sanitize (c)) || neuter (c));
+ return TRACE_RETURN (likely (obj.sanitize (c)) || neuter (c));
}
template <typename T>
inline bool sanitize (hb_sanitize_context_t *c, const void *base, T user_data) const
{
TRACE_SANITIZE (this);
- if (unlikely (!c->check_struct (this))) return_trace (false);
+ if (unlikely (!c->check_struct (this))) return TRACE_RETURN (false);
unsigned int offset = *this;
- if (unlikely (!offset)) return_trace (true);
+ if (unlikely (!offset)) return TRACE_RETURN (true);
const Type &obj = StructAtOffset<Type> (base, offset);
- return_trace (likely (obj.sanitize (c, user_data)) || neuter (c));
+ return TRACE_RETURN (likely (obj.sanitize (c, user_data)) || neuter (c));
}
/* Set the offset to Null */
@@ -867,10 +816,10 @@ struct ArrayOf
unsigned int items_len)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (*this))) return_trace (false);
+ if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false);
len.set (items_len); /* TODO(serialize) Overflow? */
- if (unlikely (!c->extend (*this))) return_trace (false);
- return_trace (true);
+ if (unlikely (!c->extend (*this))) return TRACE_RETURN (false);
+ return TRACE_RETURN (true);
}
inline bool serialize (hb_serialize_context_t *c,
@@ -878,17 +827,17 @@ struct ArrayOf
unsigned int items_len)
{
TRACE_SERIALIZE (this);
- if (unlikely (!serialize (c, items_len))) return_trace (false);
+ if (unlikely (!serialize (c, items_len))) return TRACE_RETURN (false);
for (unsigned int i = 0; i < items_len; i++)
array[i] = items[i];
items.advance (items_len);
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (unlikely (!sanitize_shallow (c))) return_trace (false);
+ if (unlikely (!sanitize_shallow (c))) return TRACE_RETURN (false);
/* Note: for structs that do not reference other structs,
* we do not need to call their sanitize() as we already did
@@ -899,28 +848,28 @@ struct ArrayOf
*/
(void) (false && array[0].sanitize (c));
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c, const void *base) const
{
TRACE_SANITIZE (this);
- if (unlikely (!sanitize_shallow (c))) return_trace (false);
+ if (unlikely (!sanitize_shallow (c))) return TRACE_RETURN (false);
unsigned int count = len;
for (unsigned int i = 0; i < count; i++)
if (unlikely (!array[i].sanitize (c, base)))
- return_trace (false);
- return_trace (true);
+ return TRACE_RETURN (false);
+ return TRACE_RETURN (true);
}
template <typename T>
inline bool sanitize (hb_sanitize_context_t *c, const void *base, T user_data) const
{
TRACE_SANITIZE (this);
- if (unlikely (!sanitize_shallow (c))) return_trace (false);
+ if (unlikely (!sanitize_shallow (c))) return TRACE_RETURN (false);
unsigned int count = len;
for (unsigned int i = 0; i < count; i++)
if (unlikely (!array[i].sanitize (c, base, user_data)))
- return_trace (false);
- return_trace (true);
+ return TRACE_RETURN (false);
+ return TRACE_RETURN (true);
}
template <typename SearchType>
@@ -937,7 +886,7 @@ struct ArrayOf
inline bool sanitize_shallow (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) && c->check_array (array, Type::static_size, len));
+ return TRACE_RETURN (c->check_struct (this) && c->check_array (this, Type::static_size, len));
}
public:
@@ -964,13 +913,13 @@ struct OffsetListOf : OffsetArrayOf<Type>
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (OffsetArrayOf<Type>::sanitize (c, this));
+ return TRACE_RETURN (OffsetArrayOf<Type>::sanitize (c, this));
}
template <typename T>
inline bool sanitize (hb_sanitize_context_t *c, T user_data) const
{
TRACE_SANITIZE (this);
- return_trace (OffsetArrayOf<Type>::sanitize (c, this, user_data));
+ return TRACE_RETURN (OffsetArrayOf<Type>::sanitize (c, this, user_data));
}
};
@@ -992,14 +941,14 @@ struct HeadlessArrayOf
unsigned int items_len)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (*this))) return_trace (false);
+ if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false);
len.set (items_len); /* TODO(serialize) Overflow? */
- if (unlikely (!items_len)) return_trace (true);
- if (unlikely (!c->extend (*this))) return_trace (false);
+ if (unlikely (!items_len)) return TRACE_RETURN (true);
+ if (unlikely (!c->extend (*this))) return TRACE_RETURN (false);
for (unsigned int i = 0; i < items_len - 1; i++)
array[i] = items[i];
items.advance (items_len - 1);
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool sanitize_shallow (hb_sanitize_context_t *c) const
@@ -1011,7 +960,7 @@ struct HeadlessArrayOf
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (unlikely (!sanitize_shallow (c))) return_trace (false);
+ if (unlikely (!sanitize_shallow (c))) return TRACE_RETURN (false);
/* Note: for structs that do not reference other structs,
* we do not need to call their sanitize() as we already did
@@ -1022,7 +971,7 @@ struct HeadlessArrayOf
*/
(void) (false && array[0].sanitize (c));
- return_trace (true);
+ return TRACE_RETURN (true);
}
LenType len;
diff --git a/src/hb-ot-cmap-table.hh b/src/hb-ot-cmap-table.hh
index d7a94a1..0482312 100644
--- a/src/hb-ot-cmap-table.hh
+++ b/src/hb-ot-cmap-table.hh
@@ -54,7 +54,7 @@ struct CmapSubtableFormat0
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this));
+ return TRACE_RETURN (c->check_struct (this));
}
protected:
@@ -69,85 +69,68 @@ struct CmapSubtableFormat0
struct CmapSubtableFormat4
{
- struct accelerator_t
+ inline bool get_glyph (hb_codepoint_t codepoint, hb_codepoint_t *glyph) const
{
- inline void init (const CmapSubtableFormat4 *subtable)
- {
- segCount = subtable->segCountX2 / 2;
- endCount = subtable->values;
- startCount = endCount + segCount + 1;
- idDelta = startCount + segCount;
- idRangeOffset = idDelta + segCount;
- glyphIdArray = idRangeOffset + segCount;
- glyphIdArrayLength = (subtable->length - 16 - 8 * segCount) / 2;
- }
-
- static inline bool get_glyph_func (const void *obj, hb_codepoint_t codepoint, hb_codepoint_t *glyph)
- {
- const accelerator_t *thiz = (const accelerator_t *) obj;
-
- /* Custom two-array bsearch. */
- int min = 0, max = (int) thiz->segCount - 1;
- const USHORT *startCount = thiz->startCount;
- const USHORT *endCount = thiz->endCount;
- unsigned int i;
- while (min <= max)
- {
- int mid = (min + max) / 2;
- if (codepoint < startCount[mid])
- max = mid - 1;
- else if (codepoint > endCount[mid])
- min = mid + 1;
- else
- {
- i = mid;
- goto found;
- }
- }
- return false;
-
- found:
- hb_codepoint_t gid;
- unsigned int rangeOffset = thiz->idRangeOffset[i];
- if (rangeOffset == 0)
- gid = codepoint + thiz->idDelta[i];
- else
- {
- /* Somebody has been smoking... */
- unsigned int index = rangeOffset / 2 + (codepoint - thiz->startCount[i]) + i - thiz->segCount;
- if (unlikely (index >= thiz->glyphIdArrayLength))
- return false;
- gid = thiz->glyphIdArray[index];
- if (unlikely (!gid))
- return false;
- gid += thiz->idDelta[i];
- }
-
- *glyph = gid & 0xFFFFu;
- return true;
- }
-
+ unsigned int segCount;
const USHORT *endCount;
const USHORT *startCount;
const USHORT *idDelta;
const USHORT *idRangeOffset;
const USHORT *glyphIdArray;
- unsigned int segCount;
unsigned int glyphIdArrayLength;
- };
- inline bool get_glyph (hb_codepoint_t codepoint, hb_codepoint_t *glyph) const
- {
- accelerator_t accel;
- accel.init (this);
- return accel.get_glyph_func (&accel, codepoint, glyph);
+ segCount = this->segCountX2 / 2;
+ endCount = this->values;
+ startCount = endCount + segCount + 1;
+ idDelta = startCount + segCount;
+ idRangeOffset = idDelta + segCount;
+ glyphIdArray = idRangeOffset + segCount;
+ glyphIdArrayLength = (this->length - 16 - 8 * segCount) / 2;
+
+ /* Custom two-array bsearch. */
+ int min = 0, max = (int) segCount - 1;
+ unsigned int i;
+ while (min <= max)
+ {
+ int mid = (min + max) / 2;
+ if (codepoint < startCount[mid])
+ max = mid - 1;
+ else if (codepoint > endCount[mid])
+ min = mid + 1;
+ else
+ {
+ i = mid;
+ goto found;
+ }
+ }
+ return false;
+
+ found:
+ hb_codepoint_t gid;
+ unsigned int rangeOffset = idRangeOffset[i];
+ if (rangeOffset == 0)
+ gid = codepoint + idDelta[i];
+ else
+ {
+ /* Somebody has been smoking... */
+ unsigned int index = rangeOffset / 2 + (codepoint - startCount[i]) + i - segCount;
+ if (unlikely (index >= glyphIdArrayLength))
+ return false;
+ gid = glyphIdArray[index];
+ if (unlikely (!gid))
+ return false;
+ gid += idDelta[i];
+ }
+
+ *glyph = gid & 0xFFFFu;
+ return true;
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
if (unlikely (!c->check_struct (this)))
- return_trace (false);
+ return TRACE_RETURN (false);
if (unlikely (!c->check_range (this, length)))
{
@@ -158,10 +141,10 @@ struct CmapSubtableFormat4
(uintptr_t) (c->end -
(char *) this));
if (!c->try_set (&length, new_length))
- return_trace (false);
+ return TRACE_RETURN (false);
}
- return_trace (16 + 4 * (unsigned int) segCountX2 <= length);
+ return TRACE_RETURN (16 + 4 * (unsigned int) segCountX2 <= length);
}
protected:
@@ -204,7 +187,7 @@ struct CmapSubtableLongGroup
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this));
+ return TRACE_RETURN (c->check_struct (this));
}
private:
@@ -232,7 +215,7 @@ struct CmapSubtableTrimmed
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) && glyphIdArray.sanitize (c));
+ return TRACE_RETURN (c->check_struct (this) && glyphIdArray.sanitize (c));
}
protected:
@@ -265,7 +248,7 @@ struct CmapSubtableLongSegmented
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) && groups.sanitize (c));
+ return TRACE_RETURN (c->check_struct (this) && groups.sanitize (c));
}
protected:
@@ -312,7 +295,7 @@ struct UnicodeValueRange
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this));
+ return TRACE_RETURN (c->check_struct (this));
}
UINT24 startUnicodeValue; /* First value in this range. */
@@ -334,7 +317,7 @@ struct UVSMapping
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this));
+ return TRACE_RETURN (c->check_struct (this));
}
UINT24 unicodeValue; /* Base Unicode value of the UVS */
@@ -374,9 +357,9 @@ struct VariationSelectorRecord
inline bool sanitize (hb_sanitize_context_t *c, const void *base) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) &&
- defaultUVS.sanitize (c, base) &&
- nonDefaultUVS.sanitize (c, base));
+ return TRACE_RETURN (c->check_struct (this) &&
+ defaultUVS.sanitize (c, base) &&
+ nonDefaultUVS.sanitize (c, base));
}
UINT24 varSelector; /* Variation selector. */
@@ -400,12 +383,12 @@ struct CmapSubtableFormat14
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) &&
- record.sanitize (c, this));
+ return TRACE_RETURN (c->check_struct (this) &&
+ record.sanitize (c, this));
}
protected:
- USHORT format; /* Format number is set to 14. */
+ USHORT format; /* Format number is set to 0. */
ULONG lengthZ; /* Byte length of this subtable. */
SortedArrayOf<VariationSelectorRecord, ULONG>
record; /* Variation selector records; sorted
@@ -433,23 +416,33 @@ struct CmapSubtable
}
}
+ inline glyph_variant_t get_glyph_variant (hb_codepoint_t codepoint,
+ hb_codepoint_t variation_selector,
+ hb_codepoint_t *glyph) const
+ {
+ switch (u.format) {
+ case 14: return u.format14.get_glyph_variant(codepoint, variation_selector, glyph);
+ default: return GLYPH_VARIANT_NOT_FOUND;
+ }
+ }
+
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (!u.format.sanitize (c)) return_trace (false);
+ if (!u.format.sanitize (c)) return TRACE_RETURN (false);
switch (u.format) {
- case 0: return_trace (u.format0 .sanitize (c));
- case 4: return_trace (u.format4 .sanitize (c));
- case 6: return_trace (u.format6 .sanitize (c));
- case 10: return_trace (u.format10.sanitize (c));
- case 12: return_trace (u.format12.sanitize (c));
- case 13: return_trace (u.format13.sanitize (c));
- case 14: return_trace (u.format14.sanitize (c));
- default:return_trace (true);
+ case 0: return TRACE_RETURN (u.format0 .sanitize (c));
+ case 4: return TRACE_RETURN (u.format4 .sanitize (c));
+ case 6: return TRACE_RETURN (u.format6 .sanitize (c));
+ case 10: return TRACE_RETURN (u.format10.sanitize (c));
+ case 12: return TRACE_RETURN (u.format12.sanitize (c));
+ case 13: return TRACE_RETURN (u.format13.sanitize (c));
+ case 14: return TRACE_RETURN (u.format14.sanitize (c));
+ default:return TRACE_RETURN (true);
}
}
- public:
+ protected:
union {
USHORT format; /* Format identifier */
CmapSubtableFormat0 format0;
@@ -480,8 +473,8 @@ struct EncodingRecord
inline bool sanitize (hb_sanitize_context_t *c, const void *base) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) &&
- subtable.sanitize (c, base));
+ return TRACE_RETURN (c->check_struct (this) &&
+ subtable.sanitize (c, base));
}
USHORT platformID; /* Platform ID. */
@@ -516,9 +509,9 @@ struct cmap
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) &&
- likely (version == 0) &&
- encodingRecord.sanitize (c, this));
+ return TRACE_RETURN (c->check_struct (this) &&
+ likely (version == 0) &&
+ encodingRecord.sanitize (c, this));
}
USHORT version; /* Table version number (0). */
diff --git a/src/hb-ot-font.cc b/src/hb-ot-font.cc
index 39fc849..2af2f54 100644
--- a/src/hb-ot-font.cc
+++ b/src/hb-ot-font.cc
@@ -31,12 +31,8 @@
#include "hb-font-private.hh"
#include "hb-ot-cmap-table.hh"
-#include "hb-ot-glyf-table.hh"
-#include "hb-ot-head-table.hh"
#include "hb-ot-hhea-table.hh"
#include "hb-ot-hmtx-table.hh"
-#include "hb-ot-os2-table.hh"
-//#include "hb-ot-post-table.hh"
struct hb_ot_face_metrics_accelerator_t
@@ -44,58 +40,24 @@ struct hb_ot_face_metrics_accelerator_t
unsigned int num_metrics;
unsigned int num_advances;
unsigned int default_advance;
- unsigned short ascender;
- unsigned short descender;
- unsigned short line_gap;
-
const OT::_mtx *table;
hb_blob_t *blob;
inline void init (hb_face_t *face,
- hb_tag_t _hea_tag,
- hb_tag_t _mtx_tag,
- hb_tag_t os2_tag)
+ hb_tag_t _hea_tag, hb_tag_t _mtx_tag,
+ unsigned int default_advance)
{
- this->default_advance = face->get_upem ();
-
- bool got_font_extents = false;
- if (os2_tag)
- {
- hb_blob_t *os2_blob = OT::Sanitizer<OT::os2>::sanitize (face->reference_table (os2_tag));
- const OT::os2 *os2 = OT::Sanitizer<OT::os2>::lock_instance (os2_blob);
-#define USE_TYPO_METRICS (1u<<7)
- if (0 != (os2->fsSelection & USE_TYPO_METRICS))
- {
- this->ascender = os2->sTypoAscender;
- this->descender = os2->sTypoDescender;
- this->line_gap = os2->sTypoLineGap;
- got_font_extents = (this->ascender | this->descender) != 0;
- }
- hb_blob_destroy (os2_blob);
- }
+ this->default_advance = default_advance;
+ this->num_metrics = face->get_num_glyphs ();
hb_blob_t *_hea_blob = OT::Sanitizer<OT::_hea>::sanitize (face->reference_table (_hea_tag));
const OT::_hea *_hea = OT::Sanitizer<OT::_hea>::lock_instance (_hea_blob);
this->num_advances = _hea->numberOfLongMetrics;
- if (!got_font_extents)
- {
- this->ascender = _hea->ascender;
- this->descender = _hea->descender;
- this->line_gap = _hea->lineGap;
- }
hb_blob_destroy (_hea_blob);
this->blob = OT::Sanitizer<OT::_mtx>::sanitize (face->reference_table (_mtx_tag));
-
- /* Cap num_metrics() and num_advances() based on table length. */
- unsigned int len = hb_blob_get_length (this->blob);
- if (unlikely (this->num_advances * 4 > len))
- this->num_advances = len / 4;
- this->num_metrics = this->num_advances + (len - 4 * this->num_advances) / 2;
-
- /* We MUST set num_metrics to zero if num_advances is zero.
- * Our get_advance() depends on that. */
- if (unlikely (!this->num_advances))
+ if (unlikely (!this->num_advances ||
+ 2 * (this->num_advances + this->num_metrics) < hb_blob_get_length (this->blob)))
{
this->num_metrics = this->num_advances = 0;
hb_blob_destroy (this->blob);
@@ -114,8 +76,8 @@ struct hb_ot_face_metrics_accelerator_t
if (unlikely (glyph >= this->num_metrics))
{
/* If this->num_metrics is zero, it means we don't have the metrics table
- * for this direction: return default advance. Otherwise, it means that the
- * glyph index is out of bound: return zero. */
+ * for this direction: return one EM. Otherwise, it means that the glyph
+ * index is out of bound: return zero. */
if (this->num_metrics)
return 0;
else
@@ -129,99 +91,10 @@ struct hb_ot_face_metrics_accelerator_t
}
};
-struct hb_ot_face_glyf_accelerator_t
-{
- bool short_offset;
- unsigned int num_glyphs;
- const OT::loca *loca;
- const OT::glyf *glyf;
- hb_blob_t *loca_blob;
- hb_blob_t *glyf_blob;
- unsigned int glyf_len;
-
- inline void init (hb_face_t *face)
- {
- hb_blob_t *head_blob = OT::Sanitizer<OT::head>::sanitize (face->reference_table (HB_OT_TAG_head));
- const OT::head *head = OT::Sanitizer<OT::head>::lock_instance (head_blob);
- if ((unsigned int) head->indexToLocFormat > 1 || head->glyphDataFormat != 0)
- {
- /* Unknown format. Leave num_glyphs=0, that takes care of disabling us. */
- hb_blob_destroy (head_blob);
- return;
- }
- this->short_offset = 0 == head->indexToLocFormat;
- hb_blob_destroy (head_blob);
-
- this->loca_blob = OT::Sanitizer<OT::loca>::sanitize (face->reference_table (HB_OT_TAG_loca));
- this->loca = OT::Sanitizer<OT::loca>::lock_instance (this->loca_blob);
- this->glyf_blob = OT::Sanitizer<OT::glyf>::sanitize (face->reference_table (HB_OT_TAG_glyf));
- this->glyf = OT::Sanitizer<OT::glyf>::lock_instance (this->glyf_blob);
-
- this->num_glyphs = MAX (1u, hb_blob_get_length (this->loca_blob) / (this->short_offset ? 2 : 4)) - 1;
- this->glyf_len = hb_blob_get_length (this->glyf_blob);
- }
-
- inline void fini (void)
- {
- hb_blob_destroy (this->loca_blob);
- hb_blob_destroy (this->glyf_blob);
- }
-
- inline bool get_extents (hb_codepoint_t glyph,
- hb_glyph_extents_t *extents) const
- {
- if (unlikely (glyph >= this->num_glyphs))
- return false;
-
- unsigned int start_offset, end_offset;
- if (this->short_offset)
- {
- start_offset = 2 * this->loca->u.shortsZ[glyph];
- end_offset = 2 * this->loca->u.shortsZ[glyph + 1];
- }
- else
- {
- start_offset = this->loca->u.longsZ[glyph];
- end_offset = this->loca->u.longsZ[glyph + 1];
- }
-
- if (start_offset > end_offset || end_offset > this->glyf_len)
- return false;
-
- if (end_offset - start_offset < OT::glyfGlyphHeader::static_size)
- return true; /* Empty glyph; zero extents. */
-
- const OT::glyfGlyphHeader &glyph_header = OT::StructAtOffset<OT::glyfGlyphHeader> (this->glyf, start_offset);
-
- extents->x_bearing = MIN (glyph_header.xMin, glyph_header.xMax);
- extents->y_bearing = MAX (glyph_header.yMin, glyph_header.yMax);
- extents->width = MAX (glyph_header.xMin, glyph_header.xMax) - extents->x_bearing;
- extents->height = MIN (glyph_header.yMin, glyph_header.yMax) - extents->y_bearing;
-
- return true;
- }
-};
-
-typedef bool (*hb_cmap_get_glyph_func_t) (const void *obj,
- hb_codepoint_t codepoint,
- hb_codepoint_t *glyph);
-
-template <typename Type>
-static inline bool get_glyph_from (const void *obj,
- hb_codepoint_t codepoint,
- hb_codepoint_t *glyph)
-{
- const Type *typed_obj = (const Type *) obj;
- return typed_obj->get_glyph (codepoint, glyph);
-}
-
struct hb_ot_face_cmap_accelerator_t
{
- hb_cmap_get_glyph_func_t get_glyph_func;
- const void *get_glyph_data;
- OT::CmapSubtableFormat4::accelerator_t format4_accel;
-
- const OT::CmapSubtableFormat14 *uvs_table;
+ const OT::CmapSubtable *table;
+ const OT::CmapSubtable *uvs_table;
hb_blob_t *blob;
inline void init (hb_face_t *face)
@@ -229,7 +102,7 @@ struct hb_ot_face_cmap_accelerator_t
this->blob = OT::Sanitizer<OT::cmap>::sanitize (face->reference_table (HB_OT_TAG_cmap));
const OT::cmap *cmap = OT::Sanitizer<OT::cmap>::lock_instance (this->blob);
const OT::CmapSubtable *subtable = NULL;
- const OT::CmapSubtableFormat14 *subtable_uvs = NULL;
+ const OT::CmapSubtable *subtable_uvs = NULL;
/* 32-bit subtables. */
if (!subtable) subtable = cmap->find_subtable (3, 10);
@@ -241,35 +114,16 @@ 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);
/* Meh. */
if (!subtable) subtable = &OT::Null(OT::CmapSubtable);
/* UVS subtable. */
- if (!subtable_uvs)
- {
- const OT::CmapSubtable *st = cmap->find_subtable (0, 5);
- if (st && st->u.format == 14)
- subtable_uvs = &st->u.format14;
- }
+ if (!subtable_uvs) subtable_uvs = cmap->find_subtable (0, 5);
/* Meh. */
- if (!subtable_uvs) subtable_uvs = &OT::Null(OT::CmapSubtableFormat14);
+ if (!subtable_uvs) subtable_uvs = &OT::Null(OT::CmapSubtable);
+ this->table = subtable;
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;
- }
- break;
- }
}
inline void fini (void)
@@ -277,92 +131,49 @@ struct hb_ot_face_cmap_accelerator_t
hb_blob_destroy (this->blob);
}
- inline bool get_nominal_glyph (hb_codepoint_t unicode,
- hb_codepoint_t *glyph) const
- {
- return this->get_glyph_func (this->get_glyph_data, unicode, glyph);
- }
-
- inline bool get_variation_glyph (hb_codepoint_t unicode,
- hb_codepoint_t variation_selector,
- hb_codepoint_t *glyph) const
- {
- switch (this->uvs_table->get_glyph_variant (unicode,
- variation_selector,
- glyph))
- {
- case OT::GLYPH_VARIANT_NOT_FOUND: return false;
- case OT::GLYPH_VARIANT_FOUND: return true;
- case OT::GLYPH_VARIANT_USE_DEFAULT: break;
- }
-
- return get_nominal_glyph (unicode, glyph);
- }
-};
-
-template <typename T>
-struct hb_lazy_loader_t
-{
- inline void init (hb_face_t *face_)
- {
- face = face_;
- instance = NULL;
- }
-
- inline void fini (void)
- {
- if (instance && instance != &OT::Null(T))
- {
- instance->fini();
- free (instance);
- }
- }
-
- inline const T* operator-> (void) const
+ inline bool get_glyph (hb_codepoint_t unicode,
+ hb_codepoint_t variation_selector,
+ hb_codepoint_t *glyph) const
{
- retry:
- T *p = (T *) hb_atomic_ptr_get (&instance);
- if (unlikely (!p))
+ if (unlikely (variation_selector))
{
- p = (T *) calloc (1, sizeof (T));
- if (unlikely (!p))
- return &OT::Null(T);
- p->init (face);
- if (unlikely (!hb_atomic_ptr_cmpexch (const_cast<T **>(&instance), NULL, p)))
+ switch (this->uvs_table->get_glyph_variant (unicode,
+ variation_selector,
+ glyph))
{
- p->fini ();
- goto retry;
+ case OT::GLYPH_VARIANT_NOT_FOUND: return false;
+ case OT::GLYPH_VARIANT_FOUND: return true;
+ case OT::GLYPH_VARIANT_USE_DEFAULT: break;
}
}
- return p;
- }
- private:
- hb_face_t *face;
- T *instance;
+ return this->table->get_glyph (unicode, glyph);
+ }
};
+
struct hb_ot_font_t
{
hb_ot_face_cmap_accelerator_t cmap;
hb_ot_face_metrics_accelerator_t h_metrics;
hb_ot_face_metrics_accelerator_t v_metrics;
- hb_lazy_loader_t<hb_ot_face_glyf_accelerator_t> glyf;
};
static hb_ot_font_t *
-_hb_ot_font_create (hb_face_t *face)
+_hb_ot_font_create (hb_font_t *font)
{
hb_ot_font_t *ot_font = (hb_ot_font_t *) calloc (1, sizeof (hb_ot_font_t));
+ hb_face_t *face = font->face;
if (unlikely (!ot_font))
return NULL;
+ unsigned int upem = face->get_upem ();
+
ot_font->cmap.init (face);
- ot_font->h_metrics.init (face, HB_OT_TAG_hhea, HB_OT_TAG_hmtx, HB_OT_TAG_os2);
- ot_font->v_metrics.init (face, HB_OT_TAG_vhea, HB_OT_TAG_vmtx, HB_TAG_NONE); /* TODO Can we do this lazily? */
- ot_font->glyf.init (face);
+ ot_font->h_metrics.init (face, HB_OT_TAG_hhea, HB_OT_TAG_hmtx, upem>>1);
+ ot_font->v_metrics.init (face, HB_OT_TAG_vhea, HB_OT_TAG_vmtx, upem); /* TODO Can we do this lazily? */
return ot_font;
}
@@ -373,54 +184,88 @@ _hb_ot_font_destroy (hb_ot_font_t *ot_font)
ot_font->cmap.fini ();
ot_font->h_metrics.fini ();
ot_font->v_metrics.fini ();
- ot_font->glyf.fini ();
free (ot_font);
}
static hb_bool_t
-hb_ot_get_nominal_glyph (hb_font_t *font HB_UNUSED,
- void *font_data,
- hb_codepoint_t unicode,
- hb_codepoint_t *glyph,
- void *user_data HB_UNUSED)
+hb_ot_get_glyph (hb_font_t *font HB_UNUSED,
+ void *font_data,
+ hb_codepoint_t unicode,
+ hb_codepoint_t variation_selector,
+ hb_codepoint_t *glyph,
+ void *user_data HB_UNUSED)
{
const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
- return ot_font->cmap.get_nominal_glyph (unicode, glyph);
+ return ot_font->cmap.get_glyph (unicode, variation_selector, glyph);
}
-static hb_bool_t
-hb_ot_get_variation_glyph (hb_font_t *font HB_UNUSED,
+static hb_position_t
+hb_ot_get_glyph_h_advance (hb_font_t *font HB_UNUSED,
void *font_data,
- hb_codepoint_t unicode,
- hb_codepoint_t variation_selector,
- hb_codepoint_t *glyph,
+ hb_codepoint_t glyph,
void *user_data HB_UNUSED)
{
const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
- return ot_font->cmap.get_variation_glyph (unicode, variation_selector, glyph);
+ return font->em_scale_x (ot_font->h_metrics.get_advance (glyph));
}
static hb_position_t
-hb_ot_get_glyph_h_advance (hb_font_t *font HB_UNUSED,
+hb_ot_get_glyph_v_advance (hb_font_t *font HB_UNUSED,
void *font_data,
hb_codepoint_t glyph,
void *user_data HB_UNUSED)
{
const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
- return font->em_scale_x (ot_font->h_metrics.get_advance (glyph));
+ return font->em_scale_y (-ot_font->v_metrics.get_advance (glyph));
+}
+
+static hb_bool_t
+hb_ot_get_glyph_h_origin (hb_font_t *font HB_UNUSED,
+ void *font_data HB_UNUSED,
+ hb_codepoint_t glyph HB_UNUSED,
+ hb_position_t *x HB_UNUSED,
+ hb_position_t *y HB_UNUSED,
+ void *user_data HB_UNUSED)
+{
+ /* We always work in the horizontal coordinates. */
+ return true;
+}
+
+static hb_bool_t
+hb_ot_get_glyph_v_origin (hb_font_t *font HB_UNUSED,
+ void *font_data,
+ hb_codepoint_t glyph,
+ hb_position_t *x,
+ hb_position_t *y,
+ void *user_data HB_UNUSED)
+{
+ /* TODO */
+ return false;
}
static hb_position_t
-hb_ot_get_glyph_v_advance (hb_font_t *font HB_UNUSED,
+hb_ot_get_glyph_h_kerning (hb_font_t *font,
void *font_data,
- hb_codepoint_t glyph,
+ hb_codepoint_t left_glyph,
+ hb_codepoint_t right_glyph,
void *user_data HB_UNUSED)
{
- const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
- return font->em_scale_y (-(int) ot_font->v_metrics.get_advance (glyph));
+ /* TODO */
+ return 0;
+}
+
+static hb_position_t
+hb_ot_get_glyph_v_kerning (hb_font_t *font HB_UNUSED,
+ void *font_data HB_UNUSED,
+ hb_codepoint_t top_glyph HB_UNUSED,
+ hb_codepoint_t bottom_glyph HB_UNUSED,
+ void *user_data HB_UNUSED)
+{
+ /* OpenType doesn't have vertical-kerning other than GPOS. */
+ return 0;
}
static hb_bool_t
@@ -430,101 +275,69 @@ hb_ot_get_glyph_extents (hb_font_t *font HB_UNUSED,
hb_glyph_extents_t *extents,
void *user_data HB_UNUSED)
{
- const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
- bool ret = ot_font->glyf->get_extents (glyph, extents);
- extents->x_bearing = font->em_scale_x (extents->x_bearing);
- extents->y_bearing = font->em_scale_y (extents->y_bearing);
- extents->width = font->em_scale_x (extents->width);
- extents->height = font->em_scale_y (extents->height);
- return ret;
+ /* TODO */
+ return false;
}
static hb_bool_t
-hb_ot_get_font_h_extents (hb_font_t *font HB_UNUSED,
- void *font_data,
- hb_font_extents_t *metrics,
- void *user_data HB_UNUSED)
+hb_ot_get_glyph_contour_point (hb_font_t *font HB_UNUSED,
+ void *font_data,
+ hb_codepoint_t glyph,
+ unsigned int point_index,
+ hb_position_t *x,
+ hb_position_t *y,
+ void *user_data HB_UNUSED)
{
- const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
- metrics->ascender = font->em_scale_y (ot_font->h_metrics.ascender);
- metrics->descender = font->em_scale_y (ot_font->h_metrics.descender);
- metrics->line_gap = font->em_scale_y (ot_font->h_metrics.line_gap);
- return true;
+ /* TODO */
+ return false;
}
static hb_bool_t
-hb_ot_get_font_v_extents (hb_font_t *font HB_UNUSED,
- void *font_data,
- hb_font_extents_t *metrics,
- void *user_data HB_UNUSED)
+hb_ot_get_glyph_name (hb_font_t *font HB_UNUSED,
+ void *font_data,
+ hb_codepoint_t glyph,
+ char *name, unsigned int size,
+ void *user_data HB_UNUSED)
{
- const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
- metrics->ascender = font->em_scale_x (ot_font->v_metrics.ascender);
- metrics->descender = font->em_scale_x (ot_font->v_metrics.descender);
- metrics->line_gap = font->em_scale_x (ot_font->v_metrics.line_gap);
- return true;
+ /* TODO */
+ return false;
}
-static hb_font_funcs_t *static_ot_funcs = NULL;
-
-#ifdef HB_USE_ATEXIT
-static
-void free_static_ot_funcs (void)
+static hb_bool_t
+hb_ot_get_glyph_from_name (hb_font_t *font HB_UNUSED,
+ void *font_data,
+ const char *name, int len, /* -1 means nul-terminated */
+ hb_codepoint_t *glyph,
+ void *user_data HB_UNUSED)
{
- hb_font_funcs_destroy (static_ot_funcs);
+ /* TODO */
+ return false;
}
-#endif
+
static hb_font_funcs_t *
_hb_ot_get_font_funcs (void)
{
-retry:
- hb_font_funcs_t *funcs = (hb_font_funcs_t *) hb_atomic_ptr_get (&static_ot_funcs);
+ static const hb_font_funcs_t ot_ffuncs = {
+ HB_OBJECT_HEADER_STATIC,
- if (unlikely (!funcs))
- {
- funcs = hb_font_funcs_create ();
-
- hb_font_funcs_set_font_h_extents_func (funcs, hb_ot_get_font_h_extents, NULL, NULL);
- hb_font_funcs_set_font_v_extents_func (funcs, hb_ot_get_font_v_extents, NULL, NULL);
- hb_font_funcs_set_nominal_glyph_func (funcs, hb_ot_get_nominal_glyph, NULL, NULL);
- hb_font_funcs_set_variation_glyph_func (funcs, hb_ot_get_variation_glyph, NULL, NULL);
- hb_font_funcs_set_glyph_h_advance_func (funcs, hb_ot_get_glyph_h_advance, NULL, NULL);
- hb_font_funcs_set_glyph_v_advance_func (funcs, hb_ot_get_glyph_v_advance, NULL, NULL);
- //hb_font_funcs_set_glyph_h_origin_func (funcs, hb_ot_get_glyph_h_origin, NULL, NULL);
- //hb_font_funcs_set_glyph_v_origin_func (funcs, hb_ot_get_glyph_v_origin, NULL, NULL);
- //hb_font_funcs_set_glyph_h_kerning_func (funcs, hb_ot_get_glyph_h_kerning, NULL, NULL); TODO
- //hb_font_funcs_set_glyph_v_kerning_func (funcs, hb_ot_get_glyph_v_kerning, NULL, NULL);
- hb_font_funcs_set_glyph_extents_func (funcs, hb_ot_get_glyph_extents, NULL, NULL);
- //hb_font_funcs_set_glyph_contour_point_func (funcs, hb_ot_get_glyph_contour_point, NULL, NULL); TODO
- //hb_font_funcs_set_glyph_name_func (funcs, hb_ot_get_glyph_name, NULL, NULL); TODO
- //hb_font_funcs_set_glyph_from_name_func (funcs, hb_ot_get_glyph_from_name, NULL, NULL); TODO
-
- hb_font_funcs_make_immutable (funcs);
-
- if (!hb_atomic_ptr_cmpexch (&static_ot_funcs, NULL, funcs)) {
- hb_font_funcs_destroy (funcs);
- goto retry;
- }
+ true, /* immutable */
-#ifdef HB_USE_ATEXIT
- atexit (free_static_ot_funcs); /* First person registers atexit() callback. */
-#endif
+ {
+#define HB_FONT_FUNC_IMPLEMENT(name) hb_ot_get_##name,
+ HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
+#undef HB_FONT_FUNC_IMPLEMENT
+ }
};
- return funcs;
+ return const_cast<hb_font_funcs_t *> (&ot_ffuncs);
}
-/**
- * hb_ot_font_set_funcs:
- *
- * Since: 0.9.28
- **/
void
hb_ot_font_set_funcs (hb_font_t *font)
{
- hb_ot_font_t *ot_font = _hb_ot_font_create (font->face);
+ hb_ot_font_t *ot_font = _hb_ot_font_create (font);
if (unlikely (!ot_font))
return;
diff --git a/src/hb-ot-font.h b/src/hb-ot-font.h
index 80eaa54..7a8c04a 100644
--- a/src/hb-ot-font.h
+++ b/src/hb-ot-font.h
@@ -24,10 +24,6 @@
* Google Author(s): Behdad Esfahbod, Roozbeh Pournader
*/
-#ifndef HB_OT_H_IN
-#error "Include <hb-ot.h> instead."
-#endif
-
#ifndef HB_OT_FONT_H
#define HB_OT_FONT_H
@@ -36,7 +32,7 @@
HB_BEGIN_DECLS
-HB_EXTERN void
+void
hb_ot_font_set_funcs (hb_font_t *font);
diff --git a/src/hb-ot-glyf-table.hh b/src/hb-ot-glyf-table.hh
deleted file mode 100644
index dc7aa84..0000000
--- a/src/hb-ot-glyf-table.hh
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright © 2015 Google, Inc.
- *
- * This is part of HarfBuzz, a text shaping library.
- *
- * Permission is hereby granted, without written agreement and without
- * license or royalty fees, to use, copy, modify, and distribute this
- * software and its documentation for any purpose, provided that the
- * above copyright notice and the following two paragraphs appear in
- * all copies of this software.
- *
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
- * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
- * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
- * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- *
- * Google Author(s): Behdad Esfahbod
- */
-
-#ifndef HB_OT_GLYF_TABLE_HH
-#define HB_OT_GLYF_TABLE_HH
-
-#include "hb-open-type-private.hh"
-
-
-namespace OT {
-
-
-/*
- * loca -- Index to Location
- */
-
-#define HB_OT_TAG_loca HB_TAG('l','o','c','a')
-
-
-struct loca
-{
- static const hb_tag_t tableTag = HB_OT_TAG_loca;
-
- inline bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (true);
- }
-
- public:
- union {
- USHORT shortsZ[VAR]; /* Location offset divided by 2. */
- ULONG longsZ[VAR]; /* Location offset. */
- } u;
- DEFINE_SIZE_ARRAY (0, u.longsZ);
-};
-
-
-/*
- * glyf -- TrueType Glyph Data
- */
-
-#define HB_OT_TAG_glyf HB_TAG('g','l','y','f')
-
-
-struct glyf
-{
- static const hb_tag_t tableTag = HB_OT_TAG_glyf;
-
- inline bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- /* We don't check for anything specific here. The users of the
- * struct do all the hard work... */
- return_trace (true);
- }
-
- public:
- BYTE dataX[VAR]; /* Glyphs data. */
-
- DEFINE_SIZE_ARRAY (0, dataX);
-};
-
-struct glyfGlyphHeader
-{
- SHORT numberOfContours; /* If the number of contours is
- * greater than or equal to zero,
- * this is a simple glyph; if negative,
- * this is a composite glyph. */
- FWORD xMin; /* Minimum x for coordinate data. */
- FWORD yMin; /* Minimum y for coordinate data. */
- FWORD xMax; /* Maximum x for coordinate data. */
- FWORD yMax; /* Maximum y for coordinate data. */
-
- DEFINE_SIZE_STATIC (10);
-};
-
-} /* namespace OT */
-
-
-#endif /* HB_OT_GLYF_TABLE_HH */
diff --git a/src/hb-ot-head-table.hh b/src/hb-ot-head-table.hh
index 9c3e51e..268f133 100644
--- a/src/hb-ot-head-table.hh
+++ b/src/hb-ot-head-table.hh
@@ -55,15 +55,13 @@ struct head
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) &&
- version.major == 1 &&
- magicNumber == 0x5F0F3CF5u);
+ return TRACE_RETURN (c->check_struct (this) && likely (version.major == 1));
}
protected:
- FixedVersion<>version; /* Version of the head table--currently
+ FixedVersion version; /* Version of the head table--currently
* 0x00010000u for version 1.0. */
- FixedVersion<>fontRevision; /* Set by font manufacturer. */
+ FixedVersion fontRevision; /* Set by font manufacturer. */
ULONG checkSumAdjustment; /* To compute: set it to 0, sum the
* entire font as ULONG, then store
* 0xB1B0AFBAu - sum. */
@@ -140,10 +138,9 @@ struct head
* 2: Like 1 but also contains neutrals;
* -1: Only strongly right to left;
* -2: Like -1 but also contains neutrals. */
- public:
SHORT indexToLocFormat; /* 0 for short offsets, 1 for long. */
SHORT glyphDataFormat; /* 0 for current format. */
-
+ public:
DEFINE_SIZE_STATIC (54);
};
diff --git a/src/hb-ot-hhea-table.hh b/src/hb-ot-hhea-table.hh
index c8e9536..992fe55 100644
--- a/src/hb-ot-hhea-table.hh
+++ b/src/hb-ot-hhea-table.hh
@@ -52,11 +52,11 @@ struct _hea
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) && likely (version.major == 1));
+ return TRACE_RETURN (c->check_struct (this) && likely (version.major == 1));
}
public:
- FixedVersion<>version; /* 0x00010000u for version 1.0. */
+ FixedVersion version; /* 0x00010000u for version 1.0. */
FWORD ascender; /* Typographic ascent. */
FWORD descender; /* Typographic descent. */
FWORD lineGap; /* Typographic line gap. */
diff --git a/src/hb-ot-hmtx-table.hh b/src/hb-ot-hmtx-table.hh
index a9606b3..a0e3855 100644
--- a/src/hb-ot-hmtx-table.hh
+++ b/src/hb-ot-hmtx-table.hh
@@ -44,8 +44,8 @@ namespace OT {
struct LongMetric
{
- UFWORD advance; /* Advance width/height. */
- FWORD lsb; /* Leading (left/top) side bearing. */
+ USHORT advance; /* Advance width/height. */
+ SHORT lsb; /* Leading (left/top) side bearing. */
public:
DEFINE_SIZE_STATIC (4);
};
@@ -62,7 +62,7 @@ struct _mtx
TRACE_SANITIZE (this);
/* We don't check for anything specific here. The users of the
* struct do all the hard work... */
- return_trace (true);
+ return TRACE_RETURN (true);
}
public:
@@ -74,7 +74,7 @@ struct _mtx
* be in the array, but that entry is
* required. The last entry applies to
* all subsequent glyphs. */
- FWORD leadingBearingX[VAR]; /* Here the advance is assumed
+ SHORT leadingBearingX[VAR]; /* Here the advance is assumed
* to be the same as the advance
* for the last entry above. The
* number of entries in this array is
diff --git a/src/hb-ot-layout-common-private.hh b/src/hb-ot-layout-common-private.hh
index 34fa1b7..3db7f57 100644
--- a/src/hb-ot-layout-common-private.hh
+++ b/src/hb-ot-layout-common-private.hh
@@ -34,14 +34,6 @@
#include "hb-set-private.hh"
-#ifndef HB_MAX_NESTING_LEVEL
-#define HB_MAX_NESTING_LEVEL 6
-#endif
-#ifndef HB_MAX_CONTEXT_LENGTH
-#define HB_MAX_CONTEXT_LENGTH 64
-#endif
-
-
namespace OT {
@@ -52,6 +44,8 @@ namespace OT {
#define NOT_COVERED ((unsigned int) -1)
+#define MAX_NESTING_LEVEL 8
+#define MAX_CONTEXT_LENGTH 64
@@ -81,7 +75,7 @@ struct Record
{
TRACE_SANITIZE (this);
const sanitize_closure_t closure = {tag, base};
- return_trace (c->check_struct (this) && offset.sanitize (c, base, &closure));
+ return TRACE_RETURN (c->check_struct (this) && offset.sanitize (c, base, &closure));
}
Tag tag; /* 4-byte Tag identifier */
@@ -137,7 +131,7 @@ struct RecordListOf : RecordArrayOf<Type>
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (RecordArrayOf<Type>::sanitize (c, this));
+ return TRACE_RETURN (RecordArrayOf<Type>::sanitize (c, this));
}
};
@@ -151,7 +145,7 @@ struct RangeRecord
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this));
+ return TRACE_RETURN (c->check_struct (this));
}
inline bool intersects (const hb_set_t *glyphs) const {
@@ -217,7 +211,7 @@ struct LangSys
const Record<LangSys>::sanitize_closure_t * = NULL) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) && featureIndex.sanitize (c));
+ return TRACE_RETURN (c->check_struct (this) && featureIndex.sanitize (c));
}
Offset<> lookupOrderZ; /* = Null (reserved for an offset to a
@@ -257,7 +251,7 @@ struct Script
const Record<Script>::sanitize_closure_t * = NULL) const
{
TRACE_SANITIZE (this);
- return_trace (defaultLangSys.sanitize (c, this) && langSys.sanitize (c, this));
+ return TRACE_RETURN (defaultLangSys.sanitize (c, this) && langSys.sanitize (c, this));
}
protected:
@@ -280,7 +274,7 @@ struct FeatureParamsSize
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (unlikely (!c->check_struct (this))) return_trace (false);
+ if (unlikely (!c->check_struct (this))) return TRACE_RETURN (false);
/* This subtable has some "history", if you will. Some earlier versions of
* Adobe tools calculated the offset of the FeatureParams sutable from the
@@ -332,19 +326,19 @@ struct FeatureParamsSize
*/
if (!designSize)
- return_trace (false);
+ return TRACE_RETURN (false);
else if (subfamilyID == 0 &&
subfamilyNameID == 0 &&
rangeStart == 0 &&
rangeEnd == 0)
- return_trace (true);
+ return TRACE_RETURN (true);
else if (designSize < rangeStart ||
designSize > rangeEnd ||
subfamilyNameID < 256 ||
subfamilyNameID > 32767)
- return_trace (false);
+ return TRACE_RETURN (false);
else
- return_trace (true);
+ return TRACE_RETURN (true);
}
USHORT designSize; /* Represents the design size in 720/inch
@@ -394,7 +388,7 @@ struct FeatureParamsStylisticSet
TRACE_SANITIZE (this);
/* Right now minorVersion is at zero. Which means, any table supports
* the uiNameID field. */
- return_trace (c->check_struct (this));
+ return TRACE_RETURN (c->check_struct (this));
}
USHORT version; /* (set to 0): This corresponds to a “minor”
@@ -426,8 +420,8 @@ struct FeatureParamsCharacterVariants
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) &&
- characters.sanitize (c));
+ return TRACE_RETURN (c->check_struct (this) &&
+ characters.sanitize (c));
}
USHORT format; /* Format number is set to 0. */
@@ -468,12 +462,12 @@ struct FeatureParams
{
TRACE_SANITIZE (this);
if (tag == HB_TAG ('s','i','z','e'))
- return_trace (u.size.sanitize (c));
+ return TRACE_RETURN (u.size.sanitize (c));
if ((tag & 0xFFFF0000u) == HB_TAG ('s','s','\0','\0')) /* ssXX */
- return_trace (u.stylisticSet.sanitize (c));
+ return TRACE_RETURN (u.stylisticSet.sanitize (c));
if ((tag & 0xFFFF0000u) == HB_TAG ('c','v','\0','\0')) /* cvXX */
- return_trace (u.characterVariants.sanitize (c));
- return_trace (true);
+ return TRACE_RETURN (u.characterVariants.sanitize (c));
+ return TRACE_RETURN (true);
}
inline const FeatureParamsSize& get_size_params (hb_tag_t tag) const
@@ -511,7 +505,7 @@ struct Feature
{
TRACE_SANITIZE (this);
if (unlikely (!(c->check_struct (this) && lookupIndex.sanitize (c))))
- return_trace (false);
+ return TRACE_RETURN (false);
/* Some earlier versions of Adobe tools calculated the offset of the
* FeatureParams subtable from the beginning of the FeatureList table!
@@ -526,10 +520,10 @@ struct Feature
OffsetTo<FeatureParams> orig_offset = featureParams;
if (unlikely (!featureParams.sanitize (c, this, closure ? closure->tag : HB_TAG_NONE)))
- return_trace (false);
+ return TRACE_RETURN (false);
if (likely (orig_offset.is_null ()))
- return_trace (true);
+ return TRACE_RETURN (true);
if (featureParams == 0 && closure &&
closure->tag == HB_TAG ('s','i','z','e') &&
@@ -544,13 +538,10 @@ struct Feature
if (new_offset == new_offset_int &&
c->try_set (&featureParams, new_offset) &&
!featureParams.sanitize (c, this, closure ? closure->tag : HB_TAG_NONE))
- return_trace (false);
-
- if (c->edit_count > 1)
- c->edit_count--; /* This was a "legitimate" edit; don't contribute to error count. */
+ return TRACE_RETURN (false);
}
- return_trace (true);
+ return TRACE_RETURN (true);
}
OffsetTo<FeatureParams>
@@ -582,11 +573,6 @@ struct LookupFlag : USHORT
DEFINE_SIZE_STATIC (2);
};
-} /* namespace OT */
-/* This has to be outside the namespace. */
-HB_MARK_AS_FLAG_T (OT::LookupFlag::Flags);
-namespace OT {
-
struct Lookup
{
inline unsigned int get_subtable_count (void) const { return subTable.len; }
@@ -627,9 +613,9 @@ struct Lookup
for (unsigned int i = 0; i < count; i++) {
typename context_t::return_t r = get_subtable<SubTableType> (i).dispatch (c, lookup_type);
if (c->stop_sublookup_iteration (r))
- return_trace (r);
+ return TRACE_RETURN (r);
}
- return_trace (c->default_return_value ());
+ return TRACE_RETURN (c->default_return_value ());
}
inline bool serialize (hb_serialize_context_t *c,
@@ -638,29 +624,29 @@ struct Lookup
unsigned int num_subtables)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (*this))) return_trace (false);
+ if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false);
lookupType.set (lookup_type);
lookupFlag.set (lookup_props & 0xFFFFu);
- if (unlikely (!subTable.serialize (c, num_subtables))) return_trace (false);
+ if (unlikely (!subTable.serialize (c, num_subtables))) return TRACE_RETURN (false);
if (lookupFlag & LookupFlag::UseMarkFilteringSet)
{
USHORT &markFilteringSet = StructAfter<USHORT> (subTable);
markFilteringSet.set (lookup_props >> 16);
}
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
/* Real sanitize of the subtables is done by GSUB/GPOS/... */
- if (!(c->check_struct (this) && subTable.sanitize (c))) return_trace (false);
+ if (!(c->check_struct (this) && subTable.sanitize (c))) return TRACE_RETURN (false);
if (lookupFlag & LookupFlag::UseMarkFilteringSet)
{
const USHORT &markFilteringSet = StructAfter<USHORT> (subTable);
- if (!markFilteringSet.sanitize (c)) return_trace (false);
+ if (!markFilteringSet.sanitize (c)) return TRACE_RETURN (false);
}
- return_trace (true);
+ return TRACE_RETURN (true);
}
private:
@@ -699,19 +685,19 @@ struct CoverageFormat1
unsigned int num_glyphs)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (*this))) return_trace (false);
+ if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false);
glyphArray.len.set (num_glyphs);
- if (unlikely (!c->extend (glyphArray))) return_trace (false);
+ if (unlikely (!c->extend (glyphArray))) return TRACE_RETURN (false);
for (unsigned int i = 0; i < num_glyphs; i++)
glyphArray[i] = glyphs[i];
glyphs.advance (num_glyphs);
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (glyphArray.sanitize (c));
+ return TRACE_RETURN (glyphArray.sanitize (c));
}
inline bool intersects_coverage (const hb_set_t *glyphs, unsigned int index) const {
@@ -768,20 +754,16 @@ struct CoverageFormat2
unsigned int num_glyphs)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (*this))) return_trace (false);
+ if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false);
- if (unlikely (!num_glyphs))
- {
- rangeRecord.len.set (0);
- return_trace (true);
- }
+ if (unlikely (!num_glyphs)) return TRACE_RETURN (true);
unsigned int num_ranges = 1;
for (unsigned int i = 1; i < num_glyphs; i++)
if (glyphs[i - 1] + 1 != glyphs[i])
num_ranges++;
rangeRecord.len.set (num_ranges);
- if (unlikely (!c->extend (rangeRecord))) return_trace (false);
+ if (unlikely (!c->extend (rangeRecord))) return TRACE_RETURN (false);
unsigned int range = 0;
rangeRecord[range].start = glyphs[0];
@@ -796,13 +778,13 @@ struct CoverageFormat2
rangeRecord[range].end = glyphs[i];
}
glyphs.advance (num_glyphs);
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (rangeRecord.sanitize (c));
+ return TRACE_RETURN (rangeRecord.sanitize (c));
}
inline bool intersects_coverage (const hb_set_t *glyphs, unsigned int index) const {
@@ -882,27 +864,27 @@ struct Coverage
unsigned int num_glyphs)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (*this))) return_trace (false);
+ if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false);
unsigned int num_ranges = 1;
for (unsigned int i = 1; i < num_glyphs; i++)
if (glyphs[i - 1] + 1 != glyphs[i])
num_ranges++;
u.format.set (num_glyphs * 2 < num_ranges * 3 ? 1 : 2);
switch (u.format) {
- case 1: return_trace (u.format1.serialize (c, glyphs, num_glyphs));
- case 2: return_trace (u.format2.serialize (c, glyphs, num_glyphs));
- default:return_trace (false);
+ case 1: return TRACE_RETURN (u.format1.serialize (c, glyphs, num_glyphs));
+ case 2: return TRACE_RETURN (u.format2.serialize (c, glyphs, num_glyphs));
+ default:return TRACE_RETURN (false);
}
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (!u.format.sanitize (c)) return_trace (false);
+ if (!u.format.sanitize (c)) return TRACE_RETURN (false);
switch (u.format) {
- case 1: return_trace (u.format1.sanitize (c));
- case 2: return_trace (u.format2.sanitize (c));
- default:return_trace (true);
+ case 1: return TRACE_RETURN (u.format1.sanitize (c));
+ case 2: return TRACE_RETURN (u.format2.sanitize (c));
+ default:return TRACE_RETURN (true);
}
}
@@ -1011,7 +993,7 @@ struct ClassDefFormat1
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) && classValue.sanitize (c));
+ return TRACE_RETURN (c->check_struct (this) && classValue.sanitize (c));
}
template <typename set_t>
@@ -1068,7 +1050,7 @@ struct ClassDefFormat2
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (rangeRecord.sanitize (c));
+ return TRACE_RETURN (rangeRecord.sanitize (c));
}
template <typename set_t>
@@ -1126,11 +1108,11 @@ struct ClassDef
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (!u.format.sanitize (c)) return_trace (false);
+ if (!u.format.sanitize (c)) return TRACE_RETURN (false);
switch (u.format) {
- case 1: return_trace (u.format1.sanitize (c));
- case 2: return_trace (u.format2.sanitize (c));
- default:return_trace (true);
+ case 1: return TRACE_RETURN (u.format1.sanitize (c));
+ case 2: return TRACE_RETURN (u.format2.sanitize (c));
+ default:return TRACE_RETURN (true);
}
}
@@ -1174,21 +1156,6 @@ struct Device
inline hb_position_t get_y_delta (hb_font_t *font) const
{ return get_delta (font->y_ppem, font->y_scale); }
- inline unsigned int get_size (void) const
- {
- unsigned int f = deltaFormat;
- if (unlikely (f < 1 || f > 3 || startSize > endSize)) return 3 * USHORT::static_size;
- return USHORT::static_size * (4 + ((endSize - startSize) >> (4 - f)));
- }
-
- inline bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) && c->check_range (this, this->get_size ()));
- }
-
- private:
-
inline int get_delta (unsigned int ppem, int scale) const
{
if (!ppem) return 0;
@@ -1199,6 +1166,8 @@ struct Device
return (int) (pixels * (int64_t) scale / ppem);
}
+
+
inline int get_delta_pixels (unsigned int ppem_size) const
{
unsigned int f = deltaFormat;
@@ -1222,6 +1191,19 @@ struct Device
return delta;
}
+ inline unsigned int get_size (void) const
+ {
+ unsigned int f = deltaFormat;
+ if (unlikely (f < 1 || f > 3 || startSize > endSize)) return 3 * USHORT::static_size;
+ return USHORT::static_size * (4 + ((endSize - startSize) >> (4 - f)));
+ }
+
+ inline bool sanitize (hb_sanitize_context_t *c) const
+ {
+ TRACE_SANITIZE (this);
+ return TRACE_RETURN (c->check_struct (this) && c->check_range (this, this->get_size ()));
+ }
+
protected:
USHORT startSize; /* Smallest size to correct--in ppem */
USHORT endSize; /* Largest size to correct--in ppem */
diff --git a/src/hb-ot-layout-gdef-table.hh b/src/hb-ot-layout-gdef-table.hh
index 2b4bc5a..7a6c04d 100644
--- a/src/hb-ot-layout-gdef-table.hh
+++ b/src/hb-ot-layout-gdef-table.hh
@@ -74,7 +74,7 @@ struct AttachList
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this) && attachPoint.sanitize (c, this));
+ return TRACE_RETURN (coverage.sanitize (c, this) && attachPoint.sanitize (c, this));
}
protected:
@@ -105,7 +105,7 @@ struct CaretValueFormat1
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this));
+ return TRACE_RETURN (c->check_struct (this));
}
protected:
@@ -132,7 +132,7 @@ struct CaretValueFormat2
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this));
+ return TRACE_RETURN (c->check_struct (this));
}
protected:
@@ -156,7 +156,7 @@ struct CaretValueFormat3
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) && deviceTable.sanitize (c, this));
+ return TRACE_RETURN (c->check_struct (this) && deviceTable.sanitize (c, this));
}
protected:
@@ -185,12 +185,12 @@ struct CaretValue
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (!u.format.sanitize (c)) return_trace (false);
+ if (!u.format.sanitize (c)) return TRACE_RETURN (false);
switch (u.format) {
- case 1: return_trace (u.format1.sanitize (c));
- case 2: return_trace (u.format2.sanitize (c));
- case 3: return_trace (u.format3.sanitize (c));
- default:return_trace (true);
+ case 1: return TRACE_RETURN (u.format1.sanitize (c));
+ case 2: return TRACE_RETURN (u.format2.sanitize (c));
+ case 3: return TRACE_RETURN (u.format3.sanitize (c));
+ default:return TRACE_RETURN (true);
}
}
@@ -227,7 +227,7 @@ struct LigGlyph
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (carets.sanitize (c, this));
+ return TRACE_RETURN (carets.sanitize (c, this));
}
protected:
@@ -262,7 +262,7 @@ struct LigCaretList
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this) && ligGlyph.sanitize (c, this));
+ return TRACE_RETURN (coverage.sanitize (c, this) && ligGlyph.sanitize (c, this));
}
protected:
@@ -285,7 +285,7 @@ struct MarkGlyphSetsFormat1
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this));
+ return TRACE_RETURN (coverage.sanitize (c, this));
}
protected:
@@ -310,10 +310,10 @@ struct MarkGlyphSets
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (!u.format.sanitize (c)) return_trace (false);
+ if (!u.format.sanitize (c)) return TRACE_RETURN (false);
switch (u.format) {
- case 1: return_trace (u.format1.sanitize (c));
- default:return_trace (true);
+ case 1: return TRACE_RETURN (u.format1.sanitize (c));
+ default:return TRACE_RETURN (true);
}
}
@@ -376,13 +376,13 @@ struct GDEF
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (version.sanitize (c) &&
- likely (version.major == 1) &&
- glyphClassDef.sanitize (c, this) &&
- attachList.sanitize (c, this) &&
- ligCaretList.sanitize (c, this) &&
- markAttachClassDef.sanitize (c, this) &&
- (version.to_int () < 0x00010002u || markGlyphSetsDef[0].sanitize (c, this)));
+ return TRACE_RETURN (version.sanitize (c) &&
+ likely (version.major == 1) &&
+ glyphClassDef.sanitize (c, this) &&
+ attachList.sanitize (c, this) &&
+ ligCaretList.sanitize (c, this) &&
+ markAttachClassDef.sanitize (c, this) &&
+ (version.to_int () < 0x00010002u || markGlyphSetsDef[0].sanitize (c, this)));
}
@@ -409,7 +409,7 @@ struct GDEF
protected:
- FixedVersion<>version; /* Version of the GDEF table--currently
+ FixedVersion version; /* Version of the GDEF table--currently
* 0x00010002u */
OffsetTo<ClassDef>
glyphClassDef; /* Offset to class definition table
diff --git a/src/hb-ot-layout-gpos-table.hh b/src/hb-ot-layout-gpos-table.hh
index bbe390c..d88f787 100644
--- a/src/hb-ot-layout-gpos-table.hh
+++ b/src/hb-ot-layout-gpos-table.hh
@@ -36,17 +36,8 @@ namespace OT {
/* buffer **position** var allocations */
-#define attach_chain() var.i16[0] /* glyph to which this attaches to, relative to current glyphs; negative for going back, positive for forward. */
-#define attach_type() var.u8[2] /* attachment type */
-/* Note! if attach_chain() is zero, the value of attach_type() is irrelevant. */
-
-enum attach_type_t {
- ATTACH_TYPE_NONE = 0X00,
-
- /* Each attachment should be either a mark or a cursive; can't be both. */
- ATTACH_TYPE_MARK = 0X01,
- ATTACH_TYPE_CURSIVE = 0X02,
-};
+#define attach_lookback() var.u16[0] /* number of glyphs to go back to attach this glyph to its base */
+#define cursive_chain() var.i16[1] /* character to which this connects, may be positive or negative */
/* Shared Tables: ValueRecord, Anchor Table, and MarkArray */
@@ -190,7 +181,7 @@ struct ValueFormat : USHORT
inline bool sanitize_value (hb_sanitize_context_t *c, const void *base, const Value *values) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_range (values, get_size ()) && (!has_device () || sanitize_value_devices (c, base, values)));
+ return TRACE_RETURN (c->check_range (values, get_size ()) && (!has_device () || sanitize_value_devices (c, base, values)));
}
inline bool sanitize_values (hb_sanitize_context_t *c, const void *base, const Value *values, unsigned int count) const
@@ -198,17 +189,17 @@ struct ValueFormat : USHORT
TRACE_SANITIZE (this);
unsigned int len = get_len ();
- if (!c->check_array (values, get_size (), count)) return_trace (false);
+ if (!c->check_array (values, get_size (), count)) return TRACE_RETURN (false);
- if (!has_device ()) return_trace (true);
+ if (!has_device ()) return TRACE_RETURN (true);
for (unsigned int i = 0; i < count; i++) {
if (!sanitize_value_devices (c, base, values))
- return_trace (false);
+ return TRACE_RETURN (false);
values += len;
}
- return_trace (true);
+ return TRACE_RETURN (true);
}
/* Just sanitize referenced Device tables. Doesn't check the values themselves. */
@@ -216,15 +207,15 @@ struct ValueFormat : USHORT
{
TRACE_SANITIZE (this);
- if (!has_device ()) return_trace (true);
+ if (!has_device ()) return TRACE_RETURN (true);
for (unsigned int i = 0; i < count; i++) {
if (!sanitize_value_devices (c, base, values))
- return_trace (false);
+ return TRACE_RETURN (false);
values += stride;
}
- return_trace (true);
+ return TRACE_RETURN (true);
}
};
@@ -241,7 +232,7 @@ struct AnchorFormat1
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this));
+ return TRACE_RETURN (c->check_struct (this));
}
protected:
@@ -271,7 +262,7 @@ struct AnchorFormat2
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this));
+ return TRACE_RETURN (c->check_struct (this));
}
protected:
@@ -300,7 +291,7 @@ struct AnchorFormat3
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) && xDeviceTable.sanitize (c, this) && yDeviceTable.sanitize (c, this));
+ return TRACE_RETURN (c->check_struct (this) && xDeviceTable.sanitize (c, this) && yDeviceTable.sanitize (c, this));
}
protected:
@@ -336,12 +327,12 @@ struct Anchor
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (!u.format.sanitize (c)) return_trace (false);
+ if (!u.format.sanitize (c)) return TRACE_RETURN (false);
switch (u.format) {
- case 1: return_trace (u.format1.sanitize (c));
- case 2: return_trace (u.format2.sanitize (c));
- case 3: return_trace (u.format3.sanitize (c));
- default:return_trace (true);
+ case 1: return TRACE_RETURN (u.format1.sanitize (c));
+ case 2: return TRACE_RETURN (u.format2.sanitize (c));
+ case 3: return TRACE_RETURN (u.format3.sanitize (c));
+ default:return TRACE_RETURN (true);
}
}
@@ -369,13 +360,13 @@ struct AnchorMatrix
inline bool sanitize (hb_sanitize_context_t *c, unsigned int cols) const
{
TRACE_SANITIZE (this);
- if (!c->check_struct (this)) return_trace (false);
- if (unlikely (rows > 0 && cols >= ((unsigned int) -1) / rows)) return_trace (false);
+ if (!c->check_struct (this)) return TRACE_RETURN (false);
+ if (unlikely (rows > 0 && cols >= ((unsigned int) -1) / rows)) return TRACE_RETURN (false);
unsigned int count = rows * cols;
- if (!c->check_array (matrixZ, matrixZ[0].static_size, count)) return_trace (false);
+ if (!c->check_array (matrixZ, matrixZ[0].static_size, count)) return TRACE_RETURN (false);
for (unsigned int i = 0; i < count; i++)
- if (!matrixZ[i].sanitize (c, this)) return_trace (false);
- return_trace (true);
+ if (!matrixZ[i].sanitize (c, this)) return TRACE_RETURN (false);
+ return TRACE_RETURN (true);
}
USHORT rows; /* Number of rows */
@@ -395,7 +386,7 @@ struct MarkRecord
inline bool sanitize (hb_sanitize_context_t *c, const void *base) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) && markAnchor.sanitize (c, base));
+ return TRACE_RETURN (c->check_struct (this) && markAnchor.sanitize (c, base));
}
protected:
@@ -424,7 +415,7 @@ struct MarkArray : ArrayOf<MarkRecord> /* Array of MarkRecords--in Coverage orde
const Anchor& glyph_anchor = anchors.get_anchor (glyph_index, mark_class, class_count, &found);
/* If this subtable doesn't have an anchor for this base and this class,
* return false such that the subsequent subtables have a chance at it. */
- if (unlikely (!found)) return_trace (false);
+ if (unlikely (!found)) return TRACE_RETURN (false);
hb_position_t mark_x, mark_y, base_x, base_y;
@@ -434,18 +425,16 @@ struct MarkArray : ArrayOf<MarkRecord> /* Array of MarkRecords--in Coverage orde
hb_glyph_position_t &o = buffer->cur_pos();
o.x_offset = base_x - mark_x;
o.y_offset = base_y - mark_y;
- o.attach_type() = ATTACH_TYPE_MARK;
- o.attach_chain() = (int) glyph_pos - (int) buffer->idx;
- buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_GPOS_ATTACHMENT;
+ o.attach_lookback() = buffer->idx - glyph_pos;
buffer->idx++;
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (ArrayOf<MarkRecord>::sanitize (c, this));
+ return TRACE_RETURN (ArrayOf<MarkRecord>::sanitize (c, this));
}
};
@@ -470,21 +459,21 @@ struct SinglePosFormat1
TRACE_APPLY (this);
hb_buffer_t *buffer = c->buffer;
unsigned int index = (this+coverage).get_coverage (buffer->cur().codepoint);
- if (likely (index == NOT_COVERED)) return_trace (false);
+ if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
valueFormat.apply_value (c->font, c->direction, this,
values, buffer->cur_pos());
buffer->idx++;
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) &&
- coverage.sanitize (c, this) &&
- valueFormat.sanitize_value (c, this, values));
+ return TRACE_RETURN (c->check_struct (this)
+ && coverage.sanitize (c, this)
+ && valueFormat.sanitize_value (c, this, values));
}
protected:
@@ -519,24 +508,24 @@ struct SinglePosFormat2
TRACE_APPLY (this);
hb_buffer_t *buffer = c->buffer;
unsigned int index = (this+coverage).get_coverage (buffer->cur().codepoint);
- if (likely (index == NOT_COVERED)) return_trace (false);
+ if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
- if (likely (index >= valueCount)) return_trace (false);
+ if (likely (index >= valueCount)) return TRACE_RETURN (false);
valueFormat.apply_value (c->font, c->direction, this,
&values[index * valueFormat.get_len ()],
buffer->cur_pos());
buffer->idx++;
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) &&
- coverage.sanitize (c, this) &&
- valueFormat.sanitize_values (c, this, values, valueCount));
+ return TRACE_RETURN (c->check_struct (this)
+ && coverage.sanitize (c, this)
+ && valueFormat.sanitize_values (c, this, values, valueCount));
}
protected:
@@ -559,11 +548,11 @@ struct SinglePos
inline typename context_t::return_t dispatch (context_t *c) const
{
TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ());
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1));
- case 2: return_trace (c->dispatch (u.format2));
- default:return_trace (c->default_return_value ());
+ case 1: return TRACE_RETURN (c->dispatch (u.format1));
+ case 2: return TRACE_RETURN (c->dispatch (u.format2));
+ default:return TRACE_RETURN (c->default_return_value ());
}
}
@@ -626,7 +615,7 @@ struct PairSet
/* Hand-coded bsearch. */
if (unlikely (!count))
- return_trace (false);
+ return TRACE_RETURN (false);
hb_codepoint_t x = buffer->info[pos].codepoint;
int min = 0, max = (int) count - 1;
while (min <= max)
@@ -647,11 +636,11 @@ struct PairSet
if (len2)
pos++;
buffer->idx = pos;
- return_trace (true);
+ return TRACE_RETURN (true);
}
}
- return_trace (false);
+ return TRACE_RETURN (false);
}
struct sanitize_closure_t {
@@ -665,12 +654,12 @@ struct PairSet
{
TRACE_SANITIZE (this);
if (!(c->check_struct (this)
- && c->check_array (arrayZ, USHORT::static_size * closure->stride, len))) return_trace (false);
+ && c->check_array (arrayZ, USHORT::static_size * closure->stride, len))) return TRACE_RETURN (false);
unsigned int count = len;
const PairValueRecord *record = CastP<PairValueRecord> (arrayZ);
- return_trace (closure->valueFormats[0].sanitize_values_stride_unsafe (c, closure->base, &record->values[0], count, closure->stride) &&
- closure->valueFormats[1].sanitize_values_stride_unsafe (c, closure->base, &record->values[closure->len1], count, closure->stride));
+ return TRACE_RETURN (closure->valueFormats[0].sanitize_values_stride_unsafe (c, closure->base, &record->values[0], count, closure->stride)
+ && closure->valueFormats[1].sanitize_values_stride_unsafe (c, closure->base, &record->values[closure->len1], count, closure->stride));
}
protected:
@@ -702,21 +691,19 @@ struct PairPosFormat1
TRACE_APPLY (this);
hb_buffer_t *buffer = c->buffer;
unsigned int index = (this+coverage).get_coverage (buffer->cur().codepoint);
- if (likely (index == NOT_COVERED)) return_trace (false);
+ if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
hb_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
skippy_iter.reset (buffer->idx, 1);
- if (!skippy_iter.next ()) return_trace (false);
+ if (!skippy_iter.next ()) return TRACE_RETURN (false);
- return_trace ((this+pairSet[index]).apply (c, &valueFormat1, skippy_iter.idx));
+ return TRACE_RETURN ((this+pairSet[index]).apply (c, &valueFormat1, skippy_iter.idx));
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (!c->check_struct (this)) return_trace (false);
-
unsigned int len1 = valueFormat1.get_len ();
unsigned int len2 = valueFormat2.get_len ();
PairSet::sanitize_closure_t closure = {
@@ -726,7 +713,7 @@ struct PairPosFormat1
1 + len1 + len2
};
- return_trace (coverage.sanitize (c, this) && pairSet.sanitize (c, this, &closure));
+ return TRACE_RETURN (c->check_struct (this) && coverage.sanitize (c, this) && pairSet.sanitize (c, this, &closure));
}
protected:
@@ -752,7 +739,7 @@ struct PairPosFormat2
inline void collect_glyphs (hb_collect_glyphs_context_t *c) const
{
TRACE_COLLECT_GLYPHS (this);
- (this+coverage).add_coverage (c->input);
+ /* (this+coverage).add_coverage (c->input); // Don't need this. */
unsigned int count1 = class1Count;
const ClassDef &klass1 = this+classDef1;
@@ -775,11 +762,11 @@ struct PairPosFormat2
TRACE_APPLY (this);
hb_buffer_t *buffer = c->buffer;
unsigned int index = (this+coverage).get_coverage (buffer->cur().codepoint);
- if (likely (index == NOT_COVERED)) return_trace (false);
+ if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
hb_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
skippy_iter.reset (buffer->idx, 1);
- if (!skippy_iter.next ()) return_trace (false);
+ if (!skippy_iter.next ()) return TRACE_RETURN (false);
unsigned int len1 = valueFormat1.get_len ();
unsigned int len2 = valueFormat2.get_len ();
@@ -787,7 +774,7 @@ struct PairPosFormat2
unsigned int klass1 = (this+classDef1).get_class (buffer->cur().codepoint);
unsigned int klass2 = (this+classDef2).get_class (buffer->info[skippy_iter.idx].codepoint);
- if (unlikely (klass1 >= class1Count || klass2 >= class2Count)) return_trace (false);
+ if (unlikely (klass1 >= class1Count || klass2 >= class2Count)) return TRACE_RETURN (false);
const Value *v = &values[record_len * (klass1 * class2Count + klass2)];
valueFormat1.apply_value (c->font, c->direction, this,
@@ -799,7 +786,7 @@ struct PairPosFormat2
if (len2)
buffer->idx++;
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c) const
@@ -808,16 +795,16 @@ struct PairPosFormat2
if (!(c->check_struct (this)
&& coverage.sanitize (c, this)
&& classDef1.sanitize (c, this)
- && classDef2.sanitize (c, this))) return_trace (false);
+ && classDef2.sanitize (c, this))) return TRACE_RETURN (false);
unsigned int len1 = valueFormat1.get_len ();
unsigned int len2 = valueFormat2.get_len ();
unsigned int stride = len1 + len2;
unsigned int record_size = valueFormat1.get_size () + valueFormat2.get_size ();
unsigned int count = (unsigned int) class1Count * (unsigned int) class2Count;
- return_trace (c->check_array (values, record_size, count) &&
- valueFormat1.sanitize_values_stride_unsafe (c, this, &values[0], count, stride) &&
- valueFormat2.sanitize_values_stride_unsafe (c, this, &values[len1], count, stride));
+ return TRACE_RETURN (c->check_array (values, record_size, count) &&
+ valueFormat1.sanitize_values_stride_unsafe (c, this, &values[0], count, stride) &&
+ valueFormat2.sanitize_values_stride_unsafe (c, this, &values[len1], count, stride));
}
protected:
@@ -856,11 +843,11 @@ struct PairPos
inline typename context_t::return_t dispatch (context_t *c) const
{
TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ());
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1));
- case 2: return_trace (c->dispatch (u.format2));
- default:return_trace (c->default_return_value ());
+ case 1: return TRACE_RETURN (c->dispatch (u.format1));
+ case 2: return TRACE_RETURN (c->dispatch (u.format2));
+ default:return TRACE_RETURN (c->default_return_value ());
}
}
@@ -880,7 +867,7 @@ struct EntryExitRecord
inline bool sanitize (hb_sanitize_context_t *c, const void *base) const
{
TRACE_SANITIZE (this);
- return_trace (entryAnchor.sanitize (c, base) && exitAnchor.sanitize (c, base));
+ return TRACE_RETURN (entryAnchor.sanitize (c, base) && exitAnchor.sanitize (c, base));
}
protected:
@@ -896,9 +883,6 @@ struct EntryExitRecord
DEFINE_SIZE_STATIC (4);
};
-static void
-reverse_cursive_minor_offset (hb_glyph_position_t *pos, unsigned int i, hb_direction_t direction, unsigned int new_parent);
-
struct CursivePosFormat1
{
inline void collect_glyphs (hb_collect_glyphs_context_t *c) const
@@ -917,15 +901,18 @@ struct CursivePosFormat1
TRACE_APPLY (this);
hb_buffer_t *buffer = c->buffer;
+ /* We don't handle mark glyphs here. */
+ if (unlikely (_hb_glyph_info_is_mark (&buffer->cur()))) return TRACE_RETURN (false);
+
const EntryExitRecord &this_record = entryExitRecord[(this+coverage).get_coverage (buffer->cur().codepoint)];
- if (!this_record.exitAnchor) return_trace (false);
+ if (!this_record.exitAnchor) return TRACE_RETURN (false);
hb_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
skippy_iter.reset (buffer->idx, 1);
- if (!skippy_iter.next ()) return_trace (false);
+ if (!skippy_iter.next ()) return TRACE_RETURN (false);
const EntryExitRecord &next_record = entryExitRecord[(this+coverage).get_coverage (buffer->info[skippy_iter.idx].codepoint)];
- if (!next_record.entryAnchor) return_trace (false);
+ if (!next_record.entryAnchor) return TRACE_RETURN (false);
unsigned int i = buffer->idx;
unsigned int j = skippy_iter.idx;
@@ -973,49 +960,28 @@ struct CursivePosFormat1
}
/* Cross-direction adjustment */
-
- /* We attach child to parent (think graph theory and rooted trees whereas
- * the root stays on baseline and each node aligns itself against its
- * parent.
- *
- * Optimize things for the case of RightToLeft, as that's most common in
- * Arabinc. */
- unsigned int child = i;
- unsigned int parent = j;
- hb_position_t x_offset = entry_x - exit_x;
- hb_position_t y_offset = entry_y - exit_y;
- if (!(c->lookup_props & LookupFlag::RightToLeft))
- {
- unsigned int k = child;
- child = parent;
- parent = k;
- x_offset = -x_offset;
- y_offset = -y_offset;
+ if (c->lookup_props & LookupFlag::RightToLeft) {
+ pos[i].cursive_chain() = j - i;
+ if (likely (HB_DIRECTION_IS_HORIZONTAL (c->direction)))
+ pos[i].y_offset = entry_y - exit_y;
+ else
+ pos[i].x_offset = entry_x - exit_x;
+ } else {
+ pos[j].cursive_chain() = i - j;
+ if (likely (HB_DIRECTION_IS_HORIZONTAL (c->direction)))
+ pos[j].y_offset = exit_y - entry_y;
+ else
+ pos[j].x_offset = exit_x - entry_x;
}
- /* If child was already connected to someone else, walk through its old
- * chain and reverse the link direction, such that the whole tree of its
- * previous connection now attaches to new parent. Watch out for case
- * where new parent is on the path from old chain...
- */
- reverse_cursive_minor_offset (pos, child, c->direction, parent);
-
- pos[child].attach_type() = ATTACH_TYPE_CURSIVE;
- pos[child].attach_chain() = (int) parent - (int) child;
- buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_GPOS_ATTACHMENT;
- if (likely (HB_DIRECTION_IS_HORIZONTAL (c->direction)))
- pos[child].y_offset = y_offset;
- else
- pos[child].x_offset = x_offset;
-
buffer->idx = j;
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this) && entryExitRecord.sanitize (c, this));
+ return TRACE_RETURN (coverage.sanitize (c, this) && entryExitRecord.sanitize (c, this));
}
protected:
@@ -1036,10 +1002,10 @@ struct CursivePos
inline typename context_t::return_t dispatch (context_t *c) const
{
TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ());
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1));
- default:return_trace (c->default_return_value ());
+ case 1: return TRACE_RETURN (c->dispatch (u.format1));
+ default:return TRACE_RETURN (c->default_return_value ());
}
}
@@ -1075,36 +1041,33 @@ struct MarkBasePosFormat1
TRACE_APPLY (this);
hb_buffer_t *buffer = c->buffer;
unsigned int mark_index = (this+markCoverage).get_coverage (buffer->cur().codepoint);
- if (likely (mark_index == NOT_COVERED)) return_trace (false);
+ if (likely (mark_index == NOT_COVERED)) return TRACE_RETURN (false);
- /* Now we search backwards for a non-mark glyph */
+ /* now we search backwards for a non-mark glyph */
hb_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
skippy_iter.reset (buffer->idx, 1);
skippy_iter.set_lookup_props (LookupFlag::IgnoreMarks);
do {
- if (!skippy_iter.prev ()) return_trace (false);
+ if (!skippy_iter.prev ()) return TRACE_RETURN (false);
/* We only want to attach to the first of a MultipleSubst sequence. Reject others. */
if (0 == _hb_glyph_info_get_lig_comp (&buffer->info[skippy_iter.idx])) break;
skippy_iter.reject ();
} while (1);
/* Checking that matched glyph is actually a base glyph by GDEF is too strong; disabled */
- //if (!_hb_glyph_info_is_base_glyph (&buffer->info[skippy_iter.idx])) { return_trace (false); }
+ if (!_hb_glyph_info_is_base_glyph (&buffer->info[skippy_iter.idx])) { /*return TRACE_RETURN (false);*/ }
unsigned int base_index = (this+baseCoverage).get_coverage (buffer->info[skippy_iter.idx].codepoint);
- if (base_index == NOT_COVERED) return_trace (false);
+ if (base_index == NOT_COVERED) return TRACE_RETURN (false);
- return_trace ((this+markArray).apply (c, mark_index, base_index, this+baseArray, classCount, skippy_iter.idx));
+ return TRACE_RETURN ((this+markArray).apply (c, mark_index, base_index, this+baseArray, classCount, skippy_iter.idx));
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) &&
- markCoverage.sanitize (c, this) &&
- baseCoverage.sanitize (c, this) &&
- markArray.sanitize (c, this) &&
- baseArray.sanitize (c, this, (unsigned int) classCount));
+ return TRACE_RETURN (c->check_struct (this) && markCoverage.sanitize (c, this) && baseCoverage.sanitize (c, this) &&
+ markArray.sanitize (c, this) && baseArray.sanitize (c, this, (unsigned int) classCount));
}
protected:
@@ -1132,10 +1095,10 @@ struct MarkBasePos
inline typename context_t::return_t dispatch (context_t *c) const
{
TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ());
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1));
- default:return_trace (c->default_return_value ());
+ case 1: return TRACE_RETURN (c->dispatch (u.format1));
+ default:return TRACE_RETURN (c->default_return_value ());
}
}
@@ -1176,27 +1139,27 @@ struct MarkLigPosFormat1
TRACE_APPLY (this);
hb_buffer_t *buffer = c->buffer;
unsigned int mark_index = (this+markCoverage).get_coverage (buffer->cur().codepoint);
- if (likely (mark_index == NOT_COVERED)) return_trace (false);
+ if (likely (mark_index == NOT_COVERED)) return TRACE_RETURN (false);
- /* Now we search backwards for a non-mark glyph */
+ /* now we search backwards for a non-mark glyph */
hb_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
skippy_iter.reset (buffer->idx, 1);
skippy_iter.set_lookup_props (LookupFlag::IgnoreMarks);
- if (!skippy_iter.prev ()) return_trace (false);
+ if (!skippy_iter.prev ()) return TRACE_RETURN (false);
/* Checking that matched glyph is actually a ligature by GDEF is too strong; disabled */
- //if (!_hb_glyph_info_is_ligature (&buffer->info[skippy_iter.idx])) { return_trace (false); }
+ if (!_hb_glyph_info_is_ligature (&buffer->info[skippy_iter.idx])) { /*return TRACE_RETURN (false);*/ }
unsigned int j = skippy_iter.idx;
unsigned int lig_index = (this+ligatureCoverage).get_coverage (buffer->info[j].codepoint);
- if (lig_index == NOT_COVERED) return_trace (false);
+ if (lig_index == NOT_COVERED) return TRACE_RETURN (false);
const LigatureArray& lig_array = this+ligatureArray;
const LigatureAttach& lig_attach = lig_array[lig_index];
/* Find component to attach to */
unsigned int comp_count = lig_attach.rows;
- if (unlikely (!comp_count)) return_trace (false);
+ if (unlikely (!comp_count)) return TRACE_RETURN (false);
/* We must now check whether the ligature ID of the current mark glyph
* is identical to the ligature ID of the found ligature. If yes, we
@@ -1211,17 +1174,14 @@ struct MarkLigPosFormat1
else
comp_index = comp_count - 1;
- return_trace ((this+markArray).apply (c, mark_index, comp_index, lig_attach, classCount, j));
+ return TRACE_RETURN ((this+markArray).apply (c, mark_index, comp_index, lig_attach, classCount, j));
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) &&
- markCoverage.sanitize (c, this) &&
- ligatureCoverage.sanitize (c, this) &&
- markArray.sanitize (c, this) &&
- ligatureArray.sanitize (c, this, (unsigned int) classCount));
+ return TRACE_RETURN (c->check_struct (this) && markCoverage.sanitize (c, this) && ligatureCoverage.sanitize (c, this) &&
+ markArray.sanitize (c, this) && ligatureArray.sanitize (c, this, (unsigned int) classCount));
}
protected:
@@ -1250,10 +1210,10 @@ struct MarkLigPos
inline typename context_t::return_t dispatch (context_t *c) const
{
TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ());
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1));
- default:return_trace (c->default_return_value ());
+ case 1: return TRACE_RETURN (c->dispatch (u.format1));
+ default:return TRACE_RETURN (c->default_return_value ());
}
}
@@ -1289,15 +1249,15 @@ struct MarkMarkPosFormat1
TRACE_APPLY (this);
hb_buffer_t *buffer = c->buffer;
unsigned int mark1_index = (this+mark1Coverage).get_coverage (buffer->cur().codepoint);
- if (likely (mark1_index == NOT_COVERED)) return_trace (false);
+ if (likely (mark1_index == NOT_COVERED)) return TRACE_RETURN (false);
/* now we search backwards for a suitable mark glyph until a non-mark glyph */
hb_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
skippy_iter.reset (buffer->idx, 1);
skippy_iter.set_lookup_props (c->lookup_props & ~LookupFlag::IgnoreFlags);
- if (!skippy_iter.prev ()) return_trace (false);
+ if (!skippy_iter.prev ()) return TRACE_RETURN (false);
- if (!_hb_glyph_info_is_mark (&buffer->info[skippy_iter.idx])) { return_trace (false); }
+ if (!_hb_glyph_info_is_mark (&buffer->info[skippy_iter.idx])) { return TRACE_RETURN (false); }
unsigned int j = skippy_iter.idx;
@@ -1319,23 +1279,21 @@ struct MarkMarkPosFormat1
}
/* Didn't match. */
- return_trace (false);
+ return TRACE_RETURN (false);
good:
unsigned int mark2_index = (this+mark2Coverage).get_coverage (buffer->info[j].codepoint);
- if (mark2_index == NOT_COVERED) return_trace (false);
+ if (mark2_index == NOT_COVERED) return TRACE_RETURN (false);
- return_trace ((this+mark1Array).apply (c, mark1_index, mark2_index, this+mark2Array, classCount, j));
+ return TRACE_RETURN ((this+mark1Array).apply (c, mark1_index, mark2_index, this+mark2Array, classCount, j));
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) &&
- mark1Coverage.sanitize (c, this) &&
- mark2Coverage.sanitize (c, this) &&
- mark1Array.sanitize (c, this) &&
- mark2Array.sanitize (c, this, (unsigned int) classCount));
+ return TRACE_RETURN (c->check_struct (this) && mark1Coverage.sanitize (c, this) &&
+ mark2Coverage.sanitize (c, this) && mark1Array.sanitize (c, this)
+ && mark2Array.sanitize (c, this, (unsigned int) classCount));
}
protected:
@@ -1365,10 +1323,10 @@ struct MarkMarkPos
inline typename context_t::return_t dispatch (context_t *c) const
{
TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ());
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1));
- default:return_trace (c->default_return_value ());
+ case 1: return TRACE_RETURN (c->dispatch (u.format1));
+ default:return TRACE_RETURN (c->default_return_value ());
}
}
@@ -1416,18 +1374,19 @@ struct PosLookupSubTable
inline typename context_t::return_t dispatch (context_t *c, unsigned int lookup_type) const
{
TRACE_DISPATCH (this, lookup_type);
- if (unlikely (!c->may_dispatch (this, &u.sub_format))) return_trace (c->no_dispatch_return_value ());
+ /* The sub_format passed to may_dispatch is unnecessary but harmless. */
+ if (unlikely (!c->may_dispatch (this, &u.sub_format))) TRACE_RETURN (c->default_return_value ());
switch (lookup_type) {
- case Single: return_trace (u.single.dispatch (c));
- case Pair: return_trace (u.pair.dispatch (c));
- case Cursive: return_trace (u.cursive.dispatch (c));
- case MarkBase: return_trace (u.markBase.dispatch (c));
- case MarkLig: return_trace (u.markLig.dispatch (c));
- case MarkMark: return_trace (u.markMark.dispatch (c));
- case Context: return_trace (u.context.dispatch (c));
- case ChainContext: return_trace (u.chainContext.dispatch (c));
- case Extension: return_trace (u.extension.dispatch (c));
- default: return_trace (c->default_return_value ());
+ case Single: return TRACE_RETURN (u.single.dispatch (c));
+ case Pair: return TRACE_RETURN (u.pair.dispatch (c));
+ case Cursive: return TRACE_RETURN (u.cursive.dispatch (c));
+ case MarkBase: return TRACE_RETURN (u.markBase.dispatch (c));
+ case MarkLig: return TRACE_RETURN (u.markLig.dispatch (c));
+ case MarkMark: return TRACE_RETURN (u.markMark.dispatch (c));
+ case Context: return TRACE_RETURN (u.context.dispatch (c));
+ case ChainContext: return TRACE_RETURN (u.chainContext.dispatch (c));
+ case Extension: return TRACE_RETURN (u.extension.dispatch (c));
+ default: return TRACE_RETURN (c->default_return_value ());
}
}
@@ -1462,13 +1421,13 @@ struct PosLookup : Lookup
inline bool apply (hb_apply_context_t *c) const
{
TRACE_APPLY (this);
- return_trace (dispatch (c));
+ return TRACE_RETURN (dispatch (c));
}
inline hb_collect_glyphs_context_t::return_t collect_glyphs (hb_collect_glyphs_context_t *c) const
{
TRACE_COLLECT_GLYPHS (this);
- return_trace (dispatch (c));
+ return TRACE_RETURN (dispatch (c));
}
template <typename set_t>
@@ -1490,8 +1449,9 @@ struct PosLookup : Lookup
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (unlikely (!Lookup::sanitize (c))) return_trace (false);
- return_trace (dispatch (c));
+ if (unlikely (!Lookup::sanitize (c))) return TRACE_RETURN (false);
+ const OffsetArrayOf<PosLookupSubTable> &list = get_subtables<PosLookupSubTable> ();
+ return TRACE_RETURN (dispatch (c));
}
};
@@ -1509,15 +1469,14 @@ struct GPOS : GSUBGPOS
{ return CastR<PosLookup> (GSUBGPOS::get_lookup (i)); }
static inline void position_start (hb_font_t *font, hb_buffer_t *buffer);
- static inline void position_finish_advances (hb_font_t *font, hb_buffer_t *buffer);
- static inline void position_finish_offsets (hb_font_t *font, hb_buffer_t *buffer);
+ static inline void position_finish (hb_font_t *font, hb_buffer_t *buffer);
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (unlikely (!GSUBGPOS::sanitize (c))) return_trace (false);
+ if (unlikely (!GSUBGPOS::sanitize (c))) return TRACE_RETURN (false);
const OffsetTo<PosLookupList> &list = CastR<OffsetTo<PosLookupList> > (lookupList);
- return_trace (list.sanitize (c, this));
+ return TRACE_RETURN (list.sanitize (c, this));
}
public:
DEFINE_SIZE_STATIC (10);
@@ -1525,89 +1484,59 @@ struct GPOS : GSUBGPOS
static void
-reverse_cursive_minor_offset (hb_glyph_position_t *pos, unsigned int i, hb_direction_t direction, unsigned int new_parent)
+fix_cursive_minor_offset (hb_glyph_position_t *pos, unsigned int i, hb_direction_t direction)
{
- int chain = pos[i].attach_chain(), type = pos[i].attach_type();
- if (likely (!chain || 0 == (type & ATTACH_TYPE_CURSIVE)))
+ unsigned int j = pos[i].cursive_chain();
+ if (likely (!j))
return;
- pos[i].attach_chain() = 0;
-
- unsigned int j = (int) i + chain;
+ j += i;
- /* Stop if we see new parent in the chain. */
- if (j == new_parent)
- return;
+ pos[i].cursive_chain() = 0;
- reverse_cursive_minor_offset (pos, j, direction, new_parent);
+ fix_cursive_minor_offset (pos, j, direction);
if (HB_DIRECTION_IS_HORIZONTAL (direction))
- pos[j].y_offset = -pos[i].y_offset;
+ pos[i].y_offset += pos[j].y_offset;
else
- pos[j].x_offset = -pos[i].x_offset;
-
- pos[j].attach_chain() = -chain;
- pos[j].attach_type() = type;
+ pos[i].x_offset += pos[j].x_offset;
}
+
static void
-propagate_attachment_offsets (hb_glyph_position_t *pos, unsigned int i, hb_direction_t direction)
+fix_mark_attachment (hb_glyph_position_t *pos, unsigned int i, hb_direction_t direction)
{
- /* Adjusts offsets of attached glyphs (both cursive and mark) to accumulate
- * offset of glyph they are attached to. */
- int chain = pos[i].attach_chain(), type = pos[i].attach_type();
- if (likely (!chain))
+ if (likely (!(pos[i].attach_lookback())))
return;
- unsigned int j = (int) i + chain;
-
- pos[i].attach_chain() = 0;
+ unsigned int j = i - pos[i].attach_lookback();
- propagate_attachment_offsets (pos, j, direction);
+ pos[i].x_offset += pos[j].x_offset;
+ pos[i].y_offset += pos[j].y_offset;
- assert (!!(type & ATTACH_TYPE_MARK) ^ !!(type & ATTACH_TYPE_CURSIVE));
-
- if (type & ATTACH_TYPE_CURSIVE)
- {
- if (HB_DIRECTION_IS_HORIZONTAL (direction))
- pos[i].y_offset += pos[j].y_offset;
- else
- pos[i].x_offset += pos[j].x_offset;
- }
- else /*if (type & ATTACH_TYPE_MARK)*/
- {
- pos[i].x_offset += pos[j].x_offset;
- pos[i].y_offset += pos[j].y_offset;
-
- assert (j < i);
- if (HB_DIRECTION_IS_FORWARD (direction))
- for (unsigned int k = j; k < i; k++) {
- pos[i].x_offset -= pos[k].x_advance;
- pos[i].y_offset -= pos[k].y_advance;
- }
- else
- for (unsigned int k = j + 1; k < i + 1; k++) {
- pos[i].x_offset += pos[k].x_advance;
- pos[i].y_offset += pos[k].y_advance;
- }
- }
+ if (HB_DIRECTION_IS_FORWARD (direction))
+ for (unsigned int k = j; k < i; k++) {
+ pos[i].x_offset -= pos[k].x_advance;
+ pos[i].y_offset -= pos[k].y_advance;
+ }
+ else
+ for (unsigned int k = j + 1; k < i + 1; k++) {
+ pos[i].x_offset += pos[k].x_advance;
+ pos[i].y_offset += pos[k].y_advance;
+ }
}
void
GPOS::position_start (hb_font_t *font HB_UNUSED, hb_buffer_t *buffer)
{
+ buffer->clear_positions ();
+
unsigned int count = buffer->len;
for (unsigned int i = 0; i < count; i++)
- buffer->pos[i].attach_chain() = buffer->pos[i].attach_type() = 0;
+ buffer->pos[i].attach_lookback() = buffer->pos[i].cursive_chain() = 0;
}
void
-GPOS::position_finish_advances (hb_font_t *font HB_UNUSED, hb_buffer_t *buffer)
-{
- //_hb_buffer_assert_gsubgpos_vars (buffer);
-}
-
-void
-GPOS::position_finish_offsets (hb_font_t *font HB_UNUSED, hb_buffer_t *buffer)
+GPOS::position_finish (hb_font_t *font HB_UNUSED, hb_buffer_t *buffer)
{
_hb_buffer_assert_gsubgpos_vars (buffer);
@@ -1615,10 +1544,13 @@ GPOS::position_finish_offsets (hb_font_t *font HB_UNUSED, hb_buffer_t *buffer)
hb_glyph_position_t *pos = hb_buffer_get_glyph_positions (buffer, &len);
hb_direction_t direction = buffer->props.direction;
+ /* Handle cursive connections */
+ for (unsigned int i = 0; i < len; i++)
+ fix_cursive_minor_offset (pos, i, direction);
+
/* Handle attachments */
- if (buffer->scratch_flags & HB_BUFFER_SCRATCH_FLAG_HAS_GPOS_ATTACHMENT)
- for (unsigned int i = 0; i < len; i++)
- propagate_attachment_offsets (pos, i, direction);
+ for (unsigned int i = 0; i < len; i++)
+ fix_mark_attachment (pos, i, direction);
}
@@ -1637,18 +1569,15 @@ template <typename context_t>
const GPOS &gpos = *(hb_ot_layout_from_face (c->face)->gpos);
const PosLookup &l = gpos.get_lookup (lookup_index);
unsigned int saved_lookup_props = c->lookup_props;
- unsigned int saved_lookup_index = c->lookup_index;
- c->set_lookup_index (lookup_index);
- c->set_lookup_props (l.get_props ());
+ c->set_lookup (l);
bool ret = l.dispatch (c);
- c->set_lookup_index (saved_lookup_index);
c->set_lookup_props (saved_lookup_props);
return ret;
}
-#undef attach_chain
-#undef attach_type
+#undef attach_lookback
+#undef cursive_chain
} /* namespace OT */
diff --git a/src/hb-ot-layout-gsub-table.hh b/src/hb-ot-layout-gsub-table.hh
index 7de56cf..ebe4c9e 100644
--- a/src/hb-ot-layout-gsub-table.hh
+++ b/src/hb-ot-layout-gsub-table.hh
@@ -67,7 +67,7 @@ struct SingleSubstFormat1
inline bool would_apply (hb_would_apply_context_t *c) const
{
TRACE_WOULD_APPLY (this);
- return_trace (c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED);
+ return TRACE_RETURN (c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED);
}
inline bool apply (hb_apply_context_t *c) const
@@ -75,14 +75,14 @@ struct SingleSubstFormat1
TRACE_APPLY (this);
hb_codepoint_t glyph_id = c->buffer->cur().codepoint;
unsigned int index = (this+coverage).get_coverage (glyph_id);
- if (likely (index == NOT_COVERED)) return_trace (false);
+ if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
/* According to the Adobe Annotated OpenType Suite, result is always
* limited to 16bit. */
glyph_id = (glyph_id + deltaGlyphID) & 0xFFFFu;
c->replace_glyph (glyph_id);
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool serialize (hb_serialize_context_t *c,
@@ -91,16 +91,16 @@ struct SingleSubstFormat1
int delta)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (*this))) return_trace (false);
- if (unlikely (!coverage.serialize (c, this).serialize (c, glyphs, num_glyphs))) return_trace (false);
+ if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false);
+ if (unlikely (!coverage.serialize (c, this).serialize (c, glyphs, num_glyphs))) return TRACE_RETURN (false);
deltaGlyphID.set (delta); /* TODO(serilaize) overflow? */
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this) && deltaGlyphID.sanitize (c));
+ return TRACE_RETURN (coverage.sanitize (c, this) && deltaGlyphID.sanitize (c));
}
protected:
@@ -144,7 +144,7 @@ struct SingleSubstFormat2
inline bool would_apply (hb_would_apply_context_t *c) const
{
TRACE_WOULD_APPLY (this);
- return_trace (c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED);
+ return TRACE_RETURN (c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED);
}
inline bool apply (hb_apply_context_t *c) const
@@ -152,14 +152,14 @@ struct SingleSubstFormat2
TRACE_APPLY (this);
hb_codepoint_t glyph_id = c->buffer->cur().codepoint;
unsigned int index = (this+coverage).get_coverage (glyph_id);
- if (likely (index == NOT_COVERED)) return_trace (false);
+ if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
- if (unlikely (index >= substitute.len)) return_trace (false);
+ if (unlikely (index >= substitute.len)) return TRACE_RETURN (false);
glyph_id = substitute[index];
c->replace_glyph (glyph_id);
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool serialize (hb_serialize_context_t *c,
@@ -168,16 +168,16 @@ struct SingleSubstFormat2
unsigned int num_glyphs)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (*this))) return_trace (false);
- if (unlikely (!substitute.serialize (c, substitutes, num_glyphs))) return_trace (false);
- if (unlikely (!coverage.serialize (c, this).serialize (c, glyphs, num_glyphs))) return_trace (false);
- return_trace (true);
+ if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false);
+ if (unlikely (!substitute.serialize (c, substitutes, num_glyphs))) return TRACE_RETURN (false);
+ if (unlikely (!coverage.serialize (c, this).serialize (c, glyphs, num_glyphs))) return TRACE_RETURN (false);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this) && substitute.sanitize (c));
+ return TRACE_RETURN (coverage.sanitize (c, this) && substitute.sanitize (c));
}
protected:
@@ -200,7 +200,7 @@ struct SingleSubst
unsigned int num_glyphs)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (u.format))) return_trace (false);
+ if (unlikely (!c->extend_min (u.format))) return TRACE_RETURN (false);
unsigned int format = 2;
int delta = 0;
if (num_glyphs) {
@@ -215,9 +215,9 @@ struct SingleSubst
}
u.format.set (format);
switch (u.format) {
- case 1: return_trace (u.format1.serialize (c, glyphs, num_glyphs, delta));
- case 2: return_trace (u.format2.serialize (c, glyphs, substitutes, num_glyphs));
- default:return_trace (false);
+ case 1: return TRACE_RETURN (u.format1.serialize (c, glyphs, num_glyphs, delta));
+ case 2: return TRACE_RETURN (u.format2.serialize (c, glyphs, substitutes, num_glyphs));
+ default:return TRACE_RETURN (false);
}
}
@@ -225,11 +225,11 @@ struct SingleSubst
inline typename context_t::return_t dispatch (context_t *c) const
{
TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ());
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1));
- case 2: return_trace (c->dispatch (u.format2));
- default:return_trace (c->default_return_value ());
+ case 1: return TRACE_RETURN (c->dispatch (u.format1));
+ case 2: return TRACE_RETURN (c->dispatch (u.format2));
+ default:return TRACE_RETURN (c->default_return_value ());
}
}
@@ -273,14 +273,14 @@ struct Sequence
* 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);
+ if (unlikely (!count)) return TRACE_RETURN (false);
/* Special-case to make it in-place and not consider this
* as a "multiplied" substitution. */
if (unlikely (count == 1))
{
c->replace_glyph (substitute.array[0]);
- return_trace (true);
+ return TRACE_RETURN (true);
}
unsigned int klass = _hb_glyph_info_is_ligature (&c->buffer->cur()) ?
@@ -292,7 +292,7 @@ struct Sequence
}
c->buffer->skip_glyph ();
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool serialize (hb_serialize_context_t *c,
@@ -300,15 +300,15 @@ struct Sequence
unsigned int num_glyphs)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (*this))) return_trace (false);
- if (unlikely (!substitute.serialize (c, glyphs, num_glyphs))) return_trace (false);
- return_trace (true);
+ if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false);
+ if (unlikely (!substitute.serialize (c, glyphs, num_glyphs))) return TRACE_RETURN (false);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (substitute.sanitize (c));
+ return TRACE_RETURN (substitute.sanitize (c));
}
protected:
@@ -347,7 +347,7 @@ struct MultipleSubstFormat1
inline bool would_apply (hb_would_apply_context_t *c) const
{
TRACE_WOULD_APPLY (this);
- return_trace (c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED);
+ return TRACE_RETURN (c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED);
}
inline bool apply (hb_apply_context_t *c) const
@@ -355,9 +355,9 @@ struct MultipleSubstFormat1
TRACE_APPLY (this);
unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
- if (likely (index == NOT_COVERED)) return_trace (false);
+ if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
- return_trace ((this+sequence[index]).apply (c));
+ return TRACE_RETURN ((this+sequence[index]).apply (c));
}
inline bool serialize (hb_serialize_context_t *c,
@@ -367,21 +367,21 @@ struct MultipleSubstFormat1
Supplier<GlyphID> &substitute_glyphs_list)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (*this))) return_trace (false);
- if (unlikely (!sequence.serialize (c, num_glyphs))) return_trace (false);
+ if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false);
+ if (unlikely (!sequence.serialize (c, num_glyphs))) return TRACE_RETURN (false);
for (unsigned int i = 0; i < num_glyphs; i++)
if (unlikely (!sequence[i].serialize (c, this).serialize (c,
substitute_glyphs_list,
- substitute_len_list[i]))) return_trace (false);
+ substitute_len_list[i]))) return TRACE_RETURN (false);
substitute_len_list.advance (num_glyphs);
- if (unlikely (!coverage.serialize (c, this).serialize (c, glyphs, num_glyphs))) return_trace (false);
- return_trace (true);
+ if (unlikely (!coverage.serialize (c, this).serialize (c, glyphs, num_glyphs))) return TRACE_RETURN (false);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this) && sequence.sanitize (c, this));
+ return TRACE_RETURN (coverage.sanitize (c, this) && sequence.sanitize (c, this));
}
protected:
@@ -405,12 +405,12 @@ struct MultipleSubst
Supplier<GlyphID> &substitute_glyphs_list)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (u.format))) return_trace (false);
+ if (unlikely (!c->extend_min (u.format))) return TRACE_RETURN (false);
unsigned int format = 1;
u.format.set (format);
switch (u.format) {
- case 1: return_trace (u.format1.serialize (c, glyphs, substitute_len_list, num_glyphs, substitute_glyphs_list));
- default:return_trace (false);
+ case 1: return TRACE_RETURN (u.format1.serialize (c, glyphs, substitute_len_list, num_glyphs, substitute_glyphs_list));
+ default:return TRACE_RETURN (false);
}
}
@@ -418,10 +418,10 @@ struct MultipleSubst
inline typename context_t::return_t dispatch (context_t *c) const
{
TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ());
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1));
- default:return_trace (c->default_return_value ());
+ case 1: return TRACE_RETURN (c->dispatch (u.format1));
+ default:return TRACE_RETURN (c->default_return_value ());
}
}
@@ -473,7 +473,7 @@ struct AlternateSubstFormat1
inline bool would_apply (hb_would_apply_context_t *c) const
{
TRACE_WOULD_APPLY (this);
- return_trace (c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED);
+ return TRACE_RETURN (c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED);
}
inline bool apply (hb_apply_context_t *c) const
@@ -482,11 +482,11 @@ struct AlternateSubstFormat1
hb_codepoint_t glyph_id = c->buffer->cur().codepoint;
unsigned int index = (this+coverage).get_coverage (glyph_id);
- if (likely (index == NOT_COVERED)) return_trace (false);
+ if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
const AlternateSet &alt_set = this+alternateSet[index];
- if (unlikely (!alt_set.len)) return_trace (false);
+ if (unlikely (!alt_set.len)) return TRACE_RETURN (false);
hb_mask_t glyph_mask = c->buffer->cur().mask;
hb_mask_t lookup_mask = c->lookup_mask;
@@ -495,13 +495,13 @@ struct AlternateSubstFormat1
unsigned int shift = _hb_ctz (lookup_mask);
unsigned int alt_index = ((lookup_mask & glyph_mask) >> shift);
- if (unlikely (alt_index > alt_set.len || alt_index == 0)) return_trace (false);
+ if (unlikely (alt_index > alt_set.len || alt_index == 0)) return TRACE_RETURN (false);
glyph_id = alt_set[alt_index - 1];
c->replace_glyph (glyph_id);
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool serialize (hb_serialize_context_t *c,
@@ -511,21 +511,21 @@ struct AlternateSubstFormat1
Supplier<GlyphID> &alternate_glyphs_list)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (*this))) return_trace (false);
- if (unlikely (!alternateSet.serialize (c, num_glyphs))) return_trace (false);
+ if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false);
+ if (unlikely (!alternateSet.serialize (c, num_glyphs))) return TRACE_RETURN (false);
for (unsigned int i = 0; i < num_glyphs; i++)
if (unlikely (!alternateSet[i].serialize (c, this).serialize (c,
alternate_glyphs_list,
- alternate_len_list[i]))) return_trace (false);
+ alternate_len_list[i]))) return TRACE_RETURN (false);
alternate_len_list.advance (num_glyphs);
- if (unlikely (!coverage.serialize (c, this).serialize (c, glyphs, num_glyphs))) return_trace (false);
- return_trace (true);
+ if (unlikely (!coverage.serialize (c, this).serialize (c, glyphs, num_glyphs))) return TRACE_RETURN (false);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this) && alternateSet.sanitize (c, this));
+ return TRACE_RETURN (coverage.sanitize (c, this) && alternateSet.sanitize (c, this));
}
protected:
@@ -549,12 +549,12 @@ struct AlternateSubst
Supplier<GlyphID> &alternate_glyphs_list)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (u.format))) return_trace (false);
+ if (unlikely (!c->extend_min (u.format))) return TRACE_RETURN (false);
unsigned int format = 1;
u.format.set (format);
switch (u.format) {
- case 1: return_trace (u.format1.serialize (c, glyphs, alternate_len_list, num_glyphs, alternate_glyphs_list));
- default:return_trace (false);
+ case 1: return TRACE_RETURN (u.format1.serialize (c, glyphs, alternate_len_list, num_glyphs, alternate_glyphs_list));
+ default:return TRACE_RETURN (false);
}
}
@@ -562,10 +562,10 @@ struct AlternateSubst
inline typename context_t::return_t dispatch (context_t *c) const
{
TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ());
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1));
- default:return_trace (c->default_return_value ());
+ case 1: return TRACE_RETURN (c->dispatch (u.format1));
+ default:return TRACE_RETURN (c->default_return_value ());
}
}
@@ -602,13 +602,13 @@ struct Ligature
{
TRACE_WOULD_APPLY (this);
if (c->len != component.len)
- return_trace (false);
+ return TRACE_RETURN (false);
for (unsigned int i = 1; i < c->len; i++)
if (likely (c->glyphs[i] != component[i]))
- return_trace (false);
+ return TRACE_RETURN (false);
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool apply (hb_apply_context_t *c) const
@@ -616,21 +616,21 @@ struct Ligature
TRACE_APPLY (this);
unsigned int count = component.len;
- if (unlikely (!count)) return_trace (false);
+ if (unlikely (!count)) return TRACE_RETURN (false);
/* Special-case to make it in-place and not consider this
* as a "ligated" substitution. */
if (unlikely (count == 1))
{
c->replace_glyph (ligGlyph);
- return_trace (true);
+ return TRACE_RETURN (true);
}
bool is_mark_ligature = false;
unsigned int total_component_count = 0;
unsigned int match_length = 0;
- unsigned int match_positions[HB_MAX_CONTEXT_LENGTH];
+ unsigned int match_positions[MAX_CONTEXT_LENGTH];
if (likely (!match_input (c, count,
&component[1],
@@ -640,7 +640,7 @@ struct Ligature
match_positions,
&is_mark_ligature,
&total_component_count)))
- return_trace (false);
+ return TRACE_RETURN (false);
ligate_input (c,
count,
@@ -650,7 +650,7 @@ struct Ligature
is_mark_ligature,
total_component_count);
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool serialize (hb_serialize_context_t *c,
@@ -659,17 +659,17 @@ struct Ligature
unsigned int num_components /* Including first component */)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (*this))) return_trace (false);
+ if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false);
ligGlyph = ligature;
- if (unlikely (!component.serialize (c, components, num_components))) return_trace (false);
- return_trace (true);
+ if (unlikely (!component.serialize (c, components, num_components))) return TRACE_RETURN (false);
+ return TRACE_RETURN (true);
}
public:
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (ligGlyph.sanitize (c) && component.sanitize (c));
+ return TRACE_RETURN (ligGlyph.sanitize (c) && component.sanitize (c));
}
protected:
@@ -708,9 +708,9 @@ struct LigatureSet
{
const Ligature &lig = this+ligature[i];
if (lig.would_apply (c))
- return_trace (true);
+ return TRACE_RETURN (true);
}
- return_trace (false);
+ return TRACE_RETURN (false);
}
inline bool apply (hb_apply_context_t *c) const
@@ -720,10 +720,10 @@ struct LigatureSet
for (unsigned int i = 0; i < num_ligs; i++)
{
const Ligature &lig = this+ligature[i];
- if (lig.apply (c)) return_trace (true);
+ if (lig.apply (c)) return TRACE_RETURN (true);
}
- return_trace (false);
+ return TRACE_RETURN (false);
}
inline bool serialize (hb_serialize_context_t *c,
@@ -733,22 +733,22 @@ struct LigatureSet
Supplier<GlyphID> &component_list /* Starting from second for each ligature */)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (*this))) return_trace (false);
- if (unlikely (!ligature.serialize (c, num_ligatures))) return_trace (false);
+ if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false);
+ if (unlikely (!ligature.serialize (c, num_ligatures))) return TRACE_RETURN (false);
for (unsigned int i = 0; i < num_ligatures; i++)
if (unlikely (!ligature[i].serialize (c, this).serialize (c,
ligatures[i],
component_list,
- component_count_list[i]))) return_trace (false);
+ component_count_list[i]))) return TRACE_RETURN (false);
ligatures.advance (num_ligatures);
component_count_list.advance (num_ligatures);
- return_trace (true);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (ligature.sanitize (c, this));
+ return TRACE_RETURN (ligature.sanitize (c, this));
}
protected:
@@ -790,10 +790,10 @@ struct LigatureSubstFormat1
{
TRACE_WOULD_APPLY (this);
unsigned int index = (this+coverage).get_coverage (c->glyphs[0]);
- if (likely (index == NOT_COVERED)) return_trace (false);
+ if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
const LigatureSet &lig_set = this+ligatureSet[index];
- return_trace (lig_set.would_apply (c));
+ return TRACE_RETURN (lig_set.would_apply (c));
}
inline bool apply (hb_apply_context_t *c) const
@@ -802,10 +802,10 @@ struct LigatureSubstFormat1
hb_codepoint_t glyph_id = c->buffer->cur().codepoint;
unsigned int index = (this+coverage).get_coverage (glyph_id);
- if (likely (index == NOT_COVERED)) return_trace (false);
+ if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
const LigatureSet &lig_set = this+ligatureSet[index];
- return_trace (lig_set.apply (c));
+ return TRACE_RETURN (lig_set.apply (c));
}
inline bool serialize (hb_serialize_context_t *c,
@@ -817,23 +817,23 @@ struct LigatureSubstFormat1
Supplier<GlyphID> &component_list /* Starting from second for each ligature */)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (*this))) return_trace (false);
- if (unlikely (!ligatureSet.serialize (c, num_first_glyphs))) return_trace (false);
+ if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false);
+ if (unlikely (!ligatureSet.serialize (c, num_first_glyphs))) return TRACE_RETURN (false);
for (unsigned int i = 0; i < num_first_glyphs; i++)
if (unlikely (!ligatureSet[i].serialize (c, this).serialize (c,
ligatures_list,
component_count_list,
ligature_per_first_glyph_count_list[i],
- component_list))) return_trace (false);
+ component_list))) return TRACE_RETURN (false);
ligature_per_first_glyph_count_list.advance (num_first_glyphs);
- if (unlikely (!coverage.serialize (c, this).serialize (c, first_glyphs, num_first_glyphs))) return_trace (false);
- return_trace (true);
+ if (unlikely (!coverage.serialize (c, this).serialize (c, first_glyphs, num_first_glyphs))) return TRACE_RETURN (false);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this) && ligatureSet.sanitize (c, this));
+ return TRACE_RETURN (coverage.sanitize (c, this) && ligatureSet.sanitize (c, this));
}
protected:
@@ -859,18 +859,13 @@ struct LigatureSubst
Supplier<GlyphID> &component_list /* Starting from second for each ligature */)
{
TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (u.format))) return_trace (false);
+ if (unlikely (!c->extend_min (u.format))) return TRACE_RETURN (false);
unsigned int format = 1;
u.format.set (format);
switch (u.format) {
- case 1: return_trace (u.format1.serialize (c,
- first_glyphs,
- ligature_per_first_glyph_count_list,
- num_first_glyphs,
- ligatures_list,
- component_count_list,
- component_list));
- default:return_trace (false);
+ case 1: return TRACE_RETURN (u.format1.serialize (c, first_glyphs, ligature_per_first_glyph_count_list, num_first_glyphs,
+ ligatures_list, component_count_list, component_list));
+ default:return TRACE_RETURN (false);
}
}
@@ -878,10 +873,10 @@ struct LigatureSubst
inline typename context_t::return_t dispatch (context_t *c) const
{
TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ());
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1));
- default:return_trace (c->default_return_value ());
+ case 1: return TRACE_RETURN (c->dispatch (u.format1));
+ default:return TRACE_RETURN (c->default_return_value ());
}
}
@@ -964,17 +959,17 @@ struct ReverseChainSingleSubstFormat1
inline bool would_apply (hb_would_apply_context_t *c) const
{
TRACE_WOULD_APPLY (this);
- return_trace (c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED);
+ return TRACE_RETURN (c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED);
}
inline bool apply (hb_apply_context_t *c) const
{
TRACE_APPLY (this);
- if (unlikely (c->nesting_level_left != HB_MAX_NESTING_LEVEL))
- return_trace (false); /* No chaining to this type */
+ if (unlikely (c->nesting_level_left != MAX_NESTING_LEVEL))
+ return TRACE_RETURN (false); /* No chaining to this type */
unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
- if (likely (index == NOT_COVERED)) return_trace (false);
+ if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
const OffsetArrayOf<Coverage> &lookahead = StructAfter<OffsetArrayOf<Coverage> > (backtrack);
const ArrayOf<GlyphID> &substitute = StructAfter<ArrayOf<GlyphID> > (lookahead);
@@ -991,22 +986,22 @@ struct ReverseChainSingleSubstFormat1
/* Note: We DON'T decrease buffer->idx. The main loop does it
* for us. This is useful for preventing surprises if someone
* calls us through a Context lookup. */
- return_trace (true);
+ return TRACE_RETURN (true);
}
- return_trace (false);
+ return TRACE_RETURN (false);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
if (!(coverage.sanitize (c, this) && backtrack.sanitize (c, this)))
- return_trace (false);
+ return TRACE_RETURN (false);
const OffsetArrayOf<Coverage> &lookahead = StructAfter<OffsetArrayOf<Coverage> > (backtrack);
if (!lookahead.sanitize (c, this))
- return_trace (false);
+ return TRACE_RETURN (false);
const ArrayOf<GlyphID> &substitute = StructAfter<ArrayOf<GlyphID> > (lookahead);
- return_trace (substitute.sanitize (c));
+ return TRACE_RETURN (substitute.sanitize (c));
}
protected:
@@ -1035,10 +1030,10 @@ struct ReverseChainSingleSubst
inline typename context_t::return_t dispatch (context_t *c) const
{
TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ());
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1));
- default:return_trace (c->default_return_value ());
+ case 1: return TRACE_RETURN (c->dispatch (u.format1));
+ default:return TRACE_RETURN (c->default_return_value ());
}
}
@@ -1074,17 +1069,18 @@ struct SubstLookupSubTable
inline typename context_t::return_t dispatch (context_t *c, unsigned int lookup_type) const
{
TRACE_DISPATCH (this, lookup_type);
- if (unlikely (!c->may_dispatch (this, &u.sub_format))) return_trace (c->no_dispatch_return_value ());
+ /* The sub_format passed to may_dispatch is unnecessary but harmless. */
+ if (unlikely (!c->may_dispatch (this, &u.sub_format))) TRACE_RETURN (c->default_return_value ());
switch (lookup_type) {
- case Single: return_trace (u.single.dispatch (c));
- case Multiple: return_trace (u.multiple.dispatch (c));
- case Alternate: return_trace (u.alternate.dispatch (c));
- case Ligature: return_trace (u.ligature.dispatch (c));
- case Context: return_trace (u.context.dispatch (c));
- case ChainContext: return_trace (u.chainContext.dispatch (c));
- case Extension: return_trace (u.extension.dispatch (c));
- case ReverseChainSingle: return_trace (u.reverseChainContextSingle.dispatch (c));
- default: return_trace (c->default_return_value ());
+ case Single: return TRACE_RETURN (u.single.dispatch (c));
+ case Multiple: return TRACE_RETURN (u.multiple.dispatch (c));
+ case Alternate: return TRACE_RETURN (u.alternate.dispatch (c));
+ case Ligature: return TRACE_RETURN (u.ligature.dispatch (c));
+ case Context: return TRACE_RETURN (u.context.dispatch (c));
+ case ChainContext: return TRACE_RETURN (u.chainContext.dispatch (c));
+ case Extension: return TRACE_RETURN (u.extension.dispatch (c));
+ case ReverseChainSingle: return TRACE_RETURN (u.reverseChainContextSingle.dispatch (c));
+ default: return TRACE_RETURN (c->default_return_value ());
}
}
@@ -1124,21 +1120,21 @@ struct SubstLookup : Lookup
inline bool apply (hb_apply_context_t *c) const
{
TRACE_APPLY (this);
- return_trace (dispatch (c));
+ return TRACE_RETURN (dispatch (c));
}
inline hb_closure_context_t::return_t closure (hb_closure_context_t *c) const
{
TRACE_CLOSURE (this);
c->set_recurse_func (dispatch_recurse_func<hb_closure_context_t>);
- return_trace (dispatch (c));
+ return TRACE_RETURN (dispatch (c));
}
inline hb_collect_glyphs_context_t::return_t collect_glyphs (hb_collect_glyphs_context_t *c) const
{
TRACE_COLLECT_GLYPHS (this);
c->set_recurse_func (dispatch_recurse_func<hb_collect_glyphs_context_t>);
- return_trace (dispatch (c));
+ return TRACE_RETURN (dispatch (c));
}
template <typename set_t>
@@ -1152,9 +1148,9 @@ struct SubstLookup : Lookup
const hb_ot_layout_lookup_accelerator_t *accel) const
{
TRACE_WOULD_APPLY (this);
- if (unlikely (!c->len)) return_trace (false);
- if (!accel->may_have (c->glyphs[0])) return_trace (false);
- return_trace (dispatch (c));
+ if (unlikely (!c->len)) return TRACE_RETURN (false);
+ if (!accel->may_have (c->glyphs[0])) return TRACE_RETURN (false);
+ return TRACE_RETURN (dispatch (c));
}
static bool apply_recurse_func (hb_apply_context_t *c, unsigned int lookup_index);
@@ -1170,8 +1166,8 @@ struct SubstLookup : Lookup
unsigned int num_glyphs)
{
TRACE_SERIALIZE (this);
- if (unlikely (!Lookup::serialize (c, SubstLookupSubTable::Single, lookup_props, 1))) return_trace (false);
- return_trace (serialize_subtable (c, 0).u.single.serialize (c, glyphs, substitutes, num_glyphs));
+ if (unlikely (!Lookup::serialize (c, SubstLookupSubTable::Single, lookup_props, 1))) return TRACE_RETURN (false);
+ return TRACE_RETURN (serialize_subtable (c, 0).u.single.serialize (c, glyphs, substitutes, num_glyphs));
}
inline bool serialize_multiple (hb_serialize_context_t *c,
@@ -1182,12 +1178,9 @@ struct SubstLookup : Lookup
Supplier<GlyphID> &substitute_glyphs_list)
{
TRACE_SERIALIZE (this);
- if (unlikely (!Lookup::serialize (c, SubstLookupSubTable::Multiple, lookup_props, 1))) return_trace (false);
- return_trace (serialize_subtable (c, 0).u.multiple.serialize (c,
- glyphs,
- substitute_len_list,
- num_glyphs,
- substitute_glyphs_list));
+ if (unlikely (!Lookup::serialize (c, SubstLookupSubTable::Multiple, lookup_props, 1))) return TRACE_RETURN (false);
+ return TRACE_RETURN (serialize_subtable (c, 0).u.multiple.serialize (c, glyphs, substitute_len_list, num_glyphs,
+ substitute_glyphs_list));
}
inline bool serialize_alternate (hb_serialize_context_t *c,
@@ -1198,12 +1191,9 @@ struct SubstLookup : Lookup
Supplier<GlyphID> &alternate_glyphs_list)
{
TRACE_SERIALIZE (this);
- if (unlikely (!Lookup::serialize (c, SubstLookupSubTable::Alternate, lookup_props, 1))) return_trace (false);
- return_trace (serialize_subtable (c, 0).u.alternate.serialize (c,
- glyphs,
- alternate_len_list,
- num_glyphs,
- alternate_glyphs_list));
+ if (unlikely (!Lookup::serialize (c, SubstLookupSubTable::Alternate, lookup_props, 1))) return TRACE_RETURN (false);
+ return TRACE_RETURN (serialize_subtable (c, 0).u.alternate.serialize (c, glyphs, alternate_len_list, num_glyphs,
+ alternate_glyphs_list));
}
inline bool serialize_ligature (hb_serialize_context_t *c,
@@ -1216,14 +1206,9 @@ struct SubstLookup : Lookup
Supplier<GlyphID> &component_list /* Starting from second for each ligature */)
{
TRACE_SERIALIZE (this);
- if (unlikely (!Lookup::serialize (c, SubstLookupSubTable::Ligature, lookup_props, 1))) return_trace (false);
- return_trace (serialize_subtable (c, 0).u.ligature.serialize (c,
- first_glyphs,
- ligature_per_first_glyph_count_list,
- num_first_glyphs,
- ligatures_list,
- component_count_list,
- component_list));
+ if (unlikely (!Lookup::serialize (c, SubstLookupSubTable::Ligature, lookup_props, 1))) return TRACE_RETURN (false);
+ return TRACE_RETURN (serialize_subtable (c, 0).u.ligature.serialize (c, first_glyphs, ligature_per_first_glyph_count_list, num_first_glyphs,
+ ligatures_list, component_count_list, component_list));
}
template <typename context_t>
@@ -1236,8 +1221,9 @@ struct SubstLookup : Lookup
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (unlikely (!Lookup::sanitize (c))) return_trace (false);
- if (unlikely (!dispatch (c))) return_trace (false);
+ if (unlikely (!Lookup::sanitize (c))) return TRACE_RETURN (false);
+ const OffsetArrayOf<SubstLookupSubTable> &list = get_subtables<SubstLookupSubTable> ();
+ if (unlikely (!dispatch (c))) return TRACE_RETURN (false);
if (unlikely (get_type () == SubstLookupSubTable::Extension))
{
@@ -1248,9 +1234,9 @@ struct SubstLookup : Lookup
unsigned int count = get_subtable_count ();
for (unsigned int i = 1; i < count; i++)
if (get_subtable (i).u.extension.get_type () != type)
- return_trace (false);
+ return TRACE_RETURN (false);
}
- return_trace (true);
+ return TRACE_RETURN (true);
}
};
@@ -1268,13 +1254,14 @@ struct GSUB : GSUBGPOS
{ return CastR<SubstLookup> (GSUBGPOS::get_lookup (i)); }
static inline void substitute_start (hb_font_t *font, hb_buffer_t *buffer);
+ static inline void substitute_finish (hb_font_t *font, hb_buffer_t *buffer);
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (unlikely (!GSUBGPOS::sanitize (c))) return_trace (false);
+ if (unlikely (!GSUBGPOS::sanitize (c))) return TRACE_RETURN (false);
const OffsetTo<SubstLookupList> &list = CastR<OffsetTo<SubstLookupList> > (lookupList);
- return_trace (list.sanitize (c, this));
+ return TRACE_RETURN (list.sanitize (c, this));
}
public:
DEFINE_SIZE_STATIC (10);
@@ -1288,32 +1275,19 @@ GSUB::substitute_start (hb_font_t *font, hb_buffer_t *buffer)
const GDEF &gdef = *hb_ot_layout_from_face (font->face)->gdef;
unsigned int count = buffer->len;
- hb_glyph_info_t *info = buffer->info;
for (unsigned int i = 0; i < count; i++)
{
- unsigned int props = gdef.get_glyph_props (info[i].codepoint);
- if (!props)
- {
- /* Never mark default-ignorables as marks.
- * They won't get in the way of lookups anyway,
- * but having them as mark will cause them to be skipped
- * over if the lookup-flag says so, but at least for the
- * Mongolian variation selectors, looks like Uniscribe
- * marks them as non-mark. Some Mongolian fonts without
- * GDEF rely on this. Another notable character that
- * this applies to is COMBINING GRAPHEME JOINER. */
- props = (_hb_glyph_info_get_general_category (&info[i]) !=
- HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK ||
- _hb_glyph_info_is_default_ignorable (&info[i])) ?
- HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH :
- HB_OT_LAYOUT_GLYPH_PROPS_MARK;
- }
- _hb_glyph_info_set_glyph_props (&info[i], props);
- _hb_glyph_info_clear_lig_props (&info[i]);
+ _hb_glyph_info_set_glyph_props (&buffer->info[i], gdef.get_glyph_props (buffer->info[i].codepoint));
+ _hb_glyph_info_clear_lig_props (&buffer->info[i]);
buffer->info[i].syllable() = 0;
}
}
+void
+GSUB::substitute_finish (hb_font_t *font HB_UNUSED, hb_buffer_t *buffer HB_UNUSED)
+{
+}
+
/* Out-of-class implementation for methods recursing */
@@ -1338,11 +1312,8 @@ template <typename context_t>
const GSUB &gsub = *(hb_ot_layout_from_face (c->face)->gsub);
const SubstLookup &l = gsub.get_lookup (lookup_index);
unsigned int saved_lookup_props = c->lookup_props;
- unsigned int saved_lookup_index = c->lookup_index;
- c->set_lookup_index (lookup_index);
- c->set_lookup_props (l.get_props ());
+ c->set_lookup (l);
bool ret = l.dispatch (c);
- c->set_lookup_index (saved_lookup_index);
c->set_lookup_props (saved_lookup_props);
return ret;
}
diff --git a/src/hb-ot-layout-gsubgpos-private.hh b/src/hb-ot-layout-gsubgpos-private.hh
index 56c5015..cbc6840 100644
--- a/src/hb-ot-layout-gsubgpos-private.hh
+++ b/src/hb-ot-layout-gsubgpos-private.hh
@@ -46,11 +46,14 @@ namespace OT {
(&c->debug_depth, c->get_name (), this, HB_FUNC, \
"");
-struct hb_closure_context_t :
- hb_dispatch_context_t<hb_closure_context_t, hb_void_t, HB_DEBUG_CLOSURE>
+struct hb_closure_context_t
{
inline const char *get_name (void) { return "CLOSURE"; }
+ static const unsigned int max_debug_depth = HB_DEBUG_CLOSURE;
+ typedef hb_void_t return_t;
typedef return_t (*recurse_func_t) (hb_closure_context_t *c, unsigned int lookup_index);
+ template <typename T, typename F>
+ inline bool may_dispatch (const T *obj, const F *format) { return true; }
template <typename T>
inline return_t dispatch (const T &obj) { obj.closure (this); return HB_VOID; }
static return_t default_return_value (void) { return HB_VOID; }
@@ -74,7 +77,7 @@ struct hb_closure_context_t :
hb_closure_context_t (hb_face_t *face_,
hb_set_t *glyphs_,
- unsigned int nesting_level_left_ = HB_MAX_NESTING_LEVEL) :
+ unsigned int nesting_level_left_ = MAX_NESTING_LEVEL) :
face (face_),
glyphs (glyphs_),
recurse_func (NULL),
@@ -95,10 +98,13 @@ struct hb_closure_context_t :
(&c->debug_depth, c->get_name (), this, HB_FUNC, \
"%d glyphs", c->len);
-struct hb_would_apply_context_t :
- hb_dispatch_context_t<hb_would_apply_context_t, bool, HB_DEBUG_WOULD_APPLY>
+struct hb_would_apply_context_t
{
inline const char *get_name (void) { return "WOULD_APPLY"; }
+ static const unsigned int max_debug_depth = HB_DEBUG_WOULD_APPLY;
+ typedef bool return_t;
+ template <typename T, typename F>
+ inline bool may_dispatch (const T *obj, const F *format) { return true; }
template <typename T>
inline return_t dispatch (const T &obj) { return obj.would_apply (this); }
static return_t default_return_value (void) { return false; }
@@ -132,11 +138,14 @@ struct hb_would_apply_context_t :
(&c->debug_depth, c->get_name (), this, HB_FUNC, \
"");
-struct hb_collect_glyphs_context_t :
- hb_dispatch_context_t<hb_collect_glyphs_context_t, hb_void_t, HB_DEBUG_COLLECT_GLYPHS>
+struct hb_collect_glyphs_context_t
{
inline const char *get_name (void) { return "COLLECT_GLYPHS"; }
+ static const unsigned int max_debug_depth = HB_DEBUG_COLLECT_GLYPHS;
+ typedef hb_void_t return_t;
typedef return_t (*recurse_func_t) (hb_collect_glyphs_context_t *c, unsigned int lookup_index);
+ template <typename T, typename F>
+ inline bool may_dispatch (const T *obj, const F *format) { return true; }
template <typename T>
inline return_t dispatch (const T &obj) { obj.collect_glyphs (this); return HB_VOID; }
static return_t default_return_value (void) { return HB_VOID; }
@@ -196,7 +205,7 @@ struct hb_collect_glyphs_context_t :
hb_set_t *glyphs_input, /* OUT. May be NULL */
hb_set_t *glyphs_after, /* OUT. May be NULL */
hb_set_t *glyphs_output, /* OUT. May be NULL */
- unsigned int nesting_level_left_ = HB_MAX_NESTING_LEVEL) :
+ unsigned int nesting_level_left_ = MAX_NESTING_LEVEL) :
face (face_),
before (glyphs_before ? glyphs_before : hb_set_get_empty ()),
input (glyphs_input ? glyphs_input : hb_set_get_empty ()),
@@ -223,14 +232,14 @@ struct hb_collect_glyphs_context_t :
#define HB_DEBUG_GET_COVERAGE (HB_DEBUG+0)
#endif
-/* XXX Can we remove this? */
-
template <typename set_t>
-struct hb_add_coverage_context_t :
- hb_dispatch_context_t<hb_add_coverage_context_t<set_t>, const Coverage &, HB_DEBUG_GET_COVERAGE>
+struct hb_add_coverage_context_t
{
inline const char *get_name (void) { return "GET_COVERAGE"; }
+ static const unsigned int max_debug_depth = HB_DEBUG_GET_COVERAGE;
typedef const Coverage &return_t;
+ template <typename T, typename F>
+ inline bool may_dispatch (const T *obj, const F *format) { return true; }
template <typename T>
inline return_t dispatch (const T &obj) { return obj.get_coverage (); }
static return_t default_return_value (void) { return Null(Coverage); }
@@ -257,11 +266,9 @@ struct hb_add_coverage_context_t :
#define TRACE_APPLY(this) \
hb_auto_trace_t<HB_DEBUG_APPLY, bool> trace \
(&c->debug_depth, c->get_name (), this, HB_FUNC, \
- "idx %d gid %u lookup %d", \
- c->buffer->idx, c->buffer->cur().codepoint, (int) c->lookup_index);
+ "idx %d codepoint %u", c->buffer->idx, c->buffer->cur().codepoint);
-struct hb_apply_context_t :
- hb_dispatch_context_t<hb_apply_context_t, bool, HB_DEBUG_APPLY>
+struct hb_apply_context_t
{
struct matcher_t
{
@@ -319,9 +326,10 @@ struct hb_apply_context_t :
if (!c->check_glyph_property (&info, lookup_props))
return SKIP_YES;
- if (unlikely (_hb_glyph_info_is_default_ignorable_and_not_fvs (&info) &&
+ if (unlikely (_hb_glyph_info_is_default_ignorable (&info) &&
(ignore_zwnj || !_hb_glyph_info_is_zwnj (&info)) &&
- (ignore_zwj || !_hb_glyph_info_is_zwj (&info))))
+ (ignore_zwj || !_hb_glyph_info_is_zwj (&info)) &&
+ !_hb_glyph_info_ligated (&info)))
return SKIP_MAYBE;
return SKIP_NO;
@@ -355,11 +363,11 @@ struct hb_apply_context_t :
{
matcher.set_lookup_props (lookup_props);
}
- inline void set_match_func (matcher_t::match_func_t match_func_,
- const void *match_data_,
+ inline void set_match_func (matcher_t::match_func_t match_func,
+ const void *match_data,
const USHORT glyph_data[])
{
- matcher.set_match_func (match_func_, match_data_);
+ matcher.set_match_func (match_func, match_data);
match_glyph_data = glyph_data;
}
@@ -441,7 +449,11 @@ struct hb_apply_context_t :
inline const char *get_name (void) { return "APPLY"; }
+ static const unsigned int max_debug_depth = HB_DEBUG_APPLY;
+ typedef bool return_t;
typedef return_t (*recurse_func_t) (hb_apply_context_t *c, unsigned int lookup_index);
+ template <typename T, typename F>
+ inline bool may_dispatch (const T *obj, const F *format) { return true; }
template <typename T>
inline return_t dispatch (const T &obj) { return obj.apply (this); }
static return_t default_return_value (void) { return false; }
@@ -470,7 +482,6 @@ struct hb_apply_context_t :
const GDEF &gdef;
bool has_glyph_classes;
skipping_iterator_t iter_input, iter_context;
- unsigned int lookup_index;
unsigned int debug_depth;
@@ -483,19 +494,18 @@ struct hb_apply_context_t :
lookup_mask (1),
auto_zwj (true),
recurse_func (NULL),
- nesting_level_left (HB_MAX_NESTING_LEVEL),
+ nesting_level_left (MAX_NESTING_LEVEL),
lookup_props (0),
gdef (*hb_ot_layout_from_face (face)->gdef),
has_glyph_classes (gdef.has_glyph_classes ()),
iter_input (),
iter_context (),
- lookup_index ((unsigned int) -1),
debug_depth (0) {}
inline void set_lookup_mask (hb_mask_t mask) { lookup_mask = mask; }
inline void set_auto_zwj (bool auto_zwj_) { auto_zwj = auto_zwj_; }
inline void set_recurse_func (recurse_func_t func) { recurse_func = func; }
- inline void set_lookup_index (unsigned int lookup_index_) { lookup_index = lookup_index_; }
+ inline void set_lookup (const Lookup &l) { set_lookup_props (l.get_props ()); }
inline void set_lookup_props (unsigned int lookup_props_)
{
lookup_props = lookup_props_;
@@ -506,39 +516,39 @@ struct hb_apply_context_t :
inline bool
match_properties_mark (hb_codepoint_t glyph,
unsigned int glyph_props,
- unsigned int match_props) const
+ unsigned int lookup_props) const
{
/* If using mark filtering sets, the high short of
- * match_props has the set index.
+ * lookup_props has the set index.
*/
- if (match_props & LookupFlag::UseMarkFilteringSet)
- return gdef.mark_set_covers (match_props >> 16, glyph);
+ if (lookup_props & LookupFlag::UseMarkFilteringSet)
+ return gdef.mark_set_covers (lookup_props >> 16, glyph);
- /* The second byte of match_props has the meaning
+ /* The second byte of lookup_props has the meaning
* "ignore marks of attachment type different than
* the attachment type specified."
*/
- if (match_props & LookupFlag::MarkAttachmentType)
- return (match_props & LookupFlag::MarkAttachmentType) == (glyph_props & LookupFlag::MarkAttachmentType);
+ if (lookup_props & LookupFlag::MarkAttachmentType)
+ return (lookup_props & LookupFlag::MarkAttachmentType) == (glyph_props & LookupFlag::MarkAttachmentType);
return true;
}
inline bool
check_glyph_property (const hb_glyph_info_t *info,
- unsigned int match_props) const
+ unsigned int lookup_props) const
{
hb_codepoint_t glyph = info->codepoint;
unsigned int glyph_props = _hb_glyph_info_get_glyph_props (info);
/* Not covered, if, for example, glyph class is ligature and
- * match_props includes LookupFlags::IgnoreLigatures
+ * lookup_props includes LookupFlags::IgnoreLigatures
*/
- if (glyph_props & match_props & LookupFlag::IgnoreFlags)
+ if (glyph_props & lookup_props & LookupFlag::IgnoreFlags)
return false;
if (unlikely (glyph_props & HB_OT_LAYOUT_GLYPH_PROPS_MARK))
- return match_properties_mark (glyph, glyph_props, match_props);
+ return match_properties_mark (glyph, glyph_props, lookup_props);
return true;
}
@@ -704,13 +714,13 @@ static inline bool match_input (hb_apply_context_t *c,
match_func_t match_func,
const void *match_data,
unsigned int *end_offset,
- unsigned int match_positions[HB_MAX_CONTEXT_LENGTH],
+ unsigned int match_positions[MAX_CONTEXT_LENGTH],
bool *p_is_mark_ligature = NULL,
unsigned int *p_total_component_count = NULL)
{
TRACE_APPLY (NULL);
- if (unlikely (count > HB_MAX_CONTEXT_LENGTH)) return_trace (false);
+ if (unlikely (count > MAX_CONTEXT_LENGTH)) TRACE_RETURN (false);
hb_buffer_t *buffer = c->buffer;
@@ -747,7 +757,7 @@ static inline bool match_input (hb_apply_context_t *c,
match_positions[0] = buffer->idx;
for (unsigned int i = 1; i < count; i++)
{
- if (!skippy_iter.next ()) return_trace (false);
+ if (!skippy_iter.next ()) return TRACE_RETURN (false);
match_positions[i] = skippy_iter.idx;
@@ -759,13 +769,13 @@ static inline bool match_input (hb_apply_context_t *c,
* all subsequent components should be attached to the same ligature
* component, otherwise we shouldn't ligate them. */
if (first_lig_id != this_lig_id || first_lig_comp != this_lig_comp)
- return_trace (false);
+ return TRACE_RETURN (false);
} else {
/* If first component was NOT attached to a previous ligature component,
* all subsequent components should also NOT be attached to any ligature
* component, unless they are attached to the first component itself! */
if (this_lig_id && this_lig_comp && (this_lig_id != first_lig_id))
- return_trace (false);
+ return TRACE_RETURN (false);
}
is_mark_ligature = is_mark_ligature && _hb_glyph_info_is_mark (&buffer->info[skippy_iter.idx]);
@@ -780,11 +790,11 @@ static inline bool match_input (hb_apply_context_t *c,
if (p_total_component_count)
*p_total_component_count = total_component_count;
- return_trace (true);
+ return TRACE_RETURN (true);
}
-static inline bool ligate_input (hb_apply_context_t *c,
+static inline void ligate_input (hb_apply_context_t *c,
unsigned int count, /* Including the first glyph */
- unsigned int match_positions[HB_MAX_CONTEXT_LENGTH], /* Including the first glyph */
+ unsigned int match_positions[MAX_CONTEXT_LENGTH], /* Including the first glyph */
unsigned int match_length,
hb_codepoint_t lig_glyph,
bool is_mark_ligature,
@@ -836,21 +846,19 @@ static inline bool ligate_input (hb_apply_context_t *c,
if (_hb_glyph_info_get_general_category (&buffer->cur()) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)
{
_hb_glyph_info_set_general_category (&buffer->cur(), HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER);
+ _hb_glyph_info_set_modified_combining_class (&buffer->cur(), 0);
}
}
c->replace_glyph_with_ligature (lig_glyph, klass);
for (unsigned int i = 1; i < count; i++)
{
- while (buffer->idx < match_positions[i] && !buffer->in_error)
+ while (buffer->idx < match_positions[i])
{
if (!is_mark_ligature) {
- unsigned int this_comp = _hb_glyph_info_get_lig_comp (&buffer->cur());
- if (this_comp == 0)
- this_comp = last_num_components;
unsigned int new_lig_comp = components_so_far - last_num_components +
- MIN (this_comp, last_num_components);
- _hb_glyph_info_set_lig_props_for_mark (&buffer->cur(), lig_id, new_lig_comp);
+ MIN (MAX (_hb_glyph_info_get_lig_comp (&buffer->cur()), 1u), last_num_components);
+ _hb_glyph_info_set_lig_props_for_mark (&buffer->cur(), lig_id, new_lig_comp);
}
buffer->next_glyph ();
}
@@ -867,17 +875,14 @@ static inline bool ligate_input (hb_apply_context_t *c,
/* Re-adjust components for any marks following. */
for (unsigned int i = buffer->idx; i < buffer->len; i++) {
if (last_lig_id == _hb_glyph_info_get_lig_id (&buffer->info[i])) {
- unsigned int this_comp = _hb_glyph_info_get_lig_comp (&buffer->info[i]);
- if (!this_comp)
- break;
unsigned int new_lig_comp = components_so_far - last_num_components +
- MIN (this_comp, last_num_components);
+ MIN (MAX (_hb_glyph_info_get_lig_comp (&buffer->info[i]), 1u), last_num_components);
_hb_glyph_info_set_lig_props_for_mark (&buffer->info[i], lig_id, new_lig_comp);
} else
break;
}
}
- return_trace (true);
+ TRACE_RETURN (true);
}
static inline bool match_backtrack (hb_apply_context_t *c,
@@ -894,9 +899,9 @@ static inline bool match_backtrack (hb_apply_context_t *c,
for (unsigned int i = 0; i < count; i++)
if (!skippy_iter.prev ())
- return_trace (false);
+ return TRACE_RETURN (false);
- return_trace (true);
+ return TRACE_RETURN (true);
}
static inline bool match_lookahead (hb_apply_context_t *c,
@@ -914,9 +919,9 @@ static inline bool match_lookahead (hb_apply_context_t *c,
for (unsigned int i = 0; i < count; i++)
if (!skippy_iter.next ())
- return_trace (false);
+ return TRACE_RETURN (false);
- return_trace (true);
+ return TRACE_RETURN (true);
}
@@ -926,7 +931,7 @@ struct LookupRecord
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this));
+ return TRACE_RETURN (c->check_struct (this));
}
USHORT sequenceIndex; /* Index into current glyph
@@ -949,7 +954,7 @@ static inline void recurse_lookups (context_t *c,
static inline bool apply_lookup (hb_apply_context_t *c,
unsigned int count, /* Including the first glyph */
- unsigned int match_positions[HB_MAX_CONTEXT_LENGTH], /* Including the first glyph */
+ unsigned int match_positions[MAX_CONTEXT_LENGTH], /* Including the first glyph */
unsigned int lookupCount,
const LookupRecord lookupRecord[], /* Array of LookupRecords--in design order */
unsigned int match_length)
@@ -971,17 +976,12 @@ static inline bool apply_lookup (hb_apply_context_t *c,
match_positions[j] += delta;
}
- for (unsigned int i = 0; i < lookupCount && !buffer->in_error; i++)
+ for (unsigned int i = 0; i < lookupCount; i++)
{
unsigned int idx = lookupRecord[i].sequenceIndex;
if (idx >= count)
continue;
- /* Don't recurse to ourself at same position.
- * Note that this test is too naive, it doesn't catch longer loops. */
- if (idx == 0 && lookupRecord[i].lookupListIndex == c->lookup_index)
- continue;
-
buffer->move_to (match_positions[idx]);
unsigned int orig_len = buffer->backtrack_len () + buffer->lookahead_len ();
@@ -999,13 +999,13 @@ static inline bool apply_lookup (hb_apply_context_t *c,
/* 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 = MAX ((int) match_positions[idx] + 1, int (end) + delta);
unsigned int next = idx + 1; /* next now is the position after the recursed lookup. */
if (delta > 0)
{
- if (unlikely (delta + count > HB_MAX_CONTEXT_LENGTH))
+ if (unlikely (delta + count > MAX_CONTEXT_LENGTH))
break;
}
else
@@ -1032,7 +1032,7 @@ static inline bool apply_lookup (hb_apply_context_t *c,
buffer->move_to (end);
- return_trace (true);
+ return TRACE_RETURN (true);
}
@@ -1104,7 +1104,7 @@ static inline bool context_apply_lookup (hb_apply_context_t *c,
ContextApplyLookupContext &lookup_context)
{
unsigned int match_length = 0;
- unsigned int match_positions[HB_MAX_CONTEXT_LENGTH];
+ unsigned int match_positions[MAX_CONTEXT_LENGTH];
return match_input (c,
inputCount, input,
lookup_context.funcs.match, lookup_context.match_data,
@@ -1141,14 +1141,14 @@ struct Rule
{
TRACE_WOULD_APPLY (this);
const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (inputZ, inputZ[0].static_size * (inputCount ? inputCount - 1 : 0));
- return_trace (context_would_apply_lookup (c, inputCount, inputZ, lookupCount, lookupRecord, lookup_context));
+ return TRACE_RETURN (context_would_apply_lookup (c, inputCount, inputZ, lookupCount, lookupRecord, lookup_context));
}
inline bool apply (hb_apply_context_t *c, ContextApplyLookupContext &lookup_context) const
{
TRACE_APPLY (this);
const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (inputZ, inputZ[0].static_size * (inputCount ? inputCount - 1 : 0));
- return_trace (context_apply_lookup (c, inputCount, inputZ, lookupCount, lookupRecord, lookup_context));
+ return TRACE_RETURN (context_apply_lookup (c, inputCount, inputZ, lookupCount, lookupRecord, lookup_context));
}
public:
@@ -1200,9 +1200,9 @@ struct RuleSet
for (unsigned int i = 0; i < num_rules; i++)
{
if ((this+rule[i]).would_apply (c, lookup_context))
- return_trace (true);
+ return TRACE_RETURN (true);
}
- return_trace (false);
+ return TRACE_RETURN (false);
}
inline bool apply (hb_apply_context_t *c, ContextApplyLookupContext &lookup_context) const
@@ -1212,15 +1212,15 @@ struct RuleSet
for (unsigned int i = 0; i < num_rules; i++)
{
if ((this+rule[i]).apply (c, lookup_context))
- return_trace (true);
+ return TRACE_RETURN (true);
}
- return_trace (false);
+ return TRACE_RETURN (false);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (rule.sanitize (c, this));
+ return TRACE_RETURN (rule.sanitize (c, this));
}
protected:
@@ -1277,7 +1277,7 @@ struct ContextFormat1
{match_glyph},
NULL
};
- return_trace (rule_set.would_apply (c, lookup_context));
+ return TRACE_RETURN (rule_set.would_apply (c, lookup_context));
}
inline const Coverage &get_coverage (void) const
@@ -1290,20 +1290,20 @@ struct ContextFormat1
TRACE_APPLY (this);
unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
if (likely (index == NOT_COVERED))
- return_trace (false);
+ return TRACE_RETURN (false);
const RuleSet &rule_set = this+ruleSet[index];
struct ContextApplyLookupContext lookup_context = {
{match_glyph},
NULL
};
- return_trace (rule_set.apply (c, lookup_context));
+ return TRACE_RETURN (rule_set.apply (c, lookup_context));
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this) && ruleSet.sanitize (c, this));
+ return TRACE_RETURN (coverage.sanitize (c, this) && ruleSet.sanitize (c, this));
}
protected:
@@ -1369,7 +1369,7 @@ struct ContextFormat2
{match_class},
&class_def
};
- return_trace (rule_set.would_apply (c, lookup_context));
+ return TRACE_RETURN (rule_set.would_apply (c, lookup_context));
}
inline const Coverage &get_coverage (void) const
@@ -1381,7 +1381,7 @@ struct ContextFormat2
{
TRACE_APPLY (this);
unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
- if (likely (index == NOT_COVERED)) return_trace (false);
+ if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
const ClassDef &class_def = this+classDef;
index = class_def.get_class (c->buffer->cur().codepoint);
@@ -1390,13 +1390,13 @@ struct ContextFormat2
{match_class},
&class_def
};
- return_trace (rule_set.apply (c, lookup_context));
+ return TRACE_RETURN (rule_set.apply (c, lookup_context));
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this) && classDef.sanitize (c, this) && ruleSet.sanitize (c, this));
+ return TRACE_RETURN (coverage.sanitize (c, this) && classDef.sanitize (c, this) && ruleSet.sanitize (c, this));
}
protected:
@@ -1460,7 +1460,7 @@ struct ContextFormat3
{match_coverage},
this
};
- return_trace (context_would_apply_lookup (c, glyphCount, (const USHORT *) (coverageZ + 1), lookupCount, lookupRecord, lookup_context));
+ return TRACE_RETURN (context_would_apply_lookup (c, glyphCount, (const USHORT *) (coverageZ + 1), lookupCount, lookupRecord, lookup_context));
}
inline const Coverage &get_coverage (void) const
@@ -1472,27 +1472,27 @@ struct ContextFormat3
{
TRACE_APPLY (this);
unsigned int index = (this+coverageZ[0]).get_coverage (c->buffer->cur().codepoint);
- if (likely (index == NOT_COVERED)) return_trace (false);
+ if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (coverageZ, coverageZ[0].static_size * glyphCount);
struct ContextApplyLookupContext lookup_context = {
{match_coverage},
this
};
- return_trace (context_apply_lookup (c, glyphCount, (const USHORT *) (coverageZ + 1), lookupCount, lookupRecord, lookup_context));
+ return TRACE_RETURN (context_apply_lookup (c, glyphCount, (const USHORT *) (coverageZ + 1), lookupCount, lookupRecord, lookup_context));
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (!c->check_struct (this)) return_trace (false);
+ if (!c->check_struct (this)) return TRACE_RETURN (false);
unsigned int count = glyphCount;
- if (!count) return_trace (false); /* We want to access coverageZ[0] freely. */
- if (!c->check_array (coverageZ, coverageZ[0].static_size, count)) return_trace (false);
+ if (!count) return TRACE_RETURN (false); /* We want to access coverageZ[0] freely. */
+ if (!c->check_array (coverageZ, coverageZ[0].static_size, count)) return TRACE_RETURN (false);
for (unsigned int i = 0; i < count; i++)
- if (!coverageZ[i].sanitize (c, this)) return_trace (false);
+ if (!coverageZ[i].sanitize (c, this)) return TRACE_RETURN (false);
const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (coverageZ, coverageZ[0].static_size * count);
- return_trace (c->check_array (lookupRecord, lookupRecord[0].static_size, lookupCount));
+ return TRACE_RETURN (c->check_array (lookupRecord, lookupRecord[0].static_size, lookupCount));
}
protected:
@@ -1515,12 +1515,12 @@ struct Context
inline typename context_t::return_t dispatch (context_t *c) const
{
TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ());
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1));
- case 2: return_trace (c->dispatch (u.format2));
- case 3: return_trace (c->dispatch (u.format3));
- default:return_trace (c->default_return_value ());
+ case 1: return TRACE_RETURN (c->dispatch (u.format1));
+ case 2: return TRACE_RETURN (c->dispatch (u.format2));
+ case 3: return TRACE_RETURN (c->dispatch (u.format3));
+ default:return TRACE_RETURN (c->default_return_value ());
}
}
@@ -1631,7 +1631,7 @@ static inline bool chain_context_apply_lookup (hb_apply_context_t *c,
ChainContextApplyLookupContext &lookup_context)
{
unsigned int match_length = 0;
- unsigned int match_positions[HB_MAX_CONTEXT_LENGTH];
+ unsigned int match_positions[MAX_CONTEXT_LENGTH];
return match_input (c,
inputCount, input,
lookup_context.funcs.match, lookup_context.match_data[1],
@@ -1685,11 +1685,11 @@ struct ChainRule
const HeadlessArrayOf<USHORT> &input = StructAfter<HeadlessArrayOf<USHORT> > (backtrack);
const ArrayOf<USHORT> &lookahead = StructAfter<ArrayOf<USHORT> > (input);
const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead);
- return_trace (chain_context_would_apply_lookup (c,
- backtrack.len, backtrack.array,
- input.len, input.array,
- lookahead.len, lookahead.array, lookup.len,
- lookup.array, lookup_context));
+ return TRACE_RETURN (chain_context_would_apply_lookup (c,
+ backtrack.len, backtrack.array,
+ input.len, input.array,
+ lookahead.len, lookahead.array, lookup.len,
+ lookup.array, lookup_context));
}
inline bool apply (hb_apply_context_t *c, ChainContextApplyLookupContext &lookup_context) const
@@ -1698,23 +1698,23 @@ struct ChainRule
const HeadlessArrayOf<USHORT> &input = StructAfter<HeadlessArrayOf<USHORT> > (backtrack);
const ArrayOf<USHORT> &lookahead = StructAfter<ArrayOf<USHORT> > (input);
const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead);
- return_trace (chain_context_apply_lookup (c,
- backtrack.len, backtrack.array,
- input.len, input.array,
- lookahead.len, lookahead.array, lookup.len,
- lookup.array, lookup_context));
+ return TRACE_RETURN (chain_context_apply_lookup (c,
+ backtrack.len, backtrack.array,
+ input.len, input.array,
+ lookahead.len, lookahead.array, lookup.len,
+ lookup.array, lookup_context));
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (!backtrack.sanitize (c)) return_trace (false);
+ if (!backtrack.sanitize (c)) return TRACE_RETURN (false);
const HeadlessArrayOf<USHORT> &input = StructAfter<HeadlessArrayOf<USHORT> > (backtrack);
- if (!input.sanitize (c)) return_trace (false);
+ if (!input.sanitize (c)) return TRACE_RETURN (false);
const ArrayOf<USHORT> &lookahead = StructAfter<ArrayOf<USHORT> > (input);
- if (!lookahead.sanitize (c)) return_trace (false);
+ if (!lookahead.sanitize (c)) return TRACE_RETURN (false);
const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead);
- return_trace (lookup.sanitize (c));
+ return TRACE_RETURN (lookup.sanitize (c));
}
protected:
@@ -1759,9 +1759,9 @@ struct ChainRuleSet
unsigned int num_rules = rule.len;
for (unsigned int i = 0; i < num_rules; i++)
if ((this+rule[i]).would_apply (c, lookup_context))
- return_trace (true);
+ return TRACE_RETURN (true);
- return_trace (false);
+ return TRACE_RETURN (false);
}
inline bool apply (hb_apply_context_t *c, ChainContextApplyLookupContext &lookup_context) const
@@ -1770,15 +1770,15 @@ struct ChainRuleSet
unsigned int num_rules = rule.len;
for (unsigned int i = 0; i < num_rules; i++)
if ((this+rule[i]).apply (c, lookup_context))
- return_trace (true);
+ return TRACE_RETURN (true);
- return_trace (false);
+ return TRACE_RETURN (false);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (rule.sanitize (c, this));
+ return TRACE_RETURN (rule.sanitize (c, this));
}
protected:
@@ -1833,7 +1833,7 @@ struct ChainContextFormat1
{match_glyph},
{NULL, NULL, NULL}
};
- return_trace (rule_set.would_apply (c, lookup_context));
+ return TRACE_RETURN (rule_set.would_apply (c, lookup_context));
}
inline const Coverage &get_coverage (void) const
@@ -1845,20 +1845,20 @@ struct ChainContextFormat1
{
TRACE_APPLY (this);
unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
- if (likely (index == NOT_COVERED)) return_trace (false);
+ if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
const ChainRuleSet &rule_set = this+ruleSet[index];
struct ChainContextApplyLookupContext lookup_context = {
{match_glyph},
{NULL, NULL, NULL}
};
- return_trace (rule_set.apply (c, lookup_context));
+ return TRACE_RETURN (rule_set.apply (c, lookup_context));
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this) && ruleSet.sanitize (c, this));
+ return TRACE_RETURN (coverage.sanitize (c, this) && ruleSet.sanitize (c, this));
}
protected:
@@ -1937,7 +1937,7 @@ struct ChainContextFormat2
&input_class_def,
&lookahead_class_def}
};
- return_trace (rule_set.would_apply (c, lookup_context));
+ return TRACE_RETURN (rule_set.would_apply (c, lookup_context));
}
inline const Coverage &get_coverage (void) const
@@ -1949,7 +1949,7 @@ struct ChainContextFormat2
{
TRACE_APPLY (this);
unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
- if (likely (index == NOT_COVERED)) return_trace (false);
+ if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
const ClassDef &backtrack_class_def = this+backtrackClassDef;
const ClassDef &input_class_def = this+inputClassDef;
@@ -1963,17 +1963,15 @@ struct ChainContextFormat2
&input_class_def,
&lookahead_class_def}
};
- return_trace (rule_set.apply (c, lookup_context));
+ return TRACE_RETURN (rule_set.apply (c, lookup_context));
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this) &&
- backtrackClassDef.sanitize (c, this) &&
- inputClassDef.sanitize (c, this) &&
- lookaheadClassDef.sanitize (c, this) &&
- ruleSet.sanitize (c, this));
+ return TRACE_RETURN (coverage.sanitize (c, this) && backtrackClassDef.sanitize (c, this) &&
+ inputClassDef.sanitize (c, this) && lookaheadClassDef.sanitize (c, this) &&
+ ruleSet.sanitize (c, this));
}
protected:
@@ -2056,11 +2054,11 @@ struct ChainContextFormat3
{match_coverage},
{this, this, this}
};
- return_trace (chain_context_would_apply_lookup (c,
- backtrack.len, (const USHORT *) backtrack.array,
- input.len, (const USHORT *) input.array + 1,
- lookahead.len, (const USHORT *) lookahead.array,
- lookup.len, lookup.array, lookup_context));
+ return TRACE_RETURN (chain_context_would_apply_lookup (c,
+ backtrack.len, (const USHORT *) backtrack.array,
+ input.len, (const USHORT *) input.array + 1,
+ lookahead.len, (const USHORT *) lookahead.array,
+ lookup.len, lookup.array, lookup_context));
}
inline const Coverage &get_coverage (void) const
@@ -2075,7 +2073,7 @@ struct ChainContextFormat3
const OffsetArrayOf<Coverage> &input = StructAfter<OffsetArrayOf<Coverage> > (backtrack);
unsigned int index = (this+input[0]).get_coverage (c->buffer->cur().codepoint);
- if (likely (index == NOT_COVERED)) return_trace (false);
+ if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
const OffsetArrayOf<Coverage> &lookahead = StructAfter<OffsetArrayOf<Coverage> > (input);
const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead);
@@ -2083,24 +2081,24 @@ struct ChainContextFormat3
{match_coverage},
{this, this, this}
};
- return_trace (chain_context_apply_lookup (c,
- backtrack.len, (const USHORT *) backtrack.array,
- input.len, (const USHORT *) input.array + 1,
- lookahead.len, (const USHORT *) lookahead.array,
- lookup.len, lookup.array, lookup_context));
+ return TRACE_RETURN (chain_context_apply_lookup (c,
+ backtrack.len, (const USHORT *) backtrack.array,
+ input.len, (const USHORT *) input.array + 1,
+ lookahead.len, (const USHORT *) lookahead.array,
+ lookup.len, lookup.array, lookup_context));
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (!backtrack.sanitize (c, this)) return_trace (false);
+ if (!backtrack.sanitize (c, this)) return TRACE_RETURN (false);
const OffsetArrayOf<Coverage> &input = StructAfter<OffsetArrayOf<Coverage> > (backtrack);
- if (!input.sanitize (c, this)) return_trace (false);
- if (!input.len) return_trace (false); /* To be consistent with Context. */
+ if (!input.sanitize (c, this)) return TRACE_RETURN (false);
+ if (!input.len) return TRACE_RETURN (false); /* To be consistent with Context. */
const OffsetArrayOf<Coverage> &lookahead = StructAfter<OffsetArrayOf<Coverage> > (input);
- if (!lookahead.sanitize (c, this)) return_trace (false);
+ if (!lookahead.sanitize (c, this)) return TRACE_RETURN (false);
const ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead);
- return_trace (lookup.sanitize (c));
+ return TRACE_RETURN (lookup.sanitize (c));
}
protected:
@@ -2130,12 +2128,12 @@ struct ChainContext
inline typename context_t::return_t dispatch (context_t *c) const
{
TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ());
switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1));
- case 2: return_trace (c->dispatch (u.format2));
- case 3: return_trace (c->dispatch (u.format3));
- default:return_trace (c->default_return_value ());
+ case 1: return TRACE_RETURN (c->dispatch (u.format1));
+ case 2: return TRACE_RETURN (c->dispatch (u.format2));
+ case 3: return TRACE_RETURN (c->dispatch (u.format3));
+ default:return TRACE_RETURN (c->default_return_value ());
}
}
@@ -2166,15 +2164,15 @@ struct ExtensionFormat1
inline typename context_t::return_t dispatch (context_t *c) const
{
TRACE_DISPATCH (this, format);
- if (unlikely (!c->may_dispatch (this, this))) return_trace (c->no_dispatch_return_value ());
- return_trace (get_subtable<typename T::LookupSubTable> ().dispatch (c, get_type ()));
+ if (unlikely (!c->may_dispatch (this, this))) TRACE_RETURN (c->default_return_value ());
+ return get_subtable<typename T::LookupSubTable> ().dispatch (c, get_type ());
}
/* This is called from may_dispatch() above with hb_sanitize_context_t. */
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) && extensionOffset != 0);
+ return TRACE_RETURN (c->check_struct (this) && extensionOffset != 0);
}
protected:
@@ -2211,10 +2209,10 @@ struct Extension
inline typename context_t::return_t dispatch (context_t *c) const
{
TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ if (unlikely (!c->may_dispatch (this, &u.format))) TRACE_RETURN (c->default_return_value ());
switch (u.format) {
- case 1: return_trace (u.format1.dispatch (c));
- default:return_trace (c->default_return_value ());
+ case 1: return TRACE_RETURN (u.format1.dispatch (c));
+ default:return TRACE_RETURN (c->default_return_value ());
}
}
@@ -2269,15 +2267,14 @@ struct GSUBGPOS
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (version.sanitize (c) &&
- likely (version.major == 1) &&
- scriptList.sanitize (c, this) &&
- featureList.sanitize (c, this) &&
- lookupList.sanitize (c, this));
+ return TRACE_RETURN (version.sanitize (c) && likely (version.major == 1) &&
+ scriptList.sanitize (c, this) &&
+ featureList.sanitize (c, this) &&
+ lookupList.sanitize (c, this));
}
protected:
- FixedVersion<>version; /* Version of the GSUB/GPOS table--initially set
+ FixedVersion version; /* Version of the GSUB/GPOS table--initially set
* to 0x00010000u */
OffsetTo<ScriptList>
scriptList; /* ScriptList table */
diff --git a/src/hb-ot-layout-jstf-table.hh b/src/hb-ot-layout-jstf-table.hh
index c306849..739dfd9 100644
--- a/src/hb-ot-layout-jstf-table.hh
+++ b/src/hb-ot-layout-jstf-table.hh
@@ -57,17 +57,17 @@ struct JstfPriority
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) &&
- shrinkageEnableGSUB.sanitize (c, this) &&
- shrinkageDisableGSUB.sanitize (c, this) &&
- shrinkageEnableGPOS.sanitize (c, this) &&
- shrinkageDisableGPOS.sanitize (c, this) &&
- shrinkageJstfMax.sanitize (c, this) &&
- extensionEnableGSUB.sanitize (c, this) &&
- extensionDisableGSUB.sanitize (c, this) &&
- extensionEnableGPOS.sanitize (c, this) &&
- extensionDisableGPOS.sanitize (c, this) &&
- extensionJstfMax.sanitize (c, this));
+ return TRACE_RETURN (c->check_struct (this) &&
+ shrinkageEnableGSUB.sanitize (c, this) &&
+ shrinkageDisableGSUB.sanitize (c, this) &&
+ shrinkageEnableGPOS.sanitize (c, this) &&
+ shrinkageDisableGPOS.sanitize (c, this) &&
+ shrinkageJstfMax.sanitize (c, this) &&
+ extensionEnableGSUB.sanitize (c, this) &&
+ extensionDisableGSUB.sanitize (c, this) &&
+ extensionEnableGPOS.sanitize (c, this) &&
+ extensionDisableGPOS.sanitize (c, this) &&
+ extensionJstfMax.sanitize (c, this));
}
protected:
@@ -127,7 +127,7 @@ struct JstfLangSys : OffsetListOf<JstfPriority>
const Record<JstfLangSys>::sanitize_closure_t * = NULL) const
{
TRACE_SANITIZE (this);
- return_trace (OffsetListOf<JstfPriority>::sanitize (c));
+ return TRACE_RETURN (OffsetListOf<JstfPriority>::sanitize (c));
}
};
@@ -168,9 +168,9 @@ struct JstfScript
const Record<JstfScript>::sanitize_closure_t * = NULL) const
{
TRACE_SANITIZE (this);
- return_trace (extenderGlyphs.sanitize (c, this) &&
- defaultLangSys.sanitize (c, this) &&
- langSys.sanitize (c, this));
+ return TRACE_RETURN (extenderGlyphs.sanitize (c, this) &&
+ defaultLangSys.sanitize (c, this) &&
+ langSys.sanitize (c, this));
}
protected:
@@ -212,13 +212,12 @@ struct JSTF
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (version.sanitize (c) &&
- likely (version.major == 1) &&
- scriptList.sanitize (c, this));
+ return TRACE_RETURN (version.sanitize (c) && likely (version.major == 1) &&
+ scriptList.sanitize (c, this));
}
protected:
- FixedVersion<>version; /* Version of the JSTF table--initially set
+ FixedVersion version; /* Version of the JSTF table--initially set
* to 0x00010000u */
RecordArrayOf<JstfScript>
scriptList; /* Array of JstfScripts--listed
diff --git a/src/hb-ot-layout-private.hh b/src/hb-ot-layout-private.hh
index 778b2c4..47fecd2 100644
--- a/src/hb-ot-layout-private.hh
+++ b/src/hb-ot-layout-private.hh
@@ -36,20 +36,11 @@
#include "hb-set-private.hh"
-/* Private API corresponding to hb-ot-layout.h: */
-
-HB_INTERNAL hb_bool_t
-hb_ot_layout_table_find_feature (hb_face_t *face,
- hb_tag_t table_tag,
- hb_tag_t feature_tag,
- unsigned int *feature_index);
-
-
/*
* GDEF
*/
-enum hb_ot_layout_glyph_props_flags_t
+typedef enum
{
/* The following three match LookupFlags::Ignore* numbers. */
HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH = 0x02u,
@@ -64,8 +55,7 @@ enum hb_ot_layout_glyph_props_flags_t
HB_OT_LAYOUT_GLYPH_PROPS_PRESERVE = HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED |
HB_OT_LAYOUT_GLYPH_PROPS_LIGATED |
HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED
-};
-HB_MARK_AS_FLAG_T (hb_ot_layout_glyph_props_flags_t);
+} hb_ot_layout_glyph_class_mask_t;
/*
@@ -99,20 +89,21 @@ hb_ot_layout_substitute_lookup (OT::hb_apply_context_t *c,
const hb_ot_layout_lookup_accelerator_t &accel);
-/* Should be called before all the position_lookup's are done. */
+/* Should be called after all the substitute_lookup's are done */
HB_INTERNAL void
-hb_ot_layout_position_start (hb_font_t *font,
- hb_buffer_t *buffer);
+hb_ot_layout_substitute_finish (hb_font_t *font,
+ hb_buffer_t *buffer);
+
-/* Should be called after all the position_lookup's are done, to finish advances. */
+/* Should be called before all the position_lookup's are done. Resets positions to zero. */
HB_INTERNAL void
-hb_ot_layout_position_finish_advances (hb_font_t *font,
- hb_buffer_t *buffer);
+hb_ot_layout_position_start (hb_font_t *font,
+ hb_buffer_t *buffer);
-/* Should be called after hb_ot_layout_position_finish_advances, to finish offsets. */
+/* Should be called after all the position_lookup's are done */
HB_INTERNAL void
-hb_ot_layout_position_finish_offsets (hb_font_t *font,
- hb_buffer_t *buffer);
+hb_ot_layout_position_finish (hb_font_t *font,
+ hb_buffer_t *buffer);
@@ -180,224 +171,82 @@ _hb_ot_layout_destroy (hb_ot_layout_t *layout);
*/
/* buffer var allocations, used during the entire shaping process */
-#define unicode_props() var2.u16[0]
+#define unicode_props0() var2.u8[0]
+#define unicode_props1() var2.u8[1]
/* buffer var allocations, used during the GSUB/GPOS processing */
#define glyph_props() var1.u16[0] /* GDEF glyph properties */
#define lig_props() var1.u8[2] /* GSUB/GPOS ligature tracking */
#define syllable() var1.u8[3] /* GSUB/GPOS shaping boundaries */
-
-/* loop over syllables */
-
-#define foreach_syllable(buffer, start, end) \
- for (unsigned int \
- _count = buffer->len, \
- start = 0, end = _count ? _next_syllable (buffer, 0) : 0; \
- start < _count; \
- start = end, end = _next_syllable (buffer, start))
-
-static inline unsigned int
-_next_syllable (hb_buffer_t *buffer, unsigned int start)
-{
- hb_glyph_info_t *info = buffer->info;
- unsigned int count = buffer->len;
-
- unsigned int syllable = info[start].syllable();
- while (++start < count && syllable == info[start].syllable())
- ;
-
- return start;
-}
-
-
/* unicode_props */
-/* Design:
- * unicode_props() is a two-byte number. The low byte includes:
- * - General_Category: 5 bits.
- * - A bit each for:
- * * Is it Default_Ignorable(); we have a modified Default_Ignorable().
- * * Whether it's one of the three Mongolian Free Variation Selectors.
- * * One free bit right now.
- *
- * The high-byte has different meanings, switched by the Gen-Cat:
- * - For Mn,Mc,Me: the modified Combining_Class.
- * - For Cf: whether it's ZWJ, ZWNJ, or something else.
- * - For Ws: index of which space character this is, if space fallback
- * is needed, ie. we don't set this by default, only if asked to.
- */
-
-enum hb_unicode_props_flags_t {
- UPROPS_MASK_GEN_CAT = 0x001Fu,
- UPROPS_MASK_IGNORABLE = 0x0020u,
- UPROPS_MASK_FVS = 0x0040u, /* MONGOLIAN FREE VARIATION SELECTOR 1..3 */
-
- /* If GEN_CAT=FORMAT, top byte masks: */
- UPROPS_MASK_Cf_ZWJ = 0x0100u,
- UPROPS_MASK_Cf_ZWNJ = 0x0200u
+enum {
+ MASK0_ZWJ = 0x20u,
+ MASK0_ZWNJ = 0x40u,
+ MASK0_IGNORABLE = 0x80u,
+ MASK0_GEN_CAT = 0x1Fu
};
-HB_MARK_AS_FLAG_T (hb_unicode_props_flags_t);
static inline void
-_hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_buffer_t *buffer)
+_hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_unicode_funcs_t *unicode)
{
- hb_unicode_funcs_t *unicode = buffer->unicode;
- unsigned int u = info->codepoint;
- unsigned int gen_cat = (unsigned int) unicode->general_category (u);
- unsigned int props = gen_cat;
-
- if (u >= 0x80)
- {
- buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_NON_ASCII;
- if (unlikely (unicode->is_default_ignorable (u)))
- {
- buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_DEFAULT_IGNORABLES;
- props |= UPROPS_MASK_IGNORABLE;
- if (u == 0x200Cu) props |= UPROPS_MASK_Cf_ZWNJ;
- if (u == 0x200Du) props |= UPROPS_MASK_Cf_ZWJ;
- /* Mongolian Free Variation Selectors need to be remembered
- * because although we need to hide them like default-ignorables,
- * they need to non-ignorable during shaping. This is similar to
- * what we do for joiners in Indic-like shapers, but since the
- * FVSes are GC=Mn, we have use a separate bit to remember them.
- * Fixes:
- * https://github.com/behdad/harfbuzz/issues/234
- */
- if (unlikely (hb_in_range (u, 0x180Bu, 0x180Du))) props |= UPROPS_MASK_FVS;
- }
- else if (unlikely (HB_UNICODE_GENERAL_CATEGORY_IS_NON_ENCLOSING_MARK_OR_MODIFIER_SYMBOL (gen_cat)))
- {
- /* The above check is just an optimization to let in only things we need further
- * processing on. */
-
- /* Only Mn and Mc can have non-zero ccc:
- * http://www.unicode.org/policies/stability_policy.html#Property_Value
- * """
- * Canonical_Combining_Class, General_Category
- * All characters other than those with General_Category property values
- * Spacing_Mark (Mc) and Nonspacing_Mark (Mn) have the Canonical_Combining_Class
- * property value 0.
- * 1.1.5+
- * """
- *
- * Also, all Mn's that are Default_Ignorable, have ccc=0, hence
- * the "else if".
- */
- props |= unicode->modified_combining_class (info->codepoint)<<8;
-
- /* Recategorize emoji skin-tone modifiers as Unicode mark, so they
- * behave correctly in non-native directionality. They originally
- * are MODIFIER_SYMBOL. Fixes:
- * https://github.com/behdad/harfbuzz/issues/169
- */
- if (unlikely (hb_in_range (u, 0x1F3FBu, 0x1F3FFu)))
- {
- props = gen_cat = HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK;
- }
- }
- }
-
- info->unicode_props() = props;
+ /* XXX This shouldn't be inlined, or at least not while is_default_ignorable() is inline. */
+ info->unicode_props0() = ((unsigned int) unicode->general_category (info->codepoint)) |
+ (unicode->is_default_ignorable (info->codepoint) ? MASK0_IGNORABLE : 0) |
+ (info->codepoint == 0x200Cu ? MASK0_ZWNJ : 0) |
+ (info->codepoint == 0x200Du ? MASK0_ZWJ : 0);
+ info->unicode_props1() = unicode->modified_combining_class (info->codepoint);
}
static inline void
_hb_glyph_info_set_general_category (hb_glyph_info_t *info,
hb_unicode_general_category_t gen_cat)
{
- /* Clears top-byte. */
- info->unicode_props() = (unsigned int) gen_cat | (info->unicode_props() & (0xFF & ~UPROPS_MASK_GEN_CAT));
+ info->unicode_props0() = (unsigned int) gen_cat | ((info->unicode_props0()) & ~MASK0_GEN_CAT);
}
static inline hb_unicode_general_category_t
_hb_glyph_info_get_general_category (const hb_glyph_info_t *info)
{
- return (hb_unicode_general_category_t) (info->unicode_props() & UPROPS_MASK_GEN_CAT);
+ return (hb_unicode_general_category_t) (info->unicode_props0() & MASK0_GEN_CAT);
}
-static inline bool
-_hb_glyph_info_is_unicode_mark (const hb_glyph_info_t *info)
-{
- return HB_UNICODE_GENERAL_CATEGORY_IS_MARK (info->unicode_props() & UPROPS_MASK_GEN_CAT);
-}
static inline void
_hb_glyph_info_set_modified_combining_class (hb_glyph_info_t *info,
unsigned int modified_class)
{
- if (unlikely (!_hb_glyph_info_is_unicode_mark (info)))
- return;
- info->unicode_props() = (modified_class<<8) | (info->unicode_props() & 0xFF);
+ info->unicode_props1() = modified_class;
}
+
static inline unsigned int
_hb_glyph_info_get_modified_combining_class (const hb_glyph_info_t *info)
{
- return _hb_glyph_info_is_unicode_mark (info) ? info->unicode_props()>>8 : 0;
-}
-
-static inline bool
-_hb_glyph_info_is_unicode_space (const hb_glyph_info_t *info)
-{
- return _hb_glyph_info_get_general_category (info) ==
- HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR;
+ return info->unicode_props1();
}
-static inline void
-_hb_glyph_info_set_unicode_space_fallback_type (hb_glyph_info_t *info, hb_unicode_funcs_t::space_t s)
-{
- if (unlikely (!_hb_glyph_info_is_unicode_space (info)))
- return;
- info->unicode_props() = (((unsigned int) s)<<8) | (info->unicode_props() & 0xFF);
-}
-static inline hb_unicode_funcs_t::space_t
-_hb_glyph_info_get_unicode_space_fallback_type (const hb_glyph_info_t *info)
-{
- return _hb_glyph_info_is_unicode_space (info) ?
- (hb_unicode_funcs_t::space_t) (info->unicode_props()>>8) :
- hb_unicode_funcs_t::NOT_SPACE;
-}
-
-static inline bool _hb_glyph_info_ligated (const hb_glyph_info_t *info);
static inline hb_bool_t
_hb_glyph_info_is_default_ignorable (const hb_glyph_info_t *info)
{
- return (info->unicode_props() & UPROPS_MASK_IGNORABLE) &&
- !_hb_glyph_info_ligated (info);
-}
-static inline hb_bool_t
-_hb_glyph_info_is_default_ignorable_and_not_fvs (const hb_glyph_info_t *info)
-{
- return ((info->unicode_props() & (UPROPS_MASK_IGNORABLE|UPROPS_MASK_FVS))
- == UPROPS_MASK_IGNORABLE) &&
- !_hb_glyph_info_ligated (info);
+ return !!(info->unicode_props0() & MASK0_IGNORABLE);
}
-static inline bool
-_hb_glyph_info_is_unicode_format (const hb_glyph_info_t *info)
-{
- return _hb_glyph_info_get_general_category (info) ==
- HB_UNICODE_GENERAL_CATEGORY_FORMAT;
-}
static inline hb_bool_t
_hb_glyph_info_is_zwnj (const hb_glyph_info_t *info)
{
- return _hb_glyph_info_is_unicode_format (info) && (info->unicode_props() & UPROPS_MASK_Cf_ZWNJ);
+ return !!(info->unicode_props0() & MASK0_ZWNJ);
}
+
static inline hb_bool_t
_hb_glyph_info_is_zwj (const hb_glyph_info_t *info)
{
- return _hb_glyph_info_is_unicode_format (info) && (info->unicode_props() & UPROPS_MASK_Cf_ZWJ);
-}
-static inline hb_bool_t
-_hb_glyph_info_is_joiner (const hb_glyph_info_t *info)
-{
- return _hb_glyph_info_is_unicode_format (info) && (info->unicode_props() & (UPROPS_MASK_Cf_ZWNJ|UPROPS_MASK_Cf_ZWJ));
+ return !!(info->unicode_props0() & MASK0_ZWJ);
}
+
static inline void
_hb_glyph_info_flip_joiners (hb_glyph_info_t *info)
{
- if (!_hb_glyph_info_is_unicode_format (info))
- return;
- info->unicode_props() ^= UPROPS_MASK_Cf_ZWNJ | UPROPS_MASK_Cf_ZWJ;
+ info->unicode_props0() ^= MASK0_ZWNJ | MASK0_ZWJ;
}
/* lig_props: aka lig_id / lig_comp
@@ -557,31 +406,28 @@ _hb_glyph_info_clear_ligated_and_multiplied (hb_glyph_info_t *info)
HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED);
}
-static inline void
-_hb_glyph_info_clear_substituted (hb_glyph_info_t *info)
-{
- info->glyph_props() &= ~(HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED);
-}
-
/* Allocation / deallocation. */
static inline void
_hb_buffer_allocate_unicode_vars (hb_buffer_t *buffer)
{
- HB_BUFFER_ALLOCATE_VAR (buffer, unicode_props);
+ HB_BUFFER_ALLOCATE_VAR (buffer, unicode_props0);
+ HB_BUFFER_ALLOCATE_VAR (buffer, unicode_props1);
}
static inline void
_hb_buffer_deallocate_unicode_vars (hb_buffer_t *buffer)
{
- HB_BUFFER_DEALLOCATE_VAR (buffer, unicode_props);
+ HB_BUFFER_DEALLOCATE_VAR (buffer, unicode_props0);
+ HB_BUFFER_DEALLOCATE_VAR (buffer, unicode_props1);
}
static inline void
_hb_buffer_assert_unicode_vars (hb_buffer_t *buffer)
{
- HB_BUFFER_ASSERT_VAR (buffer, unicode_props);
+ HB_BUFFER_ASSERT_VAR (buffer, unicode_props0);
+ HB_BUFFER_ASSERT_VAR (buffer, unicode_props1);
}
static inline void
diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc
index 29749bc..b1e69e8 100644
--- a/src/hb-ot-layout.cc
+++ b/src/hb-ot-layout.cc
@@ -28,7 +28,6 @@
* Google Author(s): Behdad Esfahbod
*/
-#include "hb-open-type-private.hh"
#include "hb-ot-layout-private.hh"
#include "hb-ot-layout-gdef-table.hh"
@@ -60,41 +59,6 @@ _hb_ot_layout_create (hb_face_t *face)
layout->gpos_blob = OT::Sanitizer<OT::GPOS>::sanitize (face->reference_table (HB_OT_TAG_GPOS));
layout->gpos = OT::Sanitizer<OT::GPOS>::lock_instance (layout->gpos_blob);
- {
- /*
- * The ugly business of blacklisting individual fonts' tables happen here!
- * See this thread for why we finally had to bend in and do this:
- * https://lists.freedesktop.org/archives/harfbuzz/2016-February/005489.html
- */
- unsigned int gdef_len = hb_blob_get_length (layout->gdef_blob);
- unsigned int gsub_len = hb_blob_get_length (layout->gsub_blob);
- unsigned int gpos_len = hb_blob_get_length (layout->gpos_blob);
- if (0
- /* sha1sum:c5ee92f0bca4bfb7d06c4d03e8cf9f9cf75d2e8a Windows 7? timesi.ttf */
- || (442 == gdef_len && 42038 == gpos_len && 2874 == gsub_len)
- /* sha1sum:37fc8c16a0894ab7b749e35579856c73c840867b Windows 7? timesbi.ttf */
- || (430 == gdef_len && 40662 == gpos_len && 2874 == gsub_len)
- /* sha1sum:19fc45110ea6cd3cdd0a5faca256a3797a069a80 Windows 7 timesi.ttf */
- || (442 == gdef_len && 39116 == gpos_len && 2874 == gsub_len)
- /* sha1sum:6d2d3c9ed5b7de87bc84eae0df95ee5232ecde26 Windows 7 timesbi.ttf */
- || (430 == gdef_len && 39374 == gpos_len && 2874 == gsub_len)
- /* sha1sum:8583225a8b49667c077b3525333f84af08c6bcd8 OS X 10.11.3 Times New Roman Italic.ttf */
- || (490 == gdef_len && 41638 == gpos_len && 3046 == gsub_len)
- /* sha1sum:ec0f5a8751845355b7c3271d11f9918a966cb8c9 OS X 10.11.3 Times New Roman Bold Italic.ttf */
- || (478 == gdef_len && 41902 == gpos_len && 3046 == gsub_len)
- )
- {
- /* In certain versions of Times New Roman Italic and Bold Italic,
- * ASCII double quotation mark U+0022, mapped to glyph 5, has wrong
- * glyph class 3 (mark) in GDEF. Nuke the GDEF to avoid zero-width
- * double-quote. See:
- * https://lists.freedesktop.org/archives/harfbuzz/2016-February/005489.html
- */
- if (3 == layout->gdef->get_glyph_class (5))
- layout->gdef = &OT::Null(OT::GDEF);
- }
- }
-
layout->gsub_lookup_count = layout->gsub->get_lookup_count ();
layout->gpos_lookup_count = layout->gpos->get_lookup_count ();
@@ -164,11 +128,6 @@ hb_ot_layout_has_glyph_classes (hb_face_t *face)
return _get_gdef (face).has_glyph_classes ();
}
-/**
- * hb_ot_layout_get_glyph_class:
- *
- * Since: 0.9.7
- **/
hb_ot_layout_glyph_class_t
hb_ot_layout_get_glyph_class (hb_face_t *face,
hb_codepoint_t glyph)
@@ -176,11 +135,6 @@ hb_ot_layout_get_glyph_class (hb_face_t *face,
return (hb_ot_layout_glyph_class_t) _get_gdef (face).get_glyph_class (glyph);
}
-/**
- * hb_ot_layout_get_glyphs_in_class:
- *
- * Since: 0.9.7
- **/
void
hb_ot_layout_get_glyphs_in_class (hb_face_t *face,
hb_ot_layout_glyph_class_t klass,
@@ -331,28 +285,6 @@ hb_ot_layout_table_get_feature_tags (hb_face_t *face,
return g.get_feature_tags (start_offset, feature_count, feature_tags);
}
-hb_bool_t
-hb_ot_layout_table_find_feature (hb_face_t *face,
- hb_tag_t table_tag,
- hb_tag_t feature_tag,
- unsigned int *feature_index)
-{
- ASSERT_STATIC (OT::Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_NO_FEATURE_INDEX);
- const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
-
- unsigned int num_features = g.get_feature_count ();
- for (unsigned int i = 0; i < num_features; i++)
- {
- if (feature_tag == g.get_feature_tag (i)) {
- if (feature_index) *feature_index = i;
- return true;
- }
- }
-
- if (feature_index) *feature_index = HB_OT_LAYOUT_NO_FEATURE_INDEX;
- return false;
-}
-
unsigned int
hb_ot_layout_script_get_language_tags (hb_face_t *face,
@@ -403,11 +335,6 @@ hb_ot_layout_language_get_required_feature_index (hb_face_t *face,
NULL);
}
-/**
- * hb_ot_layout_language_get_required_feature:
- *
- * Since: 0.9.30
- **/
hb_bool_t
hb_ot_layout_language_get_required_feature (hb_face_t *face,
hb_tag_t table_tag,
@@ -492,11 +419,6 @@ hb_ot_layout_language_find_feature (hb_face_t *face,
return false;
}
-/**
- * hb_ot_layout_feature_get_lookups:
- *
- * Since: 0.9.7
- **/
unsigned int
hb_ot_layout_feature_get_lookups (hb_face_t *face,
hb_tag_t table_tag,
@@ -511,11 +433,6 @@ hb_ot_layout_feature_get_lookups (hb_face_t *face,
return f.get_lookup_indexes (start_offset, lookup_count, lookup_indexes);
}
-/**
- * hb_ot_layout_table_get_lookup_count:
- *
- * Since: 0.9.22
- **/
unsigned int
hb_ot_layout_table_get_lookup_count (hb_face_t *face,
hb_tag_t table_tag)
@@ -673,11 +590,6 @@ _hb_ot_layout_collect_lookups_languages (hb_face_t *face,
}
}
-/**
- * hb_ot_layout_collect_lookups:
- *
- * Since: 0.9.8
- **/
void
hb_ot_layout_collect_lookups (hb_face_t *face,
hb_tag_t table_tag,
@@ -719,11 +631,6 @@ hb_ot_layout_collect_lookups (hb_face_t *face,
}
}
-/**
- * hb_ot_layout_lookup_collect_glyphs:
- *
- * Since: 0.9.7
- **/
void
hb_ot_layout_lookup_collect_glyphs (hb_face_t *face,
hb_tag_t table_tag,
@@ -769,11 +676,6 @@ hb_ot_layout_has_substitution (hb_face_t *face)
return &_get_gsub (face) != &OT::Null(OT::GSUB);
}
-/**
- * hb_ot_layout_lookup_would_substitute:
- *
- * Since: 0.9.7
- **/
hb_bool_t
hb_ot_layout_lookup_would_substitute (hb_face_t *face,
unsigned int lookup_index,
@@ -793,7 +695,7 @@ hb_ot_layout_lookup_would_substitute_fast (hb_face_t *face,
hb_bool_t zero_context)
{
if (unlikely (lookup_index >= hb_ot_layout_from_face (face)->gsub_lookup_count)) return false;
- OT::hb_would_apply_context_t c (face, glyphs, glyphs_length, (bool) zero_context);
+ OT::hb_would_apply_context_t c (face, glyphs, glyphs_length, zero_context);
const OT::SubstLookup& l = hb_ot_layout_from_face (face)->gsub->get_lookup (lookup_index);
@@ -806,11 +708,12 @@ hb_ot_layout_substitute_start (hb_font_t *font, hb_buffer_t *buffer)
OT::GSUB::substitute_start (font, buffer);
}
-/**
- * hb_ot_layout_lookup_substitute_closure:
- *
- * Since: 0.9.7
- **/
+void
+hb_ot_layout_substitute_finish (hb_font_t *font, hb_buffer_t *buffer)
+{
+ OT::GSUB::substitute_finish (font, buffer);
+}
+
void
hb_ot_layout_lookup_substitute_closure (hb_face_t *face,
unsigned int lookup_index,
@@ -840,22 +743,11 @@ hb_ot_layout_position_start (hb_font_t *font, hb_buffer_t *buffer)
}
void
-hb_ot_layout_position_finish_advances (hb_font_t *font, hb_buffer_t *buffer)
-{
- OT::GPOS::position_finish_advances (font, buffer);
-}
-
-void
-hb_ot_layout_position_finish_offsets (hb_font_t *font, hb_buffer_t *buffer)
+hb_ot_layout_position_finish (hb_font_t *font, hb_buffer_t *buffer)
{
- OT::GPOS::position_finish_offsets (font, buffer);
+ OT::GPOS::position_finish (font, buffer);
}
-/**
- * hb_ot_layout_get_size_params:
- *
- * Since: 0.9.10
- **/
hb_bool_t
hb_ot_layout_get_size_params (hb_face_t *face,
unsigned int *design_size, /* OUT. May be NULL */
@@ -937,79 +829,20 @@ struct GPOSProxy
};
-struct hb_get_subtables_context_t :
- OT::hb_dispatch_context_t<hb_get_subtables_context_t, hb_void_t, HB_DEBUG_APPLY>
-{
- template <typename Type>
- static inline bool apply_to (const void *obj, OT::hb_apply_context_t *c)
- {
- const Type *typed_obj = (const Type *) obj;
- return typed_obj->apply (c);
- }
-
- typedef bool (*hb_apply_func_t) (const void *obj, OT::hb_apply_context_t *c);
-
- struct hb_applicable_t
- {
- inline void init (const void *obj_, hb_apply_func_t apply_func_)
- {
- obj = obj_;
- apply_func = apply_func_;
- }
-
- inline bool apply (OT::hb_apply_context_t *c) const { return apply_func (obj, c); }
-
- private:
- const void *obj;
- hb_apply_func_t apply_func;
- };
-
- typedef hb_auto_array_t<hb_applicable_t> array_t;
-
- /* Dispatch interface. */
- inline const char *get_name (void) { return "GET_SUBTABLES"; }
- template <typename T>
- inline return_t dispatch (const T &obj)
- {
- hb_applicable_t *entry = array.push();
- if (likely (entry))
- entry->init (&obj, apply_to<T>);
- return HB_VOID;
- }
- static return_t default_return_value (void) { return HB_VOID; }
- bool stop_sublookup_iteration (return_t r HB_UNUSED) const { return false; }
-
- hb_get_subtables_context_t (array_t &array_) :
- array (array_),
- debug_depth (0) {}
-
- array_t &array;
- unsigned int debug_depth;
-};
-
+template <typename Obj>
static inline bool
apply_forward (OT::hb_apply_context_t *c,
- const hb_ot_layout_lookup_accelerator_t &accel,
- const hb_get_subtables_context_t::array_t &subtables)
+ const Obj &obj,
+ const hb_ot_layout_lookup_accelerator_t &accel)
{
bool ret = false;
hb_buffer_t *buffer = c->buffer;
- while (buffer->idx < buffer->len && !buffer->in_error)
+ while (buffer->idx < buffer->len)
{
- bool applied = false;
if (accel.may_have (buffer->cur().codepoint) &&
(buffer->cur().mask & c->lookup_mask) &&
- c->check_glyph_property (&buffer->cur(), c->lookup_props))
- {
- for (unsigned int i = 0; i < subtables.len; i++)
- if (subtables[i].apply (c))
- {
- applied = true;
- break;
- }
- }
-
- if (applied)
+ c->check_glyph_property (&buffer->cur(), c->lookup_props) &&
+ obj.apply (c))
ret = true;
else
buffer->next_glyph ();
@@ -1017,10 +850,11 @@ apply_forward (OT::hb_apply_context_t *c,
return ret;
}
+template <typename Obj>
static inline bool
apply_backward (OT::hb_apply_context_t *c,
- const hb_ot_layout_lookup_accelerator_t &accel,
- const hb_get_subtables_context_t::array_t &subtables)
+ const Obj &obj,
+ const hb_ot_layout_lookup_accelerator_t &accel)
{
bool ret = false;
hb_buffer_t *buffer = c->buffer;
@@ -1028,15 +862,9 @@ apply_backward (OT::hb_apply_context_t *c,
{
if (accel.may_have (buffer->cur().codepoint) &&
(buffer->cur().mask & c->lookup_mask) &&
- c->check_glyph_property (&buffer->cur(), c->lookup_props))
- {
- for (unsigned int i = 0; i < subtables.len; i++)
- if (subtables[i].apply (c))
- {
- ret = true;
- break;
- }
- }
+ c->check_glyph_property (&buffer->cur(), c->lookup_props) &&
+ obj.apply (c))
+ ret = true;
/* The reverse lookup doesn't "advance" cursor (for good reason). */
buffer->idx--;
@@ -1045,6 +873,29 @@ apply_backward (OT::hb_apply_context_t *c,
return ret;
}
+struct hb_apply_forward_context_t
+{
+ inline const char *get_name (void) { return "APPLY_FORWARD"; }
+ static const unsigned int max_debug_depth = HB_DEBUG_APPLY;
+ typedef bool return_t;
+ template <typename T, typename F>
+ inline bool may_dispatch (const T *obj, const F *format) { return true; }
+ template <typename T>
+ inline return_t dispatch (const T &obj) { return apply_forward (c, obj, accel); }
+ static return_t default_return_value (void) { return false; }
+ bool stop_sublookup_iteration (return_t r HB_UNUSED) const { return true; }
+
+ hb_apply_forward_context_t (OT::hb_apply_context_t *c_,
+ const hb_ot_layout_lookup_accelerator_t &accel_) :
+ c (c_),
+ accel (accel_),
+ debug_depth (0) {}
+
+ OT::hb_apply_context_t *c;
+ const hb_ot_layout_lookup_accelerator_t &accel;
+ unsigned int debug_depth;
+};
+
template <typename Proxy>
static inline void
apply_string (OT::hb_apply_context_t *c,
@@ -1056,11 +907,7 @@ apply_string (OT::hb_apply_context_t *c,
if (unlikely (!buffer->len || !c->lookup_mask))
return;
- c->set_lookup_props (lookup.get_props ());
-
- hb_get_subtables_context_t::array_t subtables;
- hb_get_subtables_context_t c_get_subtables (subtables);
- lookup.dispatch (&c_get_subtables);
+ c->set_lookup (lookup);
if (likely (!lookup.is_reverse ()))
{
@@ -1070,7 +917,13 @@ apply_string (OT::hb_apply_context_t *c,
buffer->idx = 0;
bool ret;
- ret = apply_forward (c, accel, subtables);
+ if (lookup.get_subtable_count () == 1)
+ {
+ hb_apply_forward_context_t c_forward (c, accel);
+ ret = lookup.dispatch (&c_forward);
+ }
+ else
+ ret = apply_forward (c, lookup, accel);
if (ret)
{
if (!Proxy::inplace)
@@ -1086,7 +939,7 @@ apply_string (OT::hb_apply_context_t *c,
buffer->remove_output ();
buffer->idx = buffer->len - 1;
- apply_backward (c, accel, subtables);
+ apply_backward (c, lookup, accel);
}
}
@@ -1106,14 +959,11 @@ inline void hb_ot_map_t::apply (const Proxy &proxy,
for (; i < stage->last_lookup; i++)
{
unsigned int lookup_index = lookups[table_index][i].index;
- if (!buffer->message (font, "start lookup %d", lookup_index)) continue;
- c.set_lookup_index (lookup_index);
c.set_lookup_mask (lookups[table_index][i].mask);
c.set_auto_zwj (lookups[table_index][i].auto_zwj);
apply_string<Proxy> (&c,
proxy.table.get_lookup (lookup_index),
proxy.accels[lookup_index]);
- (void) buffer->message (font, "end lookup %d", lookup_index);
}
if (stage->pause_func)
diff --git a/src/hb-ot-layout.h b/src/hb-ot-layout.h
index eb23d45..949678a 100644
--- a/src/hb-ot-layout.h
+++ b/src/hb-ot-layout.h
@@ -48,7 +48,7 @@ HB_BEGIN_DECLS
* GDEF
*/
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_ot_layout_has_glyph_classes (hb_face_t *face);
typedef enum {
@@ -59,11 +59,11 @@ typedef enum {
HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT = 4
} hb_ot_layout_glyph_class_t;
-HB_EXTERN hb_ot_layout_glyph_class_t
+hb_ot_layout_glyph_class_t
hb_ot_layout_get_glyph_class (hb_face_t *face,
hb_codepoint_t glyph);
-HB_EXTERN void
+void
hb_ot_layout_get_glyphs_in_class (hb_face_t *face,
hb_ot_layout_glyph_class_t klass,
hb_set_t *glyphs /* OUT */);
@@ -71,7 +71,7 @@ hb_ot_layout_get_glyphs_in_class (hb_face_t *face,
/* Not that useful. Provides list of attach points for a glyph that a
* client may want to cache */
-HB_EXTERN unsigned int
+unsigned int
hb_ot_layout_get_attach_points (hb_face_t *face,
hb_codepoint_t glyph,
unsigned int start_offset,
@@ -79,7 +79,7 @@ hb_ot_layout_get_attach_points (hb_face_t *face,
unsigned int *point_array /* OUT */);
/* Ligature caret positions */
-HB_EXTERN unsigned int
+unsigned int
hb_ot_layout_get_ligature_carets (hb_font_t *font,
hb_direction_t direction,
hb_codepoint_t glyph,
@@ -96,35 +96,35 @@ hb_ot_layout_get_ligature_carets (hb_font_t *font,
#define HB_OT_LAYOUT_NO_FEATURE_INDEX 0xFFFFu
#define HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX 0xFFFFu
-HB_EXTERN unsigned int
+unsigned int
hb_ot_layout_table_get_script_tags (hb_face_t *face,
hb_tag_t table_tag,
unsigned int start_offset,
unsigned int *script_count /* IN/OUT */,
hb_tag_t *script_tags /* OUT */);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_ot_layout_table_find_script (hb_face_t *face,
hb_tag_t table_tag,
hb_tag_t script_tag,
unsigned int *script_index);
/* Like find_script, but takes zero-terminated array of scripts to test */
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_ot_layout_table_choose_script (hb_face_t *face,
hb_tag_t table_tag,
const hb_tag_t *script_tags,
unsigned int *script_index,
hb_tag_t *chosen_script);
-HB_EXTERN unsigned int
+unsigned int
hb_ot_layout_table_get_feature_tags (hb_face_t *face,
hb_tag_t table_tag,
unsigned int start_offset,
unsigned int *feature_count /* IN/OUT */,
hb_tag_t *feature_tags /* OUT */);
-HB_EXTERN unsigned int
+unsigned int
hb_ot_layout_script_get_language_tags (hb_face_t *face,
hb_tag_t table_tag,
unsigned int script_index,
@@ -132,21 +132,21 @@ hb_ot_layout_script_get_language_tags (hb_face_t *face,
unsigned int *language_count /* IN/OUT */,
hb_tag_t *language_tags /* OUT */);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_ot_layout_script_find_language (hb_face_t *face,
hb_tag_t table_tag,
unsigned int script_index,
hb_tag_t language_tag,
unsigned int *language_index);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_ot_layout_language_get_required_feature_index (hb_face_t *face,
hb_tag_t table_tag,
unsigned int script_index,
unsigned int language_index,
unsigned int *feature_index);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_ot_layout_language_get_required_feature (hb_face_t *face,
hb_tag_t table_tag,
unsigned int script_index,
@@ -154,7 +154,7 @@ hb_ot_layout_language_get_required_feature (hb_face_t *face,
unsigned int *feature_index,
hb_tag_t *feature_tag);
-HB_EXTERN unsigned int
+unsigned int
hb_ot_layout_language_get_feature_indexes (hb_face_t *face,
hb_tag_t table_tag,
unsigned int script_index,
@@ -163,7 +163,7 @@ hb_ot_layout_language_get_feature_indexes (hb_face_t *face,
unsigned int *feature_count /* IN/OUT */,
unsigned int *feature_indexes /* OUT */);
-HB_EXTERN unsigned int
+unsigned int
hb_ot_layout_language_get_feature_tags (hb_face_t *face,
hb_tag_t table_tag,
unsigned int script_index,
@@ -172,7 +172,7 @@ hb_ot_layout_language_get_feature_tags (hb_face_t *face,
unsigned int *feature_count /* IN/OUT */,
hb_tag_t *feature_tags /* OUT */);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_ot_layout_language_find_feature (hb_face_t *face,
hb_tag_t table_tag,
unsigned int script_index,
@@ -180,7 +180,7 @@ hb_ot_layout_language_find_feature (hb_face_t *face,
hb_tag_t feature_tag,
unsigned int *feature_index);
-HB_EXTERN unsigned int
+unsigned int
hb_ot_layout_feature_get_lookups (hb_face_t *face,
hb_tag_t table_tag,
unsigned int feature_index,
@@ -188,12 +188,12 @@ hb_ot_layout_feature_get_lookups (hb_face_t *face,
unsigned int *lookup_count /* IN/OUT */,
unsigned int *lookup_indexes /* OUT */);
-HB_EXTERN unsigned int
+unsigned int
hb_ot_layout_table_get_lookup_count (hb_face_t *face,
hb_tag_t table_tag);
-HB_EXTERN void
+void
hb_ot_layout_collect_lookups (hb_face_t *face,
hb_tag_t table_tag,
const hb_tag_t *scripts,
@@ -201,7 +201,7 @@ hb_ot_layout_collect_lookups (hb_face_t *face,
const hb_tag_t *features,
hb_set_t *lookup_indexes /* OUT */);
-HB_EXTERN void
+void
hb_ot_layout_lookup_collect_glyphs (hb_face_t *face,
hb_tag_t table_tag,
unsigned int lookup_index,
@@ -228,7 +228,7 @@ typedef hb_bool_t
const hb_ot_layout_glyph_sequence_t *sequence,
void *user_data);
-HB_EXTERN void
+void
Xhb_ot_layout_lookup_enumerate_sequences (hb_face_t *face,
hb_tag_t table_tag,
unsigned int lookup_index,
@@ -241,17 +241,17 @@ Xhb_ot_layout_lookup_enumerate_sequences (hb_face_t *face,
* GSUB
*/
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_ot_layout_has_substitution (hb_face_t *face);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_ot_layout_lookup_would_substitute (hb_face_t *face,
unsigned int lookup_index,
const hb_codepoint_t *glyphs,
unsigned int glyphs_length,
hb_bool_t zero_context);
-HB_EXTERN void
+void
hb_ot_layout_lookup_substitute_closure (hb_face_t *face,
unsigned int lookup_index,
hb_set_t *glyphs
@@ -259,7 +259,7 @@ hb_ot_layout_lookup_substitute_closure (hb_face_t *face,
#ifdef HB_NOT_IMPLEMENTED
/* Note: You better have GDEF when using this API, or marks won't do much. */
-HB_EXTERN hb_bool_t
+hb_bool_t
Xhb_ot_layout_lookup_substitute (hb_font_t *font,
unsigned int lookup_index,
const hb_ot_layout_glyph_sequence_t *sequence,
@@ -274,12 +274,12 @@ Xhb_ot_layout_lookup_substitute (hb_font_t *font,
* GPOS
*/
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_ot_layout_has_positioning (hb_face_t *face);
#ifdef HB_NOT_IMPLEMENTED
/* Note: You better have GDEF when using this API, or marks won't do much. */
-HB_EXTERN hb_bool_t
+hb_bool_t
Xhb_ot_layout_lookup_position (hb_font_t *font,
unsigned int lookup_index,
const hb_ot_layout_glyph_sequence_t *sequence,
@@ -288,7 +288,7 @@ Xhb_ot_layout_lookup_position (hb_font_t *font,
/* Optical 'size' feature info. Returns true if found.
* http://www.microsoft.com/typography/otspec/features_pt.htm#size */
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_ot_layout_get_size_params (hb_face_t *face,
unsigned int *design_size, /* OUT. May be NULL */
unsigned int *subfamily_id, /* OUT. May be NULL */
diff --git a/src/hb-ot-map-private.hh b/src/hb-ot-map-private.hh
index 8692caa..86b7e9f 100644
--- a/src/hb-ot-map-private.hh
+++ b/src/hb-ot-map-private.hh
@@ -154,14 +154,27 @@ struct hb_ot_map_t
enum hb_ot_map_feature_flags_t {
F_NONE = 0x0000u,
- F_GLOBAL = 0x0001u, /* Feature applies to all characters; results in no mask allocated for it. */
- F_HAS_FALLBACK = 0x0002u, /* Has fallback implementation, so include mask bit even if feature not found. */
- F_MANUAL_ZWJ = 0x0004u, /* Don't skip over ZWJ when matching. */
- F_GLOBAL_SEARCH = 0x0008u /* If feature not found in LangSys, look for it in global feature list and pick one. */
+ F_GLOBAL = 0x0001u,
+ F_HAS_FALLBACK = 0x0002u,
+ F_MANUAL_ZWJ = 0x0004u
};
-HB_MARK_AS_FLAG_T (hb_ot_map_feature_flags_t);
/* Macro version for where const is desired. */
#define F_COMBINE(l,r) (hb_ot_map_feature_flags_t ((unsigned int) (l) | (unsigned int) (r)))
+static inline hb_ot_map_feature_flags_t
+operator | (hb_ot_map_feature_flags_t l, hb_ot_map_feature_flags_t r)
+{ return hb_ot_map_feature_flags_t ((unsigned int) l | (unsigned int) r); }
+static inline hb_ot_map_feature_flags_t
+operator & (hb_ot_map_feature_flags_t l, hb_ot_map_feature_flags_t r)
+{ return hb_ot_map_feature_flags_t ((unsigned int) l & (unsigned int) r); }
+static inline hb_ot_map_feature_flags_t
+operator ~ (hb_ot_map_feature_flags_t r)
+{ return hb_ot_map_feature_flags_t (~(unsigned int) r); }
+static inline hb_ot_map_feature_flags_t&
+operator |= (hb_ot_map_feature_flags_t &l, hb_ot_map_feature_flags_t r)
+{ l = l | r; return l; }
+static inline hb_ot_map_feature_flags_t&
+operator &= (hb_ot_map_feature_flags_t& l, hb_ot_map_feature_flags_t r)
+{ l = l & r; return l; }
struct hb_ot_map_builder_t
@@ -203,8 +216,7 @@ struct hb_ot_map_builder_t
unsigned int stage[2]; /* GSUB/GPOS */
static int cmp (const feature_info_t *a, const feature_info_t *b)
- { return (a->tag != b->tag) ? (a->tag < b->tag ? -1 : 1) :
- (a->seq < b->seq ? -1 : a->seq > b->seq ? 1 : 0); }
+ { return (a->tag != b->tag) ? (a->tag < b->tag ? -1 : 1) : (a->seq < b->seq ? -1 : 1); }
};
struct stage_info_t {
diff --git a/src/hb-ot-map.cc b/src/hb-ot-map.cc
index 7822cef..4985eb2 100644
--- a/src/hb-ot-map.cc
+++ b/src/hb-ot-map.cc
@@ -89,7 +89,7 @@ hb_ot_map_builder_t::hb_ot_map_builder_t (hb_face_t *face_,
for (unsigned int table_index = 0; table_index < 2; table_index++) {
hb_tag_t table_tag = table_tags[table_index];
- found_script[table_index] = (bool) hb_ot_layout_table_choose_script (face, table_tag, script_tags, &script_index[table_index], &chosen_script[table_index]);
+ found_script[table_index] = hb_ot_layout_table_choose_script (face, table_tag, script_tags, &script_index[table_index], &chosen_script[table_index]);
hb_ot_layout_script_find_language (face, table_tag, script_index[table_index], language_tag, &language_index[table_index]);
}
}
@@ -204,8 +204,11 @@ hb_ot_map_builder_t::compile (hb_ot_map_t &m)
for (unsigned int table_index = 0; table_index < 2; table_index++)
{
if (required_feature_tag[table_index] == info->tag)
+ {
required_feature_stage[table_index] = info->stage[table_index];
-
+ found = true;
+ continue;
+ }
found |= hb_ot_layout_language_find_feature (face,
table_tags[table_index],
script_index[table_index],
@@ -213,16 +216,6 @@ hb_ot_map_builder_t::compile (hb_ot_map_t &m)
info->tag,
&feature_index[table_index]);
}
- if (!found && (info->flags & F_GLOBAL_SEARCH))
- {
- for (unsigned int table_index = 0; table_index < 2; table_index++)
- {
- found |= hb_ot_layout_table_find_feature (face,
- table_tags[table_index],
- info->tag,
- &feature_index[table_index]);
- }
- }
if (!found && !(info->flags & F_HAS_FALLBACK))
continue;
diff --git a/src/hb-ot-maxp-table.hh b/src/hb-ot-maxp-table.hh
index 943e390..0d9a0fa 100644
--- a/src/hb-ot-maxp-table.hh
+++ b/src/hb-ot-maxp-table.hh
@@ -51,14 +51,13 @@ struct maxp
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) &&
- likely (version.major == 1 ||
- (version.major == 0 && version.minor == 0x5000u)));
+ return TRACE_RETURN (c->check_struct (this) &&
+ likely (version.major == 1 || (version.major == 0 && version.minor == 0x5000u)));
}
/* We only implement version 0.5 as none of the extra fields in version 1.0 are useful. */
protected:
- FixedVersion<>version; /* Version of the maxp table (0.5 or 1.0),
+ FixedVersion version; /* Version of the maxp table (0.5 or 1.0),
* 0x00005000u or 0x00010000u. */
USHORT numGlyphs; /* The number of glyphs in the font. */
public:
diff --git a/src/hb-ot-name-table.hh b/src/hb-ot-name-table.hh
index 870f123..21450c6 100644
--- a/src/hb-ot-name-table.hh
+++ b/src/hb-ot-name-table.hh
@@ -60,7 +60,7 @@ struct NameRecord
{
TRACE_SANITIZE (this);
/* We can check from base all the way up to the end of string... */
- return_trace (c->check_struct (this) && c->check_range ((char *) base, (unsigned int) length + offset));
+ return TRACE_RETURN (c->check_struct (this) && c->check_range ((char *) base, (unsigned int) length + offset));
}
USHORT platformID; /* Platform ID. */
@@ -107,17 +107,17 @@ struct name
char *string_pool = (char *) this + stringOffset;
unsigned int _count = count;
for (unsigned int i = 0; i < _count; i++)
- if (!nameRecord[i].sanitize (c, string_pool)) return_trace (false);
- return_trace (true);
+ if (!nameRecord[i].sanitize (c, string_pool)) return TRACE_RETURN (false);
+ return TRACE_RETURN (true);
}
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- return_trace (c->check_struct (this) &&
- likely (format == 0 || format == 1) &&
- c->check_array (nameRecord, nameRecord[0].static_size, count) &&
- sanitize_records (c));
+ return TRACE_RETURN (c->check_struct (this) &&
+ likely (format == 0 || format == 1) &&
+ c->check_array (nameRecord, nameRecord[0].static_size, count) &&
+ sanitize_records (c));
}
/* We only implement format 0 for now. */
diff --git a/src/hb-ot-os2-table.hh b/src/hb-ot-os2-table.hh
deleted file mode 100644
index 4709cd6..0000000
--- a/src/hb-ot-os2-table.hh
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright © 2011,2012 Google, Inc.
- *
- * This is part of HarfBuzz, a text shaping library.
- *
- * Permission is hereby granted, without written agreement and without
- * license or royalty fees, to use, copy, modify, and distribute this
- * software and its documentation for any purpose, provided that the
- * above copyright notice and the following two paragraphs appear in
- * all copies of this software.
- *
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
- * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
- * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
- * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- *
- * Google Author(s): Behdad Esfahbod
- */
-
-#ifndef HB_OT_OS2_TABLE_HH
-#define HB_OT_OS2_TABLE_HH
-
-#include "hb-open-type-private.hh"
-
-
-namespace OT {
-
-/*
- * OS/2 and Windows Metrics
- * http://www.microsoft.com/typography/otspec/os2.htm
- */
-
-#define HB_OT_TAG_os2 HB_TAG('O','S','/','2')
-
-struct os2
-{
- static const hb_tag_t tableTag = HB_OT_TAG_os2;
-
- inline bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (c->check_struct (this));
- }
-
- public:
- USHORT version;
-
- /* Version 0 */
- SHORT xAvgCharWidth;
- USHORT usWeightClass;
- USHORT usWidthClass;
- USHORT fsType;
- SHORT ySubscriptXSize;
- SHORT ySubscriptYSize;
- SHORT ySubscriptXOffset;
- SHORT ySubscriptYOffset;
- SHORT ySuperscriptXSize;
- SHORT ySuperscriptYSize;
- SHORT ySuperscriptXOffset;
- SHORT ySuperscriptYOffset;
- SHORT yStrikeoutSize;
- SHORT yStrikeoutPosition;
- SHORT sFamilyClass;
- BYTE panose[10];
- ULONG ulUnicodeRange[4];
- Tag achVendID;
- USHORT fsSelection;
- USHORT usFirstCharIndex;
- USHORT usLastCharIndex;
- SHORT sTypoAscender;
- SHORT sTypoDescender;
- SHORT sTypoLineGap;
- USHORT usWinAscent;
- USHORT usWinDescent;
-
- /* Version 1 */
- //ULONG ulCodePageRange1;
- //ULONG ulCodePageRange2;
-
- /* Version 2 */
- //SHORT sxHeight;
- //SHORT sCapHeight;
- //USHORT usDefaultChar;
- //USHORT usBreakChar;
- //USHORT usMaxContext;
-
- /* Version 5 */
- //USHORT usLowerOpticalPointSize;
- //USHORT usUpperOpticalPointSize;
-
- public:
- DEFINE_SIZE_STATIC (78);
-};
-
-} /* namespace OT */
-
-
-#endif /* HB_OT_OS2_TABLE_HH */
diff --git a/src/hb-ot-post-table.hh b/src/hb-ot-post-table.hh
deleted file mode 100644
index 82ab388..0000000
--- a/src/hb-ot-post-table.hh
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright © 2016 Google, Inc.
- *
- * This is part of HarfBuzz, a text shaping library.
- *
- * Permission is hereby granted, without written agreement and without
- * license or royalty fees, to use, copy, modify, and distribute this
- * software and its documentation for any purpose, provided that the
- * above copyright notice and the following two paragraphs appear in
- * all copies of this software.
- *
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
- * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
- * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
- * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- *
- * Google Author(s): Behdad Esfahbod
- */
-
-#ifndef HB_OT_POST_TABLE_HH
-#define HB_OT_POST_TABLE_HH
-
-#include "hb-open-type-private.hh"
-
-
-namespace OT {
-
-
-/*
- * post -- PostScript
- */
-
-#define HB_OT_TAG_post HB_TAG('p','o','s','t')
-
-
-struct postV2Tail
-{
- inline bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (numberOfGlyphs.sanitize (c) &&
- c->check_array (glyphNameIndex, sizeof (USHORT), numberOfGlyphs));
- }
-
- USHORT numberOfGlyphs; /* Number of glyphs (this should be the
- * same as numGlyphs in 'maxp' table). */
- USHORT glyphNameIndex[VAR]; /* This is not an offset, but is the
- * ordinal number of the glyph in 'post'
- * string tables. */
- BYTE namesX[VAR]; /* Glyph names with length bytes [variable]
- * (a Pascal string). */
-
- DEFINE_SIZE_ARRAY2 (2, glyphNameIndex, namesX);
-};
-
-struct post
-{
- static const hb_tag_t tableTag = HB_OT_TAG_post;
-
- inline bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- if (unlikely (!c->check_struct (this)))
- return_trace (false);
- if (version.to_int () == 0x00020000)
- {
- const postV2Tail &v2 = StructAfter<postV2Tail>(*this);
- return_trace (v2.sanitize (c));
- }
- return_trace (true);
- }
-
- public:
- FixedVersion<>version; /* 0x00010000 for version 1.0
- * 0x00020000 for version 2.0
- * 0x00025000 for version 2.5 (deprecated)
- * 0x00030000 for version 3.0 */
- Fixed italicAngle; /* Italic angle in counter-clockwise degrees
- * from the vertical. Zero for upright text,
- * negative for text that leans to the right
- * (forward). */
- FWORD underlinePosition; /* This is the suggested distance of the top
- * of the underline from the baseline
- * (negative values indicate below baseline).
- * The PostScript definition of this FontInfo
- * dictionary key (the y coordinate of the
- * center of the stroke) is not used for
- * historical reasons. The value of the
- * PostScript key may be calculated by
- * subtracting half the underlineThickness
- * from the value of this field. */
- FWORD underlineThickness; /* Suggested values for the underline
- thickness. */
- ULONG isFixedPitch; /* Set to 0 if the font is proportionally
- * spaced, non-zero if the font is not
- * proportionally spaced (i.e. monospaced). */
- ULONG minMemType42; /* Minimum memory usage when an OpenType font
- * is downloaded. */
- ULONG maxMemType42; /* Maximum memory usage when an OpenType font
- * is downloaded. */
- ULONG minMemType1; /* Minimum memory usage when an OpenType font
- * is downloaded as a Type 1 font. */
- ULONG maxMemType1; /* Maximum memory usage when an OpenType font
- * is downloaded as a Type 1 font. */
-/*postV2Tail v2[VAR];*/
- DEFINE_SIZE_STATIC (32);
-};
-
-} /* namespace OT */
-
-
-#endif /* HB_OT_POST_TABLE_HH */
diff --git a/src/hb-ot-shape-complex-arabic-fallback.hh b/src/hb-ot-shape-complex-arabic-fallback.hh
index d97d285..a77f24e 100644
--- a/src/hb-ot-shape-complex-arabic-fallback.hh
+++ b/src/hb-ot-shape-complex-arabic-fallback.hh
@@ -75,9 +75,9 @@ arabic_fallback_synthesize_lookup_single (const hb_ot_shape_plan_t *plan HB_UNUS
if (!num_glyphs)
return NULL;
- /* Bubble-sort or something equally good!
+ /* Bubble-sort!
* May not be good-enough for presidential candidate interviews, but good-enough for us... */
- hb_stable_sort (&glyphs[0], num_glyphs, OT::GlyphID::cmp, &substitutes[0]);
+ hb_bubble_sort (&glyphs[0], num_glyphs, OT::GlyphID::cmp, &substitutes[0]);
OT::Supplier<OT::GlyphID> glyphs_supplier (glyphs, num_glyphs);
OT::Supplier<OT::GlyphID> substitutes_supplier (substitutes, num_glyphs);
@@ -126,7 +126,7 @@ arabic_fallback_synthesize_lookup_ligature (const hb_ot_shape_plan_t *plan HB_UN
first_glyphs_indirection[num_first_glyphs] = first_glyph_idx;
num_first_glyphs++;
}
- hb_stable_sort (&first_glyphs[0], num_first_glyphs, OT::GlyphID::cmp, &first_glyphs_indirection[0]);
+ hb_bubble_sort (&first_glyphs[0], num_first_glyphs, OT::GlyphID::cmp, &first_glyphs_indirection[0]);
/* Now that the first-glyphs are sorted, walk again, populate ligatures. */
for (unsigned int i = 0; i < num_first_glyphs; i++)
diff --git a/src/hb-ot-shape-complex-arabic-private.hh b/src/hb-ot-shape-complex-arabic-private.hh
deleted file mode 100644
index fcedc7d..0000000
--- a/src/hb-ot-shape-complex-arabic-private.hh
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright © 2015 Mozilla Foundation.
- * Copyright © 2015 Google, Inc.
- *
- * This is part of HarfBuzz, a text shaping library.
- *
- * Permission is hereby granted, without written agreement and without
- * license or royalty fees, to use, copy, modify, and distribute this
- * software and its documentation for any purpose, provided that the
- * above copyright notice and the following two paragraphs appear in
- * all copies of this software.
- *
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
- * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
- * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
- * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- *
- * Mozilla Author(s): Jonathan Kew
- * Google Author(s): Behdad Esfahbod
- */
-
-#ifndef HB_OT_SHAPE_COMPLEX_ARABIC_PRIVATE_HH
-#define HB_OT_SHAPE_COMPLEX_ARABIC_PRIVATE_HH
-
-#include "hb-private.hh"
-
-#include "hb-ot-shape-complex-private.hh"
-
-
-struct arabic_shape_plan_t;
-
-HB_INTERNAL void *
-data_create_arabic (const hb_ot_shape_plan_t *plan);
-
-HB_INTERNAL void
-data_destroy_arabic (void *data);
-
-HB_INTERNAL void
-setup_masks_arabic_plan (const arabic_shape_plan_t *arabic_plan,
- hb_buffer_t *buffer,
- hb_script_t script);
-
-#endif /* HB_OT_SHAPE_COMPLEX_ARABIC_PRIVATE_HH */
diff --git a/src/hb-ot-shape-complex-arabic-table.hh b/src/hb-ot-shape-complex-arabic-table.hh
index 80d5044..1710049 100644
--- a/src/hb-ot-shape-complex-arabic-table.hh
+++ b/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-7.0.0.txt
+ * # Date: 2014-02-14, 21:00:00 GMT [RP, KW, LI]
+ * # Blocks-7.0.0.txt
+ * # Date: 2014-04-03, 23:23:00 GMT [RP, KW]
* UnicodeData.txt does not have a header.
*/
@@ -76,9 +76,9 @@ 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,
-#define joining_offset_0x1806u 693
+#define joining_offset_0x1806u 691
/* Mongolian */
@@ -89,40 +89,40 @@ static const uint8_t joining_table[] =
/* 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,
/* 18A0 */ D,D,D,D,D,D,D,D,D,X,D,
-#define joining_offset_0x200cu 858
+#define joining_offset_0x200cu 856
/* General Punctuation */
/* 2000 */ U,C,
-#define joining_offset_0x2066u 860
+#define joining_offset_0x2066u 858
/* General Punctuation */
/* 2060 */ U,U,U,U,
-#define joining_offset_0xa840u 864
+#define joining_offset_0xa840u 862
/* 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 914
/* 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 962
/* 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% */
+}; /* Table items: 1010; occupancy: 57% */
static unsigned int
@@ -131,7 +131,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, 0x08B2u)) return joining_table[u - 0x0600u + joining_offset_0x0600u];
break;
case 0x1u:
diff --git a/src/hb-ot-shape-complex-arabic-win1256.hh b/src/hb-ot-shape-complex-arabic-win1256.hh
index e70c48f..8edd3ba 100644
--- a/src/hb-ot-shape-complex-arabic-win1256.hh
+++ b/src/hb-ot-shape-complex-arabic-win1256.hh
@@ -142,7 +142,7 @@
OT_UARRAY(Name##Substitute, OT_LIST(ToGlyphs)) \
) \
OT_COVERAGE1(Name##Coverage, OT_LIST(FromGlyphs)) \
- /* ASSERT_STATIC_EXPR_ZERO (len(FromGlyphs) == len(ToGlyphs)) */
+ /* ASSERT_STATIC_EXPR len(FromGlyphs) == len(ToGlyphs) */
#define OT_SUBLOOKUP_LIGATURE_SUBST_FORMAT1(Name, FirstGlyphs, LigatureSetOffsets) \
OT_SUBLOOKUP(Name, 1, \
@@ -151,7 +151,7 @@
OT_UARRAY(Name##LigatureSetOffsetsArray, OT_LIST(LigatureSetOffsets)) \
) \
OT_COVERAGE1(Name##Coverage, OT_LIST(FirstGlyphs)) \
- /* ASSERT_STATIC_EXPR_ZERO (len(FirstGlyphs) == len(LigatureSetOffsets)) */
+ /* ASSERT_STATIC_EXPR len(FirstGlyphs) == len(LigatureSetOffsets) */
#define OT_LIGATURE_SET(Name, LigatureSetOffsets) \
OT_UARRAY(Name, OT_LIST(LigatureSetOffsets))
diff --git a/src/hb-ot-shape-complex-arabic.cc b/src/hb-ot-shape-complex-arabic.cc
index 4da8990..ae90864 100644
--- a/src/hb-ot-shape-complex-arabic.cc
+++ b/src/hb-ot-shape-complex-arabic.cc
@@ -24,51 +24,18 @@
* Google Author(s): Behdad Esfahbod
*/
-#include "hb-ot-shape-complex-arabic-private.hh"
+#include "hb-ot-shape-complex-private.hh"
#include "hb-ot-shape-private.hh"
-#ifndef HB_DEBUG_ARABIC
-#define HB_DEBUG_ARABIC (HB_DEBUG+0)
-#endif
-
-
/* buffer var allocations */
#define arabic_shaping_action() complex_var_u8_0() /* arabic shaping action */
-#define HB_BUFFER_SCRATCH_FLAG_ARABIC_HAS_STCH HB_BUFFER_SCRATCH_FLAG_COMPLEX0
-
-/* See:
- * https://github.com/behdad/harfbuzz/commit/6e6f82b6f3dde0fc6c3c7d991d9ec6cfff57823d#commitcomment-14248516 */
-#define HB_ARABIC_GENERAL_CATEGORY_IS_WORD(gen_cat) \
- (FLAG_SAFE (gen_cat) & \
- (FLAG (HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED) | \
- FLAG (HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE) | \
- /*FLAG (HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER) |*/ \
- FLAG (HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER) | \
- FLAG (HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER) | \
- /*FLAG (HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER) |*/ \
- /*FLAG (HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER) |*/ \
- FLAG (HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK) | \
- FLAG (HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) | \
- FLAG (HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) | \
- FLAG (HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER) | \
- FLAG (HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER) | \
- FLAG (HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER) | \
- FLAG (HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL) | \
- FLAG (HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL) | \
- FLAG (HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL) | \
- FLAG (HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL)))
-
-
-/*
- * Joining types:
- */
/*
* Bits used in the joining tables
*/
-enum hb_arabic_joining_type_t {
+enum {
JOINING_TYPE_U = 0,
JOINING_TYPE_L = 1,
JOINING_TYPE_R = 2,
@@ -82,6 +49,10 @@ enum hb_arabic_joining_type_t {
JOINING_TYPE_X = 8 /* means: use general-category to choose between U or T. */
};
+/*
+ * Joining types:
+ */
+
#include "hb-ot-shape-complex-arabic-table.hh"
static unsigned int get_joining_type (hb_codepoint_t u, hb_unicode_general_category_t gen_cat)
@@ -90,7 +61,7 @@ static unsigned int get_joining_type (hb_codepoint_t u, hb_unicode_general_categ
if (likely (j_type != JOINING_TYPE_X))
return j_type;
- return (FLAG_SAFE(gen_cat) &
+ return (FLAG(gen_cat) &
(FLAG(HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) |
FLAG(HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) |
FLAG(HB_UNICODE_GENERAL_CATEGORY_FORMAT))
@@ -113,7 +84,7 @@ static const hb_tag_t arabic_features[] =
/* Same order as the feature array */
-enum arabic_action_t {
+enum {
ISOL,
FINA,
FIN2,
@@ -124,11 +95,7 @@ enum arabic_action_t {
NONE,
- ARABIC_NUM_FEATURES = NONE,
-
- /* We abuse the same byte for other things... */
- STCH_FIXED,
- STCH_REPEATING,
+ ARABIC_NUM_FEATURES = NONE
};
static const struct arabic_state_table_entry {
@@ -173,11 +140,6 @@ arabic_fallback_shape (const hb_ot_shape_plan_t *plan,
hb_buffer_t *buffer);
static void
-record_stch (const hb_ot_shape_plan_t *plan,
- hb_font_t *font,
- hb_buffer_t *buffer);
-
-static void
collect_features_arabic (hb_ot_shape_planner_t *plan)
{
hb_ot_map_builder_t *map = &plan->map;
@@ -203,9 +165,6 @@ collect_features_arabic (hb_ot_shape_planner_t *plan)
map->add_gsub_pause (nuke_joiners);
- map->add_global_bool_feature (HB_TAG('s','t','c','h'));
- map->add_gsub_pause (record_stch);
-
map->add_global_bool_feature (HB_TAG('c','c','m','p'));
map->add_global_bool_feature (HB_TAG('l','o','c','l'));
@@ -223,6 +182,7 @@ collect_features_arabic (hb_ot_shape_planner_t *plan)
map->add_gsub_pause (arabic_fallback_shape);
map->add_global_bool_feature (HB_TAG('c','a','l','t'));
+ map->add_gsub_pause (NULL);
/* The spec includes 'cswh'. Earlier versions of Windows
* used to enable this by default, but testing suggests
@@ -232,7 +192,6 @@ collect_features_arabic (hb_ot_shape_planner_t *plan)
* Note that IranNastaliq uses this feature extensively
* to fixup broken glyph sequences. Oh well...
* Test case: U+0643,U+0640,U+0631. */
- //map->add_gsub_pause (NULL);
//map->add_global_bool_feature (HB_TAG('c','s','w','h'));
map->add_global_bool_feature (HB_TAG('m','s','e','t'));
}
@@ -249,13 +208,11 @@ struct arabic_shape_plan_t
* mask_array[NONE] == 0. */
hb_mask_t mask_array[ARABIC_NUM_FEATURES + 1];
+ bool do_fallback;
arabic_fallback_plan_t *fallback_plan;
-
- unsigned int do_fallback : 1;
- unsigned int has_stch : 1;
};
-void *
+static void *
data_create_arabic (const hb_ot_shape_plan_t *plan)
{
arabic_shape_plan_t *arabic_plan = (arabic_shape_plan_t *) calloc (1, sizeof (arabic_shape_plan_t));
@@ -263,7 +220,6 @@ data_create_arabic (const hb_ot_shape_plan_t *plan)
return NULL;
arabic_plan->do_fallback = plan->props.script == HB_SCRIPT_ARABIC;
- arabic_plan->has_stch = !!plan->map.get_1_mask (HB_TAG ('s','t','c','h'));
for (unsigned int i = 0; i < ARABIC_NUM_FEATURES; i++) {
arabic_plan->mask_array[i] = plan->map.get_1_mask (arabic_features[i]);
arabic_plan->do_fallback = arabic_plan->do_fallback &&
@@ -274,7 +230,7 @@ data_create_arabic (const hb_ot_shape_plan_t *plan)
return arabic_plan;
}
-void
+static void
data_destroy_arabic (void *data)
{
arabic_shape_plan_t *arabic_plan = (arabic_shape_plan_t *) data;
@@ -349,30 +305,25 @@ mongolian_variation_selectors (hb_buffer_t *buffer)
info[i].arabic_shaping_action() = info[i - 1].arabic_shaping_action();
}
-void
-setup_masks_arabic_plan (const arabic_shape_plan_t *arabic_plan,
- hb_buffer_t *buffer,
- hb_script_t script)
+static void
+setup_masks_arabic (const hb_ot_shape_plan_t *plan,
+ hb_buffer_t *buffer,
+ hb_font_t *font HB_UNUSED)
{
HB_BUFFER_ALLOCATE_VAR (buffer, arabic_shaping_action);
+ const arabic_shape_plan_t *arabic_plan = (const arabic_shape_plan_t *) plan->data;
+
arabic_joining (buffer);
- if (script == HB_SCRIPT_MONGOLIAN)
+ if (plan->props.script == HB_SCRIPT_MONGOLIAN)
mongolian_variation_selectors (buffer);
unsigned int count = buffer->len;
hb_glyph_info_t *info = buffer->info;
for (unsigned int i = 0; i < count; i++)
info[i].mask |= arabic_plan->mask_array[info[i].arabic_shaping_action()];
-}
-static void
-setup_masks_arabic (const hb_ot_shape_plan_t *plan,
- hb_buffer_t *buffer,
- hb_font_t *font HB_UNUSED)
-{
- const arabic_shape_plan_t *arabic_plan = (const arabic_shape_plan_t *) plan->data;
- setup_masks_arabic_plan (arabic_plan, buffer, plan->props.script);
+ HB_BUFFER_DEALLOCATE_VAR (buffer, arabic_shaping_action);
}
@@ -413,197 +364,6 @@ retry:
arabic_fallback_plan_shape (fallback_plan, font, buffer);
}
-/*
- * Stretch feature: "stch".
- * See example here:
- * https://www.microsoft.com/typography/OpenTypeDev/syriac/intro.htm
- * We implement this in a generic way, such that the Arabic subtending
- * marks can use it as well.
- */
-
-static void
-record_stch (const hb_ot_shape_plan_t *plan,
- hb_font_t *font,
- hb_buffer_t *buffer)
-{
- const arabic_shape_plan_t *arabic_plan = (const arabic_shape_plan_t *) plan->data;
- if (!arabic_plan->has_stch)
- return;
-
- /* 'stch' feature was just applied. Look for anything that multiplied,
- * and record it for stch treatment later. Note that rtlm, frac, etc
- * are applied before stch, but we assume that they didn't result in
- * anything multiplying into 5 pieces, so it's safe-ish... */
-
- unsigned int count = buffer->len;
- hb_glyph_info_t *info = buffer->info;
- for (unsigned int i = 0; i < count; i++)
- if (unlikely (_hb_glyph_info_multiplied (&info[i])))
- {
- unsigned int comp = _hb_glyph_info_get_lig_comp (&info[i]);
- info[i].arabic_shaping_action() = comp % 2 ? STCH_REPEATING : STCH_FIXED;
- buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_ARABIC_HAS_STCH;
- }
-}
-
-static void
-apply_stch (const hb_ot_shape_plan_t *plan,
- hb_buffer_t *buffer,
- hb_font_t *font)
-{
- if (likely (!(buffer->scratch_flags & HB_BUFFER_SCRATCH_FLAG_ARABIC_HAS_STCH)))
- return;
-
- /* The Arabic shaper currently always processes in RTL mode, so we should
- * stretch / position the stretched pieces to the left / preceding glyphs. */
-
- /* We do a two pass implementation:
- * First pass calculates the exact number of extra glyphs we need,
- * We then enlarge buffer to have that much room,
- * Second pass applies the stretch, copying things to the end of buffer.
- */
-
- int sign = font->x_scale < 0 ? -1 : +1;
- unsigned int extra_glyphs_needed = 0; // Set during MEASURE, used during CUT
- typedef enum { MEASURE, CUT } step_t;
-
- for (step_t step = MEASURE; step <= CUT; step = (step_t) (step + 1))
- {
- unsigned int count = buffer->len;
- hb_glyph_info_t *info = buffer->info;
- hb_glyph_position_t *pos = buffer->pos;
- unsigned int new_len = count + extra_glyphs_needed; // write head during CUT
- unsigned int j = new_len;
- for (unsigned int i = count; i; i--)
- {
- if (!hb_in_range<unsigned> (info[i - 1].arabic_shaping_action(), STCH_FIXED, STCH_REPEATING))
- {
- if (step == CUT)
- {
- --j;
- info[j] = info[i - 1];
- pos[j] = pos[i - 1];
- }
- continue;
- }
-
- /* Yay, justification! */
-
- hb_position_t w_total = 0; // Total to be filled
- hb_position_t w_fixed = 0; // Sum of fixed tiles
- hb_position_t w_repeating = 0; // Sum of repeating tiles
- int n_fixed = 0;
- int n_repeating = 0;
-
- unsigned int end = i;
- while (i &&
- hb_in_range<unsigned> (info[i - 1].arabic_shaping_action(), STCH_FIXED, STCH_REPEATING))
- {
- i--;
- hb_position_t width = font->get_glyph_h_advance (info[i].codepoint);
- if (info[i].arabic_shaping_action() == STCH_FIXED)
- {
- w_fixed += width;
- n_fixed++;
- }
- else
- {
- w_repeating += width;
- n_repeating++;
- }
- }
- unsigned int start = i;
- unsigned int context = i;
- while (context &&
- !hb_in_range<unsigned> (info[context - 1].arabic_shaping_action(), STCH_FIXED, STCH_REPEATING) &&
- (_hb_glyph_info_is_default_ignorable (&info[context - 1]) ||
- HB_ARABIC_GENERAL_CATEGORY_IS_WORD (_hb_glyph_info_get_general_category (&info[context - 1]))))
- {
- context--;
- w_total += pos[context].x_advance;
- }
- i++; // Don't touch i again.
-
- DEBUG_MSG (ARABIC, NULL, "%s stretch at (%d,%d,%d)",
- step == MEASURE ? "measuring" : "cutting", context, start, end);
- DEBUG_MSG (ARABIC, NULL, "rest of word: count=%d width %d", start - context, w_total);
- DEBUG_MSG (ARABIC, NULL, "fixed tiles: count=%d width=%d", n_fixed, w_fixed);
- DEBUG_MSG (ARABIC, NULL, "repeating tiles: count=%d width=%d", n_repeating, w_repeating);
-
- /* Number of additional times to repeat each repeating tile. */
- int n_copies = 0;
-
- hb_position_t w_remaining = w_total - w_fixed;
- if (sign * w_remaining > sign * w_repeating && sign * w_repeating > 0)
- n_copies = (sign * w_remaining) / (sign * w_repeating) - 1;
-
- /* See if we can improve the fit by adding an extra repeat and squeezing them together a bit. */
- hb_position_t extra_repeat_overlap = 0;
- hb_position_t shortfall = sign * w_remaining - sign * w_repeating * (n_copies + 1);
- if (shortfall > 0)
- {
- ++n_copies;
- hb_position_t excess = (n_copies + 1) * sign * w_repeating - sign * w_remaining;
- if (excess > 0)
- extra_repeat_overlap = excess / (n_copies * n_repeating);
- }
-
- if (step == MEASURE)
- {
- extra_glyphs_needed += n_copies * n_repeating;
- DEBUG_MSG (ARABIC, NULL, "will add extra %d copies of repeating tiles", n_copies);
- }
- else
- {
- hb_position_t x_offset = 0;
- for (unsigned int k = end; k > start; k--)
- {
- hb_position_t width = font->get_glyph_h_advance (info[k - 1].codepoint);
-
- unsigned int repeat = 1;
- if (info[k - 1].arabic_shaping_action() == STCH_REPEATING)
- repeat += n_copies;
-
- DEBUG_MSG (ARABIC, NULL, "appending %d copies of glyph %d; j=%d",
- repeat, info[k - 1].codepoint, j);
- for (unsigned int n = 0; n < repeat; n++)
- {
- x_offset -= width;
- if (n > 0)
- x_offset += extra_repeat_overlap;
- pos[k - 1].x_offset = x_offset;
- /* Append copy. */
- --j;
- info[j] = info[k - 1];
- pos[j] = pos[k - 1];
- }
- }
- }
- }
-
- if (step == MEASURE)
- {
- if (unlikely (!buffer->ensure (count + extra_glyphs_needed)))
- break;
- }
- else
- {
- assert (j == 0);
- buffer->len = new_len;
- }
- }
-}
-
-
-static void
-postprocess_glyphs_arabic (const hb_ot_shape_plan_t *plan,
- hb_buffer_t *buffer,
- hb_font_t *font)
-{
- apply_stch (plan, buffer, font);
-
- HB_BUFFER_DEALLOCATE_VAR (buffer, arabic_shaping_action);
-}
const hb_ot_complex_shaper_t _hb_ot_complex_shaper_arabic =
{
@@ -612,8 +372,7 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_arabic =
NULL, /* override_features */
data_create_arabic,
data_destroy_arabic,
- NULL, /* preprocess_text */
- postprocess_glyphs_arabic,
+ NULL, /* preprocess_text_arabic */
HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT,
NULL, /* decompose */
NULL, /* compose */
diff --git a/src/hb-ot-shape-complex-default.cc b/src/hb-ot-shape-complex-default.cc
index be60e56..f7f097e 100644
--- a/src/hb-ot-shape-complex-default.cc
+++ b/src/hb-ot-shape-complex-default.cc
@@ -35,11 +35,10 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_default =
NULL, /* data_create */
NULL, /* data_destroy */
NULL, /* preprocess_text */
- NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT,
NULL, /* decompose */
NULL, /* compose */
NULL, /* setup_masks */
- HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE,
+ HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT,
true, /* fallback_position */
};
diff --git a/src/hb-ot-shape-complex-hangul.cc b/src/hb-ot-shape-complex-hangul.cc
index 5f4d98b..6ac18b0 100644
--- a/src/hb-ot-shape-complex-hangul.cc
+++ b/src/hb-ot-shape-complex-hangul.cc
@@ -188,7 +188,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan,
*/
unsigned int count = buffer->len;
- for (buffer->idx = 0; buffer->idx < count && !buffer->in_error;)
+ for (buffer->idx = 0; buffer->idx < count;)
{
hb_codepoint_t u = buffer->cur().codepoint;
@@ -205,12 +205,17 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan,
buffer->next_glyph ();
if (!is_zero_width_char (font, u))
{
- buffer->merge_out_clusters (start, end + 1);
hb_glyph_info_t *info = buffer->out_info;
hb_glyph_info_t tone = info[end];
memmove (&info[start + 1], &info[start], (end - start) * sizeof (hb_glyph_info_t));
info[start] = tone;
}
+ /* Merge clusters across the (possibly reordered) syllable+tone.
+ * We want to merge even in the zero-width tone mark case here,
+ * so that clustering behavior isn't dependent on how the tone mark
+ * is handled by the font.
+ */
+ buffer->merge_out_clusters (start, end + 1);
}
else
{
@@ -291,8 +296,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan,
}
else
end = start + 2;
- if (buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES)
- buffer->merge_out_clusters (start, end);
+ buffer->merge_out_clusters (start, end);
continue;
}
}
@@ -364,8 +368,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan,
info[i++].hangul_shaping_feature() = VJMO;
if (i < end)
info[i++].hangul_shaping_feature() = TJMO;
- if (buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES)
- buffer->merge_out_clusters (start, end);
+ buffer->merge_out_clusters (start, end);
continue;
}
}
@@ -411,14 +414,13 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_hangul =
"hangul",
collect_features_hangul,
override_features_hangul,
- data_create_hangul,
- data_destroy_hangul,
+ data_create_hangul, /* data_create */
+ data_destroy_hangul, /* data_destroy */
preprocess_text_hangul,
- NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_NONE,
NULL, /* decompose */
NULL, /* compose */
- setup_masks_hangul,
+ setup_masks_hangul, /* setup_masks */
HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE,
false, /* fallback_position */
};
diff --git a/src/hb-ot-shape-complex-hebrew.cc b/src/hb-ot-shape-complex-hebrew.cc
index 3215900..c7b7a5e 100644
--- a/src/hb-ot-shape-complex-hebrew.cc
+++ b/src/hb-ot-shape-complex-hebrew.cc
@@ -68,7 +68,7 @@ compose_hebrew (const hb_ot_shape_normalize_context_t *c,
0xFB4Au /* TAV */
};
- bool found = (bool) c->unicode->compose (a, b, ab);
+ bool found = c->unicode->compose (a, b, ab);
if (!found && !c->plan->has_mark)
{
@@ -163,7 +163,6 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_hebrew =
NULL, /* data_create */
NULL, /* data_destroy */
NULL, /* preprocess_text */
- NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT,
NULL, /* decompose */
compose_hebrew,
diff --git a/src/hb-ot-shape-complex-indic-private.hh b/src/hb-ot-shape-complex-indic-private.hh
index 326b364..d8dfc65 100644
--- a/src/hb-ot-shape-complex-indic-private.hh
+++ b/src/hb-ot-shape-complex-indic-private.hh
@@ -109,31 +109,27 @@ enum indic_syllabic_category_t {
INDIC_SYLLABIC_CATEGORY_AVAGRAHA = OT_Symbol,
INDIC_SYLLABIC_CATEGORY_BINDU = OT_SM,
- INDIC_SYLLABIC_CATEGORY_BRAHMI_JOINING_NUMBER = OT_PLACEHOLDER, /* Don't care. */
+ INDIC_SYLLABIC_CATEGORY_BRAHMI_JOINING_NUMBER = OT_PLACEHOLDER, /* TODO */
INDIC_SYLLABIC_CATEGORY_CANTILLATION_MARK = OT_A,
INDIC_SYLLABIC_CATEGORY_CONSONANT = OT_C,
INDIC_SYLLABIC_CATEGORY_CONSONANT_DEAD = OT_C,
INDIC_SYLLABIC_CATEGORY_CONSONANT_FINAL = OT_CM,
INDIC_SYLLABIC_CATEGORY_CONSONANT_HEAD_LETTER = OT_C,
- INDIC_SYLLABIC_CATEGORY_CONSONANT_KILLER = OT_M, /* U+17CD only. */
INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL = OT_CM,
INDIC_SYLLABIC_CATEGORY_CONSONANT_PLACEHOLDER = OT_PLACEHOLDER,
INDIC_SYLLABIC_CATEGORY_CONSONANT_PRECEDING_REPHA = OT_Repha,
- INDIC_SYLLABIC_CATEGORY_CONSONANT_PREFIXED = OT_X, /* Don't care. */
INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED = OT_CM,
INDIC_SYLLABIC_CATEGORY_CONSONANT_SUCCEEDING_REPHA = OT_N,
- INDIC_SYLLABIC_CATEGORY_CONSONANT_WITH_STACKER = OT_Repha, /* TODO */
INDIC_SYLLABIC_CATEGORY_GEMINATION_MARK = OT_SM,
- INDIC_SYLLABIC_CATEGORY_INVISIBLE_STACKER = OT_Coeng,
+ INDIC_SYLLABIC_CATEGORY_INVISIBLE_STACKER = OT_H, /* TODO */
INDIC_SYLLABIC_CATEGORY_JOINER = OT_ZWJ,
INDIC_SYLLABIC_CATEGORY_MODIFYING_LETTER = OT_X,
INDIC_SYLLABIC_CATEGORY_NON_JOINER = OT_ZWNJ,
INDIC_SYLLABIC_CATEGORY_NUKTA = OT_N,
INDIC_SYLLABIC_CATEGORY_NUMBER = OT_PLACEHOLDER,
- INDIC_SYLLABIC_CATEGORY_NUMBER_JOINER = OT_PLACEHOLDER, /* Don't care. */
- INDIC_SYLLABIC_CATEGORY_PURE_KILLER = OT_M, /* Is like a vowel matra. */
+ INDIC_SYLLABIC_CATEGORY_NUMBER_JOINER = OT_PLACEHOLDER, /* TODO */
+ INDIC_SYLLABIC_CATEGORY_PURE_KILLER = OT_H, /* TODO */
INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER = OT_RS,
- INDIC_SYLLABIC_CATEGORY_SYLLABLE_MODIFIER = OT_M, /* Misc Khmer signs. */
INDIC_SYLLABIC_CATEGORY_TONE_LETTER = OT_X,
INDIC_SYLLABIC_CATEGORY_TONE_MARK = OT_N,
INDIC_SYLLABIC_CATEGORY_VIRAMA = OT_H,
@@ -165,24 +161,20 @@ enum indic_matra_category_t {
INDIC_MATRA_CATEGORY_VISUAL_ORDER_LEFT = POS_PRE_M
};
+/* Note: We use ASSERT_STATIC_EXPR_ZERO() instead of ASSERT_STATIC_EXPR() and the comma operation
+ * because gcc fails to optimize the latter and fills the table in at runtime. */
#define INDIC_COMBINE_CATEGORIES(S,M) \
- ( \
- ASSERT_STATIC_EXPR_ZERO (S < 255 && M < 255) + \
- ( S | \
- ( \
- ( \
- S == INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL || \
- S == INDIC_SYLLABIC_CATEGORY_GEMINATION_MARK || \
- S == INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER || \
- S == INDIC_SYLLABIC_CATEGORY_CONSONANT_SUCCEEDING_REPHA || \
- S == INDIC_SYLLABIC_CATEGORY_VIRAMA || \
- S == INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT || \
- false \
- ? M : INDIC_MATRA_CATEGORY_NOT_APPLICABLE \
- ) << 8 \
- ) \
- ) \
- )
+ (ASSERT_STATIC_EXPR_ZERO (M == INDIC_MATRA_CATEGORY_NOT_APPLICABLE || \
+ ( \
+ S == INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL || \
+ S == INDIC_SYLLABIC_CATEGORY_GEMINATION_MARK || \
+ S == INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER || \
+ S == INDIC_SYLLABIC_CATEGORY_CONSONANT_SUCCEEDING_REPHA || \
+ S == INDIC_SYLLABIC_CATEGORY_VIRAMA || \
+ S == INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT || \
+ false)) + \
+ ASSERT_STATIC_EXPR_ZERO (S < 255 && M < 255) + \
+ ((M << 8) | S))
HB_INTERNAL INDIC_TABLE_ELEMENT_TYPE
hb_indic_get_categories (hb_codepoint_t u);
diff --git a/src/hb-ot-shape-complex-indic-table.cc b/src/hb-ot-shape-complex-indic-table.cc
index 90abb55..2e159a1 100644
--- a/src/hb-ot-shape-complex-indic-table.cc
+++ b/src/hb-ot-shape-complex-indic-table.cc
@@ -6,67 +6,63 @@
*
* 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-7.0.0.txt
+ * # Date: 2014-06-03, 07:00:00 GMT [KW, LI, AG, RP]
+ * # IndicMatraCategory-7.0.0.txt
+ * # Date: 2014-06-03, 07:00:00 GMT [KW, LI, AG, RP]
+ * # Blocks-7.0.0.txt
+ * # Date: 2014-04-03, 23:23:00 GMT [RP, 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_Bi INDIC_SYLLABIC_CATEGORY_BINDU /* 59 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_Ca INDIC_SYLLABIC_CATEGORY_CANTILLATION_MARK /* 30 chars; Cantillation_Mark */
+#define ISC_C INDIC_SYLLABIC_CATEGORY_CONSONANT /* 1744 chars; Consonant */
#define ISC_CD INDIC_SYLLABIC_CATEGORY_CONSONANT_DEAD /* 7 chars; Consonant_Dead */
-#define ISC_CF INDIC_SYLLABIC_CATEGORY_CONSONANT_FINAL /* 62 chars; Consonant_Final */
+#define ISC_CF INDIC_SYLLABIC_CATEGORY_CONSONANT_FINAL /* 61 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_CM INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL /* 19 chars; Consonant_Medial */
+#define ISC_CP INDIC_SYLLABIC_CATEGORY_CONSONANT_PLACEHOLDER /* 11 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_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 */
#define ISC_IS INDIC_SYLLABIC_CATEGORY_INVISIBLE_STACKER /* 7 chars; Invisible_Stacker */
#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 /* 18 chars; Nukta */
+#define ISC_Nd INDIC_SYLLABIC_CATEGORY_NUMBER /* 408 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_PK INDIC_SYLLABIC_CATEGORY_PURE_KILLER /* 15 chars; Pure_Killer */
+#define ISC_RS INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER /* 3 chars; Register_Shifter */
#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_TM INDIC_SYLLABIC_CATEGORY_TONE_MARK /* 62 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_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 /* 553 chars; Vowel_Dependent */
+#define ISC_VI INDIC_SYLLABIC_CATEGORY_VOWEL_INDEPENDENT /* 395 chars; Vowel_Independent */
-#define IMC_B INDIC_MATRA_CATEGORY_BOTTOM /* 256 chars; Bottom */
+#define IMC_B INDIC_MATRA_CATEGORY_BOTTOM /* 142 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_O INDIC_MATRA_CATEGORY_OVERSTRUCK /* 2 chars; Overstruck */
+#define IMC_R INDIC_MATRA_CATEGORY_RIGHT /* 163 chars; Right */
+#define IMC_T INDIC_MATRA_CATEGORY_TOP /* 169 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 */
#define IMC_TLR INDIC_MATRA_CATEGORY_TOP_AND_LEFT_AND_RIGHT /* 4 chars; Top_And_Left_And_Right */
#define IMC_TR INDIC_MATRA_CATEGORY_TOP_AND_RIGHT /* 13 chars; Top_And_Right */
-#define IMC_VOL INDIC_MATRA_CATEGORY_VISUAL_ORDER_LEFT /* 19 chars; Visual_Order_Left */
+#define IMC_VOL INDIC_MATRA_CATEGORY_VISUAL_ORDER_LEFT /* 15 chars; Visual_Order_Left */
#define _(S,M) INDIC_COMBINE_CATEGORIES (ISC_##S, IMC_##M)
@@ -83,33 +79,29 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 0030 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
/* 0038 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-#define indic_offset_0x00b0u 24
+#define indic_offset_0x00d0u 24
/* Latin-1 Supplement */
- /* 00B0 */ _(x,x), _(x,x), _(SM,x), _(SM,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 00B8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 00C0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 00C8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
/* 00D0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(CP,x),
-#define indic_offset_0x0900u 64
+#define indic_offset_0x0900u 32
/* Devanagari */
- /* 0900 */ _(Bi,T), _(Bi,T), _(Bi,T), _(Vs,R), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+ /* 0900 */ _(Bi,x), _(Bi,x), _(Bi,x), _(Vs,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
/* 0908 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
/* 0910 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x),
/* 0918 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 0920 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 0928 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 0930 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 0938 */ _(C,x), _(C,x), _(M,T), _(M,R), _(N,B), _(A,x), _(M,R), _(M,L),
+ /* 0938 */ _(C,x), _(C,x), _(M,T), _(M,R), _(N,x), _(A,x), _(M,R), _(M,L),
/* 0940 */ _(M,R), _(M,B), _(M,B), _(M,B), _(M,B), _(M,T), _(M,T), _(M,T),
/* 0948 */ _(M,T), _(M,R), _(M,R), _(M,R), _(M,R), _(V,B), _(M,L), _(M,R),
- /* 0950 */ _(x,x), _(Ca,T), _(Ca,B), _(x,T), _(x,T), _(M,T), _(M,B), _(M,B),
+ /* 0950 */ _(x,x), _(TM,x), _(TM,x), _(x,x), _(x,x), _(M,T), _(M,B), _(M,B),
/* 0958 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 0960 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(Nd,x), _(Nd,x),
/* 0968 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
@@ -118,14 +110,14 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* Bengali */
- /* 0980 */ _(x,x), _(Bi,T), _(Bi,R), _(Vs,R), _(x,x), _(VI,x), _(VI,x), _(VI,x),
+ /* 0980 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x),
/* 0988 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(x,x), _(VI,x),
/* 0990 */ _(VI,x), _(x,x), _(x,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x),
/* 0998 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 09A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 09A8 */ _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 09B0 */ _(C,x), _(x,x), _(C,x), _(x,x), _(x,x), _(x,x), _(C,x), _(C,x),
- /* 09B8 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,B), _(A,x), _(M,R), _(M,L),
+ /* 09B8 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,x), _(A,x), _(M,R), _(M,L),
/* 09C0 */ _(M,R), _(M,B), _(M,B), _(M,B), _(M,B), _(x,x), _(x,x), _(M,L),
/* 09C8 */ _(M,L), _(x,x), _(x,x), _(M,LR), _(M,LR), _(V,B), _(CD,x), _(x,x),
/* 09D0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,R),
@@ -137,33 +129,33 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* Gurmukhi */
- /* 0A00 */ _(x,x), _(Bi,T), _(Bi,T), _(Vs,R), _(x,x), _(VI,x), _(VI,x), _(VI,x),
+ /* 0A00 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x),
/* 0A08 */ _(VI,x), _(VI,x), _(VI,x), _(x,x), _(x,x), _(x,x), _(x,x), _(VI,x),
/* 0A10 */ _(VI,x), _(x,x), _(x,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x),
/* 0A18 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 0A20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 0A28 */ _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 0A30 */ _(C,x), _(x,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), _(x,x),
- /* 0A38 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,B), _(x,x), _(M,R), _(M,L),
+ /* 0A38 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,x), _(x,x), _(M,R), _(M,L),
/* 0A40 */ _(M,R), _(M,B), _(M,B), _(x,x), _(x,x), _(x,x), _(x,x), _(M,T),
/* 0A48 */ _(M,T), _(x,x), _(x,x), _(M,T), _(M,T), _(V,B), _(x,x), _(x,x),
/* 0A50 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
/* 0A58 */ _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(C,x), _(x,x),
/* 0A60 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(Nd,x), _(Nd,x),
/* 0A68 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 0A70 */ _(Bi,T), _(GM,T), _(CP,x), _(CP,x), _(x,x), _(CM,B), _(x,x), _(x,x),
+ /* 0A70 */ _(Bi,x), _(GM,T), _(CP,x), _(CP,x), _(x,x), _(CM,x), _(x,x), _(x,x),
/* 0A78 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
/* Gujarati */
- /* 0A80 */ _(x,x), _(Bi,T), _(Bi,T), _(Vs,R), _(x,x), _(VI,x), _(VI,x), _(VI,x),
+ /* 0A80 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x),
/* 0A88 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(VI,x),
/* 0A90 */ _(VI,x), _(VI,x), _(x,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x),
/* 0A98 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 0AA0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 0AA8 */ _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 0AB0 */ _(C,x), _(x,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), _(C,x),
- /* 0AB8 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,B), _(A,x), _(M,R), _(M,L),
+ /* 0AB8 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,x), _(A,x), _(M,R), _(M,L),
/* 0AC0 */ _(M,R), _(M,B), _(M,B), _(M,B), _(M,B), _(M,T), _(x,x), _(M,T),
/* 0AC8 */ _(M,T), _(M,TR), _(x,x), _(M,R), _(M,R), _(V,B), _(x,x), _(x,x),
/* 0AD0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
@@ -171,18 +163,18 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 0AE0 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(Nd,x), _(Nd,x),
/* 0AE8 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
/* 0AF0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 0AF8 */ _(x,x), _(C,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
+ /* 0AF8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
/* Oriya */
- /* 0B00 */ _(x,x), _(Bi,T), _(Bi,R), _(Vs,R), _(x,x), _(VI,x), _(VI,x), _(VI,x),
+ /* 0B00 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x),
/* 0B08 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(x,x), _(VI,x),
/* 0B10 */ _(VI,x), _(x,x), _(x,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x),
/* 0B18 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 0B20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 0B28 */ _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 0B30 */ _(C,x), _(x,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), _(C,x),
- /* 0B38 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,B), _(A,x), _(M,R), _(M,T),
+ /* 0B38 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,x), _(A,x), _(M,R), _(M,T),
/* 0B40 */ _(M,R), _(M,B), _(M,B), _(M,B), _(M,B), _(x,x), _(x,x), _(M,L),
/* 0B48 */ _(M,TL), _(x,x), _(x,x), _(M,LR),_(M,TLR), _(V,B), _(x,x), _(x,x),
/* 0B50 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,T), _(M,TR),
@@ -194,7 +186,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* Tamil */
- /* 0B80 */ _(x,x), _(x,x), _(Bi,T), _(ML,x), _(x,x), _(VI,x), _(VI,x), _(VI,x),
+ /* 0B80 */ _(x,x), _(x,x), _(Bi,x), _(ML,x), _(x,x), _(VI,x), _(VI,x), _(VI,x),
/* 0B88 */ _(VI,x), _(VI,x), _(VI,x), _(x,x), _(x,x), _(x,x), _(VI,x), _(VI,x),
/* 0B90 */ _(VI,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(x,x), _(x,x),
/* 0B98 */ _(x,x), _(C,x), _(C,x), _(x,x), _(C,x), _(x,x), _(C,x), _(C,x),
@@ -202,7 +194,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 0BA8 */ _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(C,x), _(C,x),
/* 0BB0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 0BB8 */ _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,R), _(M,R),
- /* 0BC0 */ _(M,T), _(M,R), _(M,R), _(x,x), _(x,x), _(x,x), _(M,L), _(M,L),
+ /* 0BC0 */ _(M,T), _(M,B), _(M,B), _(x,x), _(x,x), _(x,x), _(M,L), _(M,L),
/* 0BC8 */ _(M,L), _(x,x), _(M,LR), _(M,LR), _(M,LR), _(V,T), _(x,x), _(x,x),
/* 0BD0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,R),
/* 0BD8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
@@ -213,7 +205,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* Telugu */
- /* 0C00 */ _(Bi,T), _(Bi,R), _(Bi,R), _(Vs,R), _(x,x), _(VI,x), _(VI,x), _(VI,x),
+ /* 0C00 */ _(Bi,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x),
/* 0C08 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(VI,x), _(VI,x),
/* 0C10 */ _(VI,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x),
/* 0C18 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
@@ -224,7 +216,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 0C40 */ _(M,T), _(M,R), _(M,R), _(M,R), _(M,R), _(x,x), _(M,T), _(M,T),
/* 0C48 */ _(M,TB), _(x,x), _(M,T), _(M,T), _(M,T), _(V,T), _(x,x), _(x,x),
/* 0C50 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,T), _(M,B), _(x,x),
- /* 0C58 */ _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
+ /* 0C58 */ _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
/* 0C60 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(Nd,x), _(Nd,x),
/* 0C68 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
/* 0C70 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
@@ -232,26 +224,26 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* Kannada */
- /* 0C80 */ _(x,x), _(Bi,T), _(Bi,R), _(Vs,R), _(x,x), _(VI,x), _(VI,x), _(VI,x),
+ /* 0C80 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x),
/* 0C88 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(VI,x), _(VI,x),
/* 0C90 */ _(VI,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x),
/* 0C98 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 0CA0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 0CA8 */ _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 0CB0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), _(C,x),
- /* 0CB8 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,B), _(A,x), _(M,R), _(M,T),
+ /* 0CB8 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,x), _(A,x), _(M,R), _(M,T),
/* 0CC0 */ _(M,TR), _(M,R), _(M,R), _(M,R), _(M,R), _(x,x), _(M,T), _(M,TR),
/* 0CC8 */ _(M,TR), _(x,x), _(M,TR), _(M,TR), _(M,T), _(V,T), _(x,x), _(x,x),
/* 0CD0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,R), _(M,R), _(x,x),
/* 0CD8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(C,x), _(x,x),
/* 0CE0 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(Nd,x), _(Nd,x),
/* 0CE8 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 0CF0 */ _(x,x),_(CWS,x),_(CWS,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
+ /* 0CF0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
/* 0CF8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
/* Malayalam */
- /* 0D00 */ _(x,x), _(Bi,T), _(Bi,R), _(Vs,R), _(x,x), _(VI,x), _(VI,x), _(VI,x),
+ /* 0D00 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x),
/* 0D08 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(VI,x), _(VI,x),
/* 0D10 */ _(VI,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x),
/* 0D18 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
@@ -262,7 +254,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
- /* 0D58 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(VI,x),
+ /* 0D58 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,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),
/* 0D70 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
@@ -270,7 +262,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* Sinhala */
- /* 0D80 */ _(x,x), _(x,x), _(Bi,R), _(Vs,R), _(x,x), _(VI,x), _(VI,x), _(VI,x),
+ /* 0D80 */ _(x,x), _(x,x), _(Bi,x), _(Vs,x), _(x,x), _(VI,x), _(VI,x), _(VI,x),
/* 0D88 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
/* 0D90 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x),
/* 0D98 */ _(x,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
@@ -286,7 +278,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 0DE8 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
/* 0DF0 */ _(x,x), _(x,x), _(M,R), _(M,R), _(x,x), _(x,x), _(x,x), _(x,x),
-#define indic_offset_0x1000u 1336
+#define indic_offset_0x1000u 1304
/* Myanmar */
@@ -297,22 +289,22 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 1018 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 1020 */ _(C,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
/* 1028 */ _(VI,x), _(VI,x), _(VI,x), _(M,R), _(M,R), _(M,T), _(M,T), _(M,B),
- /* 1030 */ _(M,B), _(M,L), _(M,T), _(M,T), _(M,T), _(M,T), _(Bi,T), _(TM,B),
- /* 1038 */ _(Vs,R), _(IS,x), _(PK,T), _(CM,R), _(CM,x), _(CM,B), _(CM,B), _(C,x),
+ /* 1030 */ _(M,B), _(M,L), _(M,T), _(M,T), _(M,T), _(M,T), _(Bi,x), _(TM,x),
+ /* 1038 */ _(Vs,x), _(IS,x), _(PK,T), _(CM,x), _(CM,x), _(CM,x), _(CM,x), _(C,x),
/* 1040 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
/* 1048 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(CP,x), _(x,x),
/* 1050 */ _(C,x), _(C,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(M,R), _(M,R),
- /* 1058 */ _(M,B), _(M,B), _(C,x), _(C,x), _(C,x), _(C,x), _(CM,B), _(CM,B),
- /* 1060 */ _(CM,B), _(C,x), _(M,R), _(TM,R), _(TM,R), _(C,x), _(C,x), _(M,R),
- /* 1068 */ _(M,R), _(TM,R), _(TM,R), _(TM,R), _(TM,R), _(TM,R), _(C,x), _(C,x),
+ /* 1058 */ _(M,B), _(M,B), _(C,x), _(C,x), _(C,x), _(C,x), _(CM,x), _(CM,x),
+ /* 1060 */ _(CM,x), _(C,x), _(M,R), _(TM,x), _(TM,x), _(C,x), _(C,x), _(M,R),
+ /* 1068 */ _(M,R), _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(C,x), _(C,x),
/* 1070 */ _(C,x), _(M,T), _(M,T), _(M,T), _(M,T), _(C,x), _(C,x), _(C,x),
/* 1078 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1080 */ _(C,x), _(C,x), _(CM,B), _(M,R), _(M,L), _(M,T), _(M,T), _(TM,R),
- /* 1088 */ _(TM,R), _(TM,R), _(TM,R), _(TM,R), _(TM,R), _(TM,B), _(C,x), _(TM,R),
+ /* 1080 */ _(C,x), _(C,x), _(CM,x), _(M,R), _(M,L), _(M,T), _(M,T), _(TM,x),
+ /* 1088 */ _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(C,x), _(TM,x),
/* 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),
+ /* 1098 */ _(Nd,x), _(Nd,x), _(TM,x), _(TM,x), _(M,R), _(M,T), _(x,x), _(x,x),
-#define indic_offset_0x1700u 1496
+#define indic_offset_0x1700u 1464
/* Tagalog */
@@ -353,14 +345,14 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 17A8 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
/* 17B0 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(x,x), _(M,R), _(M,T),
/* 17B8 */ _(M,T), _(M,T), _(M,T), _(M,B), _(M,B), _(M,B), _(M,TL),_(M,TLR),
- /* 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),
+ /* 17C0 */ _(M,LR), _(M,L), _(M,L), _(M,L), _(M,LR), _(M,LR), _(Bi,x), _(Vs,x),
+ /* 17C8 */ _(M,R), _(RS,T), _(RS,T), _(RS,T),_(CSR,T), _(M,T), _(M,T), _(M,T),
+ /* 17D0 */ _(M,T), _(PK,T), _(IS,x), _(M,T), _(x,x), _(x,x), _(x,x), _(x,x),
+ /* 17D8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(A,x), _(x,x), _(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
+#define indic_offset_0x1900u 1704
/* Limbu */
@@ -370,9 +362,9 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* 1928 */ _(M,T), _(CS,x), _(CS,x), _(CS,x), _(x,x), _(x,x), _(x,x), _(x,x),
+ /* 1930 */ _(CF,x), _(CF,x), _(Bi,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x),
+ /* 1938 */ _(CF,x), _(x,x), _(x,x), _(x,x), _(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),
@@ -393,10 +385,10 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* 19B0 */ _(M,R), _(M,R), _(M,R), _(M,R), _(M,R), _(M,L), _(M,L), _(M,L),
+ /* 19B8 */ _(M,R), _(M,R), _(M,L), _(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),
+ /* 19C8 */ _(TM,x), _(TM,x), _(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),
@@ -419,47 +411,47 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* 1A50 */ _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(CM,L), _(CM,x), _(CF,x),
+ /* 1A58 */ _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(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),
+ /* 1A70 */ _(M,L), _(M,L), _(M,L), _(M,T), _(M,T), _(TM,x), _(TM,x), _(TM,x),
+ /* 1A78 */ _(TM,x), _(TM,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
/* 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
+#define indic_offset_0x1b00u 2120
/* Balinese */
- /* 1B00 */ _(Bi,T), _(Bi,T), _(Bi,T),_(CSR,T), _(Vs,R), _(VI,x), _(VI,x), _(VI,x),
+ /* 1B00 */ _(Bi,x), _(Bi,x), _(Bi,x),_(CSR,x), _(Vs,x), _(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),
+ /* 1B30 */ _(C,x), _(C,x), _(C,x), _(C,x), _(N,x), _(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),
+ /* 1B68 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
+ /* 1B70 */ _(x,x), _(x,x), _(x,x), _(x,x), _(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),
+ /* 1B80 */ _(Bi,x),_(CSR,x), _(Vs,x), _(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),
+ /* 1BA0 */ _(C,x), _(CS,x), _(CS,x), _(CS,x), _(M,T), _(M,B), _(M,L), _(M,R),
+ /* 1BA8 */ _(M,T), _(M,T), _(PK,R), _(IS,x), _(CS,x), _(CS,x), _(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),
@@ -469,9 +461,9 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* 1BE0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(VI,x), _(VI,x), _(N,x), _(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),
+ /* 1BF0 */ _(CF,x), _(CF,x), _(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 */
@@ -480,49 +472,39 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* 1C20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(CS,x), _(CS,x), _(M,R), _(M,L),
+ /* 1C28 */ _(M,L), _(M,TL), _(M,R), _(M,R), _(M,B), _(CF,x), _(CF,x), _(CF,x),
+ /* 1C30 */ _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(Bi,L), _(Bi,L), _(x,x), _(N,x),
/* 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 2456
/* Vedic Extensions */
- /* 1CD0 */ _(Ca,T), _(Ca,T), _(Ca,T), _(x,x), _(Ca,O), _(Ca,B), _(Ca,B), _(Ca,B),
- /* 1CD8 */ _(Ca,B), _(Ca,B), _(Ca,T), _(Ca,T), _(Ca,B), _(Ca,B), _(Ca,B), _(Ca,B),
- /* 1CE0 */ _(Ca,T), _(Ca,R), _(x,O), _(x,O), _(x,O), _(x,O), _(x,O), _(x,O),
- /* 1CE8 */ _(x,O), _(x,x), _(x,x), _(x,x), _(x,x), _(x,B), _(x,x), _(x,x),
- /* 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),
+ /* 1CD0 */ _(TM,x), _(TM,x), _(TM,x), _(x,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x),
+ /* 1CD8 */ _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x), _(TM,x),
+ /* 1CE0 */ _(TM,x), _(TM,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
+ /* 1CE8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
+ /* 1CF0 */ _(x,x), _(x,x), _(Vs,x), _(Vs,x), _(TM,x), _(x,x), _(x,x), _(x,x),
-#define indic_offset_0x2008u 2536
+#define indic_offset_0x2008u 2496
/* General Punctuation */
/* 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),
+ /* 2010 */ _(x,x), _(x,x), _(CP,x), _(CP,x), _(CP,x), _(x,x), _(x,x), _(x,x),
-#define indic_offset_0x2070u 2552
-
-
- /* Superscripts and Subscripts */
-
- /* 2070 */ _(x,x), _(x,x), _(x,x), _(x,x), _(SM,x), _(x,x), _(x,x), _(x,x),
- /* 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
+#define indic_offset_0xa800u 2512
/* 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),
+ /* A808 */ _(C,x), _(C,x), _(C,x), _(Bi,x), _(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),
@@ -543,13 +525,13 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* Saurashtra */
- /* A880 */ _(Bi,R), _(Vs,R), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+ /* A880 */ _(Bi,x), _(Vs,x), _(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),
+ /* A8B0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(CF,x), _(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),
@@ -558,9 +540,9 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* A8E0 */ _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x),
+ /* A8E8 */ _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x),
+ /* A8F0 */ _(Ca,x), _(Ca,x), _(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 */
@@ -570,15 +552,15 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* A928 */ _(Vo,x), _(Vo,x), _(Vo,x), _(TM,x), _(TM,x), _(TM,x), _(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),
+ /* A948 */ _(M,B), _(M,B), _(M,T), _(M,B), _(M,B), _(M,B), _(M,B), _(CF,x),
+ /* A950 */ _(CF,x), _(CF,x), _(CF,x), _(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),
@@ -587,14 +569,14 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* Javanese */
- /* A980 */ _(Bi,T), _(Bi,T),_(CSR,T), _(Vs,R), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+ /* A980 */ _(Bi,x), _(Bi,x),_(CSR,x), _(Vs,x), _(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),
+ /* A9B0 */ _(C,x), _(C,x), _(C,x), _(N,x), _(M,R), _(M,R), _(M,T), _(M,T),
+ /* A9B8 */ _(M,B), _(M,B), _(M,L), _(M,L), _(M,T), _(CS,x), _(CM,x), _(CM,x),
/* 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),
@@ -602,7 +584,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* Myanmar Extended-B */
- /* A9E0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(M,T), _(x,x), _(C,x),
+ /* A9E0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(C,x),
/* A9E8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* 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),
@@ -615,10 +597,10 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* AA30 */ _(M,L), _(M,T), _(M,B), _(CM,x), _(CM,L), _(CM,x), _(CM,x), _(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),
+ /* AA40 */ _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x),
+ /* AA48 */ _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(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),
@@ -627,7 +609,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
- /* AA78 */ _(x,x), _(x,x), _(C,x), _(TM,R), _(TM,T), _(TM,R), _(C,x), _(C,x),
+ /* AA78 */ _(x,x), _(x,x), _(C,x), _(TM,x), _(TM,x), _(TM,x), _(C,x), _(C,x),
/* Tai Viet */
@@ -638,8 +620,8 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* AAB8 */ _(M,T),_(M,VOL), _(M,R),_(M,VOL),_(M,VOL), _(M,R), _(M,T), _(TM,x),
+ /* AAC0 */ _(TL,x), _(TM,x), _(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),
@@ -648,9 +630,9 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* AAF0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(Vs,x), _(IS,x), _(x,x),
-#define indic_offset_0xabc0u 3336
+#define indic_offset_0xabc0u 3272
/* Meetei Mayek */
@@ -660,31 +642,31 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* ABE8 */ _(M,B), _(M,R), _(M,R), _(x,x), _(TM,x), _(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
+#define indic_offset_0x10a00u 3336
/* 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),
+ /* 10A08 */ _(x,x), _(x,x), _(x,x), _(x,x), _(M,B), _(x,x), _(Bi,x), _(Vs,x),
/* 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),
+ /* 10A38 */ _(x,x), _(x,x), _(x,x), _(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
+#define indic_offset_0x11000u 3408
/* Brahmi */
- /* 11000 */ _(Bi,R), _(Bi,T), _(Vs,R),_(CWS,x),_(CWS,x), _(VI,x), _(VI,x), _(VI,x),
+ /* 11000 */ _(Bi,x), _(Bi,x), _(Vs,x), _(x,x), _(x,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),
@@ -703,21 +685,21 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* Kaithi */
- /* 11080 */ _(Bi,T), _(Bi,T), _(Vs,R), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
+ /* 11080 */ _(Bi,x), _(Bi,x), _(Vs,x), _(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),
+ /* 110B8 */ _(M,R), _(V,B), _(N,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-#define indic_offset_0x11100u 3664
+#define indic_offset_0x11100u 3600
/* Chakma */
- /* 11100 */ _(Bi,T), _(Bi,T), _(Vs,T), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x),
+ /* 11100 */ _(Bi,x), _(Bi,x), _(Vs,x), _(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),
@@ -734,12 +716,12 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* 11170 */ _(C,x), _(C,x), _(C,x), _(N,x), _(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),
+ /* 11180 */ _(Bi,x), _(Bi,x), _(Vs,x), _(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),
@@ -747,8 +729,8 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* 111C0 */ _(V,R), _(A,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
+ /* 111C8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(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),
@@ -767,19 +749,10 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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
+ /* 11230 */ _(M,T), _(M,T), _(M,TR), _(M,TR), _(Bi,x), _(V,R), _(N,x), _(GM,T),
+#define indic_offset_0x112b0u 3912
- /* 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 */
@@ -788,15 +761,15 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* 112D8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(Bi,x),
/* 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),
+ /* 112E8 */ _(M,T), _(N,x), _(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),
+ /* 11300 */ _(x,x), _(Bi,x), _(Bi,x), _(Vs,x), _(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),
@@ -808,11 +781,11 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* 11360 */ _(VI,x), _(VI,x), _(M,R), _(M,R), _(x,x), _(x,x), _(Ca,x), _(Ca,x),
+ /* 11368 */ _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(x,x), _(x,x), _(x,x),
+ /* 11370 */ _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(Ca,x), _(x,x), _(x,x), _(x,x),
-#define indic_offset_0x11480u 4224
+#define indic_offset_0x11480u 4112
/* Tirhuta */
@@ -824,13 +797,13 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* 114B8 */ _(M,B), _(M,L), _(M,T), _(M,TL), _(M,LR), _(M,R), _(M,LR), _(Bi,x),
+ /* 114C0 */ _(Bi,x), _(Vs,x), _(V,B), _(N,x), _(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
+#define indic_offset_0x11580u 4208
/* Siddham */
@@ -842,15 +815,11 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* 115B8 */ _(M,L), _(M,TL), _(M,LR),_(M,TLR), _(Bi,x), _(Bi,x), _(Vs,x), _(V,B),
+ /* 115C0 */ _(N,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
+
+#define indic_offset_0x11600u 4280
+
/* Modi */
@@ -861,8 +830,8 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* 11638 */ _(M,B), _(M,T), _(M,T), _(M,R), _(M,R), _(Bi,x), _(Vs,x), _(V,B),
+ /* 11640 */ _(x,x), _(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),
@@ -878,30 +847,13 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 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),
+ /* 116A8 */ _(C,x), _(C,x), _(C,x), _(Bi,x), _(Vs,x), _(M,T), _(M,L), _(M,R),
+ /* 116B0 */ _(M,B), _(M,B), _(M,T), _(M,T), _(M,T), _(M,T), _(V,T), _(N,x),
/* 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: 4488; occupancy: 73% */
INDIC_TABLE_ELEMENT_TYPE
hb_indic_get_categories (hb_codepoint_t u)
@@ -910,7 +862,7 @@ hb_indic_get_categories (hb_codepoint_t u)
{
case 0x0u:
if (hb_in_range (u, 0x0028u, 0x003Fu)) return indic_table[u - 0x0028u + indic_offset_0x0028u];
- if (hb_in_range (u, 0x00B0u, 0x00D7u)) return indic_table[u - 0x00B0u + indic_offset_0x00b0u];
+ if (hb_in_range (u, 0x00D0u, 0x00D7u)) return indic_table[u - 0x00D0u + indic_offset_0x00d0u];
if (hb_in_range (u, 0x0900u, 0x0DF7u)) return indic_table[u - 0x0900u + indic_offset_0x0900u];
if (unlikely (u == 0x00A0u)) return _(CP,x);
break;
@@ -920,12 +872,11 @@ hb_indic_get_categories (hb_codepoint_t u)
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, 0x1CD0u, 0x1CFFu)) return indic_table[u - 0x1CD0u + indic_offset_0x1cd0u];
+ if (hb_in_range (u, 0x1CD0u, 0x1CF7u)) return indic_table[u - 0x1CD0u + indic_offset_0x1cd0u];
break;
case 0x2u:
if (hb_in_range (u, 0x2008u, 0x2017u)) return indic_table[u - 0x2008u + indic_offset_0x2008u];
- if (hb_in_range (u, 0x2070u, 0x2087u)) return indic_table[u - 0x2070u + indic_offset_0x2070u];
if (unlikely (u == 0x25CCu)) return _(CP,x);
break;
@@ -941,9 +892,10 @@ hb_indic_get_categories (hb_codepoint_t u)
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, 0x112B0u, 0x11377u)) return indic_table[u - 0x112B0u + indic_offset_0x112b0u];
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, 0x11580u, 0x115C7u)) return indic_table[u - 0x11580u + indic_offset_0x11580u];
+ if (hb_in_range (u, 0x11600u, 0x116CFu)) return indic_table[u - 0x11600u + indic_offset_0x11600u];
break;
default:
@@ -962,14 +914,11 @@ hb_indic_get_categories (hb_codepoint_t u)
#undef ISC_CD
#undef ISC_CF
#undef ISC_CHL
-#undef ISC_CK
#undef ISC_CM
#undef ISC_CP
#undef ISC_CPR
-#undef ISC_CPrf
#undef ISC_CS
#undef ISC_CSR
-#undef ISC_CWS
#undef ISC_GM
#undef ISC_IS
#undef ISC_ZWJ
@@ -981,7 +930,6 @@ hb_indic_get_categories (hb_codepoint_t u)
#undef ISC_x
#undef ISC_PK
#undef ISC_RS
-#undef ISC_SM
#undef ISC_TL
#undef ISC_TM
#undef ISC_V
diff --git a/src/hb-ot-shape-complex-indic.cc b/src/hb-ot-shape-complex-indic.cc
index 1e151a7..7723600 100644
--- a/src/hb-ot-shape-complex-indic.cc
+++ b/src/hb-ot-shape-complex-indic.cc
@@ -142,7 +142,7 @@ is_one_of (const hb_glyph_info_t &info, unsigned int flags)
{
/* If it ligated, all bets are off. */
if (_hb_glyph_info_ligated (&info)) return false;
- return !!(FLAG_SAFE (info.indic_category()) & flags);
+ return !!(FLAG (info.indic_category()) & flags);
}
static inline bool
@@ -176,8 +176,24 @@ set_indic_properties (hb_glyph_info_t &info)
* Re-assign category
*/
+
+ /* The spec says U+0952 is OT_A. However, testing shows that Uniscribe
+ * treats a whole bunch of characters similarly.
+ * TESTS: For example, for U+0951:
+ * U+092E,U+0947,U+0952
+ * U+092E,U+0952,U+0947
+ * U+092E,U+0947,U+0951
+ * U+092E,U+0951,U+0947
+ * U+092E,U+0951,U+0952
+ * U+092E,U+0952,U+0951
+ */
+ if (unlikely (hb_in_ranges (u, 0x0951u, 0x0952u,
+ 0x1CD0u, 0x1CD2u,
+ 0x1CD4u, 0x1CE1u) ||
+ u == 0x1CF4u))
+ cat = OT_A;
/* The following act more like the Bindus. */
- if (unlikely (hb_in_range (u, 0x0953u, 0x0954u)))
+ else if (unlikely (hb_in_range (u, 0x0953u, 0x0954u)))
cat = OT_SM;
/* The following act like consonants. */
else if (unlikely (hb_in_ranges (u, 0x0A72u, 0x0A73u,
@@ -200,12 +216,15 @@ 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 */
+ else if (unlikely (hb_in_range (u, 0x17CDu, 0x17D1u) ||
+ u == 0x17CBu || u == 0x17D3u || u == 0x17DDu)) /* Khmer Various signs */
{
+ /* These are like Top Matras. */
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 (u == 0x17D2u)) cat = OT_Coeng; /* Khmer coeng */
else if (unlikely (hb_in_range (u, 0x2010u, 0x2011u)))
cat = OT_PLACEHOLDER;
else if (unlikely (u == 0x25CCu)) cat = OT_DOTTEDCIRCLE;
@@ -218,7 +237,7 @@ set_indic_properties (hb_glyph_info_t &info)
* Re-assign position.
*/
- if ((FLAG_SAFE (cat) & CONSONANT_FLAGS))
+ if ((FLAG (cat) & CONSONANT_FLAGS))
{
pos = POS_BASE_C;
if (is_ra (u))
@@ -228,7 +247,7 @@ set_indic_properties (hb_glyph_info_t &info)
{
pos = matra_position (u, pos);
}
- else if ((FLAG_SAFE (cat) & (FLAG (OT_SM) | FLAG (OT_VD) | FLAG (OT_A) | FLAG (OT_Symbol))))
+ else if ((FLAG (cat) & (FLAG (OT_SM) | FLAG (OT_VD) | FLAG (OT_A) | FLAG (OT_Symbol))))
{
pos = POS_SMVD;
}
@@ -493,12 +512,12 @@ struct indic_shape_plan_t
hb_codepoint_t glyph = virama_glyph;
if (unlikely (virama_glyph == (hb_codepoint_t) -1))
{
- if (!config->virama || !font->get_nominal_glyph (config->virama, &glyph))
+ if (!config->virama || !font->get_glyph (config->virama, 0, &glyph))
glyph = 0;
/* Technically speaking, the spec says we should apply 'locl' to virama too.
* Maybe one day... */
- /* Our get_nominal_glyph() function needs a font, so we can't get the virama glyph
+ /* Our get_glyph() function needs a font, so we can't get the virama glyph
* during shape planning... Instead, overwrite it here. It's safe. Don't worry! */
(const_cast<indic_shape_plan_t *> (this))->virama_glyph = glyph;
}
@@ -538,15 +557,8 @@ data_create_indic (const hb_ot_shape_plan_t *plan)
indic_plan->virama_glyph = (hb_codepoint_t) -1;
/* Use zero-context would_substitute() matching for new-spec of the main
- * Indic scripts, and scripts with one spec only, but not for old-specs.
- * The new-spec for all dual-spec scripts says zero-context matching happens.
- *
- * However, testing with Malayalam shows that old and new spec both allow
- * context. Testing with Bengali new-spec however shows that it doesn't.
- * So, the heuristic here is the way it is. It should *only* be changed,
- * as we discover more cases of what Windows does. DON'T TOUCH OTHERWISE.
- */
- bool zero_context = !indic_plan->is_old_spec && plan->props.script != HB_SCRIPT_MALAYALAM;
+ * Indic scripts, and scripts with one spec only, but not for old-specs. */
+ bool zero_context = !indic_plan->is_old_spec;
indic_plan->rphf.init (&plan->map, HB_TAG('r','p','h','f'), zero_context);
indic_plan->pref.init (&plan->map, HB_TAG('p','r','e','f'), zero_context);
indic_plan->blwf.init (&plan->map, HB_TAG('b','l','w','f'), zero_context);
@@ -742,6 +754,10 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
switch (indic_plan->config->base_pos)
{
+ default:
+ assert (false);
+ /* fallthrough */
+
case BASE_POS_LAST:
{
/* -> starting from the end of the syllable, move backwards */
@@ -947,7 +963,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
indic_position_t last_pos = POS_START;
for (unsigned int i = start; i < end; i++)
{
- if ((FLAG_SAFE (info[i].indic_category()) & (JOINER_FLAGS | FLAG (OT_N) | FLAG (OT_RS) | MEDIAL_FLAGS | HALANT_OR_COENG_FLAGS)))
+ if ((FLAG (info[i].indic_category()) & (JOINER_FLAGS | FLAG (OT_N) | FLAG (OT_RS) | MEDIAL_FLAGS | HALANT_OR_COENG_FLAGS)))
{
info[i].indic_position() = last_pos;
if (unlikely (info[i].indic_category() == OT_H &&
@@ -996,7 +1012,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
info[i].syllable() = i - start;
/* Sit tight, rock 'n roll! */
- hb_stable_sort (info + start, end - start, compare_indic_order);
+ hb_bubble_sort (info + start, end - start, compare_indic_order);
/* Find base again */
base = end;
for (unsigned int i = start; i < end; i++)
@@ -1009,11 +1025,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
* around like crazy. In old-spec mode, we move halants around, so in
* that case merge all clusters after base. Otherwise, check the sort
* order and merge as needed.
- * For pre-base stuff, we handle cluster issues in final reordering.
- *
- * We could use buffer->sort() for this, if there was no special
- * reordering of pre-base stuff happening later...
- */
+ * For pre-base stuff, we handle cluster issues in final reordering. */
if (indic_plan->is_old_spec || end - base > 127)
buffer->merge_clusters (base, end);
else
@@ -1149,6 +1161,17 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
}
}
+
+static void
+initial_reordering_vowel_syllable (const hb_ot_shape_plan_t *plan,
+ hb_face_t *face,
+ hb_buffer_t *buffer,
+ unsigned int start, unsigned int end)
+{
+ /* We made the vowels look like consonants. So let's call the consonant logic! */
+ initial_reordering_consonant_syllable (plan, face, buffer, start, end);
+}
+
static void
initial_reordering_standalone_cluster (const hb_ot_shape_plan_t *plan,
hb_face_t *face,
@@ -1171,27 +1194,50 @@ initial_reordering_standalone_cluster (const hb_ot_shape_plan_t *plan,
}
static void
+initial_reordering_broken_cluster (const hb_ot_shape_plan_t *plan,
+ hb_face_t *face,
+ hb_buffer_t *buffer,
+ unsigned int start, unsigned int end)
+{
+ /* We already inserted dotted-circles, so just call the standalone_cluster. */
+ initial_reordering_standalone_cluster (plan, face, buffer, start, end);
+}
+
+static void
+initial_reordering_symbol_cluster (const hb_ot_shape_plan_t *plan HB_UNUSED,
+ hb_face_t *face HB_UNUSED,
+ hb_buffer_t *buffer HB_UNUSED,
+ unsigned int start HB_UNUSED, unsigned int end HB_UNUSED)
+{
+ /* Nothing to do right now. If we ever switch to using the output
+ * buffer in the reordering process, we'd need to next_glyph() here. */
+}
+
+static void
+initial_reordering_non_indic_cluster (const hb_ot_shape_plan_t *plan HB_UNUSED,
+ hb_face_t *face HB_UNUSED,
+ hb_buffer_t *buffer HB_UNUSED,
+ unsigned int start HB_UNUSED, unsigned int end HB_UNUSED)
+{
+ /* Nothing to do right now. If we ever switch to using the output
+ * buffer in the reordering process, we'd need to next_glyph() here. */
+}
+
+
+static void
initial_reordering_syllable (const hb_ot_shape_plan_t *plan,
hb_face_t *face,
hb_buffer_t *buffer,
unsigned int start, unsigned int end)
{
syllable_type_t syllable_type = (syllable_type_t) (buffer->info[start].syllable() & 0x0F);
- switch (syllable_type)
- {
- case vowel_syllable: /* We made the vowels look like consonants. So let's call the consonant logic! */
- case consonant_syllable:
- initial_reordering_consonant_syllable (plan, face, buffer, start, end);
- break;
-
- case broken_cluster: /* We already inserted dotted-circles, so just call the standalone_cluster. */
- case standalone_cluster:
- initial_reordering_standalone_cluster (plan, face, buffer, start, end);
- break;
-
- case symbol_cluster:
- case non_indic_cluster:
- break;
+ switch (syllable_type) {
+ case consonant_syllable: initial_reordering_consonant_syllable (plan, face, buffer, start, end); return;
+ case vowel_syllable: initial_reordering_vowel_syllable (plan, face, buffer, start, end); return;
+ case standalone_cluster: initial_reordering_standalone_cluster (plan, face, buffer, start, end); return;
+ case symbol_cluster: initial_reordering_symbol_cluster (plan, face, buffer, start, end); return;
+ case broken_cluster: initial_reordering_broken_cluster (plan, face, buffer, start, end); return;
+ case non_indic_cluster: initial_reordering_non_indic_cluster (plan, face, buffer, start, end); return;
}
}
@@ -1215,7 +1261,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
hb_codepoint_t dottedcircle_glyph;
- if (!font->get_nominal_glyph (0x25CCu, &dottedcircle_glyph))
+ if (!font->get_glyph (0x25CCu, 0, &dottedcircle_glyph))
return;
hb_glyph_info_t dottedcircle = {0};
@@ -1227,7 +1273,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
buffer->idx = 0;
unsigned int last_syllable = 0;
- while (buffer->idx < buffer->len && !buffer->in_error)
+ while (buffer->idx < buffer->len)
{
unsigned int syllable = buffer->cur().syllable();
syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F);
@@ -1235,19 +1281,19 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
{
last_syllable = syllable;
- hb_glyph_info_t ginfo = dottedcircle;
- ginfo.cluster = buffer->cur().cluster;
- ginfo.mask = buffer->cur().mask;
- ginfo.syllable() = buffer->cur().syllable();
+ hb_glyph_info_t info = dottedcircle;
+ info.cluster = buffer->cur().cluster;
+ info.mask = buffer->cur().mask;
+ info.syllable() = buffer->cur().syllable();
/* TODO Set glyph_props? */
/* Insert dottedcircle after possible Repha. */
- while (buffer->idx < buffer->len && !buffer->in_error &&
+ while (buffer->idx < buffer->len &&
last_syllable == buffer->cur().syllable() &&
buffer->cur().indic_category() == OT_Repha)
buffer->next_glyph ();
- buffer->output_info (ginfo);
+ buffer->output_info (info);
}
else
buffer->next_glyph ();
@@ -1264,8 +1310,18 @@ initial_reordering (const hb_ot_shape_plan_t *plan,
update_consonant_positions (plan, font, buffer);
insert_dotted_circles (plan, font, buffer);
- foreach_syllable (buffer, start, end)
- initial_reordering_syllable (plan, font->face, buffer, start, end);
+ hb_glyph_info_t *info = buffer->info;
+ unsigned int count = buffer->len;
+ if (unlikely (!count)) return;
+ unsigned int last = 0;
+ unsigned int last_syllable = info[0].syllable();
+ for (unsigned int i = 1; i < count; i++)
+ if (last_syllable != info[i].syllable()) {
+ initial_reordering_syllable (plan, font->face, buffer, last, i);
+ last = i;
+ last_syllable = info[last].syllable();
+ }
+ initial_reordering_syllable (plan, font->face, buffer, last, count);
}
static void
@@ -1332,25 +1388,6 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
break;
}
}
- /* For Malayalam, skip over unformed below- (but NOT post-) forms. */
- if (buffer->props.script == HB_SCRIPT_MALAYALAM)
- {
- for (unsigned int i = base + 1; i < end; i++)
- {
- while (i < end && is_joiner (info[i]))
- i++;
- if (i == end || !is_halant_or_coeng (info[i]))
- break;
- i++; /* Skip halant. */
- while (i < end && is_joiner (info[i]))
- i++;
- if (i < end && is_consonant (info[i]) && info[i].indic_position() == POS_BELOW_C)
- {
- base = i;
- info[base].indic_position() = POS_BASE_C;
- }
- }
- }
if (start < base && info[base].indic_position() > POS_BASE_C)
base--;
@@ -1411,17 +1448,12 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
if (info[i - 1].indic_position () == POS_PRE_M)
{
unsigned int old_pos = i - 1;
- if (old_pos < base && base <= new_pos) /* Shouldn't actually happen. */
- base--;
-
hb_glyph_info_t tmp = info[old_pos];
memmove (&info[old_pos], &info[old_pos + 1], (new_pos - old_pos) * sizeof (info[0]));
info[new_pos] = tmp;
-
- /* Note: this merge_clusters() is intentionally *after* the reordering.
- * Indic matra reordering is special and tricky... */
+ if (old_pos < base && base <= new_pos) /* Shouldn't actually happen. */
+ base--;
buffer->merge_clusters (new_pos, MIN (end, base + 1));
-
new_pos--;
}
} else {
@@ -1518,7 +1550,7 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
{
new_reph_pos = base;
while (new_reph_pos < end &&
- !( FLAG_SAFE (info[new_reph_pos + 1].indic_position()) & (FLAG (POS_POST_C) | FLAG (POS_AFTER_POST) | FLAG (POS_SMVD))))
+ !( FLAG (info[new_reph_pos + 1].indic_position()) & (FLAG (POS_POST_C) | FLAG (POS_AFTER_POST) | FLAG (POS_SMVD))))
new_reph_pos++;
if (new_reph_pos < end)
goto reph_move;
@@ -1574,12 +1606,12 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
reph_move:
{
- /* Move */
buffer->merge_clusters (start, new_reph_pos + 1);
+
+ /* Move */
hb_glyph_info_t reph = info[start];
memmove (&info[start], &info[start + 1], (new_reph_pos - start) * sizeof (info[0]));
info[new_reph_pos] = reph;
-
if (start < base && base <= new_reph_pos)
base--;
}
@@ -1634,8 +1666,8 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
if (new_pos > start && info[new_pos - 1].indic_category() == OT_M)
{
unsigned int old_pos = i;
- for (unsigned int j = base + 1; j < old_pos; j++)
- if (info[j].indic_category() == OT_M)
+ for (unsigned int i = base + 1; i < old_pos; i++)
+ if (info[i].indic_category() == OT_M)
{
new_pos--;
break;
@@ -1652,12 +1684,10 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
{
unsigned int old_pos = i;
-
buffer->merge_clusters (new_pos, old_pos + 1);
hb_glyph_info_t tmp = info[old_pos];
memmove (&info[new_pos + 1], &info[new_pos], (old_pos - new_pos) * sizeof (info[0]));
info[new_pos] = tmp;
-
if (new_pos <= base && base < old_pos)
base++;
}
@@ -1671,7 +1701,7 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
/* Apply 'init' to the Left Matra if it's a word start. */
if (info[start].indic_position () == POS_PRE_M &&
(!start ||
- !(FLAG_SAFE (_hb_glyph_info_get_general_category (&info[start - 1])) &
+ !(FLAG (_hb_glyph_info_get_general_category (&info[start - 1])) &
FLAG_RANGE (HB_UNICODE_GENERAL_CATEGORY_FORMAT, HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK))))
info[start].mask |= indic_plan->mask_array[INIT];
@@ -1707,8 +1737,16 @@ final_reordering (const hb_ot_shape_plan_t *plan,
unsigned int count = buffer->len;
if (unlikely (!count)) return;
- foreach_syllable (buffer, start, end)
- final_reordering_syllable (plan, buffer, start, end);
+ hb_glyph_info_t *info = buffer->info;
+ unsigned int last = 0;
+ unsigned int last_syllable = info[0].syllable();
+ for (unsigned int i = 1; i < count; i++)
+ if (last_syllable != info[i].syllable()) {
+ final_reordering_syllable (plan, buffer, last, i);
+ last = i;
+ last_syllable = info[last].syllable();
+ }
+ final_reordering_syllable (plan, buffer, last, count);
HB_BUFFER_DEALLOCATE_VAR (buffer, indic_category);
HB_BUFFER_DEALLOCATE_VAR (buffer, indic_position);
@@ -1799,7 +1837,7 @@ decompose_indic (const hb_ot_shape_normalize_context_t *c,
hb_codepoint_t glyph;
if (hb_options ().uniscribe_bug_compatible ||
- (c->font->get_nominal_glyph (ab, &glyph) &&
+ (c->font->get_glyph (ab, 0, &glyph) &&
indic_plan->pstf.would_substitute (&glyph, 1, c->font->face)))
{
/* Ok, safe to use Uniscribe-style decomposition. */
@@ -1809,7 +1847,7 @@ decompose_indic (const hb_ot_shape_normalize_context_t *c,
}
}
- return (bool) c->unicode->decompose (ab, a, b);
+ return c->unicode->decompose (ab, a, b);
}
static bool
@@ -1825,7 +1863,7 @@ compose_indic (const hb_ot_shape_normalize_context_t *c,
/* Composition-exclusion exceptions that we want to recompose. */
if (a == 0x09AFu && b == 0x09BCu) { *ab = 0x09DFu; return true; }
- return (bool) c->unicode->compose (a, b, ab);
+ return c->unicode->compose (a, b, ab);
}
@@ -1837,7 +1875,6 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_indic =
data_create_indic,
data_destroy_indic,
NULL, /* preprocess_text */
- NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT,
decompose_indic,
compose_indic,
diff --git a/src/hb-ot-shape-complex-myanmar.cc b/src/hb-ot-shape-complex-myanmar.cc
index 545765d..d016380 100644
--- a/src/hb-ot-shape-complex-myanmar.cc
+++ b/src/hb-ot-shape-complex-myanmar.cc
@@ -154,7 +154,7 @@ is_one_of (const hb_glyph_info_t &info, unsigned int flags)
{
/* If it ligated, all bets are off. */
if (_hb_glyph_info_ligated (&info)) return false;
- return !!(FLAG_SAFE (info.myanmar_category()) & flags);
+ return !!(FLAG (info.myanmar_category()) & flags);
}
static inline bool
@@ -199,10 +199,6 @@ set_myanmar_properties (hb_glyph_info_t &info)
cat = (indic_category_t) OT_A;
break;
- case 0x1039u:
- cat = (indic_category_t) OT_H;
- break;
-
case 0x103Au:
cat = (indic_category_t) OT_As;
break;
@@ -308,7 +304,9 @@ compare_myanmar_order (const hb_glyph_info_t *pa, const hb_glyph_info_t *pb)
* http://www.microsoft.com/typography/OpenTypeDev/myanmar/intro.htm */
static void
-initial_reordering_consonant_syllable (hb_buffer_t *buffer,
+initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
+ hb_face_t *face,
+ hb_buffer_t *buffer,
unsigned int start, unsigned int end)
{
hb_glyph_info_t *info = buffer->info;
@@ -395,10 +393,42 @@ initial_reordering_consonant_syllable (hb_buffer_t *buffer,
}
}
+ buffer->merge_clusters (start, end);
/* Sit tight, rock 'n roll! */
- buffer->sort (start, end, compare_myanmar_order);
+ hb_bubble_sort (info + start, end - start, compare_myanmar_order);
+}
+
+static void
+initial_reordering_broken_cluster (const hb_ot_shape_plan_t *plan,
+ hb_face_t *face,
+ hb_buffer_t *buffer,
+ unsigned int start, unsigned int end)
+{
+ /* We already inserted dotted-circles, so just call the consonant_syllable. */
+ initial_reordering_consonant_syllable (plan, face, buffer, start, end);
+}
+
+static void
+initial_reordering_punctuation_cluster (const hb_ot_shape_plan_t *plan HB_UNUSED,
+ hb_face_t *face HB_UNUSED,
+ hb_buffer_t *buffer HB_UNUSED,
+ unsigned int start HB_UNUSED, unsigned int end HB_UNUSED)
+{
+ /* Nothing to do right now. If we ever switch to using the output
+ * buffer in the reordering process, we'd need to next_glyph() here. */
+}
+
+static void
+initial_reordering_non_myanmar_cluster (const hb_ot_shape_plan_t *plan HB_UNUSED,
+ hb_face_t *face HB_UNUSED,
+ hb_buffer_t *buffer HB_UNUSED,
+ unsigned int start HB_UNUSED, unsigned int end HB_UNUSED)
+{
+ /* Nothing to do right now. If we ever switch to using the output
+ * buffer in the reordering process, we'd need to next_glyph() here. */
}
+
static void
initial_reordering_syllable (const hb_ot_shape_plan_t *plan,
hb_face_t *face,
@@ -407,15 +437,10 @@ initial_reordering_syllable (const hb_ot_shape_plan_t *plan,
{
syllable_type_t syllable_type = (syllable_type_t) (buffer->info[start].syllable() & 0x0F);
switch (syllable_type) {
-
- case broken_cluster: /* We already inserted dotted-circles, so just call the consonant_syllable. */
- case consonant_syllable:
- initial_reordering_consonant_syllable (buffer, start, end);
- break;
-
- case punctuation_cluster:
- case non_myanmar_cluster:
- break;
+ case consonant_syllable: initial_reordering_consonant_syllable (plan, face, buffer, start, end); return;
+ case punctuation_cluster: initial_reordering_punctuation_cluster (plan, face, buffer, start, end); return;
+ case broken_cluster: initial_reordering_broken_cluster (plan, face, buffer, start, end); return;
+ case non_myanmar_cluster: initial_reordering_non_myanmar_cluster (plan, face, buffer, start, end); return;
}
}
@@ -439,7 +464,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
hb_codepoint_t dottedcircle_glyph;
- if (!font->get_nominal_glyph (0x25CCu, &dottedcircle_glyph))
+ if (!font->get_glyph (0x25CCu, 0, &dottedcircle_glyph))
return;
hb_glyph_info_t dottedcircle = {0};
@@ -451,7 +476,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
buffer->idx = 0;
unsigned int last_syllable = 0;
- while (buffer->idx < buffer->len && !buffer->in_error)
+ while (buffer->idx < buffer->len)
{
unsigned int syllable = buffer->cur().syllable();
syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F);
@@ -459,12 +484,12 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
{
last_syllable = syllable;
- hb_glyph_info_t ginfo = dottedcircle;
- ginfo.cluster = buffer->cur().cluster;
- ginfo.mask = buffer->cur().mask;
- ginfo.syllable() = buffer->cur().syllable();
+ hb_glyph_info_t info = dottedcircle;
+ info.cluster = buffer->cur().cluster;
+ info.mask = buffer->cur().mask;
+ info.syllable() = buffer->cur().syllable();
- buffer->output_info (ginfo);
+ buffer->output_info (info);
}
else
buffer->next_glyph ();
@@ -480,8 +505,18 @@ initial_reordering (const hb_ot_shape_plan_t *plan,
{
insert_dotted_circles (plan, font, buffer);
- foreach_syllable (buffer, start, end)
- initial_reordering_syllable (plan, font->face, buffer, start, end);
+ hb_glyph_info_t *info = buffer->info;
+ unsigned int count = buffer->len;
+ if (unlikely (!count)) return;
+ unsigned int last = 0;
+ unsigned int last_syllable = info[0].syllable();
+ for (unsigned int i = 1; i < count; i++)
+ if (last_syllable != info[i].syllable()) {
+ initial_reordering_syllable (plan, font->face, buffer, last, i);
+ last = i;
+ last_syllable = info[last].syllable();
+ }
+ initial_reordering_syllable (plan, font->face, buffer, last, count);
}
static void
@@ -511,7 +546,6 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_myanmar_old =
NULL, /* data_create */
NULL, /* data_destroy */
NULL, /* preprocess_text */
- NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT,
NULL, /* decompose */
NULL, /* compose */
@@ -528,7 +562,6 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_myanmar =
NULL, /* data_create */
NULL, /* data_destroy */
NULL, /* preprocess_text */
- NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT,
NULL, /* decompose */
NULL, /* compose */
diff --git a/src/hb-ot-shape-complex-private.hh b/src/hb-ot-shape-complex-private.hh
index b3372bd..e268933 100644
--- a/src/hb-ot-shape-complex-private.hh
+++ b/src/hb-ot-shape-complex-private.hh
@@ -41,8 +41,12 @@
enum hb_ot_shape_zero_width_marks_type_t {
HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE,
+// HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_EARLY,
+ HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE,
HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_EARLY,
- HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE
+ HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE,
+
+ HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT = HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE
};
@@ -55,9 +59,9 @@ enum hb_ot_shape_zero_width_marks_type_t {
HB_COMPLEX_SHAPER_IMPLEMENT (myanmar_old) \
HB_COMPLEX_SHAPER_IMPLEMENT (indic) \
HB_COMPLEX_SHAPER_IMPLEMENT (myanmar) \
+ HB_COMPLEX_SHAPER_IMPLEMENT (sea) \
HB_COMPLEX_SHAPER_IMPLEMENT (thai) \
HB_COMPLEX_SHAPER_IMPLEMENT (tibetan) \
- HB_COMPLEX_SHAPER_IMPLEMENT (use) \
/* ^--- Add new shapers here */
@@ -106,15 +110,6 @@ struct hb_ot_complex_shaper_t
hb_buffer_t *buffer,
hb_font_t *font);
- /* postprocess_glyphs()
- * Called during shape().
- * Shapers can use to modify glyphs after shaping ends.
- * May be NULL.
- */
- void (*postprocess_glyphs) (const hb_ot_shape_plan_t *plan,
- hb_buffer_t *buffer,
- hb_font_t *font);
-
hb_ot_shape_normalization_mode_t normalization_preference;
@@ -184,12 +179,9 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
case HB_SCRIPT_PSALTER_PAHLAVI:
/* For Arabic script, use the Arabic shaper even if no OT script tag was found.
- * This is because we do fallback shaping for Arabic script (and not others).
- * But note that Arabic shaping is applicable only to horizontal layout; for
- * vertical text, just use the generic shaper instead. */
- if ((planner->map.chosen_script[0] != HB_OT_TAG_DEFAULT_SCRIPT ||
- planner->props.script == HB_SCRIPT_ARABIC) &&
- HB_DIRECTION_IS_HORIZONTAL(planner->props.direction))
+ * This is because we do fallback shaping for Arabic script (and not others). */
+ if (planner->map.chosen_script[0] != HB_OT_TAG_DEFAULT_SCRIPT ||
+ planner->props.script == HB_SCRIPT_ARABIC)
return &_hb_ot_complex_shaper_arabic;
else
return &_hb_ot_complex_shaper_default;
@@ -222,9 +214,61 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
/* ^--- Add new shapers here */
+
#if 0
+ /* Note:
+ *
+ * These disabled scripts are listed in ucd/IndicSyllabicCategory.txt, but according
+ * to Martin Hosken and Jonathan Kew do not require complex shaping.
+ *
+ * TODO We should automate figuring out which scripts do not need complex shaping
+ *
+ * TODO We currently keep data for these scripts in our indic table. Need to fix the
+ * generator to not do that.
+ */
+
+
+ /* Simple? */
+
+ /* Unicode-3.2 additions */
+ case HB_SCRIPT_BUHID:
+ case HB_SCRIPT_HANUNOO:
+
+ /* Unicode-5.1 additions */
+ case HB_SCRIPT_SAURASHTRA:
+
+ /* Unicode-6.0 additions */
+ case HB_SCRIPT_BATAK:
+ case HB_SCRIPT_BRAHMI:
+
+
+ /* Simple */
+
+ /* Unicode-1.1 additions */
+ /* These have their own shaper now. */
+ case HB_SCRIPT_LAO:
+ case HB_SCRIPT_THAI:
+
+ /* Unicode-3.2 additions */
+ case HB_SCRIPT_TAGALOG:
+ case HB_SCRIPT_TAGBANWA:
+
+ /* Unicode-4.0 additions */
+ case HB_SCRIPT_LIMBU:
+ case HB_SCRIPT_TAI_LE:
+
/* Unicode-4.1 additions */
+ case HB_SCRIPT_KHAROSHTHI:
case HB_SCRIPT_NEW_TAI_LUE:
+ case HB_SCRIPT_SYLOTI_NAGRI:
+
+ /* Unicode-5.1 additions */
+ case HB_SCRIPT_KAYAH_LI:
+
+ /* Unicode-5.2 additions */
+ case HB_SCRIPT_TAI_VIET:
+
+
#endif
/* Unicode-1.1 additions */
@@ -241,11 +285,28 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
/* Unicode-3.0 additions */
case HB_SCRIPT_SINHALA:
+ /* Unicode-5.0 additions */
+ case HB_SCRIPT_BALINESE:
+
+ /* Unicode-5.1 additions */
+ case HB_SCRIPT_LEPCHA:
+ case HB_SCRIPT_REJANG:
+ case HB_SCRIPT_SUNDANESE:
+
/* Unicode-5.2 additions */
case HB_SCRIPT_JAVANESE:
+ case HB_SCRIPT_KAITHI:
+ case HB_SCRIPT_MEETEI_MAYEK:
+
+ /* Unicode-6.0 additions */
+
+ /* Unicode-6.1 additions */
+ case HB_SCRIPT_CHAKMA:
+ case HB_SCRIPT_SHARADA:
+ case HB_SCRIPT_TAKRI:
/* If the designer designed the font for the 'DFLT' script,
- * use the default shaper. Otherwise, use the specific shaper.
+ * use the default shaper. Otherwise, use the Indic shaper.
* Note that for some simple scripts, there may not be *any*
* GSUB/GPOS needed, so there may be no scripts found! */
if (planner->map.chosen_script[0] == HB_TAG ('D','F','L','T'))
@@ -277,82 +338,23 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
else
return &_hb_ot_complex_shaper_default;
-
- /* Unicode-2.0 additions */
- //case HB_SCRIPT_TIBETAN:
-
- /* Unicode-3.0 additions */
- //case HB_SCRIPT_MONGOLIAN:
- //case HB_SCRIPT_SINHALA:
-
- /* Unicode-3.2 additions */
- case HB_SCRIPT_BUHID:
- case HB_SCRIPT_HANUNOO:
- case HB_SCRIPT_TAGALOG:
- case HB_SCRIPT_TAGBANWA:
-
- /* Unicode-4.0 additions */
- case HB_SCRIPT_LIMBU:
- case HB_SCRIPT_TAI_LE:
-
/* Unicode-4.1 additions */
case HB_SCRIPT_BUGINESE:
- case HB_SCRIPT_KHAROSHTHI:
- case HB_SCRIPT_SYLOTI_NAGRI:
- case HB_SCRIPT_TIFINAGH:
-
- /* Unicode-5.0 additions */
- case HB_SCRIPT_BALINESE:
- //case HB_SCRIPT_NKO:
- //case HB_SCRIPT_PHAGS_PA:
/* Unicode-5.1 additions */
case HB_SCRIPT_CHAM:
- case HB_SCRIPT_KAYAH_LI:
- case HB_SCRIPT_LEPCHA:
- case HB_SCRIPT_REJANG:
- case HB_SCRIPT_SAURASHTRA:
- case HB_SCRIPT_SUNDANESE:
/* Unicode-5.2 additions */
- case HB_SCRIPT_EGYPTIAN_HIEROGLYPHS:
- //case HB_SCRIPT_JAVANESE:
- case HB_SCRIPT_KAITHI:
- case HB_SCRIPT_MEETEI_MAYEK:
case HB_SCRIPT_TAI_THAM:
- case HB_SCRIPT_TAI_VIET:
-
- /* Unicode-6.0 additions */
- case HB_SCRIPT_BATAK:
- case HB_SCRIPT_BRAHMI:
- //case HB_SCRIPT_MANDAIC:
-
- /* Unicode-6.1 additions */
- case HB_SCRIPT_CHAKMA:
- case HB_SCRIPT_SHARADA:
- case HB_SCRIPT_TAKRI:
-
- /* Unicode-7.0 additions */
- case HB_SCRIPT_DUPLOYAN:
- case HB_SCRIPT_GRANTHA:
- case HB_SCRIPT_KHOJKI:
- case HB_SCRIPT_KHUDAWADI:
- case HB_SCRIPT_MAHAJANI:
- //case HB_SCRIPT_MANICHAEAN:
- case HB_SCRIPT_MODI:
- case HB_SCRIPT_PAHAWH_HMONG:
- //case HB_SCRIPT_PSALTER_PAHLAVI:
- case HB_SCRIPT_SIDDHAM:
- case HB_SCRIPT_TIRHUTA:
/* If the designer designed the font for the 'DFLT' script,
- * use the default shaper. Otherwise, use the specific shaper.
+ * use the default shaper. Otherwise, use the Indic shaper.
* Note that for some simple scripts, there may not be *any*
* GSUB/GPOS needed, so there may be no scripts found! */
if (planner->map.chosen_script[0] == HB_TAG ('D','F','L','T'))
return &_hb_ot_complex_shaper_default;
else
- return &_hb_ot_complex_shaper_use;
+ return &_hb_ot_complex_shaper_sea;
}
}
diff --git a/src/hb-ot-shape-complex-sea-machine.hh b/src/hb-ot-shape-complex-sea-machine.hh
new file mode 100644
index 0000000..15b862f
--- /dev/null
+++ b/src/hb-ot-shape-complex-sea-machine.hh
@@ -0,0 +1,224 @@
+
+#line 1 "hb-ot-shape-complex-sea-machine.rl"
+/*
+ * Copyright © 2011,2012,2013 Google, Inc.
+ *
+ * This is part of HarfBuzz, a text shaping library.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ *
+ * Google Author(s): Behdad Esfahbod
+ */
+
+#ifndef HB_OT_SHAPE_COMPLEX_SEA_MACHINE_HH
+#define HB_OT_SHAPE_COMPLEX_SEA_MACHINE_HH
+
+#include "hb-private.hh"
+
+
+#line 36 "hb-ot-shape-complex-sea-machine.hh"
+static const unsigned char _sea_syllable_machine_trans_keys[] = {
+ 1u, 1u, 1u, 1u, 1u, 29u, 3u, 29u, 3u, 29u, 1u, 1u, 0
+};
+
+static const char _sea_syllable_machine_key_spans[] = {
+ 1, 1, 29, 27, 27, 1
+};
+
+static const char _sea_syllable_machine_index_offsets[] = {
+ 0, 2, 4, 34, 62, 90
+};
+
+static const char _sea_syllable_machine_indicies[] = {
+ 1, 0, 3, 2, 1, 1, 3, 5,
+ 4, 4, 4, 4, 4, 3, 4, 1,
+ 4, 4, 4, 4, 3, 4, 4, 4,
+ 4, 3, 4, 4, 4, 3, 3, 3,
+ 3, 4, 1, 7, 6, 6, 6, 6,
+ 6, 1, 6, 6, 6, 6, 6, 6,
+ 1, 6, 6, 6, 6, 1, 6, 6,
+ 6, 1, 1, 1, 1, 6, 3, 9,
+ 8, 8, 8, 8, 8, 3, 8, 8,
+ 8, 8, 8, 8, 3, 8, 8, 8,
+ 8, 3, 8, 8, 8, 3, 3, 3,
+ 3, 8, 3, 10, 0
+};
+
+static const char _sea_syllable_machine_trans_targs[] = {
+ 2, 3, 2, 4, 2, 5, 2, 0,
+ 2, 1, 2
+};
+
+static const char _sea_syllable_machine_trans_actions[] = {
+ 1, 2, 3, 2, 6, 0, 7, 0,
+ 8, 0, 9
+};
+
+static const char _sea_syllable_machine_to_state_actions[] = {
+ 0, 0, 4, 0, 0, 0
+};
+
+static const char _sea_syllable_machine_from_state_actions[] = {
+ 0, 0, 5, 0, 0, 0
+};
+
+static const char _sea_syllable_machine_eof_trans[] = {
+ 1, 3, 0, 7, 9, 11
+};
+
+static const int sea_syllable_machine_start = 2;
+static const int sea_syllable_machine_first_final = 2;
+static const int sea_syllable_machine_error = -1;
+
+static const int sea_syllable_machine_en_main = 2;
+
+
+#line 36 "hb-ot-shape-complex-sea-machine.rl"
+
+
+
+#line 67 "hb-ot-shape-complex-sea-machine.rl"
+
+
+#define found_syllable(syllable_type) \
+ HB_STMT_START { \
+ if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
+ for (unsigned int i = last; i < p+1; i++) \
+ info[i].syllable() = (syllable_serial << 4) | syllable_type; \
+ last = p+1; \
+ syllable_serial++; \
+ if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
+ } HB_STMT_END
+
+static void
+find_syllables (hb_buffer_t *buffer)
+{
+ unsigned int p, pe, eof, ts HB_UNUSED, te HB_UNUSED, act HB_UNUSED;
+ int cs;
+ hb_glyph_info_t *info = buffer->info;
+
+#line 117 "hb-ot-shape-complex-sea-machine.hh"
+ {
+ cs = sea_syllable_machine_start;
+ ts = 0;
+ te = 0;
+ act = 0;
+ }
+
+#line 88 "hb-ot-shape-complex-sea-machine.rl"
+
+
+ p = 0;
+ pe = eof = buffer->len;
+
+ unsigned int last = 0;
+ unsigned int syllable_serial = 1;
+
+#line 134 "hb-ot-shape-complex-sea-machine.hh"
+ {
+ int _slen;
+ int _trans;
+ const unsigned char *_keys;
+ const char *_inds;
+ if ( p == pe )
+ goto _test_eof;
+_resume:
+ switch ( _sea_syllable_machine_from_state_actions[cs] ) {
+ case 5:
+#line 1 "NONE"
+ {ts = p;}
+ break;
+#line 148 "hb-ot-shape-complex-sea-machine.hh"
+ }
+
+ _keys = _sea_syllable_machine_trans_keys + (cs<<1);
+ _inds = _sea_syllable_machine_indicies + _sea_syllable_machine_index_offsets[cs];
+
+ _slen = _sea_syllable_machine_key_spans[cs];
+ _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].sea_category()) &&
+ ( info[p].sea_category()) <= _keys[1] ?
+ ( info[p].sea_category()) - _keys[0] : _slen ];
+
+_eof_trans:
+ cs = _sea_syllable_machine_trans_targs[_trans];
+
+ if ( _sea_syllable_machine_trans_actions[_trans] == 0 )
+ goto _again;
+
+ switch ( _sea_syllable_machine_trans_actions[_trans] ) {
+ case 2:
+#line 1 "NONE"
+ {te = p+1;}
+ break;
+ case 6:
+#line 63 "hb-ot-shape-complex-sea-machine.rl"
+ {te = p+1;{ found_syllable (non_sea_cluster); }}
+ break;
+ case 7:
+#line 61 "hb-ot-shape-complex-sea-machine.rl"
+ {te = p;p--;{ found_syllable (consonant_syllable); }}
+ break;
+ case 8:
+#line 62 "hb-ot-shape-complex-sea-machine.rl"
+ {te = p;p--;{ found_syllable (broken_cluster); }}
+ break;
+ case 9:
+#line 63 "hb-ot-shape-complex-sea-machine.rl"
+ {te = p;p--;{ found_syllable (non_sea_cluster); }}
+ break;
+ case 1:
+#line 61 "hb-ot-shape-complex-sea-machine.rl"
+ {{p = ((te))-1;}{ found_syllable (consonant_syllable); }}
+ break;
+ case 3:
+#line 62 "hb-ot-shape-complex-sea-machine.rl"
+ {{p = ((te))-1;}{ found_syllable (broken_cluster); }}
+ break;
+#line 194 "hb-ot-shape-complex-sea-machine.hh"
+ }
+
+_again:
+ switch ( _sea_syllable_machine_to_state_actions[cs] ) {
+ case 4:
+#line 1 "NONE"
+ {ts = 0;}
+ break;
+#line 203 "hb-ot-shape-complex-sea-machine.hh"
+ }
+
+ if ( ++p != pe )
+ goto _resume;
+ _test_eof: {}
+ if ( p == eof )
+ {
+ if ( _sea_syllable_machine_eof_trans[cs] > 0 ) {
+ _trans = _sea_syllable_machine_eof_trans[cs] - 1;
+ goto _eof_trans;
+ }
+ }
+
+ }
+
+#line 97 "hb-ot-shape-complex-sea-machine.rl"
+
+}
+
+#undef found_syllable
+
+#endif /* HB_OT_SHAPE_COMPLEX_SEA_MACHINE_HH */
diff --git a/src/hb-ot-shape-complex-sea-machine.rl b/src/hb-ot-shape-complex-sea-machine.rl
new file mode 100644
index 0000000..46140fc
--- /dev/null
+++ b/src/hb-ot-shape-complex-sea-machine.rl
@@ -0,0 +1,102 @@
+/*
+ * Copyright © 2011,2012,2013 Google, Inc.
+ *
+ * This is part of HarfBuzz, a text shaping library.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ *
+ * Google Author(s): Behdad Esfahbod
+ */
+
+#ifndef HB_OT_SHAPE_COMPLEX_SEA_MACHINE_HH
+#define HB_OT_SHAPE_COMPLEX_SEA_MACHINE_HH
+
+#include "hb-private.hh"
+
+%%{
+ machine sea_syllable_machine;
+ alphtype unsigned char;
+ write data;
+}%%
+
+%%{
+
+# Same order as enum sea_category_t. Not sure how to avoid duplication.
+C = 1;
+GB = 12; # Generic Base
+H = 4; # Halant
+IV = 2; # Independent Vowel
+MR = 22; # Medial Ra
+CM = 17; # Consonant Medial
+VAbv = 26;
+VBlw = 27;
+VPre = 28;
+VPst = 29;
+T = 3; # Tone Marks
+A = 10; # Anusvara
+
+syllable_tail = (VPre|VAbv|VBlw|VPst|H.C|CM|MR|T|A)*;
+
+consonant_syllable = (C|IV|GB) syllable_tail;
+broken_cluster = syllable_tail;
+other = any;
+
+main := |*
+ consonant_syllable => { found_syllable (consonant_syllable); };
+ broken_cluster => { found_syllable (broken_cluster); };
+ other => { found_syllable (non_sea_cluster); };
+*|;
+
+
+}%%
+
+#define found_syllable(syllable_type) \
+ HB_STMT_START { \
+ if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
+ for (unsigned int i = last; i < p+1; i++) \
+ info[i].syllable() = (syllable_serial << 4) | syllable_type; \
+ last = p+1; \
+ syllable_serial++; \
+ if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
+ } HB_STMT_END
+
+static void
+find_syllables (hb_buffer_t *buffer)
+{
+ unsigned int p, pe, eof, ts HB_UNUSED, te HB_UNUSED, act HB_UNUSED;
+ int cs;
+ hb_glyph_info_t *info = buffer->info;
+ %%{
+ write init;
+ getkey info[p].sea_category();
+ }%%
+
+ p = 0;
+ pe = eof = buffer->len;
+
+ unsigned int last = 0;
+ unsigned int syllable_serial = 1;
+ %%{
+ write exec;
+ }%%
+}
+
+#undef found_syllable
+
+#endif /* HB_OT_SHAPE_COMPLEX_SEA_MACHINE_HH */
diff --git a/src/hb-ot-shape-complex-sea.cc b/src/hb-ot-shape-complex-sea.cc
new file mode 100644
index 0000000..f08b7cc
--- /dev/null
+++ b/src/hb-ot-shape-complex-sea.cc
@@ -0,0 +1,380 @@
+/*
+ * Copyright © 2011,2012,2013 Google, Inc.
+ *
+ * This is part of HarfBuzz, a text shaping library.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ *
+ * Google Author(s): Behdad Esfahbod
+ */
+
+#include "hb-ot-shape-complex-indic-private.hh"
+
+/* buffer var allocations */
+#define sea_category() complex_var_u8_0() /* indic_category_t */
+#define sea_position() complex_var_u8_1() /* indic_position_t */
+
+
+/*
+ * South-East Asian shaper.
+ * Loosely based on the Myanmar spec / shaper.
+ * There is no OpenType spec for this.
+ */
+
+static const hb_tag_t
+basic_features[] =
+{
+ /*
+ * Basic features.
+ * These features are applied in order, one at a time, after initial_reordering.
+ */
+ HB_TAG('p','r','e','f'),
+ HB_TAG('a','b','v','f'),
+ HB_TAG('b','l','w','f'),
+ HB_TAG('p','s','t','f'),
+};
+static const hb_tag_t
+other_features[] =
+{
+ /*
+ * Other features.
+ * These features are applied all at once, after final_reordering.
+ */
+ HB_TAG('p','r','e','s'),
+ HB_TAG('a','b','v','s'),
+ HB_TAG('b','l','w','s'),
+ HB_TAG('p','s','t','s'),
+ /* Positioning features, though we don't care about the types. */
+ HB_TAG('d','i','s','t'),
+};
+
+static void
+setup_syllables (const hb_ot_shape_plan_t *plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer);
+static void
+initial_reordering (const hb_ot_shape_plan_t *plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer);
+static void
+final_reordering (const hb_ot_shape_plan_t *plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer);
+
+static void
+collect_features_sea (hb_ot_shape_planner_t *plan)
+{
+ hb_ot_map_builder_t *map = &plan->map;
+
+ /* Do this before any lookups have been applied. */
+ map->add_gsub_pause (setup_syllables);
+
+ map->add_global_bool_feature (HB_TAG('l','o','c','l'));
+ /* The Indic specs do not require ccmp, but we apply it here since if
+ * there is a use of it, it's typically at the beginning. */
+ map->add_global_bool_feature (HB_TAG('c','c','m','p'));
+
+ map->add_gsub_pause (initial_reordering);
+ for (unsigned int i = 0; i < ARRAY_LENGTH (basic_features); i++)
+ {
+ map->add_feature (basic_features[i], 1, F_GLOBAL | F_MANUAL_ZWJ);
+ map->add_gsub_pause (NULL);
+ }
+ map->add_gsub_pause (final_reordering);
+ for (unsigned int i = 0; i < ARRAY_LENGTH (other_features); i++)
+ map->add_feature (other_features[i], 1, F_GLOBAL | F_MANUAL_ZWJ);
+}
+
+static void
+override_features_sea (hb_ot_shape_planner_t *plan)
+{
+ plan->map.add_feature (HB_TAG('l','i','g','a'), 0, F_GLOBAL);
+}
+
+
+enum syllable_type_t {
+ consonant_syllable,
+ broken_cluster,
+ non_sea_cluster,
+};
+
+#include "hb-ot-shape-complex-sea-machine.hh"
+
+
+/* Note: This enum is duplicated in the -machine.rl source file.
+ * Not sure how to avoid duplication. */
+enum sea_category_t {
+// OT_C = 1,
+ OT_GB = 12, /* Generic Base XXX DOTTED CIRCLE only for now */
+// OT_H = 4, /* Halant */
+ OT_IV = 2, /* Independent Vowel */
+ OT_MR = 22, /* Medial Ra */
+// OT_CM = 17, /* Consonant Medial */
+ OT_VAbv = 26,
+ OT_VBlw = 27,
+ OT_VPre = 28,
+ OT_VPst = 29,
+ OT_T = 3, /* Tone Marks */
+// OT_A = 10, /* Anusvara */
+};
+
+static inline void
+set_sea_properties (hb_glyph_info_t &info)
+{
+ hb_codepoint_t u = info.codepoint;
+ unsigned int type = hb_indic_get_categories (u);
+ indic_category_t cat = (indic_category_t) (type & 0x7Fu);
+ indic_position_t pos = (indic_position_t) (type >> 8);
+
+ /* Medial Ra */
+ if (u == 0x1A55u || u == 0xAA34u)
+ cat = (indic_category_t) OT_MR;
+
+ if (cat == OT_M)
+ {
+ switch ((int) pos)
+ {
+ case POS_PRE_C: cat = (indic_category_t) OT_VPre; break;
+ case POS_ABOVE_C: cat = (indic_category_t) OT_VAbv; break;
+ case POS_BELOW_C: cat = (indic_category_t) OT_VBlw; break;
+ case POS_POST_C: cat = (indic_category_t) OT_VPst; break;
+ }
+ }
+
+ info.sea_category() = (sea_category_t) cat;
+ info.sea_position() = pos;
+}
+
+
+static void
+setup_masks_sea (const hb_ot_shape_plan_t *plan HB_UNUSED,
+ hb_buffer_t *buffer,
+ hb_font_t *font HB_UNUSED)
+{
+ HB_BUFFER_ALLOCATE_VAR (buffer, sea_category);
+ HB_BUFFER_ALLOCATE_VAR (buffer, sea_position);
+
+ /* We cannot setup masks here. We save information about characters
+ * and setup masks later on in a pause-callback. */
+
+ unsigned int count = buffer->len;
+ hb_glyph_info_t *info = buffer->info;
+ for (unsigned int i = 0; i < count; i++)
+ set_sea_properties (info[i]);
+}
+
+static void
+setup_syllables (const hb_ot_shape_plan_t *plan HB_UNUSED,
+ hb_font_t *font HB_UNUSED,
+ hb_buffer_t *buffer)
+{
+ find_syllables (buffer);
+}
+
+static int
+compare_sea_order (const hb_glyph_info_t *pa, const hb_glyph_info_t *pb)
+{
+ int a = pa->sea_position();
+ int b = pb->sea_position();
+
+ return a < b ? -1 : a == b ? 0 : +1;
+}
+
+
+static void
+initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
+ hb_face_t *face,
+ hb_buffer_t *buffer,
+ unsigned int start, unsigned int end)
+{
+ hb_glyph_info_t *info = buffer->info;
+ unsigned int base = start;
+
+ /* Reorder! */
+ unsigned int i = start;
+ for (; i < base; i++)
+ info[i].sea_position() = POS_PRE_C;
+ if (i < end)
+ {
+ info[i].sea_position() = POS_BASE_C;
+ i++;
+ }
+ for (; i < end; i++)
+ {
+ if (info[i].sea_category() == OT_MR) /* Pre-base reordering */
+ {
+ info[i].sea_position() = POS_PRE_C;
+ continue;
+ }
+ if (info[i].sea_category() == OT_VPre) /* Left matra */
+ {
+ info[i].sea_position() = POS_PRE_M;
+ continue;
+ }
+
+ info[i].sea_position() = POS_AFTER_MAIN;
+ }
+
+ buffer->merge_clusters (start, end);
+ /* Sit tight, rock 'n roll! */
+ hb_bubble_sort (info + start, end - start, compare_sea_order);
+}
+
+static void
+initial_reordering_broken_cluster (const hb_ot_shape_plan_t *plan,
+ hb_face_t *face,
+ hb_buffer_t *buffer,
+ unsigned int start, unsigned int end)
+{
+ /* We already inserted dotted-circles, so just call the consonant_syllable. */
+ initial_reordering_consonant_syllable (plan, face, buffer, start, end);
+}
+
+static void
+initial_reordering_non_sea_cluster (const hb_ot_shape_plan_t *plan HB_UNUSED,
+ hb_face_t *face HB_UNUSED,
+ hb_buffer_t *buffer HB_UNUSED,
+ unsigned int start HB_UNUSED, unsigned int end HB_UNUSED)
+{
+ /* Nothing to do right now. If we ever switch to using the output
+ * buffer in the reordering process, we'd need to next_glyph() here. */
+}
+
+
+static void
+initial_reordering_syllable (const hb_ot_shape_plan_t *plan,
+ hb_face_t *face,
+ hb_buffer_t *buffer,
+ unsigned int start, unsigned int end)
+{
+ syllable_type_t syllable_type = (syllable_type_t) (buffer->info[start].syllable() & 0x0F);
+ switch (syllable_type) {
+ case consonant_syllable: initial_reordering_consonant_syllable (plan, face, buffer, start, end); return;
+ case broken_cluster: initial_reordering_broken_cluster (plan, face, buffer, start, end); return;
+ case non_sea_cluster: initial_reordering_non_sea_cluster (plan, face, buffer, start, end); return;
+ }
+}
+
+static inline void
+insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
+ hb_font_t *font,
+ hb_buffer_t *buffer)
+{
+ /* Note: This loop is extra overhead, but should not be measurable. */
+ bool has_broken_syllables = false;
+ unsigned int count = buffer->len;
+ hb_glyph_info_t *info = buffer->info;
+ for (unsigned int i = 0; i < count; i++)
+ if ((info[i].syllable() & 0x0F) == broken_cluster)
+ {
+ has_broken_syllables = true;
+ break;
+ }
+ if (likely (!has_broken_syllables))
+ return;
+
+
+ hb_codepoint_t dottedcircle_glyph;
+ if (!font->get_glyph (0x25CCu, 0, &dottedcircle_glyph))
+ return;
+
+ hb_glyph_info_t dottedcircle = {0};
+ dottedcircle.codepoint = 0x25CCu;
+ set_sea_properties (dottedcircle);
+ dottedcircle.codepoint = dottedcircle_glyph;
+
+ buffer->clear_output ();
+
+ buffer->idx = 0;
+ unsigned int last_syllable = 0;
+ while (buffer->idx < buffer->len)
+ {
+ unsigned int syllable = buffer->cur().syllable();
+ syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F);
+ if (unlikely (last_syllable != syllable && syllable_type == broken_cluster))
+ {
+ last_syllable = syllable;
+
+ hb_glyph_info_t info = dottedcircle;
+ info.cluster = buffer->cur().cluster;
+ info.mask = buffer->cur().mask;
+ info.syllable() = buffer->cur().syllable();
+
+ buffer->output_info (info);
+ }
+ else
+ buffer->next_glyph ();
+ }
+
+ buffer->swap_buffers ();
+}
+
+static void
+initial_reordering (const hb_ot_shape_plan_t *plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer)
+{
+ insert_dotted_circles (plan, font, buffer);
+
+ hb_glyph_info_t *info = buffer->info;
+ unsigned int count = buffer->len;
+ if (unlikely (!count)) return;
+ unsigned int last = 0;
+ unsigned int last_syllable = info[0].syllable();
+ for (unsigned int i = 1; i < count; i++)
+ if (last_syllable != info[i].syllable()) {
+ initial_reordering_syllable (plan, font->face, buffer, last, i);
+ last = i;
+ last_syllable = info[last].syllable();
+ }
+ initial_reordering_syllable (plan, font->face, buffer, last, count);
+}
+
+static void
+final_reordering (const hb_ot_shape_plan_t *plan,
+ hb_font_t *font HB_UNUSED,
+ hb_buffer_t *buffer)
+{
+ hb_glyph_info_t *info = buffer->info;
+ unsigned int count = buffer->len;
+
+ /* Zero syllables now... */
+ for (unsigned int i = 0; i < count; i++)
+ info[i].syllable() = 0;
+
+ HB_BUFFER_DEALLOCATE_VAR (buffer, sea_category);
+ HB_BUFFER_DEALLOCATE_VAR (buffer, sea_position);
+}
+
+
+const hb_ot_complex_shaper_t _hb_ot_complex_shaper_sea =
+{
+ "sea",
+ collect_features_sea,
+ override_features_sea,
+ NULL, /* data_create */
+ NULL, /* data_destroy */
+ NULL, /* preprocess_text */
+ HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT,
+ NULL, /* decompose */
+ NULL, /* compose */
+ setup_masks_sea,
+ HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE,
+ false, /* fallback_position */
+};
diff --git a/src/hb-ot-shape-complex-thai.cc b/src/hb-ot-shape-complex-thai.cc
index 4322b0d..feb7fc7 100644
--- a/src/hb-ot-shape-complex-thai.cc
+++ b/src/hb-ot-shape-complex-thai.cc
@@ -139,6 +139,7 @@ thai_pua_shape (hb_codepoint_t u, thai_action_t action, hb_font_t *font)
};
switch (action) {
+ default: assert (false); /* Fallthrough */
case NOP: return u;
case SD: pua_mappings = SD_mappings; break;
case SDL: pua_mappings = SDL_mappings; break;
@@ -314,7 +315,7 @@ preprocess_text_thai (const hb_ot_shape_plan_t *plan,
buffer->clear_output ();
unsigned int count = buffer->len;
- for (buffer->idx = 0; buffer->idx < count && !buffer->in_error;)
+ for (buffer->idx = 0; buffer->idx < count;)
{
hb_codepoint_t u = buffer->cur().codepoint;
if (likely (!IS_SARA_AM (u))) {
@@ -329,7 +330,7 @@ preprocess_text_thai (const hb_ot_shape_plan_t *plan,
if (unlikely (buffer->in_error))
return;
- /* Make Nikhahit be recognized as a ccc=0 mark when zeroing widths. */
+ /* Make Nikhahit be recognized as a mark when zeroing widths. */
unsigned int end = buffer->out_len;
_hb_glyph_info_set_general_category (&buffer->out_info[end - 2], HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK);
@@ -352,7 +353,7 @@ preprocess_text_thai (const hb_ot_shape_plan_t *plan,
{
/* Since we decomposed, and NIKHAHIT is combining, merge clusters with the
* previous cluster. */
- if (start && buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES)
+ if (start)
buffer->merge_out_clusters (start - 1, end);
}
}
@@ -371,11 +372,10 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_thai =
NULL, /* data_create */
NULL, /* data_destroy */
preprocess_text_thai,
- NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT,
NULL, /* decompose */
NULL, /* compose */
NULL, /* setup_masks */
- HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE,
+ HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT,
false,/* fallback_position */
};
diff --git a/src/hb-ot-shape-complex-tibetan.cc b/src/hb-ot-shape-complex-tibetan.cc
index a77b531..01465a4 100644
--- a/src/hb-ot-shape-complex-tibetan.cc
+++ b/src/hb-ot-shape-complex-tibetan.cc
@@ -52,11 +52,10 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_tibetan =
NULL, /* data_create */
NULL, /* data_destroy */
NULL, /* preprocess_text */
- NULL, /* postprocess_glyphs */
HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT,
NULL, /* decompose */
NULL, /* compose */
NULL, /* setup_masks */
- HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE,
+ HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT,
true, /* fallback_position */
};
diff --git a/src/hb-ot-shape-complex-use-machine.hh b/src/hb-ot-shape-complex-use-machine.hh
deleted file mode 100644
index ced9d97..0000000
--- a/src/hb-ot-shape-complex-use-machine.hh
+++ /dev/null
@@ -1,548 +0,0 @@
-
-#line 1 "hb-ot-shape-complex-use-machine.rl"
-/*
- * Copyright © 2015 Mozilla Foundation.
- * Copyright © 2015 Google, Inc.
- *
- * This is part of HarfBuzz, a text shaping library.
- *
- * Permission is hereby granted, without written agreement and without
- * license or royalty fees, to use, copy, modify, and distribute this
- * software and its documentation for any purpose, provided that the
- * above copyright notice and the following two paragraphs appear in
- * all copies of this software.
- *
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
- * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
- * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
- * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- *
- * Mozilla Author(s): Jonathan Kew
- * Google Author(s): Behdad Esfahbod
- */
-
-#ifndef HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
-#define HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
-
-#include "hb-private.hh"
-
-
-#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,
- 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,
- 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,
- 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,
- 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
-};
-
-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
-};
-
-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
-};
-
-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,
- 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
-};
-
-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, 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, 0, 0, 0, 0, 0,
- 0
-};
-
-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, 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, 0, 0, 0, 0, 0,
- 0
-};
-
-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
-};
-
-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_en_main = 3;
-
-
-#line 38 "hb-ot-shape-complex-use-machine.rl"
-
-
-
-#line 145 "hb-ot-shape-complex-use-machine.rl"
-
-
-#define found_syllable(syllable_type) \
- HB_STMT_START { \
- if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
- for (unsigned int i = last; i < p+1; i++) \
- info[i].syllable() = (syllable_serial << 4) | syllable_type; \
- last = p+1; \
- syllable_serial++; \
- if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
- } HB_STMT_END
-
-static void
-find_syllables (hb_buffer_t *buffer)
-{
- unsigned int p, pe, eof, ts HB_UNUSED, te HB_UNUSED, act HB_UNUSED;
- int cs;
- hb_glyph_info_t *info = buffer->info;
-
-#line 388 "hb-ot-shape-complex-use-machine.hh"
- {
- cs = use_syllable_machine_start;
- ts = 0;
- te = 0;
- act = 0;
- }
-
-#line 166 "hb-ot-shape-complex-use-machine.rl"
-
-
- p = 0;
- pe = eof = buffer->len;
-
- unsigned int last = 0;
- unsigned int syllable_serial = 1;
-
-#line 405 "hb-ot-shape-complex-use-machine.hh"
- {
- int _slen;
- int _trans;
- const unsigned char *_keys;
- 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:
-#line 1 "NONE"
- {ts = p;}
- break;
-#line 421 "hb-ot-shape-complex-use-machine.hh"
- }
-
- _keys = _use_syllable_machine_trans_keys + (cs<<1);
- _inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs];
-
- _slen = _use_syllable_machine_key_spans[cs];
- _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].use_category()) &&
- ( info[p].use_category()) <= _keys[1] ?
- ( info[p].use_category()) - _keys[0] : _slen ];
-
-_eof_trans:
- cs = _use_syllable_machine_trans_targs[_trans];
-
- if ( _use_syllable_machine_trans_actions[_trans] == 0 )
- goto _again;
-
- switch ( _use_syllable_machine_trans_actions[_trans] ) {
- case 2:
-#line 1 "NONE"
- {te = p+1;}
- break;
- case 9:
-#line 134 "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); }}
- break;
- case 7:
-#line 141 "hb-ot-shape-complex-use-machine.rl"
- {te = p+1;{ found_syllable (broken_cluster); }}
- break;
- case 8:
-#line 134 "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"
- {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); }}
- break;
- case 13:
-#line 137 "hb-ot-shape-complex-use-machine.rl"
- {te = p;p--;{ found_syllable (vowel_cluster); }}
- break;
- case 15:
-#line 139 "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"
- {te = p;p--;{ found_syllable (symbol_cluster); }}
- break;
- case 17:
-#line 141 "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;
- }
- }
- break;
- case 4:
-#line 1 "NONE"
- {te = p+1;}
-#line 141 "hb-ot-shape-complex-use-machine.rl"
- {act = 8;}
- break;
-#line 513 "hb-ot-shape-complex-use-machine.hh"
- }
-
-_again:
- switch ( _use_syllable_machine_to_state_actions[cs] ) {
- case 5:
-#line 1 "NONE"
- {ts = 0;}
-#line 1 "NONE"
- {act = 0;}
- break;
-#line 524 "hb-ot-shape-complex-use-machine.hh"
- }
-
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
- _trans = _use_syllable_machine_eof_trans[cs] - 1;
- goto _eof_trans;
- }
- }
-
- _out: {}
- }
-
-#line 175 "hb-ot-shape-complex-use-machine.rl"
-
-}
-
-#undef found_syllable
-
-#endif /* HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH */
diff --git a/src/hb-ot-shape-complex-use-machine.rl b/src/hb-ot-shape-complex-use-machine.rl
deleted file mode 100644
index b8242ba..0000000
--- a/src/hb-ot-shape-complex-use-machine.rl
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright © 2015 Mozilla Foundation.
- * Copyright © 2015 Google, Inc.
- *
- * This is part of HarfBuzz, a text shaping library.
- *
- * Permission is hereby granted, without written agreement and without
- * license or royalty fees, to use, copy, modify, and distribute this
- * software and its documentation for any purpose, provided that the
- * above copyright notice and the following two paragraphs appear in
- * all copies of this software.
- *
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
- * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
- * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
- * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- *
- * Mozilla Author(s): Jonathan Kew
- * Google Author(s): Behdad Esfahbod
- */
-
-#ifndef HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
-#define HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
-
-#include "hb-private.hh"
-
-%%{
- machine use_syllable_machine;
- alphtype unsigned char;
- write data;
-}%%
-
-%%{
-
-# Same order as enum use_category_t. Not sure how to avoid duplication.
-
-O = 0; # OTHER
-
-B = 1; # BASE
-IV = 2; # BASE_VOWEL
-IND = 3; # BASE_IND
-N = 4; # BASE_NUM
-GB = 5; # BASE_OTHER
-CGJ = 6; # CGJ
-#F = 7; # CONS_FINAL
-FM = 8; # CONS_FINAL_MOD
-#M = 9; # CONS_MED
-#CM = 10; # CONS_MOD
-SUB = 11; # CONS_SUB
-H = 12; # HALANT
-
-HN = 13; # HALANT_NUM
-ZWNJ = 14; # Zero width non-joiner
-ZWJ = 15; # Zero width joiner
-WJ = 16; # Word joiner
-Rsv = 17; # Reserved characters
-R = 18; # REPHA
-S = 19; # SYM
-#SM = 20; # SYM_MOD
-VS = 21; # VARIATION_SELECTOR
-#V = 36; # VOWEL
-#VM = 40; # VOWEL_MOD
-
-FAbv = 24; # CONS_FINAL_ABOVE
-FBlw = 25; # CONS_FINAL_BELOW
-FPst = 26; # CONS_FINAL_POST
-MAbv = 27; # CONS_MED_ABOVE
-MBlw = 28; # CONS_MED_BELOW
-MPst = 29; # CONS_MED_POST
-MPre = 30; # CONS_MED_PRE
-CMAbv = 31; # CONS_MOD_ABOVE
-CMBlw = 32; # CONS_MOD_BELOW
-VAbv = 33; # VOWEL_ABOVE / VOWEL_ABOVE_BELOW / VOWEL_ABOVE_BELOW_POST / VOWEL_ABOVE_POST
-VBlw = 34; # VOWEL_BELOW / VOWEL_BELOW_POST
-VPst = 35; # VOWEL_POST UIPC = Right
-VPre = 22; # VOWEL_PRE / VOWEL_PRE_ABOVE / VOWEL_PRE_ABOVE_POST / VOWEL_PRE_POST
-VMAbv = 37; # VOWEL_MOD_ABOVE
-VMBlw = 38; # VOWEL_MOD_BELOW
-VMPst = 39; # VOWEL_MOD_POST
-VMPre = 23; # VOWEL_MOD_PRE
-SMAbv = 41; # SYM_MOD_ABOVE
-SMBlw = 42; # SYM_MOD_BELOW
-
-
-consonant_modifiers = CMAbv* CMBlw* ((H B | SUB) VS? CMAbv? CMBlw*)*;
-medial_consonants = MPre? MAbv? MBlw? MPst?;
-dependent_vowels = VPre* VAbv* VBlw* VPst*;
-vowel_modifiers = VMPre* VMAbv* VMBlw* VMPst*;
-final_consonants = FAbv* FBlw* FPst* FM?;
-
-virama_terminated_cluster =
- R? (B | GB | IV) VS?
- consonant_modifiers
- H
-;
-consonant_cluster =
- R? (B | GB) VS?
- consonant_modifiers
- medial_consonants
- dependent_vowels
- vowel_modifiers
- final_consonants
-;
-vowel_cluster =
- R? (IV) VS?
- consonant_modifiers
- medial_consonants
- vowel_modifiers
- final_consonants
-;
-
-broken_cluster =
- R?
- consonant_modifiers
- medial_consonants
- dependent_vowels
- vowel_modifiers
- final_consonants
-;
-
-number_joiner_terminated_cluster = N VS? (HN N VS?)* H;
-numeral_cluster = N VS? (HN N VS?)*;
-symbol_cluster = S VS? SMAbv* SMBlw*;
-independent_cluster = (IND | O | Rsv | WJ) VS?;
-
-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); };
- 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); };
-*|;
-
-
-}%%
-
-#define found_syllable(syllable_type) \
- HB_STMT_START { \
- if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
- for (unsigned int i = last; i < p+1; i++) \
- info[i].syllable() = (syllable_serial << 4) | syllable_type; \
- last = p+1; \
- syllable_serial++; \
- if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
- } HB_STMT_END
-
-static void
-find_syllables (hb_buffer_t *buffer)
-{
- unsigned int p, pe, eof, ts HB_UNUSED, te HB_UNUSED, act HB_UNUSED;
- int cs;
- hb_glyph_info_t *info = buffer->info;
- %%{
- write init;
- getkey info[p].use_category();
- }%%
-
- p = 0;
- pe = eof = buffer->len;
-
- unsigned int last = 0;
- unsigned int syllable_serial = 1;
- %%{
- write exec;
- }%%
-}
-
-#undef found_syllable
-
-#endif /* HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH */
diff --git a/src/hb-ot-shape-complex-use-private.hh b/src/hb-ot-shape-complex-use-private.hh
deleted file mode 100644
index a143736..0000000
--- a/src/hb-ot-shape-complex-use-private.hh
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright © 2015 Mozilla Foundation.
- * Copyright © 2015 Google, Inc.
- *
- * This is part of HarfBuzz, a text shaping library.
- *
- * Permission is hereby granted, without written agreement and without
- * license or royalty fees, to use, copy, modify, and distribute this
- * software and its documentation for any purpose, provided that the
- * above copyright notice and the following two paragraphs appear in
- * all copies of this software.
- *
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
- * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
- * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
- * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- *
- * Mozilla Author(s): Jonathan Kew
- * Google Author(s): Behdad Esfahbod
- */
-
-#ifndef HB_OT_SHAPE_COMPLEX_USE_PRIVATE_HH
-#define HB_OT_SHAPE_COMPLEX_USE_PRIVATE_HH
-
-#include "hb-private.hh"
-
-
-#include "hb-ot-shape-complex-private.hh"
-
-
-#define USE_TABLE_ELEMENT_TYPE uint8_t
-
-/* Cateories used in the Universal Shaping Engine spec:
- * https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm
- */
-/* Note: This enum is duplicated in the -machine.rl source file.
- * Not sure how to avoid duplication. */
-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 */
- USE_CGJ = 6, /* CGJ */
-// USE_F = 7, /* CONS_FINAL */
- USE_FM = 8, /* CONS_FINAL_MOD */
-// USE_M = 9, /* CONS_MED */
-// USE_CM = 10, /* CONS_MOD */
- USE_SUB = 11, /* CONS_SUB */
- USE_H = 12, /* HALANT */
-
- USE_HN = 13, /* HALANT_NUM */
- USE_ZWNJ = 14, /* Zero width non-joiner */
- USE_ZWJ = 15, /* Zero width joiner */
- USE_WJ = 16, /* Word joiner */
- USE_Rsv = 17, /* Reserved characters */
- USE_R = 18, /* REPHA */
- USE_S = 19, /* SYM */
-// USE_SM = 20, /* SYM_MOD */
- USE_VS = 21, /* VARIATION_SELECTOR */
-// USE_V = 36, /* VOWEL */
-// USE_VM = 40, /* VOWEL_MOD */
-
- USE_FAbv = 24, /* CONS_FINAL_ABOVE */
- USE_FBlw = 25, /* CONS_FINAL_BELOW */
- USE_FPst = 26, /* CONS_FINAL_POST */
- USE_MAbv = 27, /* CONS_MED_ABOVE */
- USE_MBlw = 28, /* CONS_MED_BELOW */
- USE_MPst = 29, /* CONS_MED_POST */
- USE_MPre = 30, /* CONS_MED_PRE */
- USE_CMAbv = 31, /* CONS_MOD_ABOVE */
- USE_CMBlw = 32, /* CONS_MOD_BELOW */
- USE_VAbv = 33, /* VOWEL_ABOVE / VOWEL_ABOVE_BELOW / VOWEL_ABOVE_BELOW_POST / VOWEL_ABOVE_POST */
- USE_VBlw = 34, /* VOWEL_BELOW / VOWEL_BELOW_POST */
- USE_VPst = 35, /* VOWEL_POST UIPC = Right */
- USE_VPre = 22, /* VOWEL_PRE / VOWEL_PRE_ABOVE / VOWEL_PRE_ABOVE_POST / VOWEL_PRE_POST */
- USE_VMAbv = 37, /* VOWEL_MOD_ABOVE */
- USE_VMBlw = 38, /* VOWEL_MOD_BELOW */
- USE_VMPst = 39, /* VOWEL_MOD_POST */
- USE_VMPre = 23, /* VOWEL_MOD_PRE */
- USE_SMAbv = 41, /* SYM_MOD_ABOVE */
- USE_SMBlw = 42 /* SYM_MOD_BELOW */
-};
-
-HB_INTERNAL USE_TABLE_ELEMENT_TYPE
-hb_use_get_categories (hb_codepoint_t u);
-
-#endif /* HB_OT_SHAPE_COMPLEX_USE_PRIVATE_HH */
diff --git a/src/hb-ot-shape-complex-use-table.cc b/src/hb-ot-shape-complex-use-table.cc
deleted file mode 100644
index 6cd1c5d..0000000
--- a/src/hb-ot-shape-complex-use-table.cc
+++ /dev/null
@@ -1,696 +0,0 @@
-/* == Start of generated table == */
-/*
- * The following table is generated by running:
- *
- * ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.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]
- * UnicodeData.txt does not have a header.
- */
-
-#include "hb-ot-shape-complex-use-private.hh"
-
-#define B USE_B /* BASE */
-#define CGJ USE_CGJ /* CGJ */
-#define FM USE_FM /* CONS_FINAL_MOD */
-#define GB USE_GB /* BASE_OTHER */
-#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 */
-#define Rsv USE_Rsv /* Reserved */
-#define S USE_S /* SYM */
-#define SUB USE_SUB /* CONS_SUB */
-#define VS USE_VS /* VARIATION_SELECTOR */
-#define WJ USE_WJ /* Word_Joiner */
-#define ZWJ USE_ZWJ /* ZWJ */
-#define ZWNJ USE_ZWNJ /* ZWNJ */
-#define CMBlw USE_CMBlw
-#define CMAbv USE_CMAbv
-#define FBlw USE_FBlw
-#define FPst USE_FPst
-#define FAbv USE_FAbv
-#define MPre USE_MPre
-#define MBlw USE_MBlw
-#define MPst USE_MPst
-#define MAbv USE_MAbv
-#define SMBlw USE_SMBlw
-#define SMAbv USE_SMAbv
-#define VPre USE_VPre
-#define VBlw USE_VBlw
-#define VPst USE_VPst
-#define VAbv USE_VAbv
-#define VMPre USE_VMPre
-#define VMBlw USE_VMBlw
-#define VMPst USE_VMPst
-#define VMAbv USE_VMAbv
-
-static const USE_TABLE_ELEMENT_TYPE use_table[] = {
-
-
-#define use_offset_0x0028u 0
-
-
- /* Basic Latin */
- O, O, O, O, O, GB, O, O,
- /* 0030 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
-
-#define use_offset_0x00a0u 24
-
-
- /* Latin-1 Supplement */
-
- /* 00A0 */ GB, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
- /* 00B0 */ O, O, FM, FM, O, O, O, O, O, O, O, O, O, O, O, O,
- /* 00C0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
- /* 00D0 */ O, O, O, O, O, O, O, GB,
-
-#define use_offset_0x0900u 80
-
-
- /* 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,
- /* 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,
-
- /* 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,
- /* 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,
- /* 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,
- /* 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,
- /* 0A50 */ O, O, O, O, O, O, O, O, O, B, B, B, B, O, B, O,
- /* 0A60 */ O, O, O, O, O, O, B, B, B, B, B, B, B, B, B, B,
- /* 0A70 */ VMAbv, CMAbv, GB, GB, O, MBlw, O, O, O, O, O, O, O, O, O, O,
-
- /* 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,
- /* 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,
- /* 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,
- /* 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,
- /* 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,
- /* 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,
- /* 0BD0 */ O, O, O, O, O, O, O, VPst, O, O, O, O, O, O, O, O,
- /* 0BE0 */ O, O, O, O, O, O, B, B, B, B, B, B, B, B, B, B,
- /* 0BF0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
-
- /* 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,
- /* 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,
- /* 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,
- /* 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,
- /* 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,
- /* 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,
- /* 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,
- /* 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,
- /* 0DD0 */ VPst, VPst, VAbv, VAbv, VBlw, O, VBlw, O, VPst, VPre, VPre, VPre, VPre, VPre, VPre, VPst,
- /* 0DE0 */ O, O, O, O, O, O, B, B, B, B, B, B, B, B, B, B,
- /* 0DF0 */ O, O, VPst, VPst, O, O, O, O,
-
-#define use_offset_0x1000u 1352
-
-
- /* Myanmar */
-
- /* 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,
- /* 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,
- /* 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,
- /* 1090 */ B, B, B, B, B, B, B, B, B, B, VMPst, VMPst, VPst, VAbv, O, O,
-
-#define use_offset_0x1700u 1512
-
-
- /* Tagalog */
-
- /* 1700 */ IV, IV, IV, 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,
- /* 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,
- /* 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,
- /* 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,
- /* 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,
-
-#define use_offset_0x1900u 1752
-
-
- /* Limbu */
-
- /* 1900 */ GB, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 1910 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, O,
- /* 1920 */ VAbv, VAbv, VBlw, VPst, VPst, VAbv, VAbv, VAbv, VAbv, SUB, SUB, SUB, O, O, O, O,
- /* 1930 */ FPst, FPst, VMBlw, FPst, FPst, FPst, FPst, FPst, FPst, FBlw, VAbv, FM, O, O, O, O,
- /* 1940 */ O, O, O, O, O, O, B, B, B, B, B, B, B, B, B, B,
-
- /* Tai Le */
-
- /* 1950 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 1960 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, O, O,
- /* 1970 */ B, B, B, B, B, O, O, O, O, O, O, O, O, O, O, O,
-
- /* New Tai Lue */
-
- /* 1980 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 1990 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 19A0 */ B, B, B, B, B, B, B, B, B, B, B, B, O, O, O, O,
- /* 19B0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 19C0 */ B, B, B, B, B, B, B, B, VMPst, VMPst, O, O, O, O, O, O,
- /* 19D0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
- /* 19E0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
- /* 19F0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
-
- /* Buginese */
-
- /* 1A00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 1A10 */ B, B, B, B, B, B, B, VAbv, VBlw, VPre, VPst, VAbv, O, O, O, O,
-
- /* Tai Tham */
-
- /* 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,
- /* 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,
- /* 1A90 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
-
-#define use_offset_0x1b00u 2168
-
-
- /* 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,
- /* 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,
- /* 1B50 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
- /* 1B60 */ O, O, O, O, O, O, O, O, O, O, O, SMAbv, SMBlw, SMAbv, SMAbv, SMAbv,
- /* 1B70 */ SMAbv, SMAbv, SMAbv, SMAbv, O, O, O, O, O, O, O, O, O, O, O, O,
-
- /* Sundanese */
-
- /* 1B80 */ VMAbv, FAbv, VMPst, IV, IV, IV, IV, IV, IV, IV, 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,
-
- /* Batak */
-
- /* 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,
- /* 1BF0 */ FAbv, FAbv, VPst, VPst, O, O, O, O, O, O, O, O, O, O, O, O,
-
- /* Lepcha */
-
- /* 1C00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 1C10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 1C20 */ B, B, B, B, SUB, SUB, VPst, VPre, VPre, VPre, VPst, VPst, VBlw, FAbv, FAbv, FAbv,
- /* 1C30 */ FAbv, FAbv, FAbv, FAbv, VMPre, VMPre, FM, CMBlw, O, O, O, O, O, O, O, O,
- /* 1C40 */ B, B, B, B, B, B, B, B, B, B, O, O, O, B, B, B,
-
-#define use_offset_0x1cd0u 2504
-
-
- /* Vedic Extensions */
-
- /* 1CD0 */ VMAbv, VMAbv, VMAbv, O, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMAbv, VMAbv, VMBlw, VMBlw, VMBlw, VMBlw,
- /* 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
-
-
- /* General Punctuation */
- O, O, O, O, ZWNJ, ZWJ, O, O,
- /* 2010 */ GB, GB, GB, GB, GB, O, O, O,
-
-#define use_offset_0x2060u 2568
-
- /* 2060 */ WJ, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
-
- /* Superscripts and Subscripts */
-
- /* 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
-
-
- /* Syloti Nagri */
-
- /* A800 */ IV, IV, O, IV, IV, IV, 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,
-
- /* Phags-pa */
-
- /* A840 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* A850 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* A860 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* A870 */ B, B, B, B, O, O, O, O, O, O, O, O, O, O, O, O,
-
- /* 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,
- /* 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,
- /* A8D0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
-
- /* Devanagari Extended */
-
- /* A8E0 */ VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv,
- /* A8F0 */ VMAbv, VMAbv, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
-
- /* Kayah Li */
-
- /* A900 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* A910 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* A920 */ B, B, B, B, B, B, VAbv, VAbv, VAbv, VAbv, VAbv, VMBlw, VMBlw, VMBlw, O, O,
-
- /* Rejang */
-
- /* A930 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* A940 */ B, B, B, B, B, B, B, VBlw, VBlw, VBlw, VAbv, VBlw, VBlw, VBlw, VBlw, FAbv,
- /* A950 */ FAbv, FAbv, FPst, VPst, O, O, O, O, O, O, O, O, O, O, O, O,
- /* A960 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
- /* A970 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
-
- /* Javanese */
-
- /* A980 */ VMAbv, VMAbv, FAbv, VMPst, IV, IV, IV, IV, IV, B, B, B, IV, IV, IV, 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,
- /* A9C0 */ H, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
- /* A9D0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
-
- /* Myanmar Extended-B */
-
- /* A9E0 */ B, B, B, B, B, VAbv, O, B, B, B, B, B, B, B, B, B,
- /* A9F0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, O,
-
- /* Cham */
-
- /* AA00 */ IV, IV, IV, IV, IV, IV, 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,
- /* AA40 */ B, B, B, FAbv, B, B, B, B, B, B, B, B, FAbv, FPst, O, O,
- /* AA50 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
-
- /* 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,
-
- /* Tai Viet */
-
- /* AA80 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* AA90 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* AAA0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* AAB0 */ VAbv, B, VAbv, VAbv, VBlw, B, B, VAbv, VAbv, B, B, B, B, B, VAbv, VMAbv,
- /* AAC0 */ B, VMAbv, B, O, O, O, O, O, O, O, O, O, O, O, O, O,
- /* AAD0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
-
- /* Meetei Mayek Extensions */
-
- /* AAE0 */ IV, IV, 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
-
-
- /* 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,
- /* 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
-
-
- /* Variation Selectors */
-
- /* FE00 */ VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS,
-
-#define use_offset_0x10a00u 3448
-
-
- /* Kharoshthi */
-
- /* 10A00 */ B, VBlw, VBlw, VBlw, O, VAbv, VBlw, O, O, O, O, O, VBlw, VBlw, VMBlw, VMAbv,
- /* 10A10 */ B, B, B, B, O, B, B, B, O, B, B, B, B, B, B, B,
- /* 10A20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 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
-
-
- /* 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,
- /* 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,
- /* 11050 */ O, O, N, N, N, N, N, N, N, N, N, N, N, N, N, N,
- /* 11060 */ N, N, N, N, N, N, B, B, B, B, B, B, B, B, B, B,
- /* 11070 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
-
- /* Kaithi */
-
- /* 11080 */ VMAbv, VMAbv, VMPst, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, 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
-
-
- /* Chakma */
-
- /* 11100 */ VMAbv, VMAbv, VMAbv, IV, IV, IV, IV, 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,
- /* 11140 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
-
- /* Mahajani */
-
- /* 11150 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 11160 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 11170 */ B, B, B, CMBlw, O, O, O, O, O, O, O, O, O, O, O, O,
-
- /* 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,
- /* 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,
- /* 111D0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
-
- /* Sinhala Archaic Numbers */
-
- /* 111E0 */ O, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 111F0 */ B, B, B, B, B, O, O, O, O, O, O, O, O, O, O, O,
-
- /* Khojki */
-
- /* 11200 */ IV, IV, IV, IV, IV, IV, IV, IV, 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,
-
-#define use_offset_0x11280u 4024
-
-
- /* Multani */
-
- /* 11280 */ IV, IV, IV, IV, 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,
- /* 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,
- /* 112F0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
-
- /* 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,
- /* 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,
- /* 11370 */ VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, O, O, O,
-
-#define use_offset_0x11480u 4272
-
-
- /* Tirhuta */
-
- /* 11480 */ O, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, 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
-
-
- /* Siddham */
-
- /* 11580 */ IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, 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,
- /* 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,
- /* 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,
- /* 11640 */ VAbv, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
- /* 11650 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
- /* 11660 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
- /* 11670 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
-
- /* Takri */
-
- /* 11680 */ IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, 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,
- /* 116C0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
- /* 116D0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
- /* 116E0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
- /* 116F0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
-
- /* Ahom */
-
- /* 11700 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 11710 */ B, B, B, B, B, B, B, B, B, B, O, O, O, MBlw, MPre, MAbv,
- /* 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% */
-
-USE_TABLE_ELEMENT_TYPE
-hb_use_get_categories (hb_codepoint_t u)
-{
- switch (u >> 12)
- {
- case 0x0u:
- if (hb_in_range (u, 0x0028u, 0x003Fu)) return use_table[u - 0x0028u + use_offset_0x0028u];
- if (hb_in_range (u, 0x00A0u, 0x00D7u)) return use_table[u - 0x00A0u + use_offset_0x00a0u];
- if (hb_in_range (u, 0x0900u, 0x0DF7u)) return use_table[u - 0x0900u + use_offset_0x0900u];
- if (unlikely (u == 0x034Fu)) return CGJ;
- break;
-
- case 0x1u:
- if (hb_in_range (u, 0x1000u, 0x109Fu)) return use_table[u - 0x1000u + use_offset_0x1000u];
- if (hb_in_range (u, 0x1700u, 0x17EFu)) return use_table[u - 0x1700u + use_offset_0x1700u];
- 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];
- break;
-
- case 0x2u:
- if (hb_in_range (u, 0x2008u, 0x2017u)) return use_table[u - 0x2008u + use_offset_0x2008u];
- if (hb_in_range (u, 0x2060u, 0x2087u)) return use_table[u - 0x2060u + use_offset_0x2060u];
- if (unlikely (u == 0x25CCu)) return GB;
- break;
-
- case 0xAu:
- if (hb_in_range (u, 0xA800u, 0xAAF7u)) return use_table[u - 0xA800u + use_offset_0xa800u];
- if (hb_in_range (u, 0xABC0u, 0xABFFu)) return use_table[u - 0xABC0u + use_offset_0xabc0u];
- break;
-
- case 0xFu:
- if (hb_in_range (u, 0xFE00u, 0xFE0Fu)) return use_table[u - 0xFE00u + use_offset_0xfe00u];
- break;
-
- case 0x10u:
- if (hb_in_range (u, 0x10A00u, 0x10A47u)) return use_table[u - 0x10A00u + use_offset_0x10a00u];
- break;
-
- 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, 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, 0x11580u, 0x1173Fu)) return use_table[u - 0x11580u + use_offset_0x11580u];
- if (unlikely (u == 0x1107Fu)) return HN;
- break;
-
- default:
- break;
- }
- return USE_O;
-}
-
-#undef B
-#undef CGJ
-#undef FM
-#undef GB
-#undef H
-#undef HN
-#undef IND
-#undef IV
-#undef N
-#undef O
-#undef R
-#undef Rsv
-#undef S
-#undef SUB
-#undef VS
-#undef WJ
-#undef ZWJ
-#undef ZWNJ
-#undef CMBlw
-#undef CMAbv
-#undef FBlw
-#undef FPst
-#undef FAbv
-#undef MPre
-#undef MBlw
-#undef MPst
-#undef MAbv
-#undef SMBlw
-#undef SMAbv
-#undef VPre
-#undef VBlw
-#undef VPst
-#undef VAbv
-#undef VMPre
-#undef VMBlw
-#undef VMPst
-#undef VMAbv
-
-/* == End of generated table == */
diff --git a/src/hb-ot-shape-complex-use.cc b/src/hb-ot-shape-complex-use.cc
deleted file mode 100644
index d2b6e63..0000000
--- a/src/hb-ot-shape-complex-use.cc
+++ /dev/null
@@ -1,588 +0,0 @@
-/*
- * Copyright © 2015 Mozilla Foundation.
- * Copyright © 2015 Google, Inc.
- *
- * This is part of HarfBuzz, a text shaping library.
- *
- * Permission is hereby granted, without written agreement and without
- * license or royalty fees, to use, copy, modify, and distribute this
- * software and its documentation for any purpose, provided that the
- * above copyright notice and the following two paragraphs appear in
- * all copies of this software.
- *
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
- * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
- * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
- * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- *
- * Mozilla Author(s): Jonathan Kew
- * Google Author(s): Behdad Esfahbod
- */
-
-#include "hb-ot-shape-complex-use-private.hh"
-#include "hb-ot-shape-complex-arabic-private.hh"
-
-/* buffer var allocations */
-#define use_category() complex_var_u8_0()
-
-
-/*
- * Universal Shaping Engine.
- * https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm
- */
-
-static const hb_tag_t
-basic_features[] =
-{
- /*
- * Basic features.
- * These features are applied all at once, before reordering.
- */
- HB_TAG('r','k','r','f'),
- HB_TAG('a','b','v','f'),
- HB_TAG('b','l','w','f'),
- HB_TAG('h','a','l','f'),
- HB_TAG('p','s','t','f'),
- HB_TAG('v','a','t','u'),
- HB_TAG('c','j','c','t'),
-};
-static const hb_tag_t
-arabic_features[] =
-{
- HB_TAG('i','s','o','l'),
- HB_TAG('i','n','i','t'),
- HB_TAG('m','e','d','i'),
- HB_TAG('f','i','n','a'),
- /* The spec doesn't specify these but we apply anyway, since our Arabic shaper
- * does. These are only used in Syriac spec. */
- HB_TAG('m','e','d','2'),
- HB_TAG('f','i','n','2'),
- HB_TAG('f','i','n','3'),
-};
-/* Same order as arabic_features. Don't need Syriac stuff.*/
-enum joining_form_t {
- ISOL,
- INIT,
- MEDI,
- FINA,
- _NONE
-};
-static const hb_tag_t
-other_features[] =
-{
- /*
- * Other features.
- * These features are applied all at once, after reordering.
- */
- HB_TAG('a','b','v','s'),
- HB_TAG('b','l','w','s'),
- HB_TAG('h','a','l','n'),
- HB_TAG('p','r','e','s'),
- HB_TAG('p','s','t','s'),
- /* Positioning features, though we don't care about the types. */
- HB_TAG('d','i','s','t'),
- HB_TAG('a','b','v','m'),
- HB_TAG('b','l','w','m'),
-};
-
-static void
-setup_syllables (const hb_ot_shape_plan_t *plan,
- hb_font_t *font,
- hb_buffer_t *buffer);
-static void
-clear_substitution_flags (const hb_ot_shape_plan_t *plan,
- hb_font_t *font,
- hb_buffer_t *buffer);
-static void
-record_rphf (const hb_ot_shape_plan_t *plan,
- hb_font_t *font,
- hb_buffer_t *buffer);
-static void
-record_pref (const hb_ot_shape_plan_t *plan,
- hb_font_t *font,
- hb_buffer_t *buffer);
-static void
-reorder (const hb_ot_shape_plan_t *plan,
- hb_font_t *font,
- hb_buffer_t *buffer);
-
-static void
-collect_features_use (hb_ot_shape_planner_t *plan)
-{
- hb_ot_map_builder_t *map = &plan->map;
-
- /* Do this before any lookups have been applied. */
- map->add_gsub_pause (setup_syllables);
-
- /* "Default glyph pre-processing group" */
- map->add_global_bool_feature (HB_TAG('l','o','c','l'));
- map->add_global_bool_feature (HB_TAG('c','c','m','p'));
- map->add_global_bool_feature (HB_TAG('n','u','k','t'));
- map->add_global_bool_feature (HB_TAG('a','k','h','n'));
-
- /* "Reordering group" */
- map->add_gsub_pause (clear_substitution_flags);
- map->add_feature (HB_TAG('r','p','h','f'), 1, F_MANUAL_ZWJ);
- map->add_gsub_pause (record_rphf);
- map->add_gsub_pause (clear_substitution_flags);
- map->add_feature (HB_TAG('p','r','e','f'), 1, F_GLOBAL | F_MANUAL_ZWJ);
- map->add_gsub_pause (record_pref);
-
- /* "Orthographic unit shaping group" */
- for (unsigned int i = 0; i < ARRAY_LENGTH (basic_features); i++)
- map->add_feature (basic_features[i], 1, F_GLOBAL | F_MANUAL_ZWJ);
-
- map->add_gsub_pause (reorder);
-
- /* "Topographical features" */
- for (unsigned int i = 0; i < ARRAY_LENGTH (arabic_features); i++)
- map->add_feature (arabic_features[i], 1, F_NONE);
- map->add_gsub_pause (NULL);
-
- /* "Standard typographic presentation" and "Positional feature application" */
- for (unsigned int i = 0; i < ARRAY_LENGTH (other_features); i++)
- map->add_feature (other_features[i], 1, F_GLOBAL | F_MANUAL_ZWJ);
-}
-
-struct use_shape_plan_t
-{
- ASSERT_POD ();
-
- hb_mask_t rphf_mask;
-
- arabic_shape_plan_t *arabic_plan;
-};
-
-static bool
-has_arabic_joining (hb_script_t script)
-{
- /* List of scripts that have data in arabic-table. */
- switch ((int) script)
- {
- /* Unicode-1.1 additions */
- case HB_SCRIPT_ARABIC:
-
- /* Unicode-3.0 additions */
- case HB_SCRIPT_MONGOLIAN:
- case HB_SCRIPT_SYRIAC:
-
- /* Unicode-5.0 additions */
- case HB_SCRIPT_NKO:
- case HB_SCRIPT_PHAGS_PA:
-
- /* Unicode-6.0 additions */
- case HB_SCRIPT_MANDAIC:
-
- /* Unicode-7.0 additions */
- case HB_SCRIPT_MANICHAEAN:
- case HB_SCRIPT_PSALTER_PAHLAVI:
-
- return true;
-
- default:
- return false;
- }
-}
-
-static void *
-data_create_use (const hb_ot_shape_plan_t *plan)
-{
- use_shape_plan_t *use_plan = (use_shape_plan_t *) calloc (1, sizeof (use_shape_plan_t));
- if (unlikely (!use_plan))
- return NULL;
-
- use_plan->rphf_mask = plan->map.get_1_mask (HB_TAG('r','p','h','f'));
-
- if (has_arabic_joining (plan->props.script))
- {
- use_plan->arabic_plan = (arabic_shape_plan_t *) data_create_arabic (plan);
- if (unlikely (!use_plan->arabic_plan))
- {
- free (use_plan);
- return NULL;
- }
- }
-
- return use_plan;
-}
-
-static void
-data_destroy_use (void *data)
-{
- use_shape_plan_t *use_plan = (use_shape_plan_t *) data;
-
- if (use_plan->arabic_plan)
- data_destroy_arabic (use_plan->arabic_plan);
-
- free (data);
-}
-
-enum syllable_type_t {
- independent_cluster,
- virama_terminated_cluster,
- consonant_cluster,
- vowel_cluster,
- number_joiner_terminated_cluster,
- numeral_cluster,
- symbol_cluster,
- broken_cluster,
-};
-
-#include "hb-ot-shape-complex-use-machine.hh"
-
-
-static void
-setup_masks_use (const hb_ot_shape_plan_t *plan,
- hb_buffer_t *buffer,
- hb_font_t *font HB_UNUSED)
-{
- const use_shape_plan_t *use_plan = (const use_shape_plan_t *) plan->data;
-
- /* Do this before allocating use_category(). */
- if (use_plan->arabic_plan)
- {
- setup_masks_arabic_plan (use_plan->arabic_plan, buffer, plan->props.script);
- }
-
- HB_BUFFER_ALLOCATE_VAR (buffer, use_category);
-
- /* We cannot setup masks here. We save information about characters
- * and setup masks later on in a pause-callback. */
-
- unsigned int count = buffer->len;
- hb_glyph_info_t *info = buffer->info;
- for (unsigned int i = 0; i < count; i++)
- info[i].use_category() = hb_use_get_categories (info[i].codepoint);
-}
-
-static void
-setup_rphf_mask (const hb_ot_shape_plan_t *plan,
- hb_buffer_t *buffer)
-{
- const use_shape_plan_t *use_plan = (const use_shape_plan_t *) plan->data;
-
- hb_mask_t mask = use_plan->rphf_mask;
- if (!mask) return;
-
- hb_glyph_info_t *info = buffer->info;
-
- foreach_syllable (buffer, start, end)
- {
- unsigned int limit = info[start].use_category() == USE_R ? 1 : MIN (3u, end - start);
- for (unsigned int i = start; i < start + limit; i++)
- info[i].mask |= mask;
- }
-}
-
-static void
-setup_topographical_masks (const hb_ot_shape_plan_t *plan,
- hb_buffer_t *buffer)
-{
- const use_shape_plan_t *use_plan = (const use_shape_plan_t *) plan->data;
- if (use_plan->arabic_plan)
- return;
-
- ASSERT_STATIC (INIT < 4 && ISOL < 4 && MEDI < 4 && FINA < 4);
- hb_mask_t masks[4], all_masks = 0;
- for (unsigned int i = 0; i < 4; i++)
- {
- masks[i] = plan->map.get_1_mask (arabic_features[i]);
- if (masks[i] == plan->map.get_global_mask ())
- masks[i] = 0;
- all_masks |= masks[i];
- }
- if (!all_masks)
- return;
- hb_mask_t other_masks = ~all_masks;
-
- unsigned int last_start = 0;
- joining_form_t last_form = _NONE;
- hb_glyph_info_t *info = buffer->info;
- foreach_syllable (buffer, start, end)
- {
- syllable_type_t syllable_type = (syllable_type_t) (info[start].syllable() & 0x0F);
- switch (syllable_type)
- {
- case independent_cluster:
- case symbol_cluster:
- /* These don't join. Nothing to do. */
- last_form = _NONE;
- break;
-
- case virama_terminated_cluster:
- case consonant_cluster:
- case vowel_cluster:
- case number_joiner_terminated_cluster:
- case numeral_cluster:
- case broken_cluster:
-
- bool join = last_form == FINA || last_form == ISOL;
-
- if (join)
- {
- /* Fixup previous syllable's form. */
- last_form = last_form == FINA ? MEDI : INIT;
- for (unsigned int i = last_start; i < start; i++)
- info[i].mask = (info[i].mask & other_masks) | masks[last_form];
- }
-
- /* Form for this syllable. */
- last_form = join ? FINA : ISOL;
- for (unsigned int i = start; i < end; i++)
- info[i].mask = (info[i].mask & other_masks) | masks[last_form];
-
- break;
- }
-
- last_start = start;
- }
-}
-
-static void
-setup_syllables (const hb_ot_shape_plan_t *plan,
- hb_font_t *font HB_UNUSED,
- hb_buffer_t *buffer)
-{
- find_syllables (buffer);
- setup_rphf_mask (plan, buffer);
- setup_topographical_masks (plan, buffer);
-}
-
-static void
-clear_substitution_flags (const hb_ot_shape_plan_t *plan,
- hb_font_t *font HB_UNUSED,
- hb_buffer_t *buffer)
-{
- hb_glyph_info_t *info = buffer->info;
- unsigned int count = buffer->len;
- for (unsigned int i = 0; i < count; i++)
- _hb_glyph_info_clear_substituted (&info[i]);
-}
-
-static void
-record_rphf (const hb_ot_shape_plan_t *plan,
- hb_font_t *font,
- hb_buffer_t *buffer)
-{
- const use_shape_plan_t *use_plan = (const use_shape_plan_t *) plan->data;
-
- hb_mask_t mask = use_plan->rphf_mask;
- if (!mask) return;
- hb_glyph_info_t *info = buffer->info;
-
- foreach_syllable (buffer, start, end)
- {
- /* Mark a substituted repha as USE_R. */
- for (unsigned int i = start; i < end && (info[i].mask & mask); i++)
- if (_hb_glyph_info_substituted (&info[i]))
- {
- info[i].use_category() = USE_R;
- break;
- }
- }
-}
-
-static void
-record_pref (const hb_ot_shape_plan_t *plan,
- hb_font_t *font,
- hb_buffer_t *buffer)
-{
- hb_glyph_info_t *info = buffer->info;
-
- foreach_syllable (buffer, start, end)
- {
- /* Mark a substituted pref as VPre, as they behave the same way. */
- for (unsigned int i = start; i < end; i++)
- if (_hb_glyph_info_substituted (&info[i]))
- {
- info[i].use_category() = USE_VPre;
- break;
- }
- }
-}
-
-static inline bool
-is_halant (const hb_glyph_info_t &info)
-{
- return info.use_category() == USE_H && !_hb_glyph_info_ligated (&info);
-}
-
-static void
-reorder_syllable (hb_buffer_t *buffer, unsigned int start, unsigned int end)
-{
- syllable_type_t syllable_type = (syllable_type_t) (buffer->info[start].syllable() & 0x0F);
- /* Only a few syllable types need reordering. */
- if (unlikely (!(FLAG_SAFE (syllable_type) &
- (FLAG (virama_terminated_cluster) |
- FLAG (consonant_cluster) |
- FLAG (vowel_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))
-
- /* Move things forward. */
- if (info[start].use_category() == USE_R && end - start > 1)
- {
- /* Got a repha. Reorder it to after first base, before first halant. */
- for (unsigned int i = start + 1; i < end; i++)
- if ((FLAG_UNSAFE (info[i].use_category()) & (BASE_FLAGS)) || is_halant (info[i]))
- {
- /* If we hit a halant, move before it; otherwise it's a base: move to it's
- * place, and shift things in between backward. */
-
- if (is_halant (info[i]))
- i--;
-
- buffer->merge_clusters (start, i + 1);
- hb_glyph_info_t t = info[start];
- memmove (&info[start], &info[start + 1], (i - start) * sizeof (info[0]));
- info[i] = t;
-
- break;
- }
- }
-
- /* Move things back. */
- unsigned int j = end;
- for (unsigned int i = start; i < end; i++)
- {
- uint32_t flag = FLAG_UNSAFE (info[i].use_category());
- if ((flag & (BASE_FLAGS)) || is_halant (info[i]))
- {
- /* If we hit a halant, move after it; otherwise it's a base: move to it's
- * place, and shift things in between backward. */
- if (is_halant (info[i]))
- j = i + 1;
- else
- j = i;
- }
- else if (((flag) & (FLAG (USE_VPre) | FLAG (USE_VMPre))) &&
- /* Only move the first component of a MultipleSubst. */
- 0 == _hb_glyph_info_get_lig_comp (&info[i]) &&
- j < i)
- {
- buffer->merge_clusters (j, i + 1);
- hb_glyph_info_t t = info[i];
- memmove (&info[j + 1], &info[j], (i - j) * sizeof (info[0]));
- info[j] = t;
- }
- }
-}
-
-static inline void
-insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
- hb_font_t *font,
- hb_buffer_t *buffer)
-{
- /* Note: This loop is extra overhead, but should not be measurable. */
- bool has_broken_syllables = false;
- unsigned int count = buffer->len;
- hb_glyph_info_t *info = buffer->info;
- for (unsigned int i = 0; i < count; i++)
- if ((info[i].syllable() & 0x0F) == broken_cluster)
- {
- has_broken_syllables = true;
- break;
- }
- if (likely (!has_broken_syllables))
- return;
-
- hb_glyph_info_t dottedcircle = {0};
- if (!font->get_nominal_glyph (0x25CCu, &dottedcircle.codepoint))
- return;
- dottedcircle.use_category() = hb_use_get_categories (0x25CC);
-
- buffer->clear_output ();
-
- buffer->idx = 0;
- unsigned int last_syllable = 0;
- while (buffer->idx < buffer->len && !buffer->in_error)
- {
- unsigned int syllable = buffer->cur().syllable();
- syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F);
- if (unlikely (last_syllable != syllable && syllable_type == broken_cluster))
- {
- last_syllable = syllable;
-
- hb_glyph_info_t ginfo = dottedcircle;
- ginfo.cluster = buffer->cur().cluster;
- ginfo.mask = buffer->cur().mask;
- ginfo.syllable() = buffer->cur().syllable();
- /* TODO Set glyph_props? */
-
- /* Insert dottedcircle after possible Repha. */
- while (buffer->idx < buffer->len && !buffer->in_error &&
- last_syllable == buffer->cur().syllable() &&
- buffer->cur().use_category() == USE_R)
- buffer->next_glyph ();
-
- buffer->output_info (ginfo);
- }
- else
- buffer->next_glyph ();
- }
-
- buffer->swap_buffers ();
-}
-
-static void
-reorder (const hb_ot_shape_plan_t *plan,
- hb_font_t *font,
- hb_buffer_t *buffer)
-{
- insert_dotted_circles (plan, font, buffer);
-
- hb_glyph_info_t *info = buffer->info;
-
- foreach_syllable (buffer, start, end)
- reorder_syllable (buffer, start, end);
-
- /* Zero syllables now... */
- unsigned int count = buffer->len;
- for (unsigned int i = 0; i < count; i++)
- info[i].syllable() = 0;
-
- HB_BUFFER_DEALLOCATE_VAR (buffer, use_category);
-}
-
-static bool
-compose_use (const hb_ot_shape_normalize_context_t *c,
- hb_codepoint_t a,
- hb_codepoint_t b,
- hb_codepoint_t *ab)
-{
- /* Avoid recomposing split matras. */
- if (HB_UNICODE_GENERAL_CATEGORY_IS_MARK (c->unicode->general_category (a)))
- return false;
-
- return (bool)c->unicode->compose (a, b, ab);
-}
-
-
-const hb_ot_complex_shaper_t _hb_ot_complex_shaper_use =
-{
- "use",
- collect_features_use,
- NULL, /* override_features */
- data_create_use,
- data_destroy_use,
- NULL, /* preprocess_text */
- NULL, /* postprocess_glyphs */
- HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT,
- NULL, /* decompose */
- compose_use,
- setup_masks_use,
- HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_EARLY,
- false, /* fallback_position */
-};
diff --git a/src/hb-ot-shape-fallback-private.hh b/src/hb-ot-shape-fallback-private.hh
index e134224..ec65351 100644
--- a/src/hb-ot-shape-fallback-private.hh
+++ b/src/hb-ot-shape-fallback-private.hh
@@ -45,9 +45,5 @@ HB_INTERNAL void _hb_ot_shape_fallback_kern (const hb_ot_shape_plan_t *plan,
hb_font_t *font,
hb_buffer_t *buffer);
-HB_INTERNAL void _hb_ot_shape_fallback_spaces (const hb_ot_shape_plan_t *plan,
- hb_font_t *font,
- hb_buffer_t *buffer);
-
#endif /* HB_OT_SHAPE_FALLBACK_PRIVATE_HH */
diff --git a/src/hb-ot-shape-fallback.cc b/src/hb-ot-shape-fallback.cc
index ea8312b..53274b5 100644
--- a/src/hb-ot-shape-fallback.cc
+++ b/src/hb-ot-shape-fallback.cc
@@ -224,7 +224,7 @@ position_mark (const hb_ot_shape_plan_t *plan,
pos.x_offset += base_extents.x_bearing + base_extents.width - mark_extents.width / 2 - mark_extents.x_bearing;
break;
}
- HB_FALLTHROUGH;
+ /* Fall through */
default:
case HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW:
@@ -259,7 +259,6 @@ position_mark (const hb_ot_shape_plan_t *plan,
case HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT:
/* Add gap, fall-through. */
base_extents.height -= y_gap;
- HB_FALLTHROUGH;
case HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT:
case HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW:
@@ -280,7 +279,6 @@ position_mark (const hb_ot_shape_plan_t *plan,
/* Add gap, fall-through. */
base_extents.y_bearing += y_gap;
base_extents.height -= y_gap;
- HB_FALLTHROUGH;
case HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE:
case HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT:
@@ -420,12 +418,13 @@ _hb_ot_shape_fallback_position (const hb_ot_shape_plan_t *plan,
_hb_buffer_assert_gsubgpos_vars (buffer);
unsigned int start = 0;
+ unsigned int last_cluster = buffer->info[0].cluster;
unsigned int count = buffer->len;
- hb_glyph_info_t *info = buffer->info;
for (unsigned int i = 1; i < count; i++)
- if (likely (!HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&info[i])))) {
+ if (buffer->info[i].cluster != last_cluster) {
position_cluster (plan, font, buffer, start, i);
start = i;
+ last_cluster = buffer->info[i].cluster;
}
position_cluster (plan, font, buffer, start, count);
}
@@ -484,70 +483,3 @@ _hb_ot_shape_fallback_kern (const hb_ot_shape_plan_t *plan,
idx = skippy_iter.idx;
}
}
-
-
-/* Adjusts width of various spaces. */
-void
-_hb_ot_shape_fallback_spaces (const hb_ot_shape_plan_t *plan,
- hb_font_t *font,
- hb_buffer_t *buffer)
-{
- if (!HB_DIRECTION_IS_HORIZONTAL (buffer->props.direction))
- return;
-
- hb_glyph_info_t *info = buffer->info;
- hb_glyph_position_t *pos = buffer->pos;
- unsigned int count = buffer->len;
- for (unsigned int i = 0; i < count; i++)
- if (_hb_glyph_info_is_unicode_space (&info[i]) && !_hb_glyph_info_ligated (&info[i]))
- {
- hb_unicode_funcs_t::space_t space_type = _hb_glyph_info_get_unicode_space_fallback_type (&info[i]);
- hb_codepoint_t glyph;
- typedef hb_unicode_funcs_t t;
- switch (space_type)
- {
- case t::NOT_SPACE: /* Shouldn't happen. */
- case t::SPACE:
- break;
-
- case t::SPACE_EM:
- case t::SPACE_EM_2:
- case t::SPACE_EM_3:
- case t::SPACE_EM_4:
- case t::SPACE_EM_5:
- case t::SPACE_EM_6:
- case t::SPACE_EM_16:
- pos[i].x_advance = (font->x_scale + ((int) space_type)/2) / (int) space_type;
- break;
-
- case t::SPACE_4_EM_18:
- pos[i].x_advance = font->x_scale * 4 / 18;
- break;
-
- case t::SPACE_FIGURE:
- for (char u = '0'; u <= '9'; u++)
- if (font->get_nominal_glyph (u, &glyph))
- {
- pos[i].x_advance = font->get_glyph_h_advance (glyph);
- break;
- }
- break;
-
- case t::SPACE_PUNCTUATION:
- if (font->get_nominal_glyph ('.', &glyph))
- pos[i].x_advance = font->get_glyph_h_advance (glyph);
- else if (font->get_nominal_glyph (',', &glyph))
- pos[i].x_advance = font->get_glyph_h_advance (glyph);
- break;
-
- case t::SPACE_NARROW:
- /* Half-space?
- * Unicode doc http://www.unicode.org/charts/PDF/U2000.pdf says ~1/4 or 1/5 of EM.
- * However, in my testing, many fonts have their regular space being about that
- * size. To me, a percentage of the space width makes more sense. Half is as
- * good as any. */
- pos[i].x_advance /= 2;
- break;
- }
- }
-}
diff --git a/src/hb-ot-shape-normalize.cc b/src/hb-ot-shape-normalize.cc
index 107617e..8cc64af 100644
--- a/src/hb-ot-shape-normalize.cc
+++ b/src/hb-ot-shape-normalize.cc
@@ -62,12 +62,24 @@
* with previous base, use that. This needs the itemizer to have this
* knowledge too. We need to provide assistance to the itemizer.
*
- * - When a font does not support a character but supports its canonical
- * decomposition, well, use the decomposition.
+ * - When a font does not support a character but supports its decomposition,
+ * well, use the decomposition (preferring the canonical decomposition, but
+ * falling back to the compatibility decomposition if necessary). The
+ * compatibility decomposition is really nice to have, for characters like
+ * ellipsis, or various-sized space characters.
*
* - The complex shapers can customize the compose and decompose functions to
* offload some of their requirements to the normalizer. For example, the
* Indic shaper may want to disallow recomposing of two matras.
+ *
+ * - We try compatibility decomposition if decomposing through canonical
+ * decomposition alone failed to find a sequence that the font supports.
+ * We don't try compatibility decomposition recursively during the canonical
+ * decomposition phase. This has minimal impact. There are only a handful
+ * of Greek letter that have canonical decompositions that include characters
+ * with compatibility decomposition. Those can be found using this command:
+ *
+ * egrep "`echo -n ';('; grep ';<' UnicodeData.txt | cut -d';' -f1 | tr '\n' '|'; echo ') '`" UnicodeData.txt
*/
static bool
@@ -76,7 +88,7 @@ decompose_unicode (const hb_ot_shape_normalize_context_t *c,
hb_codepoint_t *a,
hb_codepoint_t *b)
{
- return (bool) c->unicode->decompose (ab, a, b);
+ return c->unicode->decompose (ab, a, b);
}
static bool
@@ -85,21 +97,21 @@ compose_unicode (const hb_ot_shape_normalize_context_t *c,
hb_codepoint_t b,
hb_codepoint_t *ab)
{
- return (bool) c->unicode->compose (a, b, ab);
+ return c->unicode->compose (a, b, ab);
}
static inline void
set_glyph (hb_glyph_info_t &info, hb_font_t *font)
{
- font->get_nominal_glyph (info.codepoint, &info.glyph_index());
+ font->get_glyph (info.codepoint, 0, &info.glyph_index());
}
static inline void
output_char (hb_buffer_t *buffer, hb_codepoint_t unichar, hb_codepoint_t glyph)
{
buffer->cur().glyph_index() = glyph;
- buffer->output_glyph (unichar); /* This is very confusing indeed. */
- _hb_glyph_info_set_unicode_props (&buffer->prev(), buffer);
+ buffer->output_glyph (unichar);
+ _hb_glyph_info_set_unicode_props (&buffer->prev(), buffer->unicode);
}
static inline void
@@ -124,10 +136,10 @@ decompose (const hb_ot_shape_normalize_context_t *c, bool shortest, hb_codepoint
hb_font_t * const font = c->font;
if (!c->decompose (c, ab, &a, &b) ||
- (b && !font->get_nominal_glyph (b, &b_glyph)))
+ (b && !font->get_glyph (b, 0, &b_glyph)))
return 0;
- bool has_a = (bool) font->get_nominal_glyph (a, &a_glyph);
+ bool has_a = font->get_glyph (a, 0, &a_glyph);
if (shortest && has_a) {
/* Output a and b */
output_char (buffer, a, a_glyph);
@@ -159,6 +171,28 @@ decompose (const hb_ot_shape_normalize_context_t *c, bool shortest, hb_codepoint
return 0;
}
+/* Returns 0 if didn't decompose, number of resulting characters otherwise. */
+static inline unsigned int
+decompose_compatibility (const hb_ot_shape_normalize_context_t *c, hb_codepoint_t u)
+{
+ unsigned int len, i;
+ hb_codepoint_t decomposed[HB_UNICODE_MAX_DECOMPOSITION_LEN];
+ hb_codepoint_t glyphs[HB_UNICODE_MAX_DECOMPOSITION_LEN];
+
+ len = c->buffer->unicode->decompose_compatibility (u, decomposed);
+ if (!len)
+ return 0;
+
+ for (i = 0; i < len; i++)
+ if (!c->font->get_glyph (decomposed[i], 0, &glyphs[i]))
+ return 0;
+
+ for (i = 0; i < len; i++)
+ output_char (c->buffer, decomposed[i], glyphs[i]);
+
+ return len;
+}
+
static inline void
decompose_current_character (const hb_ot_shape_normalize_context_t *c, bool shortest)
{
@@ -166,50 +200,17 @@ decompose_current_character (const hb_ot_shape_normalize_context_t *c, bool shor
hb_codepoint_t u = buffer->cur().codepoint;
hb_codepoint_t glyph;
- if (shortest && c->font->get_nominal_glyph (u, &glyph))
- {
+ /* Kind of a cute waterfall here... */
+ if (shortest && c->font->get_glyph (u, 0, &glyph))
next_char (buffer, glyph);
- return;
- }
-
- if (decompose (c, shortest, u))
- {
+ else if (decompose (c, shortest, u))
skip_char (buffer);
- return;
- }
-
- if (!shortest && c->font->get_nominal_glyph (u, &glyph))
- {
+ else if (!shortest && c->font->get_glyph (u, 0, &glyph))
next_char (buffer, glyph);
- return;
- }
-
- if (_hb_glyph_info_is_unicode_space (&buffer->cur()))
- {
- hb_codepoint_t space_glyph;
- hb_unicode_funcs_t::space_t space_type = buffer->unicode->space_fallback_type (u);
- if (space_type != hb_unicode_funcs_t::NOT_SPACE && c->font->get_nominal_glyph (0x0020u, &space_glyph))
- {
- _hb_glyph_info_set_unicode_space_fallback_type (&buffer->cur(), space_type);
- next_char (buffer, space_glyph);
- buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_SPACE_FALLBACK;
- return;
- }
- }
-
- if (u == 0x2011u)
- {
- /* U+2011 is the only sensible character that is a no-break version of another character
- * and not a space. The space ones are handled already. Handle this lone one. */
- hb_codepoint_t other_glyph;
- if (c->font->get_nominal_glyph (0x2010u, &other_glyph))
- {
- next_char (buffer, other_glyph);
- return;
- }
- }
-
- next_char (buffer, glyph); /* glyph is initialized in earlier branches. */
+ else if (decompose_compatibility (c, u))
+ skip_char (buffer);
+ else
+ next_char (buffer, glyph); /* glyph is initialized in earlier branches. */
}
static inline void
@@ -218,10 +219,10 @@ handle_variation_selector_cluster (const hb_ot_shape_normalize_context_t *c, uns
/* TODO Currently if there's a variation-selector we give-up, it's just too hard. */
hb_buffer_t * const buffer = c->buffer;
hb_font_t * const font = c->font;
- for (; buffer->idx < end - 1 && !buffer->in_error;) {
+ for (; buffer->idx < end - 1;) {
if (unlikely (buffer->unicode->is_variation_selector (buffer->cur(+1).codepoint))) {
/* The next two lines are some ugly lines... But work. */
- if (font->get_variation_glyph (buffer->cur().codepoint, buffer->cur(+1).codepoint, &buffer->cur().glyph_index()))
+ if (font->get_glyph (buffer->cur().codepoint, buffer->cur(+1).codepoint, &buffer->cur().glyph_index()))
{
buffer->replace_glyphs (2, 1, &buffer->cur().codepoint);
}
@@ -254,13 +255,13 @@ static inline void
decompose_multi_char_cluster (const hb_ot_shape_normalize_context_t *c, unsigned int end, bool short_circuit)
{
hb_buffer_t * const buffer = c->buffer;
- for (unsigned int i = buffer->idx; i < end && !buffer->in_error; i++)
+ for (unsigned int i = buffer->idx; i < end; i++)
if (unlikely (buffer->unicode->is_variation_selector (buffer->info[i].codepoint))) {
handle_variation_selector_cluster (c, end, short_circuit);
return;
}
- while (buffer->idx < end && !buffer->in_error)
+ while (buffer->idx < end)
decompose_current_character (c, short_circuit);
}
@@ -289,8 +290,6 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan,
hb_buffer_t *buffer,
hb_font_t *font)
{
- if (unlikely (!buffer->len)) return;
-
_hb_buffer_assert_unicode_vars (buffer);
hb_ot_shape_normalization_mode_t mode = plan->shaper->normalization_preference;
@@ -320,11 +319,11 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan,
buffer->clear_output ();
count = buffer->len;
- for (buffer->idx = 0; buffer->idx < count && !buffer->in_error;)
+ for (buffer->idx = 0; buffer->idx < count;)
{
unsigned int end;
for (end = buffer->idx + 1; end < count; end++)
- if (likely (!HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&buffer->info[end]))))
+ if (buffer->cur().cluster != buffer->info[end].cluster)
break;
decompose_cluster (&c, end, might_short_circuit, always_short_circuit);
@@ -345,13 +344,15 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan,
if (_hb_glyph_info_get_modified_combining_class (&buffer->info[end]) == 0)
break;
- /* We are going to do a O(n^2). Only do this if the sequence is short. */
+ /* We are going to do a bubble-sort. Only do this if the
+ * sequence is short. Doing it on long sequences can result
+ * in an O(n^2) DoS. */
if (end - i > 10) {
i = end;
continue;
}
- buffer->sort (i, end, compare_combining_class);
+ hb_bubble_sort (buffer->info + i, end - i, compare_combining_class);
i = end;
}
@@ -370,7 +371,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan,
count = buffer->len;
unsigned int starter = 0;
buffer->next_glyph ();
- while (buffer->idx < count && !buffer->in_error)
+ while (buffer->idx < count)
{
hb_codepoint_t composed, glyph;
if (/* We don't try to compose a non-mark character with it's preceding starter.
@@ -388,7 +389,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan,
buffer->cur().codepoint,
&composed) &&
/* And the font has glyph for the composite. */
- font->get_nominal_glyph (composed, &glyph))
+ font->get_glyph (composed, 0, &glyph))
{
/* Composes. */
buffer->next_glyph (); /* Copy to out-buffer. */
@@ -399,7 +400,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan,
/* Modify starter and carry on. */
buffer->out_info[starter].codepoint = composed;
buffer->out_info[starter].glyph_index() = glyph;
- _hb_glyph_info_set_unicode_props (&buffer->out_info[starter], buffer);
+ _hb_glyph_info_set_unicode_props (&buffer->out_info[starter], buffer->unicode);
continue;
}
diff --git a/src/hb-ot-shape.cc b/src/hb-ot-shape.cc
index 7811cb7..07adb04 100644
--- a/src/hb-ot-shape.cc
+++ b/src/hb-ot-shape.cc
@@ -59,6 +59,10 @@ static hb_tag_t horizontal_features[] = {
HB_TAG('r','c','l','t'),
};
+static hb_tag_t vertical_features[] = {
+ HB_TAG('v','e','r','t'),
+};
+
static void
@@ -101,13 +105,10 @@ hb_ot_shape_collect_features (hb_ot_shape_planner_t *planner,
(horizontal_features[i] == HB_TAG('k','e','r','n') ?
F_HAS_FALLBACK : F_NONE));
else
- {
- /* We really want to find a 'vert' feature if there's any in the font, no
- * matter which script/langsys it is listed (or not) under.
- * See various bugs referenced from:
- * https://github.com/behdad/harfbuzz/issues/63 */
- map->add_feature (HB_TAG ('v','e','r','t'), 1, F_GLOBAL | F_GLOBAL_SEARCH);
- }
+ for (unsigned int i = 0; i < ARRAY_LENGTH (vertical_features); i++)
+ map->add_feature (vertical_features[i], 1, F_GLOBAL |
+ (vertical_features[i] == HB_TAG('v','k','r','n') ?
+ F_HAS_FALLBACK : F_NONE));
if (planner->shaper->override_features)
planner->shaper->override_features (planner);
@@ -145,7 +146,7 @@ _hb_ot_shaper_face_data_destroy (hb_ot_shaper_face_data_t *data)
struct hb_ot_shaper_font_data_t {};
hb_ot_shaper_font_data_t *
-_hb_ot_shaper_font_data_create (hb_font_t *font HB_UNUSED)
+_hb_ot_shaper_font_data_create (hb_font_t *font)
{
return (hb_ot_shaper_font_data_t *) HB_SHAPER_DATA_SUCCEEDED;
}
@@ -228,7 +229,7 @@ hb_set_unicode_props (hb_buffer_t *buffer)
unsigned int count = buffer->len;
hb_glyph_info_t *info = buffer->info;
for (unsigned int i = 0; i < count; i++)
- _hb_glyph_info_set_unicode_props (&info[i], buffer);
+ _hb_glyph_info_set_unicode_props (&info[i], buffer->unicode);
}
static void
@@ -245,7 +246,7 @@ hb_insert_dotted_circle (hb_buffer_t *buffer, hb_font_t *font)
hb_glyph_info_t dottedcircle = {0};
dottedcircle.codepoint = 0x25CCu;
- _hb_glyph_info_set_unicode_props (&dottedcircle, buffer);
+ _hb_glyph_info_set_unicode_props (&dottedcircle, buffer->unicode);
buffer->clear_output ();
@@ -254,7 +255,7 @@ hb_insert_dotted_circle (hb_buffer_t *buffer, hb_font_t *font)
info.cluster = buffer->cur().cluster;
info.mask = buffer->cur().mask;
buffer->output_info (info);
- while (buffer->idx < buffer->len && !buffer->in_error)
+ while (buffer->idx < buffer->len)
buffer->next_glyph ();
buffer->swap_buffers ();
@@ -263,24 +264,11 @@ hb_insert_dotted_circle (hb_buffer_t *buffer, hb_font_t *font)
static void
hb_form_clusters (hb_buffer_t *buffer)
{
- if (!(buffer->scratch_flags & HB_BUFFER_SCRATCH_FLAG_HAS_NON_ASCII) ||
- buffer->cluster_level != HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES)
- return;
-
- /* Loop duplicated in hb_ensure_native_direction(), and in _hb-coretext.cc */
- unsigned int base = 0;
unsigned int count = buffer->len;
hb_glyph_info_t *info = buffer->info;
for (unsigned int i = 1; i < count; i++)
- {
- if (likely (!HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&info[i])) &&
- !_hb_glyph_info_is_joiner (&info[i])))
- {
- buffer->merge_clusters (base, i);
- base = i;
- }
- }
- buffer->merge_clusters (base, count);
+ if (HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&info[i])))
+ buffer->merge_clusters (i - 1, i + 1);
}
static void
@@ -295,28 +283,7 @@ hb_ensure_native_direction (hb_buffer_t *buffer)
if ((HB_DIRECTION_IS_HORIZONTAL (direction) && direction != hb_script_get_horizontal_direction (buffer->props.script)) ||
(HB_DIRECTION_IS_VERTICAL (direction) && direction != HB_DIRECTION_TTB))
{
- /* Same loop as hb_form_clusters().
- * Since form_clusters() merged clusters already, we don't merge. */
- unsigned int base = 0;
- unsigned int count = buffer->len;
- hb_glyph_info_t *info = buffer->info;
- for (unsigned int i = 1; i < count; i++)
- {
- if (likely (!HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&info[i]))))
- {
- if (buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS)
- buffer->merge_clusters (base, i);
- buffer->reverse_range (base, i);
-
- base = i;
- }
- }
- if (buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS)
- buffer->merge_clusters (base, count);
- buffer->reverse_range (base, count);
-
- buffer->reverse ();
-
+ hb_buffer_reverse_clusters (buffer);
buffer->props.direction = HB_DIRECTION_REVERSE (buffer->props.direction);
}
}
@@ -338,7 +305,7 @@ hb_ot_mirror_chars (hb_ot_shape_context_t *c)
hb_glyph_info_t *info = buffer->info;
for (unsigned int i = 0; i < count; i++) {
hb_codepoint_t codepoint = unicode->mirroring (info[i].codepoint);
- if (likely (codepoint == info[i].codepoint || !c->font->has_glyph (codepoint)))
+ if (likely (codepoint == info[i].codepoint))
info[i].mask |= rtlm_mask;
else
info[i].codepoint = codepoint;
@@ -348,8 +315,7 @@ hb_ot_mirror_chars (hb_ot_shape_context_t *c)
static inline void
hb_ot_shape_setup_masks_fraction (hb_ot_shape_context_t *c)
{
- if (!(c->buffer->scratch_flags & HB_BUFFER_SCRATCH_FLAG_HAS_NON_ASCII) ||
- !c->plan->has_frac)
+ if (!c->plan->has_frac)
return;
hb_buffer_t *buffer = c->buffer;
@@ -414,103 +380,6 @@ hb_ot_shape_setup_masks (hb_ot_shape_context_t *c)
}
}
-static void
-hb_ot_zero_width_default_ignorables (hb_ot_shape_context_t *c)
-{
- hb_buffer_t *buffer = c->buffer;
-
- if (!(buffer->scratch_flags & HB_BUFFER_SCRATCH_FLAG_HAS_DEFAULT_IGNORABLES) ||
- (buffer->flags & HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES))
- return;
-
- unsigned int count = buffer->len;
- hb_glyph_info_t *info = buffer->info;
- hb_glyph_position_t *pos = buffer->pos;
- unsigned int i = 0;
- for (i = 0; i < count; i++)
- if (unlikely (_hb_glyph_info_is_default_ignorable (&info[i])))
- pos[i].x_advance = pos[i].y_advance = pos[i].x_offset = pos[i].y_offset = 0;
-}
-
-static void
-hb_ot_hide_default_ignorables (hb_ot_shape_context_t *c)
-{
- hb_buffer_t *buffer = c->buffer;
-
- if (!(buffer->scratch_flags & HB_BUFFER_SCRATCH_FLAG_HAS_DEFAULT_IGNORABLES) ||
- (buffer->flags & HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES))
- return;
-
- unsigned int count = buffer->len;
- hb_glyph_info_t *info = buffer->info;
- hb_glyph_position_t *pos = buffer->pos;
- unsigned int i = 0;
- for (i = 0; i < count; i++)
- {
- if (unlikely (_hb_glyph_info_is_default_ignorable (&info[i])))
- break;
- }
-
- /* No default-ignorables found; return. */
- if (i == count)
- return;
-
- hb_codepoint_t space;
- if (c->font->get_nominal_glyph (' ', &space))
- {
- /* Replace default-ignorables with a zero-advance space glyph. */
- for (/*continue*/; i < count; i++)
- {
- if (_hb_glyph_info_is_default_ignorable (&info[i]))
- info[i].codepoint = space;
- }
- }
- else
- {
- /* Merge clusters and delete default-ignorables.
- * NOTE! We can't use out-buffer as we have positioning data. */
- unsigned int j = i;
- for (; i < count; i++)
- {
- if (_hb_glyph_info_is_default_ignorable (&info[i]))
- {
- /* Merge clusters.
- * Same logic as buffer->delete_glyph(), but for in-place removal. */
-
- unsigned int cluster = info[i].cluster;
- if (i + 1 < count && cluster == info[i + 1].cluster)
- continue; /* Cluster survives; do nothing. */
-
- if (j)
- {
- /* Merge cluster backward. */
- if (cluster < info[j - 1].cluster)
- {
- unsigned int old_cluster = info[j - 1].cluster;
- for (unsigned k = j; k && info[k - 1].cluster == old_cluster; k--)
- info[k - 1].cluster = cluster;
- }
- continue;
- }
-
- if (i + 1 < count)
- buffer->merge_clusters (i, i + 2); /* Merge cluster forward. */
-
- continue;
- }
-
- if (j != i)
- {
- info[j] = info[i];
- pos[j] = pos[i];
- }
- j++;
- }
- buffer->len = j;
- }
-}
-
-
static inline void
hb_ot_map_glyphs_fast (hb_buffer_t *buffer)
{
@@ -519,8 +388,32 @@ hb_ot_map_glyphs_fast (hb_buffer_t *buffer)
hb_glyph_info_t *info = buffer->info;
for (unsigned int i = 0; i < count; i++)
info[i].codepoint = info[i].glyph_index();
+}
- buffer->content_type = HB_BUFFER_CONTENT_TYPE_GLYPHS;
+static inline void
+hb_synthesize_glyph_classes (hb_ot_shape_context_t *c)
+{
+ unsigned int count = c->buffer->len;
+ hb_glyph_info_t *info = c->buffer->info;
+ for (unsigned int i = 0; i < count; i++)
+ {
+ hb_ot_layout_glyph_class_mask_t klass;
+
+ /* Never mark default-ignorables as marks.
+ * They won't get in the way of lookups anyway,
+ * but having them as mark will cause them to be skipped
+ * over if the lookup-flag says so, but at least for the
+ * Mongolian variation selectors, looks like Uniscribe
+ * marks them as non-mark. Some Mongolian fonts without
+ * GDEF rely on this. Another notable character that
+ * this applies to is COMBINING GRAPHEME JOINER. */
+ klass = (_hb_glyph_info_get_general_category (&info[i]) !=
+ HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK ||
+ _hb_glyph_info_is_default_ignorable (&info[i])) ?
+ HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH :
+ HB_OT_LAYOUT_GLYPH_PROPS_MARK;
+ _hb_glyph_info_set_glyph_props (&info[i], klass);
+ }
}
static inline void
@@ -528,6 +421,9 @@ hb_ot_substitute_default (hb_ot_shape_context_t *c)
{
hb_buffer_t *buffer = c->buffer;
+ if (c->plan->shaper->preprocess_text)
+ c->plan->shaper->preprocess_text (c->plan, buffer, c->font);
+
hb_ot_shape_initialize_masks (c);
hb_ot_mirror_chars (c);
@@ -552,10 +448,16 @@ hb_ot_substitute_complex (hb_ot_shape_context_t *c)
{
hb_buffer_t *buffer = c->buffer;
+ _hb_buffer_allocate_gsubgpos_vars (buffer);
hb_ot_layout_substitute_start (c->font, buffer);
+ if (!hb_ot_layout_has_glyph_classes (c->face))
+ hb_synthesize_glyph_classes (c);
+
c->plan->substitute (c->font, buffer);
+ hb_ot_layout_substitute_finish (c->font, buffer);
+
return;
}
@@ -563,9 +465,6 @@ static inline void
hb_ot_substitute (hb_ot_shape_context_t *c)
{
hb_ot_substitute_default (c);
-
- _hb_buffer_allocate_gsubgpos_vars (c->buffer);
-
hb_ot_substitute_complex (c);
}
@@ -586,6 +485,20 @@ zero_mark_width (hb_glyph_position_t *pos)
}
static inline void
+zero_mark_widths_by_unicode (hb_buffer_t *buffer, bool adjust_offsets)
+{
+ unsigned int count = buffer->len;
+ hb_glyph_info_t *info = buffer->info;
+ for (unsigned int i = 0; i < count; i++)
+ if (_hb_glyph_info_get_general_category (&info[i]) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)
+ {
+ if (adjust_offsets)
+ adjust_mark_offsets (&buffer->pos[i]);
+ zero_mark_width (&buffer->pos[i]);
+ }
+}
+
+static inline void
zero_mark_widths_by_gdef (hb_buffer_t *buffer, bool adjust_offsets)
{
unsigned int count = buffer->len;
@@ -606,41 +519,26 @@ hb_ot_position_default (hb_ot_shape_context_t *c)
unsigned int count = c->buffer->len;
hb_glyph_info_t *info = c->buffer->info;
hb_glyph_position_t *pos = c->buffer->pos;
-
- if (HB_DIRECTION_IS_HORIZONTAL (direction))
- {
- for (unsigned int i = 0; i < count; i++)
- pos[i].x_advance = c->font->get_glyph_h_advance (info[i].codepoint);
- /* The nil glyph_h_origin() func returns 0, so no need to apply it. */
- if (c->font->has_glyph_h_origin_func ())
- for (unsigned int i = 0; i < count; i++)
- c->font->subtract_glyph_h_origin (info[i].codepoint,
- &pos[i].x_offset,
- &pos[i].y_offset);
- }
- else
+ for (unsigned int i = 0; i < count; i++)
{
- for (unsigned int i = 0; i < count; i++)
- {
- pos[i].y_advance = c->font->get_glyph_v_advance (info[i].codepoint);
- c->font->subtract_glyph_v_origin (info[i].codepoint,
- &pos[i].x_offset,
- &pos[i].y_offset);
- }
+ c->font->get_glyph_advance_for_direction (info[i].codepoint,
+ direction,
+ &pos[i].x_advance,
+ &pos[i].y_advance);
+ c->font->subtract_glyph_origin_for_direction (info[i].codepoint,
+ direction,
+ &pos[i].x_offset,
+ &pos[i].y_offset);
+
}
- if (c->buffer->scratch_flags & HB_BUFFER_SCRATCH_FLAG_HAS_SPACE_FALLBACK)
- _hb_ot_shape_fallback_spaces (c->plan, c->font, c->buffer);
}
static inline bool
hb_ot_position_complex (hb_ot_shape_context_t *c)
{
- hb_ot_layout_position_start (c->font, c->buffer);
-
bool ret = false;
unsigned int count = c->buffer->len;
- bool has_positioning = (bool) hb_ot_layout_has_positioning (c->face);
-
+ bool has_positioning = hb_ot_layout_has_positioning (c->face);
/* If the font has no GPOS, AND, no fallback positioning will
* happen, AND, direction is forward, then when zeroing mark
* widths, we shift the mark with it, such that the mark
@@ -659,8 +557,15 @@ hb_ot_position_complex (hb_ot_shape_context_t *c)
zero_mark_widths_by_gdef (c->buffer, adjust_offsets_when_zeroing);
break;
+ /* Not currently used for any shaper:
+ case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_EARLY:
+ zero_mark_widths_by_unicode (c->buffer, adjust_offsets_when_zeroing);
+ break;
+ */
+
default:
case HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE:
+ case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE:
case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE:
break;
}
@@ -670,56 +575,58 @@ hb_ot_position_complex (hb_ot_shape_context_t *c)
hb_glyph_info_t *info = c->buffer->info;
hb_glyph_position_t *pos = c->buffer->pos;
- /* Change glyph origin to what GPOS expects (horizontal), apply GPOS, change it back. */
+ /* Change glyph origin to what GPOS expects, apply GPOS, change it back. */
- /* The nil glyph_h_origin() func returns 0, so no need to apply it. */
- if (c->font->has_glyph_h_origin_func ())
- for (unsigned int i = 0; i < count; i++)
- c->font->add_glyph_h_origin (info[i].codepoint,
- &pos[i].x_offset,
- &pos[i].y_offset);
+ for (unsigned int i = 0; i < count; i++) {
+ c->font->add_glyph_origin_for_direction (info[i].codepoint,
+ HB_DIRECTION_LTR,
+ &pos[i].x_offset,
+ &pos[i].y_offset);
+ }
c->plan->position (c->font, c->buffer);
- /* The nil glyph_h_origin() func returns 0, so no need to apply it. */
- if (c->font->has_glyph_h_origin_func ())
- for (unsigned int i = 0; i < count; i++)
- c->font->subtract_glyph_h_origin (info[i].codepoint,
- &pos[i].x_offset,
- &pos[i].y_offset);
+ for (unsigned int i = 0; i < count; i++) {
+ c->font->subtract_glyph_origin_for_direction (info[i].codepoint,
+ HB_DIRECTION_LTR,
+ &pos[i].x_offset,
+ &pos[i].y_offset);
+ }
ret = true;
}
switch (c->plan->shaper->zero_width_marks)
{
+ case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE:
+ zero_mark_widths_by_unicode (c->buffer, adjust_offsets_when_zeroing);
+ break;
+
case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE:
zero_mark_widths_by_gdef (c->buffer, adjust_offsets_when_zeroing);
break;
default:
case HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE:
+ //case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_EARLY:
case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_EARLY:
break;
}
- /* Finishing off GPOS has to follow a certain order. */
- hb_ot_layout_position_finish_advances (c->font, c->buffer);
- hb_ot_zero_width_default_ignorables (c);
- hb_ot_layout_position_finish_offsets (c->font, c->buffer);
-
return ret;
}
static inline void
hb_ot_position (hb_ot_shape_context_t *c)
{
- c->buffer->clear_positions ();
+ hb_ot_layout_position_start (c->font, c->buffer);
hb_ot_position_default (c);
hb_bool_t fallback = !hb_ot_position_complex (c);
+ hb_ot_layout_position_finish (c->font, c->buffer);
+
if (fallback && c->plan->shaper->fallback_position)
_hb_ot_shape_fallback_position (c->plan, c->font, c->buffer);
@@ -735,18 +642,59 @@ hb_ot_position (hb_ot_shape_context_t *c)
}
+/* Post-process */
+
+static void
+hb_ot_hide_default_ignorables (hb_ot_shape_context_t *c)
+{
+ if (c->buffer->flags & HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES)
+ return;
+
+ hb_codepoint_t space;
+ enum {
+ SPACE_DONT_KNOW,
+ SPACE_AVAILABLE,
+ SPACE_UNAVAILABLE
+ } space_status = SPACE_DONT_KNOW;
+
+ unsigned int count = c->buffer->len;
+ hb_glyph_info_t *info = c->buffer->info;
+ hb_glyph_position_t *pos = c->buffer->pos;
+ unsigned int j = 0;
+ for (unsigned int i = 0; i < count; i++)
+ {
+ if (unlikely (!_hb_glyph_info_ligated (&info[i]) &&
+ _hb_glyph_info_is_default_ignorable (&info[i])))
+ {
+ if (space_status == SPACE_DONT_KNOW)
+ space_status = c->font->get_glyph (' ', 0, &space) ? SPACE_AVAILABLE : SPACE_UNAVAILABLE;
+
+ if (space_status == SPACE_AVAILABLE)
+ {
+ info[i].codepoint = space;
+ pos[i].x_advance = 0;
+ pos[i].y_advance = 0;
+ }
+ else
+ continue; /* Delete it. XXX Merge clusters? */
+ }
+ if (j != i)
+ {
+ info[j] = info[i];
+ pos[j] = pos[i];
+ }
+ j++;
+ }
+ c->buffer->len = j;
+}
+
+
/* Pull it all together! */
static void
hb_ot_shape_internal (hb_ot_shape_context_t *c)
{
c->buffer->deallocate_var_all ();
- c->buffer->scratch_flags = HB_BUFFER_SCRATCH_FLAG_DEFAULT;
- if (likely (!_hb_unsigned_int_mul_overflows (c->buffer->len, HB_BUFFER_MAX_EXPANSION_FACTOR)))
- {
- c->buffer->max_len = MAX (c->buffer->len * HB_BUFFER_MAX_EXPANSION_FACTOR,
- (unsigned) HB_BUFFER_MAX_LEN_MIN);
- }
/* Save the original direction, we use it later. */
c->target_direction = c->buffer->props.direction;
@@ -761,22 +709,15 @@ hb_ot_shape_internal (hb_ot_shape_context_t *c)
hb_ensure_native_direction (c->buffer);
- if (c->plan->shaper->preprocess_text)
- c->plan->shaper->preprocess_text (c->plan, c->buffer, c->font);
-
hb_ot_substitute (c);
hb_ot_position (c);
hb_ot_hide_default_ignorables (c);
- if (c->plan->shaper->postprocess_glyphs)
- c->plan->shaper->postprocess_glyphs (c->plan, c->buffer, c->font);
-
_hb_buffer_deallocate_unicode_vars (c->buffer);
c->buffer->props.direction = c->target_direction;
- c->buffer->max_len = HB_BUFFER_MAX_LEN_DEFAULT;
c->buffer->deallocate_var_all ();
}
@@ -795,11 +736,6 @@ _hb_ot_shape (hb_shape_plan_t *shape_plan,
}
-/**
- * hb_ot_shape_plan_collect_lookups:
- *
- * Since: 0.9.7
- **/
void
hb_ot_shape_plan_collect_lookups (hb_shape_plan_t *shape_plan,
hb_tag_t table_tag,
@@ -819,22 +755,17 @@ add_char (hb_font_t *font,
hb_set_t *glyphs)
{
hb_codepoint_t glyph;
- if (font->get_nominal_glyph (u, &glyph))
+ if (font->get_glyph (u, 0, &glyph))
glyphs->add (glyph);
if (mirror)
{
hb_codepoint_t m = unicode->mirroring (u);
- if (m != u && font->get_nominal_glyph (m, &glyph))
+ if (m != u && font->get_glyph (m, 0, &glyph))
glyphs->add (glyph);
}
}
-/**
- * hb_ot_shape_glyphs_closure:
- *
- * Since: 0.9.2
- **/
void
hb_ot_shape_glyphs_closure (hb_font_t *font,
hb_buffer_t *buffer,
diff --git a/src/hb-ot-shape.h b/src/hb-ot-shape.h
index 7b1bcc0..1402f54 100644
--- a/src/hb-ot-shape.h
+++ b/src/hb-ot-shape.h
@@ -36,14 +36,14 @@
HB_BEGIN_DECLS
/* TODO port to shape-plan / set. */
-HB_EXTERN void
+void
hb_ot_shape_glyphs_closure (hb_font_t *font,
hb_buffer_t *buffer,
const hb_feature_t *features,
unsigned int num_features,
hb_set_t *glyphs);
-HB_EXTERN void
+void
hb_ot_shape_plan_collect_lookups (hb_shape_plan_t *shape_plan,
hb_tag_t table_tag,
hb_set_t *lookup_indexes /* OUT */);
diff --git a/src/hb-ot-tag.cc b/src/hb-ot-tag.cc
index 0483557..878dd79 100644
--- a/src/hb-ot-tag.cc
+++ b/src/hb-ot-tag.cc
@@ -175,29 +175,20 @@ typedef struct {
*
* Some items still missing. Those are commented out at the end.
* Keep sorted for bsearch.
- *
- * Updated as of 2015-05-06: OT1.7 on MS website has some newer
- * items that we don't have here, eg. Zazaki. This is the new
- * items in OpenType 1.7 (red items), most of which we have:
- * http://www.microsoft.com/typography/otspec170/languagetags.htm
*/
static const LangTag ot_languages[] = {
{"aa", HB_TAG('A','F','R',' ')}, /* Afar */
{"ab", HB_TAG('A','B','K',' ')}, /* Abkhazian */
{"abq", HB_TAG('A','B','A',' ')}, /* Abaza */
- {"acf", HB_TAG('F','A','N',' ')}, /* French Antillean */
{"ach", HB_TAG('A','C','H',' ')}, /* Acoli */
- {"acr", HB_TAG('A','C','R',' ')}, /* Achi */
{"ada", HB_TAG('D','N','G',' ')}, /* Dangme */
{"ady", HB_TAG('A','D','Y',' ')}, /* Adyghe */
{"af", HB_TAG('A','F','K',' ')}, /* Afrikaans */
- {"ahg", HB_TAG('A','G','W',' ')}, /* Agaw */
{"aii", HB_TAG('S','W','A',' ')}, /* Swadaya Aramaic */
{"aio", HB_TAG('A','I','O',' ')}, /* Aiton */
{"aiw", HB_TAG('A','R','I',' ')}, /* Aari */
{"ak", HB_TAG('T','W','I',' ')}, /* Akan [macrolanguage] */
- {"aka", HB_TAG('A','K','A',' ')}, /* Akan */
{"alt", HB_TAG('A','L','T',' ')}, /* [Southern] Altai */
{"am", HB_TAG('A','M','H',' ')}, /* Amharic */
{"amf", HB_TAG('H','B','N',' ')}, /* Hammer-Banna */
@@ -210,7 +201,6 @@ static const LangTag ot_languages[] = {
{"as", HB_TAG('A','S','M',' ')}, /* Assamese */
{"ast", HB_TAG('A','S','T',' ')}, /* Asturian/Asturleonese/Bable/Leonese */
{"ath", HB_TAG('A','T','H',' ')}, /* Athapaskan [family] */
- {"atj", HB_TAG('R','C','R',' ')}, /* R-Cree */
{"atv", HB_TAG('A','L','T',' ')}, /* [Northern] Altai */
{"av", HB_TAG('A','V','R',' ')}, /* Avaric */
{"awa", HB_TAG('A','W','A',' ')}, /* Awadhi */
@@ -219,7 +209,6 @@ static const LangTag ot_languages[] = {
{"azb", HB_TAG('A','Z','B',' ')}, /* South Azerbaijani */
{"azj", HB_TAG('A','Z','E',' ')}, /* North Azerbaijani */
{"ba", HB_TAG('B','S','H',' ')}, /* Bashkir */
- {"bad", HB_TAG('B','A','D','0')}, /* Banda */
{"bai", HB_TAG('B','M','L',' ')}, /* Bamileke [family] */
{"bal", HB_TAG('B','L','I',' ')}, /* Baluchi [macrolangauge] */
{"ban", HB_TAG('B','A','N',' ')}, /* Balinese */
@@ -228,13 +217,11 @@ static const LangTag ot_languages[] = {
{"bci", HB_TAG('B','A','U',' ')}, /* Baoulé */
{"bcl", HB_TAG('B','I','K',' ')}, /* Central Bikol */
{"bcq", HB_TAG('B','C','H',' ')}, /* Bench */
- {"bdy", HB_TAG('B','D','Y',' ')}, /* Bandjalang */
- {"be", HB_TAG('B','E','L',' ')}, /* Belarusian */
+ {"be", HB_TAG('B','E','L',' ')}, /* Belarusian */
{"bem", HB_TAG('B','E','M',' ')}, /* Bemba (Zambia) */
- {"ber", HB_TAG('B','E','R',' ')}, /* Berber [family] */
+ {"ber", HB_TAG('B','E','R',' ')}, /* Berber [family] */
{"bfq", HB_TAG('B','A','D',' ')}, /* Badaga */
{"bft", HB_TAG('B','L','T',' ')}, /* Balti */
- {"bfu", HB_TAG('L','A','H',' ')}, /* Lahuli */
{"bfy", HB_TAG('B','A','G',' ')}, /* Baghelkhandi */
{"bg", HB_TAG('B','G','R',' ')}, /* Bulgarian */
{"bgc", HB_TAG('B','G','C',' ')}, /* Haryanvi */
@@ -268,13 +255,11 @@ static const LangTag ot_languages[] = {
{"bxr", HB_TAG('R','B','U',' ')}, /* Russian Buriat */
{"byn", HB_TAG('B','I','L',' ')}, /* Bilen */
{"ca", HB_TAG('C','A','T',' ')}, /* Catalan */
- {"cak", HB_TAG('C','A','K',' ')}, /* Kaqchikel */
{"cbk", HB_TAG('C','B','K',' ')}, /* Chavacano */
{"ce", HB_TAG('C','H','E',' ')}, /* Chechen */
{"ceb", HB_TAG('C','E','B',' ')}, /* Cebuano */
{"cgg", HB_TAG('C','G','G',' ')}, /* Chiga */
{"ch", HB_TAG('C','H','A',' ')}, /* Chamorro */
- {"chk", HB_TAG('C','H','K','0')}, /* Chuukese */
{"cho", HB_TAG('C','H','O',' ')}, /* Choctaw */
{"chp", HB_TAG('C','H','P',' ')}, /* Chipewyan */
{"chr", HB_TAG('C','H','R',' ')}, /* Cherokee */
@@ -282,12 +267,9 @@ static const LangTag ot_languages[] = {
{"ckb", HB_TAG('K','U','R',' ')}, /* Central Kurdish (Sorani) */
{"ckt", HB_TAG('C','H','K',' ')}, /* Chukchi */
{"cop", HB_TAG('C','O','P',' ')}, /* Coptic */
- {"cpp", HB_TAG('C','P','P',' ')}, /* Creoles */
{"cr", HB_TAG('C','R','E',' ')}, /* Cree */
- {"cre", HB_TAG('Y','C','R',' ')}, /* Y-Cree */
{"crh", HB_TAG('C','R','T',' ')}, /* Crimean Tatar */
{"crj", HB_TAG('E','C','R',' ')}, /* [Southern] East Cree */
- {"crk", HB_TAG('W','C','R',' ')}, /* West-Cree */
{"crl", HB_TAG('E','C','R',' ')}, /* [Northern] East Cree */
{"crm", HB_TAG('M','C','R',' ')}, /* Moose Cree */
{"crx", HB_TAG('C','R','R',' ')}, /* Carrier */
@@ -296,27 +278,21 @@ static const LangTag ot_languages[] = {
{"ctg", HB_TAG('C','T','G',' ')}, /* Chittagonian */
{"cts", HB_TAG('B','I','K',' ')}, /* Northern Catanduanes Bikol */
{"cu", HB_TAG('C','S','L',' ')}, /* Church Slavic */
- {"cuk", HB_TAG('C','U','K',' ')}, /* San Blas Kuna */
{"cv", HB_TAG('C','H','U',' ')}, /* Chuvash */
{"cwd", HB_TAG('D','C','R',' ')}, /* Woods Cree */
{"cy", HB_TAG('W','E','L',' ')}, /* Welsh */
{"da", HB_TAG('D','A','N',' ')}, /* Danish */
{"dap", HB_TAG('N','I','S',' ')}, /* Nisi (India) */
{"dar", HB_TAG('D','A','R',' ')}, /* Dargwa */
- {"dax", HB_TAG('D','A','X',' ')}, /* Dayi */
{"de", HB_TAG('D','E','U',' ')}, /* German */
{"dgo", HB_TAG('D','G','O',' ')}, /* Dogri */
{"dhd", HB_TAG('M','A','W',' ')}, /* Dhundari */
- {"dhg", HB_TAG('D','H','G',' ')}, /* Dhangu */
{"din", HB_TAG('D','N','K',' ')}, /* Dinka [macrolanguage] */
{"diq", HB_TAG('D','I','Q',' ')}, /* Dimli */
{"dje", HB_TAG('D','J','R',' ')}, /* Zarma */
- {"djr", HB_TAG('D','J','R','0')}, /* Djambarrpuyngu */
{"dng", HB_TAG('D','U','N',' ')}, /* Dungan */
- {"dnj", HB_TAG('D','N','J',' ')}, /* Dan */
{"doi", HB_TAG('D','G','R',' ')}, /* Dogri [macrolanguage] */
{"dsb", HB_TAG('L','S','B',' ')}, /* Lower Sorbian */
- {"duj", HB_TAG('D','U','J',' ')}, /* Dhuwal */
{"dv", HB_TAG('D','I','V',' ')}, /* Dhivehi/Divehi/Maldivian */
{"dyu", HB_TAG('J','U','L',' ')}, /* Jula */
{"dz", HB_TAG('D','Z','N',' ')}, /* Dzongkha */
@@ -326,30 +302,23 @@ static const LangTag ot_languages[] = {
{"el", HB_TAG('E','L','L',' ')}, /* Modern Greek (1453-) */
{"emk", HB_TAG('M','N','K',' ')}, /* Eastern Maninkakan */
{"en", HB_TAG('E','N','G',' ')}, /* English */
- {"enf", HB_TAG('F','N','E',' ')}, /* Forest Nenets */
- {"enh", HB_TAG('T','N','E',' ')}, /* Tundra Nenets */
{"eo", HB_TAG('N','T','O',' ')}, /* Esperanto */
{"eot", HB_TAG('B','T','I',' ')}, /* Beti (Côte d'Ivoire) */
{"es", HB_TAG('E','S','P',' ')}, /* Spanish */
- {"esu", HB_TAG('E','S','U',' ')}, /* Central Yupik */
{"et", HB_TAG('E','T','I',' ')}, /* Estonian [macrolanguage] */
{"eu", HB_TAG('E','U','Q',' ')}, /* Basque */
{"eve", HB_TAG('E','V','N',' ')}, /* Even */
{"evn", HB_TAG('E','V','K',' ')}, /* Evenki */
{"fa", HB_TAG('F','A','R',' ')}, /* Persian [macrolanguage] */
- {"fan", HB_TAG('F','A','N','0')}, /* Fang */
- {"fat", HB_TAG('F','A','T',' ')}, /* Fanti */
{"ff", HB_TAG('F','U','L',' ')}, /* Fulah [macrolanguage] */
{"fi", HB_TAG('F','I','N',' ')}, /* Finnish */
{"fil", HB_TAG('P','I','L',' ')}, /* Filipino */
{"fj", HB_TAG('F','J','I',' ')}, /* Fijian */
- {"flm", HB_TAG('H','A','L',' ')}, /* Halam */
{"fo", HB_TAG('F','O','S',' ')}, /* Faroese */
{"fon", HB_TAG('F','O','N',' ')}, /* Fon */
{"fr", HB_TAG('F','R','A',' ')}, /* French */
{"frc", HB_TAG('F','R','C',' ')}, /* Cajun French */
{"frp", HB_TAG('F','R','P',' ')}, /* Arpitan/Francoprovençal */
- {"fuf", HB_TAG('F','T','A',' ')}, /* Futa */
{"fur", HB_TAG('F','R','L',' ')}, /* Friulian */
{"fuv", HB_TAG('F','U','V',' ')}, /* Nigerian Fulfulde */
{"fy", HB_TAG('F','R','I',' ')}, /* Western Frisian */
@@ -360,37 +329,30 @@ static const LangTag ot_languages[] = {
{"gd", HB_TAG('G','A','E',' ')}, /* Scottish Gaelic */
{"gez", HB_TAG('G','E','Z',' ')}, /* Ge'ez */
{"ggo", HB_TAG('G','O','N',' ')}, /* Southern Gondi */
- {"gih", HB_TAG('G','I','H',' ')}, /* Githabul */
- {"gil", HB_TAG('G','I','L','0')}, /* Kiribati (Gilbertese) */
- {"gkp", HB_TAG('G','K','P',' ')}, /* Kpelle (Guinea) */
{"gl", HB_TAG('G','A','L',' ')}, /* Galician */
{"gld", HB_TAG('N','A','N',' ')}, /* Nanai */
- {"gle", HB_TAG('I','R','T',' ')}, /* Irish Traditional */
{"glk", HB_TAG('G','L','K',' ')}, /* Gilaki */
{"gn", HB_TAG('G','U','A',' ')}, /* Guarani [macrolanguage] */
- {"gnn", HB_TAG('G','N','N',' ')}, /* Gumatj */
{"gno", HB_TAG('G','O','N',' ')}, /* Northern Gondi */
{"gog", HB_TAG('G','O','G',' ')}, /* Gogo */
{"gon", HB_TAG('G','O','N',' ')}, /* Gondi [macrolanguage] */
{"grt", HB_TAG('G','R','O',' ')}, /* Garo */
{"gru", HB_TAG('S','O','G',' ')}, /* Sodo Gurage */
- {"gsw", HB_TAG('A','L','S',' ')}, /* Alsatian */
{"gu", HB_TAG('G','U','J',' ')}, /* Gujarati */
{"guc", HB_TAG('G','U','C',' ')}, /* Wayuu */
- {"guf", HB_TAG('G','U','F',' ')}, /* Gupapuyngu */
{"guk", HB_TAG('G','M','Z',' ')}, /* Gumuz */
/*{"guk", HB_TAG('G','U','K',' ')},*/ /* Gumuz (in SIL fonts) */
{"guz", HB_TAG('G','U','Z',' ')}, /* Ekegusii/Gusii */
{"gv", HB_TAG('M','N','X',' ')}, /* Manx */
{"ha", HB_TAG('H','A','U',' ')}, /* Hausa */
{"har", HB_TAG('H','R','I',' ')}, /* Harari */
- {"haw", HB_TAG('H','A','W',' ')}, /* Hawaiian */
- {"hay", HB_TAG('H','A','Y',' ')}, /* Haya */
- {"haz", HB_TAG('H','A','Z',' ')}, /* Hazaragi */
+ {"haw", HB_TAG('H','A','W',' ')}, /* Hawaiian */
+ {"hay", HB_TAG('H','A','Y',' ')}, /* Haya */
+ {"haz", HB_TAG('H','A','Z',' ')}, /* Hazaragi */
{"he", HB_TAG('I','W','R',' ')}, /* Hebrew */
+ {"hz", HB_TAG('H','E','R',' ')}, /* Herero */
{"hi", HB_TAG('H','I','N',' ')}, /* Hindi */
{"hil", HB_TAG('H','I','L',' ')}, /* Hiligaynon */
- {"hmn", HB_TAG('H','M','N',' ')}, /* Hmong */
{"hnd", HB_TAG('H','N','D',' ')}, /* [Southern] Hindko */
{"hne", HB_TAG('C','H','H',' ')}, /* Chattisgarhi */
{"hno", HB_TAG('H','N','D',' ')}, /* [Northern] Hindko */
@@ -404,13 +366,11 @@ static const LangTag ot_languages[] = {
{"hy", HB_TAG('H','Y','E',' ')}, /* Armenian */
{"hz", HB_TAG('H','E','R',' ')}, /* Herero */
{"ia", HB_TAG('I','N','A',' ')}, /* Interlingua (International Auxiliary Language Association) */
- {"iba", HB_TAG('I','B','A',' ')}, /* Iban */
{"ibb", HB_TAG('I','B','B',' ')}, /* Ibibio */
{"id", HB_TAG('I','N','D',' ')}, /* Indonesian */
{"ie", HB_TAG('I','L','E',' ')}, /* Interlingue/Occidental */
{"ig", HB_TAG('I','B','O',' ')}, /* Igbo */
{"igb", HB_TAG('E','B','I',' ')}, /* Ebira */
- {"ii", HB_TAG('Y','I','M',' ')}, /* Yi Modern */
{"ijc", HB_TAG('I','J','O',' ')}, /* Izon */
{"ijo", HB_TAG('I','J','O',' ')}, /* Ijo [family] */
{"ik", HB_TAG('I','P','K',' ')}, /* Inupiaq [macrolanguage] */
@@ -426,20 +386,15 @@ static const LangTag ot_languages[] = {
{"jv", HB_TAG('J','A','V',' ')}, /* Javanese */
{"ka", HB_TAG('K','A','T',' ')}, /* Georgian */
{"kaa", HB_TAG('K','R','K',' ')}, /* Karakalpak */
- {"kab", HB_TAG('K','A','B','0')}, /* Kabyle */
+ {"kab", HB_TAG('K','A','B',' ')}, /* Kabyle */
{"kam", HB_TAG('K','M','B',' ')}, /* Kamba (Kenya) */
{"kar", HB_TAG('K','R','N',' ')}, /* Karen [family] */
- {"kat", HB_TAG('K','G','E',' ')}, /* Khutsuri Georgian */
{"kbd", HB_TAG('K','A','B',' ')}, /* Kabardian */
{"kde", HB_TAG('K','D','E',' ')}, /* Makonde */
{"kdr", HB_TAG('K','R','M',' ')}, /* Karaim */
{"kdt", HB_TAG('K','U','Y',' ')}, /* Kuy */
- {"kea", HB_TAG('K','E','A',' ')}, /* Kabuverdianu (Crioulo) */
- {"kek", HB_TAG('K','E','K',' ')}, /* Kekchi */
{"kex", HB_TAG('K','K','N',' ')}, /* Kokni */
- {"kfa", HB_TAG('K','O','D',' ')}, /* Kodagu */
{"kfr", HB_TAG('K','A','C',' ')}, /* Kachchi */
- {"kfx", HB_TAG('K','U','L',' ')}, /* Kulvi */
{"kfy", HB_TAG('K','M','N',' ')}, /* Kumaoni */
{"kg", HB_TAG('K','O','N',' ')}, /* Kongo [macrolanguage] */
{"kha", HB_TAG('K','S','I',' ')}, /* Khasi */
@@ -448,9 +403,7 @@ static const LangTag ot_languages[] = {
/*{"kht", HB_TAG('K','H','T',' ')},*/ /* Khamti (OpenType spec and SIL fonts) */
{"khw", HB_TAG('K','H','W',' ')}, /* Khowar */
{"ki", HB_TAG('K','I','K',' ')}, /* Gikuyu/Kikuyu */
- {"kiu", HB_TAG('K','I','U',' ')}, /* Kirmanjki */
{"kj", HB_TAG('K','U','A',' ')}, /* Kuanyama/Kwanyama */
- {"kjd", HB_TAG('K','J','D',' ')}, /* Southern Kiwai */
{"kjh", HB_TAG('K','H','A',' ')}, /* Khakass */
{"kjp", HB_TAG('K','J','P',' ')}, /* Pwo Eastern Karen */
{"kk", HB_TAG('K','A','Z',' ')}, /* Kazakh */
@@ -464,8 +417,6 @@ static const LangTag ot_languages[] = {
{"ko", HB_TAG('K','O','R',' ')}, /* Korean */
{"koi", HB_TAG('K','O','P',' ')}, /* Komi-Permyak */
{"kok", HB_TAG('K','O','K',' ')}, /* Konkani [macrolanguage] */
- {"kon", HB_TAG('K','O','N','0')}, /* Kongo */
- {"kos", HB_TAG('K','O','S',' ')}, /* Kosraean */
{"kpe", HB_TAG('K','P','L',' ')}, /* Kpelle [macrolanguage] */
{"kpv", HB_TAG('K','O','Z',' ')}, /* Komi-Zyrian */
{"kpy", HB_TAG('K','Y','K',' ')}, /* Koryak */
@@ -475,11 +426,9 @@ static const LangTag ot_languages[] = {
{"krl", HB_TAG('K','R','L',' ')}, /* Karelian */
{"kru", HB_TAG('K','U','U',' ')}, /* Kurukh */
{"ks", HB_TAG('K','S','H',' ')}, /* Kashmiri */
- {"ksh", HB_TAG('K','S','H','0')}, /* Ripuarian, Kölsch */
+ {"ksh", HB_TAG('K','S','H',' ')}, /* Kölsch */
/*{"ksw", HB_TAG('K','R','N',' ')},*/ /* S'gaw Karen (Microsoft fonts?) */
{"ksw", HB_TAG('K','S','W',' ')}, /* S'gaw Karen (OpenType spec and SIL fonts) */
- {"ktb", HB_TAG('K','E','B',' ')}, /* Kebena */
- {"ktu", HB_TAG('K','O','N',' ')}, /* Kikongo */
{"ku", HB_TAG('K','U','R',' ')}, /* Kurdish [macrolanguage] */
{"kum", HB_TAG('K','U','M',' ')}, /* Kumyk */
{"kv", HB_TAG('K','O','M',' ')}, /* Komi [macrolanguage] */
@@ -507,7 +456,6 @@ static const LangTag ot_languages[] = {
{"lmo", HB_TAG('L','M','O',' ')}, /* Lombard */
{"ln", HB_TAG('L','I','N',' ')}, /* Lingala */
{"lo", HB_TAG('L','A','O',' ')}, /* Lao */
- {"lom", HB_TAG('L','O','M',' ')}, /* Loma */
{"lrc", HB_TAG('L','R','C',' ')}, /* Northern Luri */
{"lt", HB_TAG('L','T','H',' ')}, /* Lithuanian */
{"lu", HB_TAG('L','U','B',' ')}, /* Luba-Katanga */
@@ -522,8 +470,6 @@ static const LangTag ot_languages[] = {
{"mag", HB_TAG('M','A','G',' ')}, /* Magahi */
{"mai", HB_TAG('M','T','H',' ')}, /* Maithili */
{"mak", HB_TAG('M','K','R',' ')}, /* Makasar */
- {"mal", HB_TAG('M','A','L',' ')}, /* Malayalam */
- {"mam", HB_TAG('M','A','M',' ')}, /* Mam */
{"man", HB_TAG('M','N','K',' ')}, /* Manding/Mandingo [macrolanguage] */
{"mdc", HB_TAG('M','L','E',' ')}, /* Male (Papua New Guinea) */
{"mdf", HB_TAG('M','O','K',' ')}, /* Moksha */
@@ -566,7 +512,6 @@ static const LangTag ot_languages[] = {
{"mww", HB_TAG('M','W','W',' ')}, /* Hmong Daw */
{"my", HB_TAG('B','R','M',' ')}, /* Burmese */
{"mym", HB_TAG('M','E','N',' ')}, /* Me'en */
- {"myn", HB_TAG('M','Y','N',' ')}, /* Mayan */
{"myq", HB_TAG('M','N','K',' ')}, /* Forest Maninka (retired code) */
{"myv", HB_TAG('E','R','Z',' ')}, /* Erzya */
{"mzn", HB_TAG('M','Z','N',' ')}, /* Mazanderani */
@@ -584,7 +529,6 @@ static const LangTag ot_languages[] = {
{"ng", HB_TAG('N','D','G',' ')}, /* Ndonga */
{"nga", HB_TAG('N','G','A',' ')}, /* Ngabaka */
{"ngl", HB_TAG('L','M','W',' ')}, /* Lomwe */
- {"ngo", HB_TAG('S','X','T',' ')}, /* Sutu */
{"niu", HB_TAG('N','I','U',' ')}, /* Niuean */
{"niv", HB_TAG('G','I','L',' ')}, /* Gilyak */
{"nl", HB_TAG('N','L','D',' ')}, /* Dutch */
@@ -598,22 +542,19 @@ static const LangTag ot_languages[] = {
{"nr", HB_TAG('N','D','B',' ')}, /* [South] Ndebele */
{"nsk", HB_TAG('N','A','S',' ')}, /* Naskapi */
{"nso", HB_TAG('S','O','T',' ')}, /* [Northern] Sotho */
- {"nv", HB_TAG('N','A','V',' ')}, /* Navajo */
{"ny", HB_TAG('C','H','I',' ')}, /* Chewa/Chichwa/Nyanja */
{"nym", HB_TAG('N','Y','M',' ')}, /* Nyamwezi */
{"nyn", HB_TAG('N','K','L',' ')}, /* Nyankole */
{"oc", HB_TAG('O','C','I',' ')}, /* Occitan (post 1500) */
{"oj", HB_TAG('O','J','B',' ')}, /* Ojibwa [macrolanguage] */
{"ojs", HB_TAG('O','C','R',' ')}, /* Oji-Cree */
- {"okm", HB_TAG('K','O','H',' ')}, /* Korean Old Hangul */
{"om", HB_TAG('O','R','O',' ')}, /* Oromo [macrolanguage] */
{"or", HB_TAG('O','R','I',' ')}, /* Oriya */
{"os", HB_TAG('O','S','S',' ')}, /* Ossetian */
{"pa", HB_TAG('P','A','N',' ')}, /* Panjabi */
{"pag", HB_TAG('P','A','G',' ')}, /* Pangasinan */
{"pam", HB_TAG('P','A','M',' ')}, /* Kapampangan/Pampanga */
- {"pap", HB_TAG('P','A','P','0')}, /* Papiamento */
- {"pau", HB_TAG('P','A','U',' ')}, /* Palauan */
+ {"pap", HB_TAG('P','A','P',' ')}, /* Papiamento */
{"pcc", HB_TAG('P','C','C',' ')}, /* Bouyei */
{"pcd", HB_TAG('P','C','D',' ')}, /* Picard */
{"pce", HB_TAG('P','L','G',' ')}, /* [Ruching] Palaung */
@@ -627,34 +568,24 @@ static const LangTag ot_languages[] = {
{"plp", HB_TAG('P','A','P',' ')}, /* Palpa */
{"pms", HB_TAG('P','M','S',' ')}, /* Piemontese */
{"pnb", HB_TAG('P','N','B',' ')}, /* Western Panjabi */
- {"poh", HB_TAG('P','O','H',' ')}, /* Pocomchi */
- {"pon", HB_TAG('P','O','N',' ')}, /* Pohnpeian */
{"prs", HB_TAG('D','R','I',' ')}, /* Afghan Persian/Dari */
{"ps", HB_TAG('P','A','S',' ')}, /* Pashto/Pushto [macrolanguage] */
{"pt", HB_TAG('P','T','G',' ')}, /* Portuguese */
{"pwo", HB_TAG('P','W','O',' ')}, /* Pwo Western Karen */
{"qu", HB_TAG('Q','U','Z',' ')}, /* Quechua [macrolanguage] */
{"quc", HB_TAG('Q','U','C',' ')}, /* K'iche'/Quiché */
- {"quh", HB_TAG('Q','U','H',' ')}, /* Quechua (Bolivia) */
{"quz", HB_TAG('Q','U','Z',' ')}, /* Cusco Quechua */
- {"qvi", HB_TAG('Q','V','I',' ')}, /* Quechua (Ecuador) */
- {"qwh", HB_TAG('Q','W','H',' ')}, /* Quechua (Peru) */
{"raj", HB_TAG('R','A','J',' ')}, /* Rajasthani [macrolanguage] */
- {"rar", HB_TAG('R','A','R',' ')}, /* Rarotongan */
{"rbb", HB_TAG('P','L','G',' ')}, /* Rumai Palaung */
{"rej", HB_TAG('R','E','J',' ')}, /* Rejang */
{"ria", HB_TAG('R','I','A',' ')}, /* Riang (India) */
- {"rif", HB_TAG('R','I','F',' ')}, /* Tarifit */
{"ril", HB_TAG('R','I','A',' ')}, /* Riang (Myanmar) */
- {"rit", HB_TAG('R','I','T',' ')}, /* Ritarungo */
{"rki", HB_TAG('A','R','K',' ')}, /* Rakhine */
- {"rkw", HB_TAG('R','K','W',' ')}, /* Arakwal */
{"rm", HB_TAG('R','M','S',' ')}, /* Romansh */
{"rmy", HB_TAG('R','M','Y',' ')}, /* Vlax Romani */
{"rn", HB_TAG('R','U','N',' ')}, /* Rundi */
{"ro", HB_TAG('R','O','M',' ')}, /* Romanian */
{"rom", HB_TAG('R','O','Y',' ')}, /* Romany [macrolanguage] */
- {"rtm", HB_TAG('R','T','M',' ')}, /* Rotuman */
{"ru", HB_TAG('R','U','S',' ')}, /* Russian */
{"rue", HB_TAG('R','S','Y',' ')}, /* Rusyn */
{"rup", HB_TAG('R','U','P',' ')}, /* Aromanian/Arumanian/Macedo-Romanian */
@@ -662,11 +593,10 @@ static const LangTag ot_languages[] = {
{"rwr", HB_TAG('M','A','W',' ')}, /* Marwari (India) */
{"sa", HB_TAG('S','A','N',' ')}, /* Sanskrit */
{"sah", HB_TAG('Y','A','K',' ')}, /* Yakut */
- {"sam", HB_TAG('P','A','A',' ')}, /* Palestinian Aramaic */
{"sas", HB_TAG('S','A','S',' ')}, /* Sasak */
{"sat", HB_TAG('S','A','T',' ')}, /* Santali */
- {"sc", HB_TAG('S','R','D',' ')}, /* Sardinian [macrolanguage] */
{"sck", HB_TAG('S','A','D',' ')}, /* Sadri */
+ {"sc", HB_TAG('S','R','D',' ')}, /* Sardinian [macrolanguage] */
{"scn", HB_TAG('S','C','N',' ')}, /* Sicilian */
{"sco", HB_TAG('S','C','O',' ')}, /* Scots */
{"scs", HB_TAG('S','L','A',' ')}, /* [North] Slavey */
@@ -679,7 +609,6 @@ static const LangTag ot_languages[] = {
{"sgs", HB_TAG('S','G','S',' ')}, /* Samogitian */
{"sgw", HB_TAG('C','H','G',' ')}, /* Sebat Bet Gurage */
/*{"sgw", HB_TAG('S','G','W',' ')},*/ /* Sebat Bet Gurage (in SIL fonts) */
- {"shi", HB_TAG('S','H','I',' ')}, /* Tachelhit */
{"shn", HB_TAG('S','H','N',' ')}, /* Shan */
{"si", HB_TAG('S','N','H',' ')}, /* Sinhala */
{"sid", HB_TAG('S','I','D',' ')}, /* Sidamo */
@@ -692,7 +621,7 @@ static const LangTag ot_languages[] = {
{"smj", HB_TAG('L','S','M',' ')}, /* Lule Sami */
{"smn", HB_TAG('I','S','M',' ')}, /* Inari Sami */
{"sms", HB_TAG('S','K','S',' ')}, /* Skolt Sami */
- {"sn", HB_TAG('S','N','A','0')}, /* Shona */
+ {"sn", HB_TAG('S','N','A',' ')}, /* Shona */
{"snk", HB_TAG('S','N','K',' ')}, /* Soninke */
{"so", HB_TAG('S','M','L',' ')}, /* Somali */
{"sop", HB_TAG('S','O','P',' ')}, /* Songe */
@@ -730,24 +659,20 @@ static const LangTag ot_languages[] = {
{"tiv", HB_TAG('T','I','V',' ')}, /* Tiv */
{"tk", HB_TAG('T','K','M',' ')}, /* Turkmen */
{"tl", HB_TAG('T','G','L',' ')}, /* Tagalog */
- {"tmh", HB_TAG('T','M','H',' ')}, /* Tamashek */
+ {"tmh", HB_TAG('t','m','h',' ')}, /* Tamashek [macrolanguage] */
{"tn", HB_TAG('T','N','A',' ')}, /* Tswana */
{"to", HB_TAG('T','G','N',' ')}, /* Tonga (Tonga Islands) */
- {"tod", HB_TAG('T','O','D','0')}, /* Toma */
- {"toi", HB_TAG('T','N','G',' ')}, /* Tonga */
{"tpi", HB_TAG('T','P','I',' ')}, /* Tok Pisin */
{"tr", HB_TAG('T','R','K',' ')}, /* Turkish */
{"tru", HB_TAG('T','U','A',' ')}, /* Turoyo Aramaic */
{"ts", HB_TAG('T','S','G',' ')}, /* Tsonga */
{"tt", HB_TAG('T','A','T',' ')}, /* Tatar */
{"tum", HB_TAG('T','U','M',' ')}, /* Tumbuka */
- {"tvl", HB_TAG('T','V','L',' ')}, /* Tuvalu */
{"tw", HB_TAG('T','W','I',' ')}, /* Twi */
{"ty", HB_TAG('T','H','T',' ')}, /* Tahitian */
{"tyv", HB_TAG('T','U','V',' ')}, /* Tuvin */
{"tyz", HB_TAG('T','Y','Z',' ')}, /* Tày */
{"tzm", HB_TAG('T','Z','M',' ')}, /* Central Atlas Tamazight */
- {"tzo", HB_TAG('T','Z','O',' ')}, /* Tzotzil */
{"udm", HB_TAG('U','D','M',' ')}, /* Udmurt */
{"ug", HB_TAG('U','Y','G',' ')}, /* Uighur */
{"uk", HB_TAG('U','K','R',' ')}, /* Ukrainian */
@@ -759,8 +684,8 @@ static const LangTag ot_languages[] = {
{"uzs", HB_TAG('U','Z','B',' ')}, /* Southern Uzbek */
{"ve", HB_TAG('V','E','N',' ')}, /* Venda */
{"vec", HB_TAG('V','E','C',' ')}, /* Venetian */
- {"vi", HB_TAG('V','I','T',' ')}, /* Vietnamese */
{"vls", HB_TAG('F','L','E',' ')}, /* Vlaams */
+ {"vi", HB_TAG('V','I','T',' ')}, /* Vietnamese */
{"vmw", HB_TAG('M','A','K',' ')}, /* Makhuwa */
{"vo", HB_TAG('V','O','L',' ')}, /* Volapük */
{"vro", HB_TAG('V','R','O',' ')}, /* Võro */
@@ -769,60 +694,73 @@ static const LangTag ot_languages[] = {
{"wbm", HB_TAG('W','A',' ',' ')}, /* Wa */
{"wbr", HB_TAG('W','A','G',' ')}, /* Wagdi */
{"wle", HB_TAG('S','I','G',' ')}, /* Wolane */
- {"wo", HB_TAG('W','L','F',' ')}, /* Wolof */
{"wry", HB_TAG('M','A','W',' ')}, /* Merwari */
{"wtm", HB_TAG('W','T','M',' ')}, /* Mewati */
+ {"wo", HB_TAG('W','L','F',' ')}, /* Wolof */
{"xal", HB_TAG('K','L','M',' ')}, /* Kalmyk */
- {"xan", HB_TAG('S','E','K',' ')}, /* Sekota */
{"xh", HB_TAG('X','H','S',' ')}, /* Xhosa */
- {"xjb", HB_TAG('X','J','B',' ')}, /* Minjangbal */
{"xog", HB_TAG('X','O','G',' ')}, /* Soga */
{"xom", HB_TAG('K','M','O',' ')}, /* Komo (Sudan) */
- {"xpe", HB_TAG('X','P','E',' ')}, /* Kpelle (Liberia) */
{"xsl", HB_TAG('S','S','L',' ')}, /* South Slavey */
{"xst", HB_TAG('S','I','G',' ')}, /* Silt'e (retired code) */
{"xwo", HB_TAG('T','O','D',' ')}, /* Written Oirat (Todo) */
{"yao", HB_TAG('Y','A','O',' ')}, /* Yao */
- {"yap", HB_TAG('Y','A','P',' ')}, /* Yapese */
{"yi", HB_TAG('J','I','I',' ')}, /* Yiddish [macrolanguage] */
{"yo", HB_TAG('Y','B','A',' ')}, /* Yoruba */
{"yso", HB_TAG('N','I','S',' ')}, /* Nisi (China) */
{"za", HB_TAG('Z','H','A',' ')}, /* Chuang/Zhuang [macrolanguage] */
{"zea", HB_TAG('Z','E','A',' ')}, /* Zeeuws */
- {"zgh", HB_TAG('Z','G','H',' ')}, /* Standard Morrocan Tamazigh */
{"zne", HB_TAG('Z','N','D',' ')}, /* Zande */
{"zu", HB_TAG('Z','U','L',' ')}, /* Zulu */
- {"zum", HB_TAG('L','R','C',' ')}, /* Kumzari */
- {"zza", HB_TAG('Z','Z','A',' ')}, /* Zazaki */
+ {"zum", HB_TAG('L','R','C',' ')} /* Kumzari */
/* The corresponding languages IDs for the following IDs are unclear,
* overlap, or are architecturally weird. Needs more research. */
-/*{"chp", HB_TAG('S','A','Y',' ')},*/ /* Sayisi */
-/*{"cwd", HB_TAG('T','C','R',' ')},*/ /* TH-Cree */
-/*{"emk", HB_TAG('E','M','K',' ')},*/ /* Eastern Maninkakan */
+/*{"ahg/awn/xan?", HB_TAG('A','G','W',' ')},*/ /* Agaw */
+/*{"gsw?/gsw-FR?", HB_TAG('A','L','S',' ')},*/ /* Alsatian */
/*{"krc", HB_TAG('B','A','L',' ')},*/ /* Balkar */
/*{"??", HB_TAG('B','C','R',' ')},*/ /* Bible Cree */
/*{"zh?", HB_TAG('C','H','N',' ')},*/ /* Chinese (seen in Microsoft fonts) */
+/*{"acf/gcf?", HB_TAG('F','A','N',' ')},*/ /* French Antillean */
+/*{"enf?/yrk?", HB_TAG('F','N','E',' ')},*/ /* Forest Nenets */
+/*{"fuf?", HB_TAG('F','T','A',' ')},*/ /* Futa */
/*{"ar-Syrc?", HB_TAG('G','A','R',' ')},*/ /* Garshuni */
-/*{"hy?", HB_TAG('H','Y','E','0')},*/ /* Armenian East (ISO 639-3 hye according to Microsoft, but that’s equivalent to ISO 639-1 hy) */
-/*{"ga-Latg?/" HB_TAG('I','R','T',' ')},*/ /* Irish Traditional */
+/*{"cfm/rnl?", HB_TAG('H','A','L',' ')},*/ /* Halam */
+/*{"fonipa", HB_TAG('I','P','P','H')},*/ /* Phonetic transcription—IPA conventions */
+/*{"ga-Latg?/Latg?", HB_TAG('I','R','T',' ')},*/ /* Irish Traditional */
/*{"krc", HB_TAG('K','A','R',' ')},*/ /* Karachay */
-/*{"ka-Geok?", HB_TAG('K','G','E',' ')},*/ /* Khutsuri Georgian */
+/*{"alw?/ktb?", HB_TAG('K','E','B',' ')},*/ /* Kebena */
+/*{"Geok", HB_TAG('K','G','E',' ')},*/ /* Khutsuri Georgian */
/*{"kca", HB_TAG('K','H','K',' ')},*/ /* Khanty-Kazim */
/*{"kca", HB_TAG('K','H','S',' ')},*/ /* Khanty-Shurishkar */
/*{"kca", HB_TAG('K','H','V',' ')},*/ /* Khanty-Vakhi */
-/*{"kqs, kss", HB_TAG('K','I','S',' ')},*/ /* Kisii */
-/*{"lua", HB_TAG('L','U','A',' ')},*/ /* Luba-Lulua */
-/*{"mlq", HB_TAG('M','L','N',' ')},*/ /* Malinke */
-/*{"nso", HB_TAG('N','S','O',' ')},*/ /* Sotho, Northern */
+/*{"guz?/kqs?/kss?", HB_TAG('K','I','S',' ')},*/ /* Kisii */
+/*{"kfa/kfi?/kpb?/xua?/xuj?", HB_TAG('K','O','D',' ')},*/ /* Kodagu */
+/*{"okm?/oko?", HB_TAG('K','O','H',' ')},*/ /* Korean Old Hangul */
+/*{"kon?/ktu?/...", HB_TAG('K','O','N',' ')},*/ /* Kikongo */
+/*{"kfx?", HB_TAG('K','U','L',' ')},*/ /* Kulvi */
+/*{"??", HB_TAG('L','A','H',' ')},*/ /* Lahuli */
+/*{"??", HB_TAG('L','C','R',' ')},*/ /* L-Cree */
/*{"??", HB_TAG('M','A','L',' ')},*/ /* Malayalam Traditional */
-/*{"csw", HB_TAG('N','C','R',' ')},*/ /* N-Cree */
-/*{"csw", HB_TAG('N','H','C',' ')},*/ /* Norway House Cree */
-/*{"el-polyton", HB_TAG('P','G','R',' ')},*/ /* Polytonic Greek */
-/*{"bgr, cnh, cnw, czt, sez, tcp, csy, ctd, flm, pck, tcz, zom, cmr, dao, hlt, cka, cnk, mrh, mwg, cbl, cnb, csh", HB_TAG('Q','I','N',' ')},*/ /* Chin */
+/*{"mnk?/mlq?/...", HB_TAG('M','L','N',' ')},*/ /* Malinke */
+/*{"??", HB_TAG('N','C','R',' ')},*/ /* N-Cree */
+/*{"??", HB_TAG('N','H','C',' ')},*/ /* Norway House Cree */
+/*{"jpa?/sam?", HB_TAG('P','A','A',' ')},*/ /* Palestinian Aramaic */
+/*{"polyton", HB_TAG('P','G','R',' ')},*/ /* Polytonic Greek */
+/*{"??", HB_TAG('Q','I','N',' ')},*/ /* Asho Chin */
+/*{"??", HB_TAG('R','C','R',' ')},*/ /* R-Cree */
+/*{"chp?", HB_TAG('S','A','Y',' ')},*/ /* Sayisi */
+/*{"xan?", HB_TAG('S','E','K',' ')},*/ /* Sekota */
+/*{"ngo?", HB_TAG('S','X','T',' ')},*/ /* Sutu */
+/*{"??", HB_TAG('T','C','R',' ')},*/ /* TH-Cree */
+/*{"tnz?/tog?/toi?", HB_TAG('T','N','G',' ')},*/ /* Tonga */
+/*{"enh?/yrk?", HB_TAG('T','N','E',' ')},*/ /* Tundra Nenets */
+/*{"??", HB_TAG('W','C','R',' ')},*/ /* West-Cree */
+/*{"cre?", HB_TAG('Y','C','R',' ')},*/ /* Y-Cree */
/*{"??", HB_TAG('Y','I','C',' ')},*/ /* Yi Classic */
-/*{"zh-Latn-pinyin", HB_TAG('Z','H','P',' ')},*/ /* Chinese Phonetic */
+/*{"ii?/Yiii?", HB_TAG('Y','I','M',' ')},*/ /* Yi Modern */
+/*{"??", HB_TAG('Z','H','P',' ')},*/ /* Chinese Phonetic */
};
typedef struct {
@@ -888,14 +826,6 @@ hb_ot_tag_from_language (hb_language_t language)
}
}
- /*
- * The International Phonetic Alphabet is a variant tag in BCP-47,
- * which can be applied to any language.
- */
- if (strstr (lang_str, "-fonipa")) {
- return HB_TAG('I','P','P','H'); /* Phonetic transcription—IPA conventions */
- }
-
/* Find a language matching in the first component */
{
const LangTag *lang_tag;
@@ -934,15 +864,6 @@ hb_ot_tag_from_language (hb_language_t language)
return HB_OT_TAG_DEFAULT_LANGUAGE;
}
-/**
- * hb_ot_tag_to_language:
- *
- *
- *
- * Return value: (transfer none):
- *
- * Since: 0.9.2
- **/
hb_language_t
hb_ot_tag_to_language (hb_tag_t tag)
{
@@ -965,12 +886,6 @@ hb_ot_tag_to_language (hb_tag_t tag)
}
}
- /* struct LangTag has only room for 3-letter language tags. */
- switch (tag) {
- case HB_TAG('I','P','P','H'): /* Phonetic transcription—IPA conventions */
- return hb_language_from_string ("und-fonipa", -1);
- }
-
/* Else return a custom language in the form of "x-hbotABCD" */
{
unsigned char buf[11] = "x-hbot";
@@ -985,27 +900,4 @@ hb_ot_tag_to_language (hb_tag_t tag)
}
}
-#ifdef MAIN
-static inline void
-test_langs_sorted (void)
-{
- for (unsigned int i = 1; i < ARRAY_LENGTH (ot_languages); i++)
- {
- int c = lang_compare_first_component (ot_languages[i-1].language, ot_languages[i].language);
- if (c >= 0)
- {
- fprintf (stderr, "ot_languages not sorted at index %d: %s %d %s\n",
- i, ot_languages[i-1].language, c, ot_languages[i].language);
- abort();
- }
- }
-}
-
-int
-main (void)
-{
- test_langs_sorted ();
- return 0;
-}
-#endif
diff --git a/src/hb-ot-tag.h b/src/hb-ot-tag.h
index 54fb747..1bf12ab 100644
--- a/src/hb-ot-tag.h
+++ b/src/hb-ot-tag.h
@@ -39,18 +39,18 @@ HB_BEGIN_DECLS
#define HB_OT_TAG_DEFAULT_SCRIPT HB_TAG ('D', 'F', 'L', 'T')
#define HB_OT_TAG_DEFAULT_LANGUAGE HB_TAG ('d', 'f', 'l', 't')
-HB_EXTERN void
+void
hb_ot_tags_from_script (hb_script_t script,
hb_tag_t *script_tag_1,
hb_tag_t *script_tag_2);
-HB_EXTERN hb_script_t
+hb_script_t
hb_ot_tag_to_script (hb_tag_t tag);
-HB_EXTERN hb_tag_t
+hb_tag_t
hb_ot_tag_from_language (hb_language_t language);
-HB_EXTERN hb_language_t
+hb_language_t
hb_ot_tag_to_language (hb_tag_t tag);
diff --git a/src/hb-private.hh b/src/hb-private.hh
index d58a695..06b24a8 100644
--- a/src/hb-private.hh
+++ b/src/hb-private.hh
@@ -54,23 +54,6 @@
#include <stdarg.h>
-/* Compile-time custom allocator support. */
-
-#if defined(hb_malloc_impl) \
- && defined(hb_calloc_impl) \
- && defined(hb_realloc_impl) \
- && defined(hb_free_impl)
-extern "C" void* hb_malloc_impl(size_t size);
-extern "C" void* hb_calloc_impl(size_t nmemb, size_t size);
-extern "C" void* hb_realloc_impl(void *ptr, size_t size);
-extern "C" void hb_free_impl(void *ptr);
-#define malloc hb_malloc_impl
-#define calloc hb_calloc_impl
-#define realloc hb_realloc_impl
-#define free hb_free_impl
-#endif
-
-
/* Compiler attributes */
@@ -119,36 +102,6 @@ extern "C" void hb_free_impl(void *ptr);
#define HB_FUNC __func__
#endif
-/*
- * Borrowed from https://bugzilla.mozilla.org/show_bug.cgi?id=1215411
- * HB_FALLTHROUGH is an annotation to suppress compiler warnings about switch
- * cases that fall through without a break or return statement. HB_FALLTHROUGH
- * is only needed on cases that have code:
- *
- * switch (foo) {
- * case 1: // These cases have no code. No fallthrough annotations are needed.
- * case 2:
- * case 3:
- * foo = 4; // This case has code, so a fallthrough annotation is needed:
- * HB_FALLTHROUGH;
- * default:
- * return foo;
- * }
- */
-#if defined(__clang__) && __cplusplus >= 201103L
- /* clang's fallthrough annotations are only available starting in C++11. */
-# define HB_FALLTHROUGH [[clang::fallthrough]]
-#elif defined(_MSC_VER)
- /*
- * MSVC's __fallthrough annotations are checked by /analyze (Code Analysis):
- * https://msdn.microsoft.com/en-us/library/ms235402%28VS.80%29.aspx
- */
-# include <sal.h>
-# define HB_FALLTHROUGH __fallthrough
-#else
-# define HB_FALLTHROUGH /* FALLTHROUGH */
-#endif
-
#if defined(_WIN32) || defined(__CYGWIN__)
/* We need Windows Vista for both Uniscribe backend and for
* MemoryBarrier. We don't support compiling on Windows XP,
@@ -168,20 +121,15 @@ extern "C" void hb_free_impl(void *ptr);
# if defined(_WIN32_WCE)
/* Some things not defined on Windows CE. */
-# define strdup _strdup
-# define vsnprintf _vsnprintf
# define getenv(Name) NULL
-# if _WIN32_WCE < 0x800
-# define setlocale(Category, Locale) "C"
+# define setlocale(Category, Locale) "C"
static int errno = 0; /* Use something better? */
-# endif
# elif defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_PC_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP)
# define getenv(Name) NULL
# endif
-# if defined(_MSC_VER) && _MSC_VER < 1900
+# if (defined(__WIN32__) && !defined(__WINE__)) || defined(_MSC_VER)
# define snprintf _snprintf
-# elif defined(_MSC_VER) && _MSC_VER >= 1900
-# /* Covers VC++ Error for strdup being a deprecated POSIX name and to instead use _strdup instead */
+ /* Windows CE only has _strdup, while rest of Windows has both. */
# define strdup _strdup
# endif
#endif
@@ -244,9 +192,8 @@ static inline unsigned int ARRAY_LENGTH (const Type (&)[n]) { return n; }
#define _ASSERT_STATIC0(_line, _cond) _ASSERT_STATIC1 (_line, (_cond))
#define ASSERT_STATIC(_cond) _ASSERT_STATIC0 (__LINE__, (_cond))
-template <unsigned int cond> class hb_assert_constant_t {};
-
-#define ASSERT_STATIC_EXPR_ZERO(_cond) (0 * (unsigned int) sizeof (hb_assert_constant_t<_cond>))
+#define ASSERT_STATIC_EXPR(_cond)((void) sizeof (char[(_cond) ? 1 : -1]))
+#define ASSERT_STATIC_EXPR_ZERO(_cond) (0 * sizeof (char[(_cond) ? 1 : -1]))
#define _PASTE1(a,b) a##b
#define PASTE(a,b) _PASTE1(a,b)
@@ -299,8 +246,8 @@ ASSERT_STATIC (sizeof (hb_var_int_t) == 4);
/* Void! */
struct _hb_void_t {};
-typedef const _hb_void_t *hb_void_t;
-#define HB_VOID ((const _hb_void_t *) NULL)
+typedef const _hb_void_t &hb_void_t;
+#define HB_VOID (* (const _hb_void_t *) NULL)
/* Return the number of 1 bits in mask. */
static inline HB_CONST_FUNC unsigned int
@@ -612,15 +559,6 @@ static inline unsigned char TOLOWER (unsigned char c)
/* Debug */
-/* HB_NDEBUG disables some sanity checks that are very safe to disable and
- * should be disabled in production systems. If NDEBUG is defined, enable
- * HB_NDEBUG; but if it's desirable that normal assert()s (which are very
- * light-weight) to be enabled, then HB_DEBUG can be defined to disable
- * the costlier checks. */
-#ifdef NDEBUG
-#define HB_NDEBUG
-#endif
-
#ifndef HB_DEBUG
#define HB_DEBUG 0
#endif
@@ -800,7 +738,7 @@ template <typename T>
static inline void _hb_warn_no_return (bool returned)
{
if (unlikely (!returned)) {
- fprintf (stderr, "OUCH, returned with no call to return_trace(). This is a bug, please report.\n");
+ fprintf (stderr, "OUCH, returned with no call to TRACE_RETURN. This is a bug, please report.\n");
}
}
template <>
@@ -835,7 +773,7 @@ struct hb_auto_trace_t {
inline ret_t ret (ret_t v, unsigned int line = 0)
{
if (unlikely (returned)) {
- fprintf (stderr, "OUCH, double calls to return_trace(). This is a bug, please report.\n");
+ fprintf (stderr, "OUCH, double calls to TRACE_RETURN. This is a bug, please report.\n");
return v;
}
@@ -866,7 +804,7 @@ struct hb_auto_trace_t<0, ret_t> {
inline ret_t ret (ret_t v, unsigned int line HB_UNUSED = 0) { return v; }
};
-#define return_trace(RET) return trace.ret (RET, __LINE__)
+#define TRACE_RETURN(RET) trace.ret (RET, __LINE__)
/* Misc */
@@ -904,68 +842,51 @@ hb_in_ranges (T u, T lo1, T hi1, T lo2, T hi2, T lo3, T hi3)
}
-/* Enable bitwise ops on enums marked as flags_t */
-/* To my surprise, looks like the function resolver is happy to silently cast
- * one enum to another... So this doesn't provide the type-checking that I
- * originally had in mind... :(.
- *
- * For MSVC warnings, see: https://github.com/behdad/harfbuzz/pull/163
- */
-#ifdef _MSC_VER
-# pragma warning(disable:4200)
-# pragma warning(disable:4800)
-#endif
-#define HB_MARK_AS_FLAG_T(T) \
- extern "C++" { \
- static inline T operator | (T l, T r) { return T ((unsigned) l | (unsigned) r); } \
- static inline T operator & (T l, T r) { return T ((unsigned) l & (unsigned) r); } \
- static inline T operator ^ (T l, T r) { return T ((unsigned) l ^ (unsigned) r); } \
- static inline T operator ~ (T r) { return T (~(unsigned int) r); } \
- static inline T& operator |= (T &l, T r) { l = l | r; return l; } \
- static inline T& operator &= (T& l, T r) { l = l & r; return l; } \
- static inline T& operator ^= (T& l, T r) { l = l ^ r; return l; } \
- }
-
-
/* Useful for set-operations on small enums.
* For example, for testing "x ∈ {x1, x2, x3}" use:
- * (FLAG_SAFE(x) & (FLAG(x1) | FLAG(x2) | FLAG(x3)))
+ * (FLAG(x) & (FLAG(x1) | FLAG(x2) | FLAG(x3)))
*/
-#define FLAG(x) (ASSERT_STATIC_EXPR_ZERO ((x) < 32) + (1U << (x)))
-#define FLAG_SAFE(x) (1U << (x))
-#define FLAG_UNSAFE(x) ((x) < 32 ? FLAG_SAFE(x) : 0)
+#define FLAG(x) (1<<(x))
#define FLAG_RANGE(x,y) (ASSERT_STATIC_EXPR_ZERO ((x) < (y)) + FLAG(y+1) - FLAG(x))
template <typename T, typename T2> static inline void
-hb_stable_sort (T *array, unsigned int len, int(*compar)(const T *, const T *), T2 *array2)
+hb_bubble_sort (T *array, unsigned int len, int(*compar)(const T *, const T *), T2 *array2)
{
- for (unsigned int i = 1; i < len; i++)
- {
- unsigned int j = i;
- while (j && compar (&array[j - 1], &array[i]) > 0)
- j--;
- if (i == j)
- continue;
- /* Move item i to occupy place for item j, shift what's in between. */
- {
- T t = array[i];
- memmove (&array[j + 1], &array[j], (i - j) * sizeof (T));
- array[j] = t;
- }
- if (array2)
- {
- T2 t = array2[i];
- memmove (&array2[j + 1], &array2[j], (i - j) * sizeof (T2));
- array2[j] = t;
- }
- }
+ if (unlikely (!len))
+ return;
+
+ unsigned int k = len - 1;
+ do {
+ unsigned int new_k = 0;
+
+ for (unsigned int j = 0; j < k; j++)
+ if (compar (&array[j], &array[j+1]) > 0)
+ {
+ {
+ T t;
+ t = array[j];
+ array[j] = array[j + 1];
+ array[j + 1] = t;
+ }
+ if (array2)
+ {
+ T2 t;
+ t = array2[j];
+ array2[j] = array2[j + 1];
+ array2[j + 1] = t;
+ }
+
+ new_k = j;
+ }
+ k = new_k;
+ } while (k);
}
template <typename T> static inline void
-hb_stable_sort (T *array, unsigned int len, int(*compar)(const T *, const T *))
+hb_bubble_sort (T *array, unsigned int len, int(*compar)(const T *, const T *))
{
- hb_stable_sort (array, len, compar, (int *) NULL);
+ hb_bubble_sort (array, len, compar, (int *) NULL);
}
static inline hb_bool_t
@@ -1015,7 +936,5 @@ hb_options (void)
return _hb_options.opts;
}
-/* Size signifying variable-sized array */
-#define VAR 1
#endif /* HB_PRIVATE_HH */
diff --git a/src/hb-set-private.hh b/src/hb-set-private.hh
index 3c302b1..acba4e9 100644
--- a/src/hb-set-private.hh
+++ b/src/hb-set-private.hh
@@ -36,15 +36,7 @@
* "approximate member query". Conceptually these are like Bloom
* Filter and Quotient Filter, however, much smaller, faster, and
* designed to fit the requirements of our uses for glyph coverage
- * queries.
- *
- * Our filters are highly accurate if the lookup covers fairly local
- * set of glyphs, but fully flooded and ineffective if coverage is
- * all over the place.
- *
- * The frozen-set can be used instead of a digest, to trade more
- * memory for 100% accuracy, but in practice, that doesn't look like
- * an attractive trade-off.
+ * queries. As a result, our filters have much higher.
*/
template <typename mask_t, unsigned int shift>
@@ -362,6 +354,7 @@ struct hb_frozen_set_t
return;
unsigned int min = set.get_min ();
const elt_t &min_elt = set.elt (min);
+ const elt_t &max_elt = set.elt (max);
start = min & ~MASK;
count = max - start + 1;
diff --git a/src/hb-set.cc b/src/hb-set.cc
index cb7fcdb..59a0af4 100644
--- a/src/hb-set.cc
+++ b/src/hb-set.cc
@@ -35,7 +35,7 @@
*
* Return value: (transfer full):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_set_t *
hb_set_create (void)
@@ -55,7 +55,7 @@ hb_set_create (void)
*
* Return value: (transfer full):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_set_t *
hb_set_get_empty (void)
@@ -76,7 +76,7 @@ hb_set_get_empty (void)
*
* Return value: (transfer full):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_set_t *
hb_set_reference (hb_set_t *set)
@@ -88,7 +88,7 @@ hb_set_reference (hb_set_t *set)
* hb_set_destroy: (skip)
* @set: a set.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_set_destroy (hb_set_t *set)
@@ -110,7 +110,7 @@ hb_set_destroy (hb_set_t *set)
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_set_set_user_data (hb_set_t *set,
@@ -129,7 +129,7 @@ hb_set_set_user_data (hb_set_t *set,
*
* Return value: (transfer none):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void *
hb_set_get_user_data (hb_set_t *set,
@@ -147,7 +147,7 @@ hb_set_get_user_data (hb_set_t *set,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_set_allocation_successful (const hb_set_t *set HB_UNUSED)
@@ -161,7 +161,7 @@ hb_set_allocation_successful (const hb_set_t *set HB_UNUSED)
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_set_clear (hb_set_t *set)
@@ -177,7 +177,7 @@ hb_set_clear (hb_set_t *set)
*
* Return value:
*
- * Since: 0.9.7
+ * Since: 1.0
**/
hb_bool_t
hb_set_is_empty (const hb_set_t *set)
@@ -194,7 +194,7 @@ hb_set_is_empty (const hb_set_t *set)
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_set_has (const hb_set_t *set,
@@ -210,7 +210,7 @@ hb_set_has (const hb_set_t *set,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_set_add (hb_set_t *set,
@@ -227,7 +227,7 @@ hb_set_add (hb_set_t *set,
*
*
*
- * Since: 0.9.7
+ * Since: 1.0
**/
void
hb_set_add_range (hb_set_t *set,
@@ -244,7 +244,7 @@ hb_set_add_range (hb_set_t *set,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_set_del (hb_set_t *set,
@@ -261,7 +261,7 @@ hb_set_del (hb_set_t *set,
*
*
*
- * Since: 0.9.7
+ * Since: 1.0
**/
void
hb_set_del_range (hb_set_t *set,
@@ -280,7 +280,7 @@ hb_set_del_range (hb_set_t *set,
*
* Return value:
*
- * Since: 0.9.7
+ * Since: 1.0
**/
hb_bool_t
hb_set_is_equal (const hb_set_t *set,
@@ -296,7 +296,7 @@ hb_set_is_equal (const hb_set_t *set,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_set_set (hb_set_t *set,
@@ -312,7 +312,7 @@ hb_set_set (hb_set_t *set,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_set_union (hb_set_t *set,
@@ -328,7 +328,7 @@ hb_set_union (hb_set_t *set,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_set_intersect (hb_set_t *set,
@@ -344,7 +344,7 @@ hb_set_intersect (hb_set_t *set,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_set_subtract (hb_set_t *set,
@@ -360,7 +360,7 @@ hb_set_subtract (hb_set_t *set,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_set_symmetric_difference (hb_set_t *set,
@@ -375,7 +375,7 @@ hb_set_symmetric_difference (hb_set_t *set,
*
*
*
- * Since: 0.9.10
+ * Since: 1.0
**/
void
hb_set_invert (hb_set_t *set)
@@ -391,7 +391,7 @@ hb_set_invert (hb_set_t *set)
*
* Return value: set population.
*
- * Since: 0.9.7
+ * Since: 1.0
**/
unsigned int
hb_set_get_population (const hb_set_t *set)
@@ -407,7 +407,7 @@ hb_set_get_population (const hb_set_t *set)
*
* Return value: minimum of the set, or %HB_SET_VALUE_INVALID if set is empty.
*
- * Since: 0.9.7
+ * Since: 1.0
**/
hb_codepoint_t
hb_set_get_min (const hb_set_t *set)
@@ -423,7 +423,7 @@ hb_set_get_min (const hb_set_t *set)
*
* Return value: minimum of the set, or %HB_SET_VALUE_INVALID if set is empty.
*
- * Since: 0.9.7
+ * Since: 1.0
**/
hb_codepoint_t
hb_set_get_max (const hb_set_t *set)
@@ -440,7 +440,7 @@ hb_set_get_max (const hb_set_t *set)
*
* Return value: whether there was a next value.
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_set_next (const hb_set_t *set,
@@ -460,7 +460,7 @@ hb_set_next (const hb_set_t *set,
*
* Return value: whether there was a next range.
*
- * Since: 0.9.7
+ * Since: 1.0
**/
hb_bool_t
hb_set_next_range (const hb_set_t *set,
diff --git a/src/hb-set.h b/src/hb-set.h
index 2164c1a..bafdae9 100644
--- a/src/hb-set.h
+++ b/src/hb-set.h
@@ -36,117 +36,114 @@
HB_BEGIN_DECLS
-/*
- * Since: 0.9.21
- */
#define HB_SET_VALUE_INVALID ((hb_codepoint_t) -1)
typedef struct hb_set_t hb_set_t;
-HB_EXTERN hb_set_t *
+hb_set_t *
hb_set_create (void);
-HB_EXTERN hb_set_t *
+hb_set_t *
hb_set_get_empty (void);
-HB_EXTERN hb_set_t *
+hb_set_t *
hb_set_reference (hb_set_t *set);
-HB_EXTERN void
+void
hb_set_destroy (hb_set_t *set);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_set_set_user_data (hb_set_t *set,
hb_user_data_key_t *key,
void * data,
hb_destroy_func_t destroy,
hb_bool_t replace);
-HB_EXTERN void *
+void *
hb_set_get_user_data (hb_set_t *set,
hb_user_data_key_t *key);
/* Returns false if allocation has failed before */
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_set_allocation_successful (const hb_set_t *set);
-HB_EXTERN void
+void
hb_set_clear (hb_set_t *set);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_set_is_empty (const hb_set_t *set);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_set_has (const hb_set_t *set,
hb_codepoint_t codepoint);
/* Right now limited to 16-bit integers. Eventually will do full codepoint range, sans -1
* which we will use as a sentinel. */
-HB_EXTERN void
+void
hb_set_add (hb_set_t *set,
hb_codepoint_t codepoint);
-HB_EXTERN void
+void
hb_set_add_range (hb_set_t *set,
hb_codepoint_t first,
hb_codepoint_t last);
-HB_EXTERN void
+void
hb_set_del (hb_set_t *set,
hb_codepoint_t codepoint);
-HB_EXTERN void
+void
hb_set_del_range (hb_set_t *set,
hb_codepoint_t first,
hb_codepoint_t last);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_set_is_equal (const hb_set_t *set,
const hb_set_t *other);
-HB_EXTERN void
+void
hb_set_set (hb_set_t *set,
const hb_set_t *other);
-HB_EXTERN void
+void
hb_set_union (hb_set_t *set,
const hb_set_t *other);
-HB_EXTERN void
+void
hb_set_intersect (hb_set_t *set,
const hb_set_t *other);
-HB_EXTERN void
+void
hb_set_subtract (hb_set_t *set,
const hb_set_t *other);
-HB_EXTERN void
+void
hb_set_symmetric_difference (hb_set_t *set,
const hb_set_t *other);
-HB_EXTERN void
+void
hb_set_invert (hb_set_t *set);
-HB_EXTERN unsigned int
+unsigned int
hb_set_get_population (const hb_set_t *set);
/* Returns -1 if set empty. */
-HB_EXTERN hb_codepoint_t
+hb_codepoint_t
hb_set_get_min (const hb_set_t *set);
/* Returns -1 if set empty. */
-HB_EXTERN hb_codepoint_t
+hb_codepoint_t
hb_set_get_max (const hb_set_t *set);
/* Pass -1 in to get started. */
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_set_next (const hb_set_t *set,
hb_codepoint_t *codepoint);
/* Pass -1 for first and last to get started. */
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_set_next_range (const hb_set_t *set,
hb_codepoint_t *first,
hb_codepoint_t *last);
diff --git a/src/hb-shape-plan.cc b/src/hb-shape-plan.cc
index 56e2ea5..2166173 100644
--- a/src/hb-shape-plan.cc
+++ b/src/hb-shape-plan.cc
@@ -106,7 +106,7 @@ hb_shape_plan_plan (hb_shape_plan_t *shape_plan,
*
* Return value: (transfer full):
*
- * Since: 0.9.7
+ * Since: 1.0
**/
hb_shape_plan_t *
hb_shape_plan_create (hb_face_t *face,
@@ -126,9 +126,9 @@ hb_shape_plan_create (hb_face_t *face,
if (unlikely (!face))
face = hb_face_get_empty ();
- if (unlikely (!props))
+ if (unlikely (!props || hb_object_is_inert (face)))
return hb_shape_plan_get_empty ();
- if (num_user_features && !(features = (hb_feature_t *) calloc (num_user_features, sizeof (hb_feature_t))))
+ if (num_user_features && !(features = (hb_feature_t *) malloc (num_user_features * sizeof (hb_feature_t))))
return hb_shape_plan_get_empty ();
if (!(shape_plan = hb_object_create<hb_shape_plan_t> ())) {
free (features);
@@ -158,7 +158,7 @@ hb_shape_plan_create (hb_face_t *face,
*
* Return value: (transfer full):
*
- * Since: 0.9.7
+ * Since: 1.0
**/
hb_shape_plan_t *
hb_shape_plan_get_empty (void)
@@ -194,7 +194,7 @@ hb_shape_plan_get_empty (void)
*
* Return value: (transfer full):
*
- * Since: 0.9.7
+ * Since: 1.0
**/
hb_shape_plan_t *
hb_shape_plan_reference (hb_shape_plan_t *shape_plan)
@@ -208,7 +208,7 @@ hb_shape_plan_reference (hb_shape_plan_t *shape_plan)
*
*
*
- * Since: 0.9.7
+ * Since: 1.0
**/
void
hb_shape_plan_destroy (hb_shape_plan_t *shape_plan)
@@ -236,7 +236,7 @@ hb_shape_plan_destroy (hb_shape_plan_t *shape_plan)
*
* Return value:
*
- * Since: 0.9.7
+ * Since: 1.0
**/
hb_bool_t
hb_shape_plan_set_user_data (hb_shape_plan_t *shape_plan,
@@ -257,7 +257,7 @@ hb_shape_plan_set_user_data (hb_shape_plan_t *shape_plan,
*
* Return value: (transfer none):
*
- * Since: 0.9.7
+ * Since: 1.0
**/
void *
hb_shape_plan_get_user_data (hb_shape_plan_t *shape_plan,
@@ -279,7 +279,7 @@ hb_shape_plan_get_user_data (hb_shape_plan_t *shape_plan,
*
* Return value:
*
- * Since: 0.9.7
+ * Since: 1.0
**/
hb_bool_t
hb_shape_plan_execute (hb_shape_plan_t *shape_plan,
@@ -293,13 +293,9 @@ hb_shape_plan_execute (hb_shape_plan_t *shape_plan,
num_features,
shape_plan->shaper_func);
- if (unlikely (!buffer->len))
- return true;
-
- assert (!hb_object_is_inert (buffer));
- assert (buffer->content_type == HB_BUFFER_CONTENT_TYPE_UNICODE);
-
- if (unlikely (hb_object_is_inert (shape_plan)))
+ if (unlikely (hb_object_is_inert (shape_plan) ||
+ hb_object_is_inert (font) ||
+ hb_object_is_inert (buffer)))
return false;
assert (shape_plan->face_unsafe == font->face);
@@ -400,7 +396,7 @@ hb_non_global_user_features_present (const hb_feature_t *user_features,
*
* Return value: (transfer full):
*
- * Since: 0.9.7
+ * Since: 1.0
**/
hb_shape_plan_t *
hb_shape_plan_create_cached (hb_face_t *face,
@@ -457,10 +453,6 @@ retry:
hb_shape_plan_t *shape_plan = hb_shape_plan_create (face, props, user_features, num_user_features, shaper_list);
- /* Don't add to the cache if face is inert. */
- if (unlikely (hb_object_is_inert (face)))
- return shape_plan;
-
/* Don't add the plan to the cache if there were user features with non-global ranges */
if (hb_non_global_user_features_present (user_features, num_user_features))
@@ -491,7 +483,7 @@ retry:
*
* Return value: (transfer none):
*
- * Since: 0.9.7
+ * Since: 1.0
**/
const char *
hb_shape_plan_get_shaper (hb_shape_plan_t *shape_plan)
diff --git a/src/hb-shape-plan.h b/src/hb-shape-plan.h
index aa5e0c7..8f54552 100644
--- a/src/hb-shape-plan.h
+++ b/src/hb-shape-plan.h
@@ -38,49 +38,49 @@ HB_BEGIN_DECLS
typedef struct hb_shape_plan_t hb_shape_plan_t;
-HB_EXTERN hb_shape_plan_t *
+hb_shape_plan_t *
hb_shape_plan_create (hb_face_t *face,
const hb_segment_properties_t *props,
const hb_feature_t *user_features,
unsigned int num_user_features,
const char * const *shaper_list);
-HB_EXTERN hb_shape_plan_t *
+hb_shape_plan_t *
hb_shape_plan_create_cached (hb_face_t *face,
const hb_segment_properties_t *props,
const hb_feature_t *user_features,
unsigned int num_user_features,
const char * const *shaper_list);
-HB_EXTERN hb_shape_plan_t *
+hb_shape_plan_t *
hb_shape_plan_get_empty (void);
-HB_EXTERN hb_shape_plan_t *
+hb_shape_plan_t *
hb_shape_plan_reference (hb_shape_plan_t *shape_plan);
-HB_EXTERN void
+void
hb_shape_plan_destroy (hb_shape_plan_t *shape_plan);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_shape_plan_set_user_data (hb_shape_plan_t *shape_plan,
hb_user_data_key_t *key,
void * data,
hb_destroy_func_t destroy,
hb_bool_t replace);
-HB_EXTERN void *
+void *
hb_shape_plan_get_user_data (hb_shape_plan_t *shape_plan,
hb_user_data_key_t *key);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_shape_plan_execute (hb_shape_plan_t *shape_plan,
hb_font_t *font,
hb_buffer_t *buffer,
const hb_feature_t *features,
unsigned int num_features);
-HB_EXTERN const char *
+const char *
hb_shape_plan_get_shaper (hb_shape_plan_t *shape_plan);
diff --git a/src/hb-shape.cc b/src/hb-shape.cc
index 352d42c..9a59c08 100644
--- a/src/hb-shape.cc
+++ b/src/hb-shape.cc
@@ -33,17 +33,6 @@
#include "hb-buffer-private.hh"
#include "hb-font-private.hh"
-/**
- * SECTION:hb-shape
- * @title: Shaping
- * @short_description: Conversion of text strings into positioned glyphs
- * @include: hb.h
- *
- * Shaping is the central operation of HarfBuzz. Shaping operates on buffers,
- * which are sequences of Unicode characters that use the same font and have
- * the same text direction, script and language. After shaping the buffer
- * contains the output glyphs and their positions.
- **/
static bool
parse_space (const char **pp, const char *end)
@@ -209,18 +198,15 @@ parse_one_feature (const char **pp, const char *end, hb_feature_t *feature)
/**
* hb_feature_from_string:
- * @str: (array length=len) (element-type uint8_t): a string to parse
- * @len: length of @str, or -1 if string is %NULL terminated
- * @feature: (out): the #hb_feature_t to initialize with the parsed values
- *
- * Parses a string into a #hb_feature_t.
+ * @str: (array length=len):
+ * @len:
+ * @feature: (out) (optional):
*
- * TODO: document the syntax here.
+ *
*
- * Return value:
- * %true if @str is successfully parsed, %false otherwise.
+ * Return value:
*
- * Since: 0.9.5
+ * Since: 1.0
**/
hb_bool_t
hb_feature_from_string (const char *str, int len,
@@ -245,15 +231,13 @@ hb_feature_from_string (const char *str, int len,
/**
* hb_feature_to_string:
- * @feature: an #hb_feature_t to convert
- * @buf: (array length=size) (out): output string
- * @size: the allocated size of @buf
+ * @feature:
+ * @buf: (array length=size):
+ * @size:
*
- * Converts a #hb_feature_t into a %NULL-terminated string in the format
- * understood by hb_feature_from_string(). The client in responsible for
- * allocating big enough size for @buf, 128 bytes is more than enough.
+ *
*
- * Since: 0.9.5
+ * Since: 1.0
**/
void
hb_feature_to_string (hb_feature_t *feature,
@@ -306,12 +290,11 @@ void free_static_shaper_list (void)
/**
* hb_shape_list_shapers:
*
- * Retrieves the list of shapers supported by HarfBuzz.
+ *
*
- * Return value: (transfer none) (array zero-terminated=1): an array of
- * constant strings
+ * Return value: (transfer none):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
const char **
hb_shape_list_shapers (void)
@@ -350,21 +333,17 @@ retry:
/**
* hb_shape_full:
- * @font: an #hb_font_t to use for shaping
- * @buffer: an #hb_buffer_t to shape
- * @features: (array length=num_features) (allow-none): an array of user
- * specified #hb_feature_t or %NULL
- * @num_features: the length of @features array
- * @shaper_list: (array zero-terminated=1) (allow-none): a %NULL-terminated
- * array of shapers to use or %NULL
+ * @font: a font.
+ * @buffer: a buffer.
+ * @features: (array length=num_features):
+ * @num_features:
+ * @shaper_list: (array zero-terminated=1):
*
- * See hb_shape() for details. If @shaper_list is not %NULL, the specified
- * shapers will be used in the given order, otherwise the default shapers list
- * will be used.
+ *
*
- * Return value: %FALSE if all shapers failed, %TRUE otherwise
+ * Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_shape_full (hb_font_t *font,
@@ -373,6 +352,11 @@ hb_shape_full (hb_font_t *font,
unsigned int num_features,
const char * const *shaper_list)
{
+ if (unlikely (!buffer->len))
+ return true;
+
+ assert (buffer->content_type == HB_BUFFER_CONTENT_TYPE_UNICODE);
+
hb_shape_plan_t *shape_plan = hb_shape_plan_create_cached (font->face, &buffer->props, features, num_features, shaper_list);
hb_bool_t res = hb_shape_plan_execute (shape_plan, font, buffer, features, num_features);
hb_shape_plan_destroy (shape_plan);
@@ -384,19 +368,14 @@ hb_shape_full (hb_font_t *font,
/**
* hb_shape:
- * @font: an #hb_font_t to use for shaping
- * @buffer: an #hb_buffer_t to shape
- * @features: (array length=num_features) (allow-none): an array of user
- * specified #hb_feature_t or %NULL
- * @num_features: the length of @features array
- *
- * Shapes @buffer using @font turning its Unicode characters content to
- * positioned glyphs. If @features is not %NULL, it will be used to control the
- * features applied during shaping.
+ * @font: a font.
+ * @buffer: a buffer.
+ * @features: (array length=num_features):
+ * @num_features:
*
- * Return value: %FALSE if all shapers failed, %TRUE otherwise
+ *
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_shape (hb_font_t *font,
diff --git a/src/hb-shape.h b/src/hb-shape.h
index 53bb845..10a35cb 100644
--- a/src/hb-shape.h
+++ b/src/hb-shape.h
@@ -47,29 +47,32 @@ typedef struct hb_feature_t {
unsigned int end;
} hb_feature_t;
-HB_EXTERN hb_bool_t
+/* len=-1 means str is NUL-terminated */
+hb_bool_t
hb_feature_from_string (const char *str, int len,
hb_feature_t *feature);
-HB_EXTERN void
+/* Something like 128 bytes is more than enough.
+ * nul-terminates. */
+void
hb_feature_to_string (hb_feature_t *feature,
char *buf, unsigned int size);
-HB_EXTERN void
+void
hb_shape (hb_font_t *font,
hb_buffer_t *buffer,
const hb_feature_t *features,
unsigned int num_features);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_shape_full (hb_font_t *font,
hb_buffer_t *buffer,
const hb_feature_t *features,
unsigned int num_features,
const char * const *shaper_list);
-HB_EXTERN const char **
+const char **
hb_shape_list_shapers (void);
diff --git a/src/hb-shaper-list.hh b/src/hb-shaper-list.hh
index b0835d3..6c537d4 100644
--- a/src/hb-shaper-list.hh
+++ b/src/hb-shaper-list.hh
@@ -46,9 +46,6 @@ HB_SHAPER_IMPLEMENT (ot) /* <--- This is our main OpenType shaper. */
#ifdef HAVE_UNISCRIBE
HB_SHAPER_IMPLEMENT (uniscribe)
#endif
-#ifdef HAVE_DIRECTWRITE
-HB_SHAPER_IMPLEMENT (directwrite)
-#endif
#ifdef HAVE_CORETEXT
HB_SHAPER_IMPLEMENT (coretext)
#endif
diff --git a/src/hb-shaper.cc b/src/hb-shaper.cc
index b25566d..580b95c 100644
--- a/src/hb-shaper.cc
+++ b/src/hb-shaper.cc
@@ -64,7 +64,7 @@ retry:
}
/* Not found; allocate one. */
- shapers = (hb_shaper_pair_t *) calloc (1, sizeof (all_shapers));
+ shapers = (hb_shaper_pair_t *) malloc (sizeof (all_shapers));
if (unlikely (!shapers)) {
(void) hb_atomic_ptr_cmpexch (&static_shapers, NULL, &all_shapers[0]);
return (const hb_shaper_pair_t *) all_shapers;
diff --git a/src/hb-ucdn.cc b/src/hb-ucdn.cc
index b4a5833..5b53821 100644
--- a/src/hb-ucdn.cc
+++ b/src/hb-ucdn.cc
@@ -148,12 +148,6 @@ static const hb_script_t ucdn_script_translate[] =
HB_SCRIPT_SIDDHAM,
HB_SCRIPT_TIRHUTA,
HB_SCRIPT_WARANG_CITI,
- HB_SCRIPT_AHOM,
- HB_SCRIPT_ANATOLIAN_HIEROGLYPHS,
- HB_SCRIPT_HATRAN,
- HB_SCRIPT_MULTANI,
- HB_SCRIPT_OLD_HUNGARIAN,
- HB_SCRIPT_SIGNWRITING,
};
static hb_unicode_combining_class_t
diff --git a/src/hb-ucdn/Makefile.am b/src/hb-ucdn/Makefile.am
index 73b5502..0670b5c 100644
--- a/src/hb-ucdn/Makefile.am
+++ b/src/hb-ucdn/Makefile.am
@@ -2,9 +2,11 @@
noinst_LTLIBRARIES = libhb-ucdn.la
-include Makefile.sources
-libhb_ucdn_la_SOURCES = $(LIBHB_UCDN_sources)
+libhb_ucdn_la_SOURCES = \
+ ucdn.h \
+ ucdn.c \
+ unicodedata_db.h
libhb_ucdn_la_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_srcdir)/src \
diff --git a/src/hb-ucdn/Makefile.in b/src/hb-ucdn/Makefile.in
index 0177460..95f8ac6 100644
--- a/src/hb-ucdn/Makefile.in
+++ b/src/hb-ucdn/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -78,9 +78,9 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.sources $(srcdir)/Makefile.in \
- $(srcdir)/Makefile.am $(top_srcdir)/depcomp COPYING README
subdir = src/hb-ucdn
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/depcomp COPYING README
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
$(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \
@@ -95,8 +95,7 @@ CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LTLIBRARIES = $(noinst_LTLIBRARIES)
libhb_ucdn_la_DEPENDENCIES =
-am__objects_1 = libhb_ucdn_la-ucdn.lo
-am_libhb_ucdn_la_OBJECTS = $(am__objects_1)
+am_libhb_ucdn_la_OBJECTS = libhb_ucdn_la-ucdn.lo
libhb_ucdn_la_OBJECTS = $(am_libhb_ucdn_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -189,8 +188,6 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
-DIRECTWRITE_CXXFLAGS = @DIRECTWRITE_CXXFLAGS@
-DIRECTWRITE_LIBS = @DIRECTWRITE_LIBS@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
@@ -200,20 +197,15 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
-FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
-FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
-FREETYPE_DEPS = @FREETYPE_DEPS@
FREETYPE_LIBS = @FREETYPE_LIBS@
GIT = @GIT@
GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_DEPS = @GLIB_DEPS@
GLIB_LIBS = @GLIB_LIBS@
GLIB_MKENUMS = @GLIB_MKENUMS@
GOBJECT_CFLAGS = @GOBJECT_CFLAGS@
GOBJECT_LIBS = @GOBJECT_LIBS@
GRAPHITE2_CFLAGS = @GRAPHITE2_CFLAGS@
-GRAPHITE2_DEPS = @GRAPHITE2_DEPS@
GRAPHITE2_LIBS = @GRAPHITE2_LIBS@
GREP = @GREP@
GTKDOC_CHECK = @GTKDOC_CHECK@
@@ -337,12 +329,11 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
noinst_LTLIBRARIES = libhb-ucdn.la
-LIBHB_UCDN_sources = \
+libhb_ucdn_la_SOURCES = \
ucdn.h \
ucdn.c \
unicodedata_db.h
-libhb_ucdn_la_SOURCES = $(LIBHB_UCDN_sources)
libhb_ucdn_la_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_srcdir)/src \
@@ -354,7 +345,7 @@ all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.sources $(am__configure_deps)
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -375,7 +366,6 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(srcdir)/Makefile.sources:
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
diff --git a/src/hb-ucdn/Makefile.sources b/src/hb-ucdn/Makefile.sources
deleted file mode 100644
index d5f87b2..0000000
--- a/src/hb-ucdn/Makefile.sources
+++ /dev/null
@@ -1,4 +0,0 @@
-LIBHB_UCDN_sources = \
- ucdn.h \
- ucdn.c \
- unicodedata_db.h
diff --git a/src/hb-ucdn/ucdn.h b/src/hb-ucdn/ucdn.h
index 8354ae5..ec8085b 100644
--- a/src/hb-ucdn/ucdn.h
+++ b/src/hb-ucdn/ucdn.h
@@ -191,12 +191,6 @@ typedef unsigned __int64 uint64_t;
#define UCDN_SCRIPT_SIDDHAM 123
#define UCDN_SCRIPT_TIRHUTA 124
#define UCDN_SCRIPT_WARANG_CITI 125
-#define UCDN_SCRIPT_AHOM 126
-#define UCDN_SCRIPT_ANATOLIAN_HIEROGLYPHS 127
-#define UCDN_SCRIPT_HATRAN 128
-#define UCDN_SCRIPT_MULTANI 129
-#define UCDN_SCRIPT_OLD_HUNGARIAN 130
-#define UCDN_SCRIPT_SIGNWRITING 131
#define UCDN_GENERAL_CATEGORY_CC 0
#define UCDN_GENERAL_CATEGORY_CF 1
diff --git a/src/hb-ucdn/unicodedata_db.h b/src/hb-ucdn/unicodedata_db.h
index f458be1..a78d2e6 100644
--- a/src/hb-ucdn/unicodedata_db.h
+++ b/src/hb-ucdn/unicodedata_db.h
@@ -1,6 +1,6 @@
/* this file was generated by makeunicodedata.py 3.2 */
-#define UNIDATA_VERSION "8.0.0"
+#define UNIDATA_VERSION "7.0.0"
/* a list of unique database records */
static const UCDRecord ucd_records[] = {
{2, 0, 18, 0, 5, 0, 102},
@@ -141,7 +141,7 @@ static const UCDRecord ucd_records[] = {
{12, 34, 13, 0, 5, 0, 40},
{12, 220, 13, 0, 5, 0, 40},
{12, 220, 13, 0, 5, 0, 6},
- {13, 0, 11, 0, 5, 0, 6},
+ {13, 0, 11, 0, 5, 0, 0},
{21, 0, 11, 0, 5, 0, 6},
{12, 35, 13, 0, 5, 0, 40},
{6, 0, 4, 0, 5, 0, 6},
@@ -300,8 +300,7 @@ static const UCDRecord ucd_records[] = {
{21, 0, 0, 0, 5, 0, 25},
{15, 0, 0, 0, 5, 0, 25},
{26, 0, 18, 0, 5, 0, 25},
- {9, 0, 0, 0, 5, 0, 26},
- {5, 0, 0, 0, 5, 0, 26},
+ {7, 0, 0, 0, 5, 0, 26},
{17, 0, 18, 0, 5, 0, 27},
{7, 0, 0, 0, 5, 0, 27},
{21, 0, 0, 0, 5, 0, 27},
@@ -350,6 +349,7 @@ static const UCDRecord ucd_records[] = {
{13, 0, 0, 0, 5, 0, 45},
{7, 0, 0, 0, 5, 0, 46},
{7, 0, 0, 0, 5, 0, 55},
+ {10, 0, 0, 0, 5, 0, 55},
{13, 0, 0, 0, 5, 0, 55},
{15, 0, 0, 0, 5, 0, 55},
{26, 0, 18, 0, 5, 0, 55},
@@ -500,6 +500,7 @@ static const UCDRecord ucd_records[] = {
{15, 0, 18, 0, 2, 0, 0},
{26, 0, 0, 0, 2, 0, 33},
{7, 0, 0, 0, 2, 0, 35},
+ {2, 0, 18, 0, 2, 0, 35},
{2, 0, 18, 0, 2, 0, 102},
{7, 0, 0, 0, 2, 0, 36},
{6, 0, 0, 0, 2, 0, 36},
@@ -567,8 +568,10 @@ static const UCDRecord ucd_records[] = {
{6, 0, 0, 0, 5, 0, 85},
{12, 9, 13, 0, 5, 0, 85},
{13, 0, 0, 0, 5, 0, 85},
+ {2, 0, 18, 0, 2, 0, 24},
{4, 0, 0, 0, 5, 0, 102},
{3, 0, 0, 0, 4, 0, 102},
+ {2, 0, 18, 0, 4, 0, 102},
{12, 26, 13, 0, 5, 0, 5},
{25, 0, 9, 0, 5, 0, 5},
{24, 0, 4, 0, 5, 0, 6},
@@ -641,8 +644,6 @@ static const UCDRecord ucd_records[] = {
{15, 0, 3, 0, 5, 0, 120},
{7, 0, 3, 0, 5, 0, 116},
{15, 0, 3, 0, 5, 0, 116},
- {7, 0, 3, 0, 5, 0, 128},
- {15, 0, 3, 0, 5, 0, 128},
{7, 0, 3, 0, 5, 0, 63},
{15, 0, 3, 0, 5, 0, 63},
{21, 0, 18, 0, 5, 0, 63},
@@ -650,7 +651,6 @@ static const UCDRecord ucd_records[] = {
{21, 0, 3, 0, 5, 0, 75},
{7, 0, 3, 0, 5, 0, 97},
{7, 0, 3, 0, 5, 0, 96},
- {15, 0, 3, 0, 5, 0, 96},
{7, 0, 3, 0, 5, 0, 60},
{12, 0, 13, 0, 5, 0, 60},
{12, 220, 13, 0, 5, 0, 60},
@@ -680,9 +680,6 @@ static const UCDRecord ucd_records[] = {
{21, 0, 3, 0, 5, 0, 122},
{15, 0, 3, 0, 5, 0, 122},
{7, 0, 3, 0, 5, 0, 90},
- {9, 0, 3, 0, 5, 0, 130},
- {5, 0, 3, 0, 5, 0, 130},
- {15, 0, 3, 0, 5, 0, 130},
{15, 0, 11, 0, 5, 0, 6},
{10, 0, 0, 0, 5, 0, 93},
{12, 0, 13, 0, 5, 0, 93},
@@ -715,7 +712,6 @@ static const UCDRecord ucd_records[] = {
{7, 0, 0, 0, 5, 0, 99},
{10, 9, 0, 0, 5, 0, 99},
{21, 0, 0, 0, 5, 0, 99},
- {12, 7, 13, 0, 5, 0, 99},
{13, 0, 0, 0, 5, 0, 99},
{15, 0, 0, 0, 5, 0, 18},
{7, 0, 0, 0, 5, 0, 108},
@@ -724,8 +720,6 @@ static const UCDRecord ucd_records[] = {
{10, 9, 0, 0, 5, 0, 108},
{12, 7, 13, 0, 5, 0, 108},
{21, 0, 0, 0, 5, 0, 108},
- {7, 0, 0, 0, 5, 0, 129},
- {21, 0, 0, 0, 5, 0, 129},
{7, 0, 0, 0, 5, 0, 109},
{12, 0, 13, 0, 5, 0, 109},
{10, 0, 0, 0, 5, 0, 109},
@@ -763,14 +757,6 @@ static const UCDRecord ucd_records[] = {
{10, 9, 0, 0, 5, 0, 101},
{12, 7, 13, 0, 5, 0, 101},
{13, 0, 0, 0, 5, 0, 101},
- {7, 0, 0, 0, 5, 0, 126},
- {12, 0, 13, 0, 5, 0, 126},
- {10, 0, 0, 0, 5, 0, 126},
- {12, 9, 13, 0, 5, 0, 126},
- {13, 0, 0, 0, 5, 0, 126},
- {15, 0, 0, 0, 5, 0, 126},
- {21, 0, 0, 0, 5, 0, 126},
- {26, 0, 0, 0, 5, 0, 126},
{9, 0, 0, 0, 5, 0, 125},
{5, 0, 0, 0, 5, 0, 125},
{13, 0, 0, 0, 5, 0, 125},
@@ -781,7 +767,6 @@ static const UCDRecord ucd_records[] = {
{14, 0, 0, 0, 5, 0, 62},
{21, 0, 0, 0, 5, 0, 62},
{7, 0, 0, 0, 5, 0, 80},
- {7, 0, 0, 0, 5, 0, 127},
{7, 0, 0, 0, 5, 0, 115},
{13, 0, 0, 0, 5, 0, 115},
{21, 0, 0, 0, 5, 0, 115},
@@ -809,9 +794,6 @@ static const UCDRecord ucd_records[] = {
{12, 230, 13, 0, 5, 0, 2},
{25, 0, 0, 0, 5, 0, 0},
{13, 0, 8, 0, 5, 0, 0},
- {26, 0, 0, 0, 5, 0, 131},
- {12, 0, 13, 0, 5, 0, 131},
- {21, 0, 0, 0, 5, 0, 131},
{7, 0, 3, 0, 5, 0, 113},
{15, 0, 3, 0, 5, 0, 113},
{12, 220, 13, 0, 5, 0, 113},
@@ -1579,12 +1561,6 @@ static const Reindex nfc_last[] = {
#define UCDN_SCRIPT_SIDDHAM 123
#define UCDN_SCRIPT_TIRHUTA 124
#define UCDN_SCRIPT_WARANG_CITI 125
-#define UCDN_SCRIPT_AHOM 126
-#define UCDN_SCRIPT_ANATOLIAN_HIEROGLYPHS 127
-#define UCDN_SCRIPT_HATRAN 128
-#define UCDN_SCRIPT_MULTANI 129
-#define UCDN_SCRIPT_OLD_HUNGARIAN 130
-#define UCDN_SCRIPT_SIGNWRITING 131
#define UCDN_GENERAL_CATEGORY_CC 0
#define UCDN_GENERAL_CATEGORY_CF 1
@@ -1647,251 +1623,252 @@ static const Reindex nfc_last[] = {
static const unsigned char index0[] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 53, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 54, 55, 56, 56, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
- 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
- 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 66, 67, 67, 67,
- 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 52, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 88, 90,
- 91, 92, 93, 94, 95, 96, 97, 98, 88, 99, 88, 88, 88, 88, 88, 100, 100,
- 100, 101, 102, 103, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 104, 104,
- 104, 104, 105, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 106, 106, 107, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 108, 108, 109, 110, 88, 88, 88, 111, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 112, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 113, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 122, 123, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 124, 88, 88, 88, 88, 88, 125, 88, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 88, 88, 88, 88, 88, 88, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 136, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 137, 138, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 139, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 52, 52, 141, 140, 140, 140, 140, 142, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 142, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 143, 144, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 145, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 145,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 54, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 55, 56, 57, 57, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, 69, 70, 70,
+ 71, 69, 70, 70, 72, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 70, 96, 70, 97,
+ 98, 99, 100, 101, 102, 103, 70, 104, 70, 105, 70, 70, 70, 70, 70, 106,
+ 106, 106, 107, 108, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 109, 109,
+ 109, 109, 110, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 111, 111, 112, 113, 70, 70, 70, 114, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 115, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 116, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 117, 118,
+ 119, 120, 121, 122, 123, 124, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 125, 70, 70, 70, 70, 70, 126, 70, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 70, 70, 70, 70, 70, 70, 70, 52, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 136,
+ 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 137, 138,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 76, 76, 140, 139, 139, 139, 139, 141,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 141, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 142, 143, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 73, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 144, 73,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 144,
};
static const unsigned short index1[] = {
@@ -1917,323 +1894,319 @@ static const unsigned short index1[] = {
180, 181, 182, 175, 183, 184, 185, 186, 186, 187, 188, 189, 190, 191,
192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 201, 202, 203, 204,
205, 206, 207, 208, 209, 210, 211, 120, 212, 213, 214, 215, 215, 216,
- 217, 218, 219, 220, 221, 120, 222, 223, 224, 225, 226, 227, 228, 229,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 120, 240, 241,
- 242, 243, 244, 241, 245, 246, 247, 248, 249, 120, 250, 251, 252, 253,
- 254, 255, 256, 257, 257, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 120, 265, 266, 267, 268, 269, 269, 268, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 120, 279, 280, 281, 282, 282, 282, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 293, 293, 296, 297,
- 294, 298, 299, 300, 301, 302, 303, 120, 304, 305, 305, 305, 305, 305,
- 306, 307, 308, 309, 310, 311, 120, 120, 120, 120, 312, 313, 314, 315,
- 316, 317, 318, 319, 320, 321, 322, 323, 120, 120, 120, 120, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 332, 332, 332, 334, 335, 336,
- 337, 338, 339, 340, 339, 339, 339, 341, 342, 343, 344, 345, 120, 120,
- 120, 120, 346, 346, 346, 346, 346, 347, 348, 349, 350, 351, 352, 353,
- 354, 355, 356, 346, 357, 358, 350, 359, 360, 360, 360, 360, 361, 362,
- 363, 363, 363, 363, 363, 364, 365, 365, 365, 365, 365, 365, 365, 365,
- 365, 365, 365, 365, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
- 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 367, 367, 367, 367,
- 367, 367, 367, 367, 367, 368, 369, 368, 367, 367, 367, 367, 367, 368,
- 367, 367, 367, 367, 368, 369, 368, 367, 369, 367, 367, 367, 367, 367,
- 367, 367, 368, 367, 367, 367, 367, 367, 367, 367, 367, 370, 371, 372,
- 373, 374, 367, 367, 375, 376, 377, 377, 377, 377, 377, 377, 377, 377,
- 377, 377, 378, 379, 380, 381, 381, 381, 381, 381, 381, 381, 381, 381,
- 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
- 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
- 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
- 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
- 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 382, 381, 381,
- 383, 384, 384, 385, 386, 386, 386, 386, 386, 386, 386, 386, 386, 387,
- 388, 389, 390, 391, 392, 120, 393, 393, 394, 120, 395, 395, 396, 120,
- 397, 398, 399, 120, 400, 400, 400, 400, 400, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 415, 415, 415,
- 416, 415, 415, 415, 415, 415, 415, 120, 415, 415, 415, 415, 415, 417,
- 381, 381, 381, 381, 381, 381, 381, 381, 418, 120, 419, 419, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 427, 427, 428, 429, 120, 430, 430,
- 430, 430, 430, 431, 430, 430, 430, 432, 433, 434, 435, 435, 435, 435,
- 436, 436, 437, 438, 439, 439, 439, 439, 439, 439, 440, 441, 442, 443,
- 444, 445, 446, 447, 446, 447, 448, 449, 450, 451, 120, 120, 120, 120,
- 120, 120, 120, 120, 452, 453, 453, 453, 453, 453, 454, 455, 456, 457,
- 458, 459, 460, 461, 462, 463, 464, 465, 465, 465, 466, 467, 468, 469,
- 470, 470, 470, 470, 471, 472, 473, 474, 475, 475, 475, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 484, 484, 485, 120, 120, 120, 120,
- 120, 120, 120, 120, 486, 120, 487, 488, 489, 490, 491, 492, 54, 54, 54,
- 54, 493, 494, 56, 56, 56, 56, 56, 495, 496, 497, 54, 498, 54, 54, 54,
- 499, 56, 56, 56, 500, 501, 502, 503, 504, 504, 504, 505, 506, 27, 27, 27,
- 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 507, 508, 27,
- 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 509, 510, 511, 512, 509, 510,
- 509, 510, 511, 512, 509, 513, 509, 510, 509, 511, 509, 514, 509, 514,
- 509, 514, 515, 516, 517, 518, 519, 520, 509, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 56, 542, 543, 544, 543, 545, 120, 120, 546, 547, 548, 549, 550,
- 120, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 563, 565, 566, 567, 568, 569, 570, 571, 572, 573, 572, 574, 575,
- 572, 576, 572, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
- 588, 589, 590, 591, 592, 587, 587, 593, 594, 595, 596, 597, 587, 587,
- 598, 578, 599, 600, 587, 587, 601, 587, 587, 572, 602, 603, 572, 604,
- 605, 606, 607, 607, 607, 607, 607, 607, 607, 607, 608, 572, 572, 609,
- 610, 578, 578, 611, 572, 572, 572, 572, 577, 612, 572, 572, 613, 572,
- 572, 572, 572, 614, 120, 120, 120, 572, 613, 120, 120, 615, 615, 615,
- 615, 615, 616, 616, 617, 618, 618, 618, 618, 618, 618, 618, 618, 618,
- 619, 615, 615, 620, 620, 620, 620, 620, 620, 620, 620, 620, 621, 620,
- 620, 620, 620, 621, 572, 620, 620, 622, 572, 623, 573, 624, 625, 626,
- 627, 573, 572, 622, 576, 572, 578, 628, 629, 625, 630, 572, 572, 572,
- 572, 631, 572, 572, 572, 632, 633, 572, 572, 572, 572, 572, 634, 572,
- 635, 572, 634, 636, 637, 620, 620, 638, 620, 620, 620, 572, 572, 572,
- 572, 572, 572, 572, 639, 572, 572, 576, 572, 572, 640, 641, 615, 642,
- 642, 643, 572, 572, 572, 572, 572, 644, 645, 646, 647, 648, 649, 578,
- 578, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
- 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
- 650, 650, 650, 650, 650, 578, 578, 578, 578, 578, 578, 578, 578, 578,
- 578, 578, 578, 578, 578, 578, 578, 651, 652, 652, 653, 587, 587, 578,
- 654, 601, 655, 656, 657, 658, 659, 660, 661, 578, 662, 587, 663, 664,
- 665, 666, 647, 578, 578, 590, 654, 666, 667, 668, 669, 587, 587, 587,
- 587, 670, 671, 587, 587, 587, 587, 672, 673, 674, 647, 675, 676, 572,
- 572, 572, 572, 572, 572, 578, 578, 677, 678, 679, 573, 572, 572, 680,
- 572, 572, 572, 681, 572, 572, 572, 572, 682, 572, 683, 684, 120, 120,
- 685, 120, 120, 686, 686, 686, 686, 686, 687, 688, 688, 688, 688, 688,
- 689, 690, 691, 692, 693, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
- 694, 695, 696, 697, 698, 698, 698, 698, 699, 700, 701, 701, 701, 701,
- 701, 701, 701, 702, 703, 704, 367, 367, 369, 120, 369, 369, 369, 369,
- 369, 369, 369, 369, 705, 705, 705, 705, 706, 707, 708, 709, 710, 711,
- 533, 712, 713, 120, 120, 120, 120, 120, 120, 120, 714, 714, 714, 715,
- 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 716, 120, 714, 714,
- 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714,
- 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 717, 120, 120, 120,
- 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 729, 729,
- 729, 729, 729, 729, 729, 729, 730, 731, 732, 733, 733, 733, 733, 733,
- 733, 733, 733, 733, 733, 734, 735, 736, 736, 736, 736, 737, 738, 365,
- 365, 365, 365, 365, 365, 365, 365, 365, 365, 739, 740, 741, 736, 736,
- 736, 742, 718, 718, 718, 718, 719, 120, 733, 733, 743, 743, 743, 744,
- 745, 746, 741, 741, 741, 747, 748, 749, 743, 743, 743, 750, 745, 746,
- 741, 741, 741, 741, 751, 749, 741, 752, 753, 753, 753, 753, 753, 754,
- 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 741, 741, 741,
- 755, 756, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 757,
- 741, 741, 741, 755, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758,
- 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758,
- 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758,
- 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758,
- 758, 758, 759, 760, 572, 572, 572, 572, 572, 572, 572, 572, 758, 758,
- 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758,
- 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 759, 760, 760, 760,
- 760, 760, 761, 761, 762, 761, 761, 761, 761, 761, 761, 761, 761, 761,
+ 217, 218, 219, 220, 221, 120, 222, 223, 224, 120, 225, 226, 227, 228,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 120, 239, 240,
+ 241, 242, 243, 240, 244, 245, 246, 247, 248, 120, 249, 250, 251, 252,
+ 253, 254, 255, 256, 256, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 120, 264, 265, 266, 267, 268, 268, 267, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 120, 278, 279, 280, 281, 281, 281, 281, 282, 283, 284,
+ 285, 120, 286, 287, 288, 289, 290, 291, 292, 293, 291, 291, 294, 295,
+ 292, 296, 297, 298, 299, 300, 301, 120, 302, 303, 303, 303, 303, 303,
+ 304, 305, 306, 307, 308, 309, 120, 120, 120, 120, 310, 311, 312, 313,
+ 314, 315, 316, 317, 318, 319, 320, 321, 120, 120, 120, 120, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 330, 330, 330, 332, 333, 334,
+ 335, 336, 337, 338, 337, 337, 337, 339, 340, 341, 342, 343, 120, 120,
+ 120, 120, 344, 344, 344, 344, 344, 345, 346, 347, 348, 349, 350, 351,
+ 352, 353, 354, 344, 355, 356, 348, 357, 358, 358, 358, 358, 359, 360,
+ 361, 361, 361, 361, 361, 362, 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
+ 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 365, 365, 365, 365,
+ 365, 365, 365, 365, 365, 366, 367, 366, 365, 365, 365, 365, 365, 366,
+ 365, 365, 365, 365, 366, 367, 366, 365, 367, 365, 365, 365, 365, 365,
+ 365, 365, 366, 365, 365, 365, 365, 365, 365, 365, 365, 368, 369, 370,
+ 371, 372, 365, 365, 373, 374, 375, 375, 375, 375, 375, 375, 375, 375,
+ 375, 375, 376, 120, 377, 378, 378, 378, 378, 378, 378, 378, 378, 378,
+ 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
+ 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
+ 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
+ 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
+ 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 379, 378, 378,
+ 380, 381, 381, 382, 383, 383, 383, 383, 383, 383, 383, 383, 383, 384,
+ 385, 386, 387, 388, 389, 120, 390, 390, 391, 120, 392, 392, 393, 120,
+ 394, 395, 396, 120, 397, 397, 397, 397, 397, 397, 398, 399, 400, 401,
+ 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 412, 412, 412,
+ 413, 412, 412, 412, 412, 412, 412, 120, 412, 412, 412, 412, 412, 414,
+ 378, 378, 378, 378, 378, 378, 378, 378, 415, 120, 416, 416, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 424, 424, 425, 426, 120, 427, 427,
+ 427, 427, 427, 428, 429, 429, 430, 431, 432, 433, 434, 434, 434, 434,
+ 435, 435, 436, 437, 438, 438, 438, 438, 438, 438, 439, 440, 441, 442,
+ 443, 444, 445, 446, 445, 446, 447, 448, 449, 450, 120, 120, 120, 120,
+ 120, 120, 120, 120, 451, 452, 452, 452, 452, 452, 453, 454, 455, 456,
+ 457, 458, 459, 460, 461, 462, 463, 464, 464, 464, 465, 466, 467, 468,
+ 469, 469, 469, 469, 470, 471, 472, 473, 474, 474, 474, 474, 475, 476,
+ 477, 478, 479, 480, 481, 482, 483, 483, 483, 484, 120, 120, 120, 120,
+ 120, 120, 120, 120, 485, 120, 486, 487, 488, 489, 490, 491, 54, 54, 54,
+ 54, 492, 493, 56, 56, 56, 56, 56, 494, 495, 496, 54, 497, 54, 54, 54,
+ 498, 56, 56, 56, 499, 500, 501, 502, 503, 503, 503, 504, 505, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 506, 507, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 508, 509, 510, 511, 508, 509,
+ 508, 509, 510, 511, 508, 512, 508, 509, 508, 510, 508, 513, 508, 513,
+ 508, 513, 514, 515, 516, 517, 518, 519, 508, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538,
+ 539, 540, 56, 541, 542, 543, 542, 544, 120, 120, 545, 546, 547, 548, 549,
+ 120, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
+ 563, 562, 564, 565, 566, 567, 568, 569, 570, 571, 572, 571, 573, 574,
+ 571, 575, 571, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586,
+ 587, 588, 589, 590, 591, 586, 586, 592, 593, 594, 595, 596, 586, 586,
+ 597, 577, 598, 599, 586, 586, 600, 586, 586, 571, 601, 602, 571, 603,
+ 604, 605, 606, 606, 606, 606, 606, 606, 606, 606, 607, 571, 571, 608,
+ 609, 577, 577, 610, 571, 571, 571, 571, 576, 611, 571, 571, 612, 571,
+ 571, 571, 571, 613, 120, 120, 120, 571, 612, 120, 120, 614, 614, 614,
+ 614, 614, 615, 615, 616, 617, 617, 617, 617, 617, 617, 617, 617, 617,
+ 618, 614, 614, 619, 619, 619, 619, 619, 619, 619, 619, 619, 620, 619,
+ 619, 619, 619, 620, 571, 619, 619, 621, 571, 622, 572, 623, 624, 625,
+ 626, 572, 571, 621, 575, 571, 577, 627, 628, 624, 629, 571, 571, 571,
+ 571, 630, 571, 571, 571, 631, 632, 571, 571, 571, 571, 571, 633, 571,
+ 634, 571, 633, 635, 636, 619, 619, 637, 619, 619, 619, 571, 571, 571,
+ 571, 571, 571, 571, 638, 571, 571, 575, 571, 571, 639, 640, 614, 641,
+ 641, 642, 571, 571, 571, 571, 571, 643, 644, 645, 646, 647, 648, 577,
+ 577, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649,
+ 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649,
+ 649, 649, 649, 649, 649, 577, 577, 577, 577, 577, 577, 577, 577, 577,
+ 577, 577, 577, 577, 577, 577, 577, 650, 651, 651, 652, 586, 586, 577,
+ 653, 600, 654, 655, 656, 657, 658, 659, 660, 577, 661, 586, 662, 663,
+ 664, 665, 646, 577, 577, 589, 653, 665, 666, 667, 668, 586, 586, 586,
+ 586, 669, 670, 586, 586, 586, 586, 671, 672, 673, 646, 674, 675, 571,
+ 571, 571, 571, 571, 571, 577, 577, 676, 677, 678, 572, 571, 571, 679,
+ 571, 571, 571, 680, 571, 571, 571, 571, 681, 571, 682, 683, 120, 120,
+ 120, 120, 120, 684, 684, 684, 684, 684, 685, 686, 686, 686, 686, 686,
+ 687, 688, 689, 690, 691, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
+ 692, 693, 694, 695, 696, 696, 696, 696, 697, 698, 699, 699, 699, 699,
+ 699, 699, 699, 700, 701, 702, 365, 365, 367, 120, 367, 367, 367, 367,
+ 367, 367, 367, 367, 703, 703, 703, 703, 704, 705, 706, 707, 708, 709,
+ 532, 710, 711, 120, 120, 120, 120, 120, 120, 120, 712, 712, 712, 713,
+ 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 714, 120, 712, 712,
+ 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712,
+ 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 715, 120, 120, 120,
+ 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 727, 727,
+ 727, 727, 727, 727, 727, 727, 728, 729, 730, 731, 731, 731, 731, 731,
+ 731, 731, 731, 731, 731, 732, 733, 734, 734, 734, 734, 735, 736, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363, 363, 737, 738, 739, 734, 734,
+ 734, 740, 716, 716, 716, 716, 717, 120, 731, 731, 741, 741, 741, 742,
+ 743, 744, 739, 739, 739, 745, 746, 747, 741, 741, 741, 748, 743, 744,
+ 739, 739, 739, 739, 749, 747, 739, 750, 751, 751, 751, 751, 751, 752,
+ 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 739, 739, 739,
+ 753, 754, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 755,
+ 739, 739, 739, 753, 756, 757, 757, 757, 757, 757, 757, 757, 757, 757,
+ 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757,
+ 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757,
+ 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757,
+ 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757,
+ 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757,
+ 757, 757, 757, 757, 757, 757, 758, 759, 571, 571, 571, 571, 571, 571,
+ 571, 571, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757,
+ 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 760,
+ 759, 759, 759, 759, 759, 759, 761, 761, 762, 761, 761, 761, 761, 761,
761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761,
761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761,
761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761,
761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761,
- 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 763,
- 764, 764, 764, 764, 764, 764, 765, 120, 766, 766, 766, 766, 766, 767,
- 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
+ 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761,
+ 761, 761, 761, 763, 764, 764, 764, 764, 764, 764, 765, 120, 766, 766,
+ 766, 766, 766, 767, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
- 768, 768, 768, 768, 768, 769, 768, 768, 770, 771, 120, 120, 101, 101,
- 101, 101, 101, 772, 773, 774, 101, 101, 101, 775, 776, 776, 776, 776,
- 776, 776, 776, 776, 777, 778, 779, 120, 64, 64, 780, 781, 782, 27, 783,
- 27, 27, 27, 27, 27, 27, 27, 784, 785, 27, 786, 787, 27, 27, 788, 789,
- 120, 120, 120, 120, 120, 120, 120, 790, 791, 792, 793, 794, 794, 795,
- 796, 797, 798, 799, 799, 799, 799, 799, 799, 800, 120, 801, 802, 802,
- 802, 802, 802, 803, 804, 805, 806, 807, 808, 809, 809, 810, 811, 812,
- 813, 814, 814, 815, 816, 817, 817, 818, 819, 820, 821, 365, 365, 365,
- 822, 823, 824, 824, 824, 824, 824, 825, 826, 827, 828, 829, 830, 831,
- 346, 350, 832, 833, 833, 833, 833, 833, 834, 835, 120, 836, 837, 838,
- 839, 346, 346, 840, 841, 842, 842, 842, 842, 842, 842, 843, 844, 845,
- 120, 120, 846, 847, 848, 849, 120, 850, 850, 850, 120, 369, 369, 54, 54,
- 54, 54, 54, 851, 852, 120, 853, 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 847, 847, 847, 847, 854, 855, 856, 857, 365, 365, 365, 365, 365,
- 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
- 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
- 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
- 365, 365, 365, 365, 365, 858, 120, 366, 366, 859, 860, 366, 366, 366,
- 366, 366, 861, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862,
- 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862,
- 862, 862, 862, 862, 862, 862, 862, 863, 863, 863, 863, 863, 863, 863,
- 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863,
- 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 758, 758, 758,
- 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 759, 758, 758, 758,
- 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 864, 760, 760, 760,
- 760, 865, 120, 866, 867, 121, 868, 869, 870, 871, 121, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128, 128, 872, 873, 874, 120, 875,
- 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 876, 120, 120, 128, 128, 128, 128, 128, 128, 128, 128, 877,
- 128, 128, 128, 128, 128, 128, 120, 120, 120, 120, 120, 128, 878, 879,
- 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892,
- 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 893, 894, 895, 896, 897, 898, 899, 899, 900, 901, 902, 902,
- 903, 904, 905, 906, 905, 905, 905, 905, 907, 908, 908, 908, 909, 910,
- 910, 910, 911, 912, 913, 120, 914, 915, 916, 915, 915, 917, 915, 915,
- 918, 915, 919, 915, 919, 120, 120, 120, 120, 915, 915, 915, 915, 915,
- 915, 915, 915, 915, 915, 915, 915, 915, 915, 915, 920, 921, 922, 922,
- 922, 922, 922, 923, 607, 924, 924, 924, 924, 924, 924, 925, 926, 927,
- 928, 572, 929, 930, 120, 120, 120, 120, 120, 607, 607, 607, 607, 607,
- 931, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 932, 932, 932, 933, 934, 934, 934, 934, 934, 934, 935,
- 120, 936, 937, 937, 938, 939, 939, 939, 939, 940, 120, 941, 941, 942,
- 943, 944, 944, 944, 944, 945, 946, 947, 947, 947, 948, 949, 949, 949,
- 949, 950, 949, 951, 120, 120, 120, 120, 120, 952, 952, 952, 952, 952,
- 953, 953, 953, 953, 953, 954, 954, 954, 954, 954, 954, 955, 955, 955,
- 956, 957, 958, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 959,
- 959, 959, 959, 959, 120, 960, 960, 960, 960, 960, 960, 961, 962, 120,
+ 768, 768, 768, 768, 768, 768, 768, 768, 768, 769, 768, 768, 770, 771,
+ 120, 120, 101, 101, 101, 101, 101, 772, 773, 774, 101, 101, 101, 775,
+ 776, 776, 776, 776, 776, 776, 776, 776, 777, 778, 779, 120, 64, 64, 780,
+ 781, 782, 27, 783, 27, 27, 27, 27, 27, 27, 27, 784, 785, 27, 786, 787,
+ 27, 27, 788, 789, 120, 120, 120, 120, 120, 120, 120, 790, 791, 792, 793,
+ 794, 794, 795, 796, 797, 798, 799, 799, 799, 799, 799, 799, 800, 120,
+ 801, 802, 802, 802, 802, 802, 803, 804, 805, 806, 807, 808, 809, 809,
+ 810, 811, 812, 813, 814, 814, 815, 816, 817, 817, 818, 819, 820, 821,
+ 363, 363, 363, 822, 823, 824, 824, 824, 824, 824, 825, 826, 827, 828,
+ 829, 830, 831, 344, 348, 832, 833, 833, 833, 833, 833, 834, 835, 120,
+ 836, 837, 838, 839, 344, 344, 840, 841, 842, 842, 842, 842, 842, 842,
+ 843, 844, 845, 120, 120, 846, 847, 848, 849, 120, 850, 850, 850, 120,
+ 367, 367, 54, 54, 54, 54, 54, 851, 852, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 847, 847, 847, 847, 853, 854, 855, 856, 857,
+ 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
+ 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
+ 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
+ 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
+ 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
+ 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 859,
+ 120, 364, 364, 860, 861, 364, 364, 364, 364, 364, 862, 863, 120, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963,
- 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963,
- 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 964,
- 120, 963, 963, 965, 120, 963, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 966, 967, 968,
- 968, 968, 968, 969, 970, 971, 971, 972, 973, 974, 974, 975, 976, 977,
- 977, 977, 978, 979, 980, 120, 120, 120, 120, 120, 120, 981, 981, 982,
- 983, 984, 984, 985, 986, 987, 987, 987, 988, 120, 120, 120, 120, 120,
- 120, 120, 120, 989, 989, 989, 989, 990, 990, 990, 991, 992, 992, 993,
- 992, 992, 992, 992, 992, 994, 995, 996, 997, 998, 998, 999, 1000, 1001,
- 120, 1002, 1003, 1004, 1004, 1004, 1005, 1006, 1006, 1006, 1007, 120,
- 120, 120, 120, 1008, 1009, 1008, 1008, 1010, 1011, 1012, 120, 1013, 1013,
- 1013, 1013, 1013, 1013, 1014, 1015, 1016, 1016, 1017, 1018, 1019, 1019,
- 1020, 1021, 1022, 1022, 1023, 1024, 120, 1025, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
- 1026, 1027, 120, 120, 120, 120, 120, 120, 1028, 1028, 1028, 1028, 1028,
- 1028, 1029, 120, 1030, 1030, 1030, 1030, 1030, 1030, 1031, 1032, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 1033, 1033, 1033, 1034, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 120, 1035, 1036, 1036, 1036, 1036, 1036,
- 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 120, 1044, 1045, 1046,
- 1046, 1046, 1046, 1046, 1047, 1048, 1049, 120, 1050, 1050, 1050, 1051,
- 1052, 1053, 1054, 1055, 1055, 1055, 1056, 1057, 1058, 1059, 1060, 120,
- 1061, 1061, 1061, 1061, 1062, 120, 1063, 1064, 1064, 1064, 1064, 1064,
- 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 120, 1074, 1074,
- 1075, 1074, 1074, 1076, 1077, 1078, 120, 120, 120, 120, 120, 120, 120,
- 120, 1079, 1080, 1081, 1082, 1081, 1083, 1084, 1084, 1084, 1084, 1084,
- 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1093, 1094, 1095,
- 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1102, 120, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 120, 864, 863, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 120, 120, 120, 864, 120, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 1103, 1103, 1103, 1103, 1103, 1103, 1104, 1105, 1106, 120, 1107, 1108,
+ 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 864, 865,
+ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 867, 868, 868, 868,
+ 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868,
+ 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868,
+ 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868,
+ 869, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868,
+ 870, 759, 759, 759, 759, 871, 120, 872, 873, 121, 874, 875, 876, 877,
+ 121, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 878,
+ 879, 880, 120, 881, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 882, 120, 120, 128, 128, 128, 128, 128,
+ 128, 128, 128, 883, 128, 128, 128, 128, 128, 128, 120, 120, 120, 120,
+ 120, 128, 884, 885, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894,
+ 895, 896, 897, 898, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 899, 900, 901, 902, 903, 904, 905, 905,
+ 906, 907, 908, 908, 909, 910, 911, 912, 911, 911, 911, 911, 913, 914,
+ 914, 914, 915, 916, 916, 916, 917, 918, 919, 120, 920, 921, 922, 921,
+ 921, 923, 921, 921, 924, 921, 925, 921, 925, 120, 120, 120, 120, 921,
+ 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921,
+ 926, 927, 928, 928, 928, 928, 928, 929, 606, 930, 930, 930, 930, 930,
+ 930, 931, 932, 933, 934, 571, 935, 936, 120, 120, 120, 120, 120, 606,
+ 606, 606, 606, 606, 937, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 120, 120, 938, 938, 938, 939, 940, 940, 940,
+ 940, 940, 940, 941, 120, 942, 943, 943, 944, 945, 945, 945, 945, 946,
+ 120, 947, 947, 948, 949, 950, 950, 950, 950, 951, 952, 953, 953, 953,
+ 954, 955, 955, 955, 955, 956, 955, 957, 120, 120, 120, 120, 120, 958,
+ 958, 958, 958, 958, 959, 959, 959, 959, 959, 960, 960, 960, 960, 960,
+ 960, 961, 961, 961, 962, 963, 964, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 965, 965, 965, 965, 965, 120, 966, 966, 966, 966, 966,
+ 966, 967, 968, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 120, 120, 969, 969, 969, 969, 969, 969, 969,
+ 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969,
+ 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969,
+ 969, 969, 969, 970, 120, 969, 969, 971, 120, 969, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 1109, 1109, 1109, 1109, 1109, 1110, 1111,
- 1112, 1113, 1114, 1114, 1115, 120, 120, 120, 120, 1116, 1116, 1116, 1116,
- 1116, 1116, 1117, 1118, 1119, 120, 1120, 1121, 120, 120, 120, 120, 1122,
- 1122, 1122, 1122, 1122, 1123, 1124, 120, 1125, 1126, 120, 120, 120, 120,
- 120, 120, 1127, 1127, 1127, 1128, 1129, 1130, 1131, 1132, 120, 120, 120,
+ 120, 972, 973, 974, 974, 974, 974, 975, 976, 977, 977, 978, 979, 980,
+ 980, 981, 982, 983, 983, 983, 984, 985, 986, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 987, 987, 988, 989, 990, 990, 990, 991, 120,
+ 120, 120, 120, 120, 120, 120, 120, 992, 992, 992, 992, 993, 993, 993,
+ 994, 120, 120, 120, 120, 120, 120, 120, 120, 995, 996, 997, 998, 999,
+ 999, 1000, 1001, 1002, 120, 1003, 1004, 1005, 1005, 1005, 1006, 1007,
+ 1007, 1007, 1008, 120, 120, 120, 120, 1009, 1010, 1009, 1009, 1011, 1012,
+ 1013, 120, 1014, 1014, 1014, 1014, 1014, 1014, 1015, 1016, 1017, 1017,
+ 1018, 1019, 1020, 1020, 1021, 1022, 1023, 1023, 1024, 1025, 120, 1026,
+ 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 1027, 1027, 1027, 1027,
+ 1027, 1027, 1027, 1027, 1027, 1028, 120, 120, 120, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 1029,
+ 1029, 1029, 1030, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 1031, 1032, 1032, 1032, 1032, 1032, 1032, 1033,
+ 1034, 1035, 1036, 1037, 1038, 1039, 120, 1040, 1041, 1042, 1042, 1042,
+ 1042, 1042, 1043, 1044, 1045, 120, 1046, 1046, 1046, 1047, 1048, 1049,
+ 1050, 1051, 1051, 1051, 1052, 1053, 1054, 1055, 1056, 120, 1057, 1057,
+ 1057, 1057, 1058, 120, 1059, 1060, 1060, 1060, 1060, 1060, 1061, 1062,
+ 1063, 1064, 1065, 1066, 1067, 1068, 1069, 120, 1070, 1070, 1071, 1070,
+ 1070, 1072, 1073, 1074, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 1075, 1075, 1075, 1075, 1075, 1076, 1077, 1078, 1079,
+ 1080, 1081, 1082, 1083, 1084, 1084, 1085, 1086, 1087, 1088, 1089, 1090,
+ 1091, 1092, 1093, 1093, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 1133,
- 1133, 1133, 1133, 1134, 1134, 1134, 1134, 1135, 1136, 1137, 1138, 120,
+ 120, 120, 120, 120, 120, 120, 120, 120, 120, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1095, 1096, 1097, 120, 1098, 1099, 120, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 120, 120, 120, 1139, 1139, 1139, 1139,
- 1139, 1139, 1139, 1140, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
- 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
- 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
- 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
- 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1142, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 120, 1143, 1143, 1143, 1143, 1143, 1143,
- 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1144, 1145, 120, 1141, 1141,
- 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
- 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1146, 120,
+ 120, 1100, 1100, 1100, 1100, 1100, 1101, 1102, 1103, 1104, 1105, 120,
+ 120, 120, 120, 120, 120, 1106, 1106, 1106, 1106, 1106, 1106, 1107, 1108,
+ 1109, 120, 1110, 1111, 120, 120, 120, 120, 1112, 1112, 1112, 1112, 1112,
+ 1113, 1114, 120, 1115, 1116, 120, 120, 120, 120, 120, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 120, 120, 1147, 1147, 1147, 1147, 1147,
- 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
- 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
- 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1148, 120, 120, 120, 120,
+ 120, 120, 120, 1117, 1117, 1117, 1117, 1118, 1118, 1118, 1118, 1119,
+ 1120, 1121, 1122, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 1123,
+ 1123, 1123, 1123, 1123, 1123, 1123, 1124, 1125, 1125, 1125, 1125, 1125,
+ 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125,
+ 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125,
+ 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125,
+ 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1126, 120,
+ 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 1127, 1127, 1127,
+ 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1128, 1129,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 120, 120, 1149, 1149, 1149, 1149, 1149,
- 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
- 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
- 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1150,
+ 120, 120, 120, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130,
+ 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130,
+ 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130,
+ 1130, 1130, 1130, 1130, 1131, 120, 120, 120, 120, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 120, 120, 120, 776, 776, 776, 776, 776,
+ 120, 120, 120, 120, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
- 776, 776, 776, 776, 776, 776, 1151, 1152, 1152, 1152, 1153, 1154, 1155,
- 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 1156, 1156,
- 1156, 1157, 1158, 120, 1159, 1159, 1159, 1159, 1159, 1159, 1160, 1161,
- 1162, 120, 1163, 1164, 1165, 1159, 1159, 1166, 1159, 1159, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 1167, 1167, 1167,
- 1167, 1167, 1167, 1167, 1167, 1168, 120, 1169, 1170, 1170, 1170, 1170,
- 1171, 120, 1172, 1173, 1174, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 1175, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 120, 1176, 1176, 1176, 1176, 1176, 1176,
- 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1177, 1176, 1178, 1176, 1179,
- 1176, 1180, 1181, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
- 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
- 607, 607, 1182, 120, 607, 607, 607, 607, 1183, 1184, 607, 607, 607, 607,
- 607, 607, 1185, 1186, 1187, 1188, 1189, 1190, 607, 607, 607, 1191, 607,
- 607, 607, 607, 607, 607, 607, 1192, 120, 120, 927, 927, 927, 927, 927,
- 927, 927, 927, 1193, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 572,
- 572, 572, 572, 572, 572, 572, 572, 572, 572, 614, 120, 922, 922, 1194,
+ 776, 1132, 1133, 1133, 1133, 1134, 1135, 1136, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 120, 120, 1137, 1137, 1137, 1138, 1139, 120,
+ 1140, 1140, 1140, 1140, 1140, 1140, 1141, 1142, 1143, 120, 1144, 1145,
+ 1146, 1140, 1140, 1147, 1140, 1140, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 120, 120, 1148, 1148, 1148, 1148, 1148, 1148,
+ 1148, 1148, 1149, 120, 1150, 1151, 1151, 1151, 1151, 1152, 120, 1153,
+ 1154, 1155, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+ 1156, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 1195, 1195, 1195, 1196, 1197, 1197, 1198, 1195, 1195,
- 1199, 1200, 1197, 1197, 1195, 1195, 1195, 1196, 1197, 1197, 1201, 1202,
- 1203, 1199, 1204, 1205, 1197, 1195, 1195, 1195, 1196, 1197, 1197, 1206,
- 1207, 1208, 1209, 1197, 1197, 1197, 1210, 1211, 1212, 1213, 1197, 1197,
- 1198, 1195, 1195, 1199, 1197, 1197, 1197, 1195, 1195, 1195, 1196, 1197,
- 1197, 1198, 1195, 1195, 1199, 1197, 1197, 1197, 1195, 1195, 1195, 1196,
- 1197, 1197, 1198, 1195, 1195, 1199, 1197, 1197, 1197, 1195, 1195, 1195,
- 1196, 1197, 1197, 1214, 1195, 1195, 1195, 1215, 1197, 1197, 1216, 1217,
- 1195, 1195, 1218, 1197, 1197, 1219, 1198, 1195, 1195, 1220, 1197, 1197,
- 1221, 1222, 1195, 1195, 1223, 1197, 1197, 1197, 1224, 1195, 1195, 1195,
- 1215, 1197, 1197, 1216, 1225, 1226, 1226, 1226, 1226, 1226, 1226, 1227,
- 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227,
- 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227,
- 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1228, 1228, 1228, 1228, 1228,
- 1228, 1229, 1230, 1228, 1228, 1228, 1228, 1228, 1231, 1232, 1227, 1233,
- 1234, 120, 1235, 1236, 1228, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237,
- 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237,
- 1237, 1238, 1239, 1240, 120, 120, 120, 120, 120, 1241, 128, 128, 128,
- 1242, 1243, 1244, 1245, 1246, 1247, 1242, 1248, 1242, 1244, 1244, 1249,
- 128, 1250, 128, 1251, 1252, 1250, 128, 1251, 120, 120, 120, 120, 120,
- 120, 1253, 120, 572, 572, 572, 572, 572, 929, 572, 572, 572, 572, 572,
- 572, 572, 572, 572, 572, 572, 572, 929, 120, 572, 614, 1254, 572, 1254,
- 572, 1254, 572, 572, 572, 681, 120, 616, 1255, 618, 618, 618, 1256, 618,
- 618, 618, 618, 618, 618, 618, 1257, 618, 618, 618, 618, 618, 1258, 120,
- 120, 120, 120, 120, 120, 120, 120, 1259, 607, 607, 607, 1260, 120, 741,
- 741, 741, 741, 741, 1261, 741, 1262, 1263, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+ 1157, 1157, 1157, 1157, 1158, 1157, 1159, 1157, 1160, 1157, 1161, 1162,
+ 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 606, 606, 606,
+ 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
+ 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 1163,
+ 120, 606, 606, 606, 606, 1164, 1165, 606, 606, 606, 606, 606, 606, 1166,
+ 1167, 1168, 1169, 1170, 1171, 606, 606, 606, 1172, 606, 606, 606, 606,
+ 606, 1163, 120, 120, 120, 120, 933, 933, 933, 933, 933, 933, 933, 933,
+ 1173, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 571, 571, 571, 571,
+ 571, 571, 571, 571, 571, 571, 613, 120, 928, 928, 1174, 120, 120, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572,
- 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572,
- 572, 572, 572, 572, 1264, 572, 572, 572, 572, 572, 572, 572, 572, 572,
- 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572,
- 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572,
- 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 1265, 572, 572, 572,
- 572, 1266, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572,
- 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572,
- 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 1267, 120, 572,
- 1268, 929, 120, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572,
- 572, 572, 572, 929, 120, 572, 572, 572, 572, 572, 572, 572, 572, 572,
- 572, 1268, 120, 120, 120, 120, 120, 572, 929, 572, 572, 572, 572, 572,
- 572, 572, 120, 572, 684, 572, 572, 572, 572, 572, 120, 572, 572, 572,
- 681, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 572,
- 1267, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 1268,
- 120, 120, 120, 120, 120, 120, 120, 1267, 120, 120, 120, 120, 120, 120,
- 120, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758,
- 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 1269,
- 760, 760, 760, 760, 760, 758, 758, 758, 758, 758, 758, 1270, 760, 758,
- 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758,
- 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 759, 758,
- 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758,
- 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758,
- 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758,
- 758, 758, 758, 758, 758, 864, 760, 760, 760, 760, 760, 760, 760, 760,
- 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760,
- 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760,
- 760, 760, 760, 760, 760, 760, 760, 758, 758, 758, 759, 760, 760, 760,
- 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760,
- 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760,
- 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760,
- 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760,
- 1271, 1272, 120, 120, 120, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
- 1273, 1273, 1273, 1273, 1273, 120, 120, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 120, 120, 879, 879, 879, 879, 879, 879,
- 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879,
- 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 120, 120, 863, 863,
- 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863,
- 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863,
- 863, 1274,
+ 1175, 1175, 1175, 1176, 1177, 1177, 1178, 1175, 1175, 1179, 1180, 1177,
+ 1177, 1175, 1175, 1175, 1176, 1177, 1177, 1181, 1182, 1183, 1179, 1184,
+ 1185, 1177, 1175, 1175, 1175, 1176, 1177, 1177, 1186, 1187, 1188, 1189,
+ 1177, 1177, 1177, 1190, 1191, 1192, 1193, 1177, 1177, 1178, 1175, 1175,
+ 1179, 1177, 1177, 1177, 1175, 1175, 1175, 1176, 1177, 1177, 1178, 1175,
+ 1175, 1179, 1177, 1177, 1177, 1175, 1175, 1175, 1176, 1177, 1177, 1178,
+ 1175, 1175, 1179, 1177, 1177, 1177, 1175, 1175, 1175, 1176, 1177, 1177,
+ 1194, 1175, 1175, 1175, 1195, 1177, 1177, 1196, 1197, 1175, 1175, 1198,
+ 1177, 1177, 1199, 1178, 1175, 1175, 1200, 1177, 1177, 1201, 1202, 1175,
+ 1175, 1203, 1177, 1177, 1177, 1204, 1175, 1175, 1175, 1195, 1177, 1177,
+ 1196, 1205, 1206, 1206, 1206, 1206, 1206, 1206, 1207, 1207, 1207, 1207,
+ 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207,
+ 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1208, 1209, 1210, 120,
+ 120, 120, 120, 120, 1211, 128, 128, 128, 1212, 1213, 1214, 1215, 1216,
+ 1217, 1212, 1218, 1212, 1214, 1214, 1219, 128, 1220, 128, 1221, 1222,
+ 1220, 128, 1221, 120, 120, 120, 120, 120, 120, 1223, 120, 571, 571, 571,
+ 571, 571, 935, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
+ 571, 935, 120, 571, 613, 1224, 571, 1224, 571, 1224, 571, 571, 571, 680,
+ 120, 615, 1225, 617, 617, 617, 1226, 617, 617, 617, 617, 617, 617, 617,
+ 1227, 617, 617, 617, 617, 617, 1228, 120, 120, 120, 120, 120, 120, 120,
+ 120, 1229, 606, 606, 606, 1230, 120, 739, 739, 739, 739, 739, 1231, 739,
+ 1232, 1233, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 120, 120, 120, 120, 571, 571, 571, 571, 571,
+ 1234, 571, 571, 571, 571, 571, 571, 571, 571, 571, 680, 571, 571, 571,
+ 571, 571, 571, 571, 571, 571, 613, 1235, 571, 571, 571, 571, 120, 571,
+ 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
+ 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
+ 571, 571, 613, 571, 571, 571, 571, 571, 571, 571, 571, 571, 612, 571,
+ 571, 571, 571, 571, 1236, 571, 571, 571, 571, 1237, 571, 571, 571, 571,
+ 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
+ 571, 1238, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
+ 571, 571, 571, 571, 571, 120, 120, 571, 1234, 935, 120, 571, 571, 571,
+ 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 935, 120, 571,
+ 571, 571, 571, 571, 571, 571, 571, 571, 571, 1234, 120, 120, 120, 120,
+ 120, 571, 935, 571, 571, 571, 571, 571, 571, 571, 120, 571, 683, 571,
+ 571, 571, 571, 571, 120, 571, 571, 571, 680, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 757, 757, 757, 757, 757, 757, 757, 757, 757,
+ 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757,
+ 757, 757, 757, 1239, 759, 759, 759, 759, 759, 757, 757, 757, 757, 757,
+ 757, 760, 759, 756, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757,
+ 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757,
+ 757, 757, 758, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759,
+ 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759,
+ 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759,
+ 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759,
+ 759, 759, 759, 759, 759, 759, 759, 868, 868, 868, 869, 759, 759, 759,
+ 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759,
+ 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759,
+ 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759,
+ 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759,
+ 1240, 1241, 120, 120, 120, 1242, 1242, 1242, 1242, 1242, 1242, 1242,
+ 1242, 1242, 1242, 1242, 1242, 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 120, 120, 120, 885, 885, 885, 885, 885, 885,
+ 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
+ 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 120, 120, 866, 866,
+ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
+ 866, 1243,
};
static const unsigned short index2[] = {
@@ -2316,110 +2289,109 @@ static const unsigned short index2[] = {
161, 160, 160, 160, 160, 160, 160, 160, 160, 160, 161, 160, 160, 160,
161, 160, 160, 160, 160, 160, 64, 64, 162, 162, 162, 162, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 64, 163, 163, 163, 163, 163, 163,
- 163, 163, 163, 164, 164, 164, 64, 64, 165, 64, 126, 126, 126, 126, 126,
- 64, 64, 64, 64, 64, 64, 137, 120, 120, 137, 120, 120, 137, 120, 120, 120,
- 137, 137, 137, 166, 167, 168, 120, 120, 120, 137, 120, 120, 137, 137,
- 120, 120, 120, 120, 120, 169, 169, 169, 170, 171, 171, 171, 171, 171,
- 171, 171, 171, 171, 171, 171, 171, 171, 171, 169, 170, 172, 171, 170,
- 170, 170, 169, 169, 169, 169, 169, 169, 169, 169, 170, 170, 170, 170,
- 173, 170, 170, 171, 78, 136, 174, 174, 169, 169, 169, 171, 171, 169, 169,
- 84, 84, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 176, 177, 171,
- 171, 171, 171, 171, 171, 178, 179, 180, 180, 64, 178, 178, 178, 178, 178,
- 178, 178, 178, 64, 64, 178, 178, 64, 64, 178, 178, 178, 178, 178, 178,
- 178, 178, 178, 178, 178, 178, 178, 178, 64, 178, 178, 178, 178, 178, 178,
- 178, 64, 178, 64, 64, 64, 178, 178, 178, 178, 64, 64, 181, 178, 180, 180,
- 180, 179, 179, 179, 179, 64, 64, 180, 180, 64, 64, 180, 180, 182, 178,
- 64, 64, 64, 64, 64, 64, 64, 64, 180, 64, 64, 64, 64, 178, 178, 64, 178,
- 178, 178, 179, 179, 64, 64, 183, 183, 183, 183, 183, 183, 183, 183, 183,
- 183, 178, 178, 184, 184, 185, 185, 185, 185, 185, 185, 186, 184, 64, 64,
- 64, 64, 64, 187, 187, 188, 64, 189, 189, 189, 189, 189, 189, 64, 64, 64,
- 64, 189, 189, 64, 64, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
- 189, 189, 189, 189, 64, 189, 189, 189, 189, 189, 189, 189, 64, 189, 189,
- 64, 189, 189, 64, 189, 189, 64, 64, 190, 64, 188, 188, 188, 187, 187, 64,
- 64, 64, 64, 187, 187, 64, 64, 187, 187, 191, 64, 64, 64, 187, 64, 64, 64,
- 64, 64, 64, 64, 189, 189, 189, 189, 64, 189, 64, 64, 64, 64, 64, 64, 64,
- 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 187, 187, 189, 189,
- 189, 187, 64, 64, 64, 193, 193, 194, 64, 195, 195, 195, 195, 195, 195,
- 195, 195, 195, 64, 195, 195, 195, 64, 195, 195, 195, 195, 195, 195, 195,
- 195, 195, 195, 195, 195, 195, 195, 64, 195, 195, 195, 195, 195, 195, 195,
- 64, 195, 195, 64, 195, 195, 195, 195, 195, 64, 64, 196, 195, 194, 194,
- 194, 193, 193, 193, 193, 193, 64, 193, 193, 194, 64, 194, 194, 197, 64,
- 64, 195, 64, 64, 64, 64, 64, 64, 64, 195, 195, 193, 193, 64, 64, 198,
- 198, 198, 198, 198, 198, 198, 198, 198, 198, 199, 200, 64, 64, 64, 64,
- 64, 64, 64, 195, 64, 64, 64, 64, 64, 64, 64, 201, 202, 202, 64, 203, 203,
- 203, 203, 203, 203, 203, 203, 64, 64, 203, 203, 64, 64, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 64, 203, 203, 203,
- 203, 203, 203, 203, 64, 203, 203, 64, 203, 203, 203, 203, 203, 64, 64,
- 204, 203, 202, 201, 202, 201, 201, 201, 201, 64, 64, 202, 202, 64, 64,
- 202, 202, 205, 64, 64, 64, 64, 64, 64, 64, 64, 201, 202, 64, 64, 64, 64,
- 203, 203, 64, 203, 203, 203, 201, 201, 64, 64, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 207, 203, 208, 208, 208, 208, 208, 208, 64, 64,
- 209, 210, 64, 210, 210, 210, 210, 210, 210, 64, 64, 64, 210, 210, 210,
- 64, 210, 210, 210, 210, 64, 64, 64, 210, 210, 64, 210, 64, 210, 210, 64,
- 64, 64, 210, 210, 64, 64, 64, 210, 210, 210, 210, 210, 210, 210, 210,
- 210, 210, 64, 64, 64, 64, 211, 211, 209, 211, 211, 64, 64, 64, 211, 211,
- 211, 64, 211, 211, 211, 212, 64, 64, 210, 64, 64, 64, 64, 64, 64, 211,
- 64, 64, 64, 64, 64, 64, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
- 214, 214, 214, 215, 215, 215, 215, 215, 215, 216, 215, 64, 64, 64, 64,
- 64, 217, 218, 218, 218, 64, 219, 219, 219, 219, 219, 219, 219, 219, 64,
- 219, 219, 219, 64, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219,
- 219, 219, 219, 219, 219, 64, 64, 64, 219, 217, 217, 217, 218, 218, 218,
- 218, 64, 217, 217, 217, 64, 217, 217, 217, 220, 64, 64, 64, 64, 64, 64,
- 64, 221, 222, 64, 219, 219, 219, 64, 64, 64, 64, 64, 219, 219, 217, 217,
- 64, 64, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 224, 224, 224,
- 224, 224, 224, 224, 225, 64, 226, 227, 227, 64, 228, 228, 228, 228, 228,
- 228, 228, 228, 64, 228, 228, 228, 64, 228, 228, 228, 228, 228, 228, 228,
- 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 64, 228, 228, 228,
- 228, 228, 64, 64, 229, 228, 227, 230, 227, 227, 227, 227, 227, 64, 230,
- 227, 227, 64, 227, 227, 226, 231, 64, 64, 64, 64, 64, 64, 64, 227, 227,
- 64, 64, 64, 64, 64, 64, 64, 228, 64, 228, 228, 226, 226, 64, 64, 232,
- 232, 232, 232, 232, 232, 232, 232, 232, 232, 64, 228, 228, 64, 64, 64,
- 64, 64, 64, 233, 234, 234, 64, 235, 235, 235, 235, 235, 235, 235, 235,
- 64, 235, 235, 235, 64, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
- 235, 235, 235, 235, 235, 235, 235, 64, 64, 235, 234, 234, 234, 233, 233,
- 233, 233, 64, 234, 234, 234, 64, 234, 234, 234, 236, 235, 64, 64, 64, 64,
- 64, 64, 64, 64, 234, 64, 64, 64, 64, 64, 64, 64, 235, 235, 235, 233, 233,
- 64, 64, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 238, 238, 238,
- 238, 238, 238, 64, 64, 64, 239, 235, 235, 235, 235, 235, 235, 64, 64,
- 240, 240, 64, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
- 241, 241, 241, 241, 241, 241, 64, 64, 64, 241, 241, 241, 241, 241, 241,
- 241, 241, 64, 241, 241, 241, 241, 241, 241, 241, 241, 241, 64, 241, 64,
- 64, 64, 64, 242, 64, 64, 64, 64, 240, 240, 240, 243, 243, 243, 64, 243,
- 64, 240, 240, 240, 240, 240, 240, 240, 240, 64, 64, 64, 64, 64, 64, 244,
- 244, 244, 244, 244, 244, 244, 244, 244, 244, 64, 64, 240, 240, 245, 64,
- 64, 64, 64, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 247, 246, 246, 247, 247, 247, 247, 248, 248, 249, 64,
- 64, 64, 64, 250, 246, 246, 246, 246, 246, 246, 251, 247, 252, 252, 252,
- 252, 247, 247, 247, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254,
- 254, 253, 253, 64, 64, 64, 64, 64, 255, 255, 64, 255, 64, 64, 255, 255,
- 64, 255, 64, 64, 255, 64, 64, 64, 64, 64, 64, 255, 255, 255, 255, 64,
- 255, 255, 255, 255, 255, 255, 255, 64, 255, 255, 255, 64, 255, 64, 255,
- 64, 64, 255, 255, 64, 255, 255, 255, 255, 256, 255, 255, 256, 256, 256,
- 256, 257, 257, 64, 256, 256, 255, 64, 64, 255, 255, 255, 255, 255, 64,
- 258, 64, 259, 259, 259, 259, 256, 256, 64, 64, 260, 260, 260, 260, 260,
- 260, 260, 260, 260, 260, 64, 64, 255, 255, 255, 255, 261, 262, 262, 262,
+ 163, 163, 163, 164, 164, 164, 64, 64, 165, 64, 126, 126, 126, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 120, 120, 137, 120, 120, 137, 120, 120, 120, 137,
+ 137, 137, 166, 167, 168, 120, 120, 120, 137, 120, 120, 137, 137, 120,
+ 120, 120, 120, 120, 169, 169, 169, 170, 171, 171, 171, 171, 171, 171,
+ 171, 171, 171, 171, 171, 171, 171, 171, 169, 170, 172, 171, 170, 170,
+ 170, 169, 169, 169, 169, 169, 169, 169, 169, 170, 170, 170, 170, 173,
+ 170, 170, 171, 78, 136, 174, 174, 169, 169, 169, 171, 171, 169, 169, 84,
+ 84, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 176, 177, 171, 171,
+ 171, 171, 171, 171, 178, 179, 180, 180, 64, 178, 178, 178, 178, 178, 178,
+ 178, 178, 64, 64, 178, 178, 64, 64, 178, 178, 178, 178, 178, 178, 178,
+ 178, 178, 178, 178, 178, 178, 178, 64, 178, 178, 178, 178, 178, 178, 178,
+ 64, 178, 64, 64, 64, 178, 178, 178, 178, 64, 64, 181, 178, 180, 180, 180,
+ 179, 179, 179, 179, 64, 64, 180, 180, 64, 64, 180, 180, 182, 178, 64, 64,
+ 64, 64, 64, 64, 64, 64, 180, 64, 64, 64, 64, 178, 178, 64, 178, 178, 178,
+ 179, 179, 64, 64, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 178,
+ 178, 184, 184, 185, 185, 185, 185, 185, 185, 186, 184, 64, 64, 64, 64,
+ 64, 187, 187, 188, 64, 189, 189, 189, 189, 189, 189, 64, 64, 64, 64, 189,
+ 189, 64, 64, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 64, 189, 189, 189, 189, 189, 189, 189, 64, 189, 189, 64, 189,
+ 189, 64, 189, 189, 64, 64, 190, 64, 188, 188, 188, 187, 187, 64, 64, 64,
+ 64, 187, 187, 64, 64, 187, 187, 191, 64, 64, 64, 187, 64, 64, 64, 64, 64,
+ 64, 64, 189, 189, 189, 189, 64, 189, 64, 64, 64, 64, 64, 64, 64, 192,
+ 192, 192, 192, 192, 192, 192, 192, 192, 192, 187, 187, 189, 189, 189,
+ 187, 64, 64, 64, 193, 193, 194, 64, 195, 195, 195, 195, 195, 195, 195,
+ 195, 195, 64, 195, 195, 195, 64, 195, 195, 195, 195, 195, 195, 195, 195,
+ 195, 195, 195, 195, 195, 195, 64, 195, 195, 195, 195, 195, 195, 195, 64,
+ 195, 195, 64, 195, 195, 195, 195, 195, 64, 64, 196, 195, 194, 194, 194,
+ 193, 193, 193, 193, 193, 64, 193, 193, 194, 64, 194, 194, 197, 64, 64,
+ 195, 64, 64, 64, 64, 64, 64, 64, 195, 195, 193, 193, 64, 64, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198, 199, 200, 64, 64, 64, 64, 64, 64,
+ 64, 201, 202, 202, 64, 203, 203, 203, 203, 203, 203, 203, 203, 64, 64,
+ 203, 203, 64, 64, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 64, 203, 203, 203, 203, 203, 203, 203, 64, 203, 203, 64,
+ 203, 203, 203, 203, 203, 64, 64, 204, 203, 202, 201, 202, 201, 201, 201,
+ 201, 64, 64, 202, 202, 64, 64, 202, 202, 205, 64, 64, 64, 64, 64, 64, 64,
+ 64, 201, 202, 64, 64, 64, 64, 203, 203, 64, 203, 203, 203, 201, 201, 64,
+ 64, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 207, 203, 208, 208,
+ 208, 208, 208, 208, 64, 64, 209, 210, 64, 210, 210, 210, 210, 210, 210,
+ 64, 64, 64, 210, 210, 210, 64, 210, 210, 210, 210, 64, 64, 64, 210, 210,
+ 64, 210, 64, 210, 210, 64, 64, 64, 210, 210, 64, 64, 64, 210, 210, 210,
+ 210, 210, 210, 210, 210, 210, 210, 64, 64, 64, 64, 211, 211, 209, 211,
+ 211, 64, 64, 64, 211, 211, 211, 64, 211, 211, 211, 212, 64, 64, 210, 64,
+ 64, 64, 64, 64, 64, 211, 64, 64, 64, 64, 64, 64, 213, 213, 213, 213, 213,
+ 213, 213, 213, 213, 213, 214, 214, 214, 215, 215, 215, 215, 215, 215,
+ 216, 215, 64, 64, 64, 64, 64, 217, 218, 218, 218, 64, 219, 219, 219, 219,
+ 219, 219, 219, 219, 64, 219, 219, 219, 64, 219, 219, 219, 219, 219, 219,
+ 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 64, 64, 64, 219, 217,
+ 217, 217, 218, 218, 218, 218, 64, 217, 217, 217, 64, 217, 217, 217, 220,
+ 64, 64, 64, 64, 64, 64, 64, 221, 222, 64, 219, 219, 64, 64, 64, 64, 64,
+ 64, 219, 219, 217, 217, 64, 64, 223, 223, 223, 223, 223, 223, 223, 223,
+ 223, 223, 224, 224, 224, 224, 224, 224, 224, 225, 64, 226, 227, 227, 64,
+ 228, 228, 228, 228, 228, 228, 228, 228, 64, 228, 228, 228, 64, 228, 228,
+ 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
+ 228, 228, 64, 228, 228, 228, 228, 228, 64, 64, 229, 228, 227, 230, 227,
+ 227, 227, 227, 227, 64, 230, 227, 227, 64, 227, 227, 226, 231, 64, 64,
+ 64, 64, 64, 64, 64, 227, 227, 64, 64, 64, 64, 64, 64, 64, 228, 64, 228,
+ 228, 226, 226, 64, 64, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
+ 64, 228, 228, 64, 64, 64, 64, 64, 64, 233, 234, 234, 64, 235, 235, 235,
+ 235, 235, 235, 235, 235, 64, 235, 235, 235, 64, 235, 235, 235, 235, 235,
+ 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 64, 64, 235,
+ 234, 234, 234, 233, 233, 233, 233, 64, 234, 234, 234, 64, 234, 234, 234,
+ 236, 235, 64, 64, 64, 64, 64, 64, 64, 64, 234, 235, 235, 233, 233, 64,
+ 64, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 238, 238, 238, 238,
+ 238, 238, 64, 64, 64, 239, 235, 235, 235, 235, 235, 235, 64, 64, 240,
+ 240, 64, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
+ 241, 241, 241, 241, 241, 64, 64, 64, 241, 241, 241, 241, 241, 241, 241,
+ 241, 64, 241, 241, 241, 241, 241, 241, 241, 241, 241, 64, 241, 64, 64,
+ 64, 64, 242, 64, 64, 64, 64, 240, 240, 240, 243, 243, 243, 64, 243, 64,
+ 240, 240, 240, 240, 240, 240, 240, 240, 64, 64, 64, 64, 64, 64, 244, 244,
+ 244, 244, 244, 244, 244, 244, 244, 244, 64, 64, 240, 240, 245, 64, 64,
+ 64, 64, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
+ 246, 246, 246, 247, 246, 246, 247, 247, 247, 247, 248, 248, 249, 64, 64,
+ 64, 64, 250, 246, 246, 246, 246, 246, 246, 251, 247, 252, 252, 252, 252,
+ 247, 247, 247, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
+ 253, 253, 64, 64, 64, 64, 64, 255, 255, 64, 255, 64, 64, 255, 255, 64,
+ 255, 64, 64, 255, 64, 64, 64, 64, 64, 64, 255, 255, 255, 255, 64, 255,
+ 255, 255, 255, 255, 255, 255, 64, 255, 255, 255, 64, 255, 64, 255, 64,
+ 64, 255, 255, 64, 255, 255, 255, 255, 256, 255, 255, 256, 256, 256, 256,
+ 257, 257, 64, 256, 256, 255, 64, 64, 255, 255, 255, 255, 255, 64, 258,
+ 64, 259, 259, 259, 259, 256, 256, 64, 64, 260, 260, 260, 260, 260, 260,
+ 260, 260, 260, 260, 64, 64, 255, 255, 255, 255, 261, 262, 262, 262, 263,
263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
- 263, 262, 263, 262, 262, 262, 264, 264, 262, 262, 262, 262, 262, 262,
- 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 266, 266, 266, 266,
- 266, 266, 266, 266, 266, 266, 262, 264, 262, 264, 262, 267, 268, 269,
- 268, 269, 270, 270, 261, 261, 261, 261, 261, 261, 261, 261, 64, 261, 261,
- 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 64, 64, 64, 64, 271,
- 272, 273, 274, 273, 273, 273, 273, 273, 272, 272, 272, 272, 273, 270,
- 272, 273, 275, 275, 276, 263, 275, 275, 261, 261, 261, 261, 261, 273,
- 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 64, 273, 273, 273, 273,
- 273, 273, 273, 273, 273, 273, 273, 273, 64, 262, 262, 262, 262, 262, 262,
- 262, 262, 264, 262, 262, 262, 262, 262, 262, 64, 262, 262, 263, 263, 263,
- 263, 263, 277, 277, 277, 277, 263, 263, 64, 64, 64, 64, 64, 278, 278,
- 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 279, 280, 280, 280,
- 280, 279, 280, 280, 280, 280, 280, 281, 279, 282, 282, 279, 279, 280,
- 280, 278, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 284, 284,
- 284, 284, 284, 284, 278, 278, 278, 278, 278, 278, 279, 279, 280, 280,
- 278, 278, 278, 278, 280, 280, 280, 278, 279, 279, 279, 278, 278, 279,
- 279, 279, 279, 279, 279, 279, 278, 278, 278, 280, 280, 280, 280, 278,
- 278, 278, 278, 278, 280, 279, 279, 280, 280, 279, 279, 279, 279, 279,
- 279, 285, 278, 279, 283, 283, 279, 279, 279, 280, 286, 286, 287, 287,
- 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 64, 287, 64,
- 64, 64, 64, 64, 287, 64, 64, 288, 288, 288, 288, 288, 288, 288, 288, 288,
+ 262, 263, 262, 262, 262, 264, 264, 262, 262, 262, 262, 262, 262, 265,
+ 265, 265, 265, 265, 265, 265, 265, 265, 265, 266, 266, 266, 266, 266,
+ 266, 266, 266, 266, 266, 262, 264, 262, 264, 262, 267, 268, 269, 268,
+ 269, 270, 270, 261, 261, 261, 261, 261, 261, 261, 261, 64, 261, 261, 261,
+ 261, 261, 261, 261, 261, 261, 261, 261, 261, 64, 64, 64, 64, 271, 272,
+ 273, 274, 273, 273, 273, 273, 273, 272, 272, 272, 272, 273, 270, 272,
+ 273, 275, 275, 276, 263, 275, 275, 261, 261, 261, 261, 261, 273, 273,
+ 273, 273, 273, 273, 273, 273, 273, 273, 273, 64, 273, 273, 273, 273, 273,
+ 273, 273, 273, 273, 273, 273, 273, 64, 262, 262, 262, 262, 262, 262, 262,
+ 262, 264, 262, 262, 262, 262, 262, 262, 64, 262, 262, 263, 263, 263, 263,
+ 263, 277, 277, 277, 277, 263, 263, 64, 64, 64, 64, 64, 278, 278, 278,
+ 278, 278, 278, 278, 278, 278, 278, 278, 279, 279, 280, 280, 280, 280,
+ 279, 280, 280, 280, 280, 280, 281, 279, 282, 282, 279, 279, 280, 280,
+ 278, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 284, 284, 284,
+ 284, 284, 284, 278, 278, 278, 278, 278, 278, 279, 279, 280, 280, 278,
+ 278, 278, 278, 280, 280, 280, 278, 279, 279, 279, 278, 278, 279, 279,
+ 279, 279, 279, 279, 279, 278, 278, 278, 280, 280, 280, 280, 278, 278,
+ 278, 278, 278, 280, 279, 279, 280, 280, 279, 279, 279, 279, 279, 279,
+ 285, 278, 279, 283, 283, 279, 279, 279, 280, 286, 286, 287, 287, 287,
+ 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 64, 287, 64, 64,
+ 64, 64, 64, 287, 64, 64, 288, 288, 288, 288, 288, 288, 288, 288, 288,
288, 288, 84, 289, 288, 288, 288, 290, 290, 290, 290, 290, 290, 290, 290,
291, 291, 291, 291, 291, 291, 291, 291, 292, 292, 292, 292, 292, 292,
292, 292, 292, 64, 292, 292, 292, 292, 64, 64, 292, 292, 292, 292, 292,
@@ -2427,166 +2399,166 @@ static const unsigned short index2[] = {
294, 294, 294, 294, 294, 295, 295, 295, 295, 295, 295, 295, 295, 295,
295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 64, 64, 64, 296,
296, 296, 296, 296, 296, 296, 296, 296, 296, 64, 64, 64, 64, 64, 64, 297,
- 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 64, 64,
- 298, 298, 298, 298, 298, 298, 64, 64, 299, 300, 300, 300, 300, 300, 300,
- 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300,
- 301, 301, 300, 302, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303,
- 303, 303, 303, 303, 303, 303, 303, 303, 304, 305, 64, 64, 64, 306, 306,
- 306, 306, 306, 306, 306, 306, 306, 306, 306, 84, 84, 84, 307, 307, 307,
- 306, 306, 306, 306, 306, 306, 306, 306, 64, 64, 64, 64, 64, 64, 64, 308,
- 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 64, 308, 308,
- 308, 308, 309, 309, 310, 64, 64, 64, 311, 311, 311, 311, 311, 311, 311,
- 311, 311, 311, 312, 312, 313, 84, 84, 64, 314, 314, 314, 314, 314, 314,
- 314, 314, 314, 314, 315, 315, 64, 64, 64, 64, 316, 316, 316, 316, 316,
- 316, 316, 316, 316, 316, 316, 316, 316, 64, 316, 316, 316, 64, 317, 317,
- 64, 64, 64, 64, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
- 318, 319, 319, 320, 319, 319, 319, 319, 319, 319, 319, 320, 320, 320,
- 320, 320, 320, 320, 320, 319, 320, 320, 319, 319, 319, 319, 319, 319,
- 319, 319, 319, 321, 319, 322, 322, 322, 323, 322, 322, 322, 324, 318,
- 325, 64, 64, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 64, 64,
- 64, 64, 64, 64, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 64, 64,
- 64, 64, 64, 64, 328, 328, 66, 66, 328, 66, 329, 328, 328, 328, 328, 330,
- 330, 330, 331, 64, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 64,
- 64, 64, 64, 64, 64, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333,
- 333, 334, 333, 333, 333, 333, 333, 335, 333, 64, 64, 64, 64, 64, 300,
- 300, 300, 300, 300, 300, 64, 64, 336, 336, 336, 336, 336, 336, 336, 336,
- 336, 336, 336, 336, 336, 336, 336, 64, 337, 337, 337, 338, 338, 338, 338,
- 337, 337, 338, 338, 338, 64, 64, 64, 64, 338, 338, 337, 338, 338, 338,
- 338, 338, 338, 339, 340, 341, 64, 64, 64, 64, 342, 64, 64, 64, 343, 343,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 64, 64, 345, 345, 345,
- 345, 345, 64, 64, 64, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346,
- 346, 346, 64, 64, 64, 64, 346, 346, 64, 64, 64, 64, 64, 64, 347, 347,
- 347, 347, 347, 347, 347, 347, 347, 347, 348, 64, 64, 64, 349, 349, 350,
- 350, 350, 350, 350, 350, 350, 350, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351, 352, 353, 354, 354, 355, 64, 64,
- 356, 356, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 358, 359, 358, 359, 359, 359, 359, 359, 359, 359, 64, 360, 358, 359,
- 358, 358, 359, 359, 359, 359, 359, 359, 359, 359, 358, 358, 358, 358,
- 358, 358, 359, 359, 361, 361, 361, 361, 361, 361, 361, 361, 64, 64, 362,
- 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 64, 64, 64, 64, 64, 64,
- 364, 364, 364, 364, 364, 364, 364, 365, 364, 364, 364, 364, 364, 364, 64,
- 64, 78, 78, 78, 78, 78, 136, 136, 136, 136, 136, 136, 78, 78, 136, 366,
- 64, 367, 367, 367, 367, 368, 369, 369, 369, 369, 369, 369, 369, 369, 369,
- 369, 369, 369, 369, 369, 369, 370, 368, 367, 367, 367, 367, 367, 368,
- 367, 368, 368, 368, 368, 368, 367, 368, 371, 369, 369, 369, 369, 369,
- 369, 369, 64, 64, 64, 64, 372, 372, 372, 372, 372, 372, 372, 372, 372,
- 372, 373, 373, 373, 373, 373, 373, 373, 374, 374, 374, 374, 374, 374,
- 374, 374, 374, 374, 375, 376, 375, 375, 375, 375, 375, 375, 375, 374,
- 374, 374, 374, 374, 374, 374, 374, 374, 64, 64, 64, 377, 377, 378, 379,
- 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 378,
- 377, 377, 377, 377, 378, 378, 377, 377, 380, 381, 377, 377, 379, 379,
- 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 379, 379, 379, 379,
- 379, 379, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 384, 385, 386, 386, 385, 385, 385, 386, 385, 386, 386, 386,
- 387, 387, 64, 64, 64, 64, 64, 64, 64, 64, 388, 388, 388, 388, 389, 389,
- 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 390, 390, 390, 390,
- 390, 390, 390, 390, 391, 391, 391, 391, 391, 391, 391, 391, 390, 390,
- 391, 392, 64, 64, 64, 393, 393, 393, 393, 393, 394, 394, 394, 394, 394,
- 394, 394, 394, 394, 394, 64, 64, 64, 389, 389, 389, 395, 395, 395, 395,
- 395, 395, 395, 395, 395, 395, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 397, 397, 397, 397, 397, 397, 398, 398,
- 399, 399, 399, 399, 399, 399, 399, 399, 78, 78, 78, 84, 400, 136, 136,
- 136, 136, 136, 78, 78, 136, 136, 136, 136, 78, 401, 400, 400, 400, 400,
- 400, 400, 400, 402, 402, 402, 402, 136, 402, 402, 402, 402, 401, 401, 78,
- 402, 402, 64, 78, 78, 64, 64, 64, 64, 64, 64, 41, 41, 41, 41, 41, 41, 62,
- 62, 62, 62, 62, 75, 44, 44, 44, 44, 44, 44, 44, 44, 44, 65, 65, 65, 65,
- 65, 44, 44, 44, 44, 65, 65, 65, 65, 65, 41, 41, 41, 41, 41, 403, 41, 41,
- 41, 41, 41, 41, 41, 41, 41, 41, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
- 44, 44, 65, 78, 78, 136, 78, 78, 78, 78, 78, 78, 78, 136, 78, 78, 404,
- 405, 136, 406, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 64, 64, 64, 64, 64, 64, 407, 136, 78, 136,
- 37, 41, 37, 41, 37, 41, 41, 41, 41, 41, 41, 41, 41, 41, 37, 41, 62, 62,
- 62, 62, 62, 62, 62, 62, 61, 61, 61, 61, 61, 61, 61, 61, 62, 62, 62, 62,
- 62, 62, 64, 64, 61, 61, 61, 61, 61, 61, 64, 64, 64, 61, 64, 61, 64, 61,
- 64, 61, 408, 408, 408, 408, 408, 408, 408, 408, 62, 62, 62, 62, 62, 64,
- 62, 62, 61, 61, 61, 61, 408, 63, 62, 63, 63, 63, 62, 62, 62, 64, 62, 62,
- 61, 61, 61, 61, 408, 63, 63, 63, 62, 62, 62, 62, 64, 64, 62, 62, 61, 61,
- 61, 61, 64, 63, 63, 63, 61, 61, 61, 61, 61, 63, 63, 63, 64, 64, 62, 62,
- 62, 64, 62, 62, 61, 61, 61, 61, 408, 63, 63, 64, 409, 409, 409, 409, 409,
- 409, 409, 409, 409, 409, 409, 410, 411, 411, 412, 413, 414, 415, 415,
- 414, 414, 414, 22, 66, 416, 417, 418, 419, 416, 417, 418, 419, 22, 22,
- 22, 66, 22, 22, 22, 22, 420, 421, 422, 423, 424, 425, 426, 21, 427, 428,
- 427, 427, 428, 22, 66, 66, 66, 28, 35, 22, 66, 66, 22, 429, 429, 66, 66,
- 66, 430, 431, 432, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 433, 66,
- 429, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 409, 410, 410, 410, 410,
- 410, 64, 434, 435, 436, 437, 410, 410, 410, 410, 410, 410, 438, 44, 64,
- 64, 33, 438, 438, 438, 438, 438, 439, 439, 433, 431, 432, 440, 438, 33,
- 33, 33, 33, 438, 438, 438, 438, 438, 439, 439, 433, 431, 432, 64, 44, 44,
- 44, 44, 44, 64, 64, 64, 250, 250, 250, 250, 250, 250, 250, 250, 250, 441,
- 250, 250, 23, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 64, 78,
- 78, 400, 400, 78, 78, 78, 78, 400, 400, 400, 78, 78, 366, 366, 366, 366,
- 78, 366, 366, 366, 400, 400, 78, 136, 78, 400, 400, 136, 136, 136, 136,
- 78, 64, 64, 64, 64, 64, 64, 64, 26, 26, 442, 30, 26, 30, 26, 442, 26, 30,
- 34, 442, 442, 442, 34, 34, 442, 442, 442, 443, 26, 442, 30, 26, 433, 442,
- 442, 442, 442, 442, 26, 26, 26, 30, 30, 26, 442, 26, 67, 26, 442, 26, 37,
- 38, 442, 442, 444, 34, 442, 442, 37, 442, 34, 402, 402, 402, 402, 34, 26,
- 26, 34, 34, 442, 442, 445, 433, 433, 433, 433, 442, 34, 34, 34, 34, 26,
- 433, 26, 26, 41, 277, 446, 446, 446, 36, 36, 446, 446, 446, 446, 446,
- 446, 36, 36, 36, 36, 446, 447, 447, 447, 447, 447, 447, 447, 447, 447,
- 447, 447, 447, 448, 448, 448, 448, 447, 447, 448, 448, 448, 448, 448,
- 448, 448, 448, 448, 37, 41, 448, 448, 448, 448, 36, 26, 26, 64, 64, 64,
- 64, 39, 39, 39, 39, 39, 30, 30, 30, 30, 30, 433, 433, 26, 26, 26, 26,
- 433, 26, 26, 433, 26, 26, 433, 26, 26, 26, 26, 26, 26, 26, 433, 26, 26,
- 26, 26, 26, 26, 26, 26, 26, 30, 30, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 26, 26, 26, 433, 433, 26, 26, 39, 26, 39, 26, 26, 26, 26, 26, 26, 26, 26,
- 26, 26, 30, 26, 26, 26, 26, 433, 433, 433, 433, 433, 433, 433, 433, 433,
- 433, 433, 433, 39, 445, 449, 449, 445, 433, 433, 39, 449, 445, 445, 449,
- 445, 445, 433, 39, 433, 449, 439, 450, 433, 449, 445, 433, 433, 433, 449,
- 445, 445, 449, 39, 449, 449, 445, 445, 39, 445, 39, 445, 39, 39, 39, 39,
- 449, 449, 445, 449, 445, 445, 445, 445, 445, 39, 39, 39, 39, 433, 445,
- 433, 445, 449, 449, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
- 449, 445, 445, 445, 449, 433, 433, 433, 433, 433, 449, 445, 445, 445,
- 433, 433, 433, 433, 433, 433, 433, 433, 433, 445, 449, 39, 445, 433, 449,
- 449, 449, 449, 445, 445, 449, 449, 433, 433, 449, 449, 445, 445, 449,
- 449, 445, 445, 449, 449, 445, 445, 445, 445, 445, 433, 433, 445, 445,
- 445, 445, 433, 433, 39, 433, 433, 445, 39, 433, 433, 433, 433, 433, 433,
- 433, 433, 445, 445, 433, 39, 445, 445, 445, 433, 433, 433, 433, 433, 445,
- 449, 433, 445, 445, 445, 445, 445, 433, 433, 445, 445, 433, 433, 433,
- 433, 445, 445, 445, 445, 445, 445, 445, 445, 433, 433, 431, 432, 431,
- 432, 26, 26, 26, 26, 26, 26, 30, 26, 26, 26, 26, 26, 445, 445, 26, 26,
- 26, 26, 26, 26, 26, 451, 452, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 26, 433,
- 26, 26, 26, 26, 26, 26, 26, 26, 277, 26, 26, 26, 26, 26, 433, 433, 433,
- 433, 433, 433, 433, 433, 433, 26, 26, 26, 26, 433, 433, 26, 26, 26, 26,
- 26, 26, 26, 26, 26, 64, 64, 64, 64, 64, 26, 26, 26, 26, 26, 26, 26, 64,
- 36, 36, 36, 36, 36, 36, 36, 36, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
- 33, 33, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453,
- 453, 446, 36, 36, 36, 36, 36, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
- 30, 26, 26, 26, 26, 26, 26, 30, 30, 30, 30, 26, 26, 30, 30, 26, 30, 30,
- 30, 30, 30, 26, 26, 30, 30, 26, 26, 30, 39, 26, 26, 26, 26, 30, 30, 26,
- 26, 30, 39, 26, 26, 26, 26, 30, 30, 30, 26, 26, 30, 26, 26, 30, 30, 26,
- 26, 26, 26, 26, 30, 30, 26, 26, 30, 26, 26, 26, 26, 30, 30, 26, 26, 26,
- 26, 30, 26, 30, 26, 30, 26, 30, 26, 26, 26, 26, 26, 30, 30, 26, 30, 30,
- 30, 26, 30, 30, 30, 30, 26, 30, 30, 26, 39, 26, 26, 26, 26, 26, 26, 30,
- 30, 26, 26, 26, 26, 277, 26, 26, 26, 26, 26, 26, 26, 30, 30, 30, 30, 30,
- 30, 30, 30, 30, 30, 26, 30, 30, 30, 26, 30, 26, 26, 26, 26, 26, 26, 26,
- 26, 26, 30, 26, 26, 431, 432, 431, 432, 431, 432, 431, 432, 431, 432,
- 431, 432, 431, 432, 36, 36, 446, 446, 446, 446, 446, 446, 446, 446, 446,
- 446, 446, 446, 26, 26, 26, 26, 445, 433, 433, 445, 445, 431, 432, 433,
- 445, 445, 433, 445, 445, 445, 433, 433, 433, 433, 433, 445, 445, 445,
- 445, 433, 433, 433, 433, 433, 445, 445, 445, 433, 433, 433, 445, 445,
- 445, 445, 9, 10, 9, 10, 9, 10, 9, 10, 431, 432, 454, 454, 454, 454, 454,
- 454, 454, 454, 433, 433, 433, 431, 432, 9, 10, 431, 432, 431, 432, 431,
- 432, 431, 432, 431, 432, 433, 433, 445, 445, 445, 445, 445, 445, 433,
- 433, 433, 433, 433, 433, 433, 433, 445, 433, 433, 433, 433, 445, 445,
- 445, 445, 445, 433, 445, 445, 433, 433, 431, 432, 431, 432, 445, 433,
- 433, 433, 433, 445, 433, 445, 445, 445, 433, 433, 445, 445, 433, 433,
- 433, 433, 433, 433, 433, 433, 433, 433, 445, 445, 445, 445, 445, 445,
- 433, 433, 431, 432, 433, 433, 433, 433, 445, 445, 445, 445, 445, 445,
- 445, 445, 445, 445, 445, 433, 445, 445, 445, 445, 433, 433, 445, 433,
- 445, 433, 433, 445, 433, 445, 445, 445, 445, 433, 433, 433, 433, 433,
- 445, 445, 433, 433, 433, 433, 445, 445, 445, 445, 433, 445, 445, 433,
+ 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 64, 64, 64,
+ 298, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
+ 299, 299, 299, 299, 299, 299, 299, 300, 300, 299, 301, 302, 302, 302,
+ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
+ 302, 303, 304, 64, 64, 64, 305, 305, 305, 305, 305, 305, 305, 305, 305,
+ 305, 305, 84, 84, 84, 306, 306, 306, 305, 305, 305, 305, 305, 305, 305,
+ 305, 64, 64, 64, 64, 64, 64, 64, 307, 307, 307, 307, 307, 307, 307, 307,
+ 307, 307, 307, 307, 307, 64, 307, 307, 307, 307, 308, 308, 309, 64, 64,
+ 64, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 311, 311, 312, 84,
+ 84, 64, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 314, 314, 64,
+ 64, 64, 64, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
+ 315, 64, 315, 315, 315, 64, 316, 316, 64, 64, 64, 64, 317, 317, 317, 317,
+ 317, 317, 317, 317, 317, 317, 317, 317, 318, 318, 319, 318, 318, 318,
+ 318, 318, 318, 318, 319, 319, 319, 319, 319, 319, 319, 319, 318, 319,
+ 319, 318, 318, 318, 318, 318, 318, 318, 318, 318, 320, 318, 321, 321,
+ 321, 322, 321, 321, 321, 323, 317, 324, 64, 64, 325, 325, 325, 325, 325,
+ 325, 325, 325, 325, 325, 64, 64, 64, 64, 64, 64, 326, 326, 326, 326, 326,
+ 326, 326, 326, 326, 326, 64, 64, 64, 64, 64, 64, 327, 327, 66, 66, 327,
+ 66, 328, 327, 327, 327, 327, 329, 329, 329, 330, 64, 331, 331, 331, 331,
+ 331, 331, 331, 331, 331, 331, 64, 64, 64, 64, 64, 64, 332, 332, 332, 332,
+ 332, 332, 332, 332, 332, 332, 332, 333, 332, 332, 332, 332, 332, 334,
+ 332, 64, 64, 64, 64, 64, 299, 299, 299, 299, 299, 299, 64, 64, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 64, 336,
+ 336, 336, 337, 337, 337, 337, 336, 336, 337, 337, 337, 64, 64, 64, 64,
+ 337, 337, 336, 337, 337, 337, 337, 337, 337, 338, 339, 340, 64, 64, 64,
+ 64, 341, 64, 64, 64, 342, 342, 343, 343, 343, 343, 343, 343, 343, 343,
+ 343, 343, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 64, 64, 344, 344, 344, 344, 344, 64, 64, 64, 345, 345, 345,
+ 345, 345, 345, 345, 345, 345, 345, 345, 345, 64, 64, 64, 64, 346, 346,
+ 346, 346, 346, 346, 346, 346, 346, 345, 345, 345, 345, 345, 345, 345,
+ 346, 346, 64, 64, 64, 64, 64, 64, 347, 347, 347, 347, 347, 347, 347, 347,
+ 347, 347, 348, 64, 64, 64, 349, 349, 350, 350, 350, 350, 350, 350, 350,
+ 350, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
+ 351, 351, 352, 353, 354, 354, 355, 64, 64, 356, 356, 357, 357, 357, 357,
+ 357, 357, 357, 357, 357, 357, 357, 357, 357, 358, 359, 358, 359, 359,
+ 359, 359, 359, 359, 359, 64, 360, 358, 359, 358, 358, 359, 359, 359, 359,
+ 359, 359, 359, 359, 358, 358, 358, 358, 358, 358, 359, 359, 361, 361,
+ 361, 361, 361, 361, 361, 361, 64, 64, 362, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 64, 64, 64, 64, 64, 64, 364, 364, 364, 364, 364, 364,
+ 364, 365, 364, 364, 364, 364, 364, 364, 64, 64, 78, 78, 78, 78, 78, 136,
+ 136, 136, 136, 136, 136, 78, 78, 136, 366, 64, 367, 367, 367, 367, 368,
+ 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369,
+ 369, 370, 368, 367, 367, 367, 367, 367, 368, 367, 368, 368, 368, 368,
+ 368, 367, 368, 371, 369, 369, 369, 369, 369, 369, 369, 64, 64, 64, 64,
+ 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 373, 373, 373, 373,
+ 373, 373, 373, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 375,
+ 376, 375, 375, 375, 375, 375, 375, 375, 374, 374, 374, 374, 374, 374,
+ 374, 374, 374, 64, 64, 64, 377, 377, 378, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 378, 377, 377, 377, 377, 378,
+ 378, 377, 377, 380, 381, 377, 377, 379, 379, 382, 382, 382, 382, 382,
+ 382, 382, 382, 382, 382, 379, 379, 379, 379, 379, 379, 383, 383, 383,
+ 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 384, 385, 386,
+ 386, 385, 385, 385, 386, 385, 386, 386, 386, 387, 387, 64, 64, 64, 64,
+ 64, 64, 64, 64, 388, 388, 388, 388, 389, 389, 389, 389, 389, 389, 389,
+ 389, 389, 389, 389, 389, 390, 390, 390, 390, 390, 390, 390, 390, 391,
+ 391, 391, 391, 391, 391, 391, 391, 390, 390, 391, 392, 64, 64, 64, 393,
+ 393, 393, 393, 393, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 64,
+ 64, 64, 389, 389, 389, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
+ 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
+ 397, 397, 397, 397, 397, 397, 398, 398, 399, 399, 399, 399, 399, 399,
+ 399, 399, 78, 78, 78, 84, 400, 136, 136, 136, 136, 136, 78, 78, 136, 136,
+ 136, 136, 78, 401, 400, 400, 400, 400, 400, 400, 400, 402, 402, 402, 402,
+ 136, 402, 402, 402, 402, 401, 401, 78, 402, 402, 64, 78, 78, 64, 64, 64,
+ 64, 64, 64, 41, 41, 41, 41, 41, 41, 62, 62, 62, 62, 62, 75, 44, 44, 44,
+ 44, 44, 44, 44, 44, 44, 65, 65, 65, 65, 65, 44, 44, 44, 44, 65, 65, 65,
+ 65, 65, 41, 41, 41, 41, 41, 403, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 65, 78, 78, 136, 78, 78,
+ 78, 78, 78, 78, 78, 136, 78, 78, 404, 405, 136, 406, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 64, 64,
+ 64, 64, 64, 64, 407, 136, 78, 136, 37, 41, 37, 41, 37, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 37, 41, 62, 62, 62, 62, 62, 62, 62, 62, 61, 61, 61,
+ 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 64, 64, 61, 61, 61, 61, 61,
+ 61, 64, 64, 64, 61, 64, 61, 64, 61, 64, 61, 408, 408, 408, 408, 408, 408,
+ 408, 408, 62, 62, 62, 62, 62, 64, 62, 62, 61, 61, 61, 61, 408, 63, 62,
+ 63, 63, 63, 62, 62, 62, 64, 62, 62, 61, 61, 61, 61, 408, 63, 63, 63, 62,
+ 62, 62, 62, 64, 64, 62, 62, 61, 61, 61, 61, 64, 63, 63, 63, 61, 61, 61,
+ 61, 61, 63, 63, 63, 64, 64, 62, 62, 62, 64, 62, 62, 61, 61, 61, 61, 408,
+ 63, 63, 64, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 410,
+ 411, 411, 412, 413, 414, 415, 415, 414, 414, 414, 22, 66, 416, 417, 418,
+ 419, 416, 417, 418, 419, 22, 22, 22, 66, 22, 22, 22, 22, 420, 421, 422,
+ 423, 424, 425, 426, 21, 427, 428, 427, 427, 428, 22, 66, 66, 66, 28, 35,
+ 22, 66, 66, 22, 429, 429, 66, 66, 66, 430, 431, 432, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 433, 66, 429, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 409, 410, 410, 410, 410, 410, 64, 434, 435, 436, 437, 410, 410, 410,
+ 410, 410, 410, 438, 44, 64, 64, 33, 438, 438, 438, 438, 438, 439, 439,
+ 433, 431, 432, 440, 438, 33, 33, 33, 33, 438, 438, 438, 438, 438, 439,
+ 439, 433, 431, 432, 64, 44, 44, 44, 44, 44, 64, 64, 64, 250, 250, 250,
+ 250, 250, 250, 250, 250, 250, 441, 250, 250, 23, 250, 250, 250, 250, 250,
+ 250, 250, 250, 250, 64, 64, 78, 78, 400, 400, 78, 78, 78, 78, 400, 400,
+ 400, 78, 78, 366, 366, 366, 366, 78, 366, 366, 366, 400, 400, 78, 136,
+ 78, 400, 400, 136, 136, 136, 136, 78, 64, 64, 64, 64, 64, 64, 64, 26, 26,
+ 442, 30, 26, 30, 26, 442, 26, 30, 34, 442, 442, 442, 34, 34, 442, 442,
+ 442, 443, 26, 442, 30, 26, 433, 442, 442, 442, 442, 442, 26, 26, 26, 30,
+ 30, 26, 442, 26, 67, 26, 442, 26, 37, 38, 442, 442, 444, 34, 442, 442,
+ 37, 442, 34, 402, 402, 402, 402, 34, 26, 26, 34, 34, 442, 442, 445, 433,
+ 433, 433, 433, 442, 34, 34, 34, 34, 26, 433, 26, 26, 41, 277, 446, 446,
+ 446, 36, 36, 446, 446, 446, 446, 446, 446, 36, 36, 36, 36, 446, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 448, 448, 448, 448,
+ 447, 447, 448, 448, 448, 448, 448, 448, 448, 448, 448, 37, 41, 448, 448,
+ 448, 448, 36, 64, 64, 64, 64, 64, 64, 39, 39, 39, 39, 39, 30, 30, 30, 30,
+ 30, 433, 433, 26, 26, 26, 26, 433, 26, 26, 433, 26, 26, 433, 26, 26, 26,
+ 26, 26, 26, 26, 433, 26, 26, 26, 26, 26, 26, 26, 26, 26, 30, 30, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 433, 433, 26, 26, 39, 26, 39, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 30, 26, 26, 26, 26, 433, 433, 433,
+ 433, 433, 433, 433, 433, 433, 433, 433, 433, 39, 445, 449, 449, 445, 433,
+ 433, 39, 449, 445, 445, 449, 445, 445, 433, 39, 433, 449, 439, 450, 433,
+ 449, 445, 433, 433, 433, 449, 445, 445, 449, 39, 449, 449, 445, 445, 39,
+ 445, 39, 445, 39, 39, 39, 39, 449, 449, 445, 449, 445, 445, 445, 445,
+ 445, 39, 39, 39, 39, 433, 445, 433, 445, 449, 449, 445, 445, 445, 445,
+ 445, 445, 445, 445, 445, 445, 449, 445, 445, 445, 449, 433, 433, 433,
+ 433, 433, 449, 445, 445, 445, 433, 433, 433, 433, 433, 433, 433, 433,
+ 433, 445, 449, 39, 445, 433, 449, 449, 449, 449, 445, 445, 449, 449, 433,
+ 433, 449, 449, 445, 445, 449, 449, 445, 445, 449, 449, 445, 445, 445,
+ 445, 445, 433, 433, 445, 445, 445, 445, 433, 433, 39, 433, 433, 445, 39,
+ 433, 433, 433, 433, 433, 433, 433, 433, 445, 445, 433, 39, 445, 445, 445,
+ 433, 433, 433, 433, 433, 445, 449, 433, 445, 445, 445, 445, 445, 433,
433, 445, 445, 433, 433, 433, 433, 445, 445, 445, 445, 445, 445, 445,
- 445, 445, 445, 445, 433, 433, 445, 445, 445, 445, 445, 445, 445, 445,
- 433, 445, 445, 445, 445, 445, 445, 445, 445, 433, 433, 433, 433, 433,
- 445, 433, 445, 433, 433, 433, 445, 445, 445, 445, 445, 433, 433, 433,
- 433, 445, 433, 433, 433, 445, 445, 445, 445, 445, 433, 445, 433, 433,
- 433, 433, 433, 433, 433, 26, 26, 433, 433, 433, 433, 433, 433, 26, 26,
- 26, 26, 26, 26, 26, 26, 30, 30, 30, 26, 26, 26, 26, 64, 64, 26, 26, 26,
- 26, 26, 26, 26, 26, 64, 64, 26, 26, 64, 64, 64, 26, 26, 26, 26, 64, 26,
- 26, 26, 26, 26, 26, 26, 26, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 26,
- 26, 26, 26, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455,
+ 445, 433, 433, 431, 432, 431, 432, 26, 26, 26, 26, 26, 26, 30, 26, 26,
+ 26, 26, 26, 445, 445, 26, 26, 26, 26, 26, 26, 26, 451, 452, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 277, 277, 277, 277, 277, 277, 277, 277,
+ 277, 277, 277, 277, 277, 26, 433, 26, 26, 26, 26, 26, 26, 26, 26, 277,
+ 26, 26, 26, 26, 26, 433, 433, 433, 433, 433, 433, 433, 433, 433, 26, 26,
+ 26, 26, 433, 433, 26, 26, 26, 26, 26, 26, 26, 26, 26, 64, 64, 64, 64, 64,
+ 26, 26, 26, 26, 26, 26, 26, 64, 36, 36, 36, 36, 36, 36, 36, 36, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 453, 453, 453, 453, 453, 453,
+ 453, 453, 453, 453, 453, 453, 453, 453, 446, 36, 36, 36, 36, 36, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 26, 26, 26, 26, 26, 26, 30, 30,
+ 30, 30, 26, 26, 30, 30, 26, 30, 30, 30, 30, 30, 26, 26, 30, 30, 26, 26,
+ 30, 39, 26, 26, 26, 26, 30, 30, 26, 26, 30, 39, 26, 26, 26, 26, 30, 30,
+ 30, 26, 26, 30, 26, 26, 30, 30, 26, 26, 26, 26, 26, 30, 30, 26, 26, 30,
+ 26, 26, 26, 26, 30, 30, 26, 26, 26, 26, 30, 26, 30, 26, 30, 26, 30, 26,
+ 26, 26, 26, 26, 30, 30, 26, 30, 30, 30, 26, 30, 30, 30, 30, 26, 30, 30,
+ 26, 39, 26, 26, 26, 26, 26, 26, 30, 30, 26, 26, 26, 26, 277, 26, 26, 26,
+ 26, 26, 26, 26, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 26, 30, 30, 30,
+ 26, 30, 26, 26, 26, 26, 26, 26, 26, 26, 26, 30, 26, 26, 431, 432, 431,
+ 432, 431, 432, 431, 432, 431, 432, 431, 432, 431, 432, 36, 36, 446, 446,
+ 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 26, 26, 26, 26, 445,
+ 433, 433, 445, 445, 431, 432, 433, 445, 445, 433, 445, 445, 445, 433,
+ 433, 433, 433, 433, 445, 445, 445, 445, 433, 433, 433, 433, 433, 445,
+ 445, 445, 433, 433, 433, 445, 445, 445, 445, 9, 10, 9, 10, 9, 10, 9, 10,
+ 431, 432, 454, 454, 454, 454, 454, 454, 454, 454, 433, 433, 433, 431,
+ 432, 9, 10, 431, 432, 431, 432, 431, 432, 431, 432, 431, 432, 433, 433,
+ 445, 445, 445, 445, 445, 445, 433, 433, 433, 433, 433, 433, 433, 433,
+ 445, 433, 433, 433, 433, 445, 445, 445, 445, 445, 433, 445, 445, 433,
+ 433, 431, 432, 431, 432, 445, 433, 433, 433, 433, 445, 433, 445, 445,
+ 445, 433, 433, 445, 445, 433, 433, 433, 433, 433, 433, 433, 433, 433,
+ 433, 445, 445, 445, 445, 445, 445, 433, 433, 431, 432, 433, 433, 433,
+ 433, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 433, 445,
+ 445, 445, 445, 433, 433, 445, 433, 445, 433, 433, 445, 433, 445, 445,
+ 445, 445, 433, 433, 433, 433, 433, 445, 445, 433, 433, 433, 433, 445,
+ 445, 445, 445, 433, 445, 445, 433, 433, 445, 445, 433, 433, 433, 433,
+ 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 433, 433, 445,
+ 445, 445, 445, 445, 445, 445, 445, 433, 445, 445, 445, 445, 445, 445,
+ 445, 445, 433, 433, 433, 433, 433, 445, 433, 445, 433, 433, 433, 445,
+ 445, 445, 445, 445, 433, 433, 433, 433, 445, 433, 433, 433, 445, 445,
+ 445, 445, 445, 433, 445, 433, 433, 433, 433, 433, 433, 433, 26, 26, 433,
+ 433, 433, 433, 433, 433, 26, 26, 26, 26, 26, 26, 26, 26, 30, 30, 30, 26,
+ 26, 26, 26, 64, 64, 26, 26, 26, 26, 26, 26, 26, 26, 64, 64, 26, 26, 64,
+ 64, 64, 26, 26, 26, 26, 64, 26, 26, 26, 26, 26, 26, 26, 26, 64, 64, 64,
+ 64, 64, 64, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455,
455, 455, 455, 64, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456,
456, 456, 456, 456, 64, 37, 41, 37, 37, 37, 41, 41, 37, 41, 37, 41, 37,
41, 37, 37, 37, 37, 41, 37, 41, 41, 37, 41, 41, 41, 41, 41, 41, 44, 44,
@@ -2624,280 +2596,263 @@ static const unsigned short index2[] = {
467, 467, 467, 467, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495,
495, 495, 495, 495, 495, 64, 489, 489, 489, 489, 489, 489, 489, 467, 467,
467, 467, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 467,
- 467, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496,
- 496, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 498, 498, 498,
- 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 499, 498, 498, 498,
- 498, 498, 498, 498, 64, 64, 64, 500, 500, 500, 500, 500, 500, 500, 500,
- 500, 500, 500, 500, 500, 500, 500, 64, 501, 501, 501, 501, 501, 501, 501,
- 501, 502, 502, 502, 502, 502, 502, 503, 503, 504, 504, 504, 504, 504,
- 504, 504, 504, 504, 504, 504, 504, 505, 506, 506, 506, 507, 507, 507,
- 507, 507, 507, 507, 507, 507, 507, 504, 504, 64, 64, 64, 64, 72, 75, 72,
- 75, 72, 75, 508, 77, 79, 79, 79, 509, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 509, 510, 72, 75, 72, 75, 403, 403, 77, 77, 511, 511, 511, 511, 511,
- 511, 511, 511, 511, 511, 511, 511, 511, 511, 512, 512, 512, 512, 512,
- 512, 512, 512, 512, 512, 513, 513, 514, 514, 514, 514, 514, 514, 47, 47,
- 47, 47, 47, 47, 47, 45, 45, 45, 45, 45, 45, 45, 45, 45, 47, 47, 37, 41,
- 37, 41, 37, 41, 41, 41, 37, 41, 37, 41, 37, 41, 44, 41, 41, 41, 41, 41,
- 41, 41, 41, 37, 41, 37, 41, 37, 37, 41, 45, 515, 515, 37, 41, 37, 41, 42,
- 37, 41, 37, 41, 41, 41, 37, 41, 37, 41, 37, 37, 37, 37, 64, 64, 37, 37,
- 37, 37, 37, 41, 37, 41, 64, 64, 64, 64, 64, 64, 64, 42, 44, 44, 41, 42,
- 42, 42, 42, 42, 516, 516, 517, 516, 516, 516, 518, 516, 516, 516, 516,
- 517, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 519, 519, 517, 517, 519, 520, 520, 520, 520, 64, 64, 64, 64,
- 521, 521, 521, 521, 521, 521, 277, 277, 250, 444, 64, 64, 64, 64, 64, 64,
- 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 523, 523,
- 523, 523, 524, 524, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 524, 524, 524, 524, 524, 524,
- 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 526, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 527, 527, 528, 528, 528, 528, 528, 528, 528, 528,
- 528, 528, 64, 64, 64, 64, 64, 64, 174, 174, 174, 174, 174, 174, 174, 174,
- 174, 174, 171, 171, 171, 171, 171, 171, 176, 176, 176, 171, 176, 171, 64,
- 64, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 530, 530, 530, 530,
- 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530,
- 530, 530, 531, 531, 531, 531, 531, 532, 532, 532, 84, 533, 534, 534, 534,
- 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 535, 535,
- 535, 535, 535, 535, 535, 535, 535, 535, 535, 536, 537, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 538, 290, 290, 290, 290, 290, 64, 64, 64,
- 539, 539, 539, 540, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541,
- 541, 541, 541, 541, 541, 542, 540, 540, 539, 539, 539, 539, 540, 540,
- 539, 540, 540, 540, 543, 544, 544, 544, 544, 544, 544, 544, 544, 544,
- 544, 544, 544, 544, 64, 46, 545, 545, 545, 545, 545, 545, 545, 545, 545,
- 545, 64, 64, 64, 64, 544, 544, 278, 278, 278, 278, 278, 280, 546, 278,
- 283, 283, 278, 278, 278, 278, 278, 64, 547, 547, 547, 547, 547, 547, 547,
- 547, 547, 548, 548, 548, 548, 548, 548, 549, 549, 548, 548, 549, 549,
- 548, 548, 64, 547, 547, 547, 548, 547, 547, 547, 547, 547, 547, 547, 547,
- 548, 549, 64, 64, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 64,
- 64, 551, 551, 551, 551, 546, 278, 278, 278, 278, 278, 278, 286, 286, 286,
- 278, 279, 280, 279, 278, 278, 552, 552, 552, 552, 552, 552, 552, 552,
- 553, 552, 553, 553, 554, 552, 552, 553, 553, 552, 552, 552, 552, 552,
- 553, 553, 552, 553, 552, 64, 64, 64, 64, 64, 64, 64, 64, 552, 552, 555,
- 556, 556, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 558,
- 559, 559, 558, 558, 560, 560, 557, 561, 561, 558, 562, 64, 64, 292, 292,
- 292, 292, 292, 292, 64, 41, 41, 41, 515, 44, 44, 44, 44, 41, 41, 41, 41,
- 41, 62, 64, 64, 298, 298, 298, 298, 298, 298, 298, 298, 557, 557, 557,
- 558, 558, 559, 558, 558, 559, 558, 558, 560, 558, 562, 64, 64, 563, 563,
- 563, 563, 563, 563, 563, 563, 563, 563, 64, 64, 64, 64, 64, 64, 290, 290,
- 290, 290, 64, 64, 64, 64, 291, 291, 291, 291, 291, 291, 291, 64, 64, 64,
- 64, 291, 291, 291, 291, 291, 291, 291, 291, 291, 64, 64, 64, 64, 564,
- 564, 564, 564, 564, 564, 564, 564, 565, 565, 565, 565, 565, 565, 565,
- 565, 496, 496, 497, 497, 497, 497, 497, 497, 41, 41, 41, 41, 41, 41, 41,
- 64, 64, 64, 64, 83, 83, 83, 83, 83, 64, 64, 64, 64, 64, 110, 566, 110,
- 110, 567, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
- 110, 64, 110, 110, 110, 110, 110, 64, 110, 64, 110, 110, 64, 110, 110,
- 64, 110, 110, 126, 126, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
- 568, 568, 568, 568, 568, 568, 64, 64, 64, 64, 64, 64, 64, 64, 64, 126,
- 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 569, 418, 64, 64, 126,
- 126, 126, 126, 126, 126, 126, 126, 126, 126, 116, 119, 64, 64, 58, 58,
- 58, 58, 58, 58, 58, 58, 469, 469, 469, 469, 469, 469, 469, 474, 475, 469,
- 64, 64, 64, 64, 64, 64, 78, 78, 78, 78, 78, 78, 78, 136, 136, 136, 136,
- 136, 136, 136, 77, 77, 469, 473, 473, 570, 570, 474, 475, 474, 475, 474,
- 475, 474, 475, 474, 475, 474, 475, 474, 475, 474, 475, 469, 469, 474,
- 475, 469, 469, 469, 469, 570, 570, 570, 571, 469, 571, 64, 469, 571, 469,
- 469, 473, 451, 452, 451, 452, 451, 452, 572, 469, 469, 573, 574, 575,
- 575, 576, 64, 469, 577, 572, 469, 64, 64, 64, 64, 126, 126, 126, 126,
- 126, 64, 126, 126, 126, 126, 126, 126, 126, 64, 64, 410, 64, 578, 578,
- 579, 580, 579, 578, 578, 581, 582, 578, 583, 584, 585, 584, 584, 586,
- 586, 586, 586, 586, 586, 586, 586, 586, 586, 584, 578, 587, 588, 587,
- 578, 578, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
- 589, 589, 589, 589, 589, 589, 581, 578, 582, 590, 591, 590, 592, 592,
- 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592,
- 592, 592, 581, 588, 582, 588, 581, 582, 593, 594, 595, 593, 593, 596,
- 596, 596, 596, 596, 596, 596, 596, 596, 596, 597, 596, 596, 596, 596,
- 596, 596, 596, 596, 596, 596, 596, 596, 596, 597, 597, 598, 598, 598,
- 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 64, 64, 64,
- 598, 598, 598, 598, 598, 598, 64, 64, 598, 598, 598, 64, 64, 64, 580,
- 580, 588, 590, 599, 580, 580, 64, 600, 601, 601, 601, 601, 600, 600, 64,
- 64, 602, 602, 602, 26, 30, 64, 64, 603, 603, 603, 603, 603, 603, 603,
- 603, 603, 603, 603, 603, 64, 603, 603, 603, 603, 603, 603, 603, 603, 603,
- 603, 64, 603, 603, 603, 64, 603, 603, 64, 603, 603, 603, 603, 603, 603,
- 603, 64, 64, 603, 603, 603, 64, 64, 64, 64, 64, 84, 66, 84, 64, 64, 64,
- 64, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 64,
- 64, 64, 277, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604,
- 604, 605, 605, 605, 605, 606, 606, 606, 606, 606, 606, 606, 606, 606,
- 606, 606, 606, 606, 606, 606, 606, 606, 605, 605, 606, 64, 64, 64, 26,
- 26, 26, 26, 64, 64, 64, 64, 606, 64, 64, 64, 64, 64, 64, 64, 277, 277,
- 277, 277, 277, 136, 64, 64, 607, 607, 607, 607, 607, 607, 607, 607, 607,
- 607, 607, 607, 607, 64, 64, 64, 608, 608, 608, 608, 608, 608, 608, 608,
- 608, 64, 64, 64, 64, 64, 64, 64, 136, 438, 438, 438, 438, 438, 438, 438,
+ 467, 496, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497,
+ 497, 497, 497, 497, 497, 497, 497, 497, 496, 498, 498, 498, 498, 498,
+ 498, 498, 498, 498, 498, 497, 497, 497, 497, 496, 498, 498, 498, 499,
+ 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 500, 499,
+ 499, 499, 499, 499, 499, 499, 64, 64, 64, 501, 501, 501, 501, 501, 501,
+ 501, 501, 501, 501, 501, 501, 501, 501, 501, 64, 502, 502, 502, 502, 502,
+ 502, 502, 502, 503, 503, 503, 503, 503, 503, 504, 504, 505, 505, 505,
+ 505, 505, 505, 505, 505, 505, 505, 505, 505, 506, 507, 507, 507, 508,
+ 508, 508, 508, 508, 508, 508, 508, 508, 508, 505, 505, 64, 64, 64, 64,
+ 72, 75, 72, 75, 72, 75, 509, 77, 79, 79, 79, 510, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 510, 511, 72, 75, 72, 75, 403, 403, 64, 77, 512, 512,
+ 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 513, 513,
+ 513, 513, 513, 513, 513, 513, 513, 513, 514, 514, 515, 515, 515, 515,
+ 515, 515, 47, 47, 47, 47, 47, 47, 47, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 47, 47, 37, 41, 37, 41, 37, 41, 41, 41, 37, 41, 37, 41, 37, 41, 44, 41,
+ 41, 41, 41, 41, 41, 41, 41, 37, 41, 37, 41, 37, 37, 41, 45, 516, 516, 37,
+ 41, 37, 41, 64, 37, 41, 37, 41, 41, 41, 37, 41, 37, 41, 37, 37, 37, 37,
+ 64, 64, 37, 37, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 42,
+ 44, 44, 41, 42, 42, 42, 42, 42, 517, 517, 518, 517, 517, 517, 519, 517,
+ 517, 517, 517, 518, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
+ 517, 517, 517, 517, 517, 520, 520, 518, 518, 520, 521, 521, 521, 521, 64,
+ 64, 64, 64, 522, 522, 522, 522, 522, 522, 277, 277, 250, 444, 64, 64, 64,
+ 64, 64, 64, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523,
+ 524, 524, 524, 524, 525, 525, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 527, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 528, 528, 529, 529, 529, 529, 529, 529, 529,
+ 529, 529, 529, 64, 64, 64, 64, 64, 64, 174, 174, 174, 174, 174, 174, 174,
+ 174, 174, 174, 171, 171, 171, 171, 171, 171, 176, 176, 176, 171, 64, 64,
+ 64, 64, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 531, 531, 531,
+ 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531,
+ 531, 531, 531, 532, 532, 532, 532, 532, 533, 533, 533, 84, 534, 535, 535,
+ 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 536,
+ 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 537, 538, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 539, 290, 290, 290, 290, 290, 64, 64, 64,
+ 540, 540, 540, 541, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542,
+ 542, 542, 542, 542, 542, 543, 541, 541, 540, 540, 540, 540, 541, 541,
+ 540, 541, 541, 541, 544, 545, 545, 545, 545, 545, 545, 545, 545, 545,
+ 545, 545, 545, 545, 64, 46, 546, 546, 546, 546, 546, 546, 546, 546, 546,
+ 546, 64, 64, 64, 64, 545, 545, 278, 278, 278, 278, 278, 280, 547, 278,
+ 283, 283, 278, 278, 278, 278, 278, 64, 548, 548, 548, 548, 548, 548, 548,
+ 548, 548, 549, 549, 549, 549, 549, 549, 550, 550, 549, 549, 550, 550,
+ 549, 549, 64, 548, 548, 548, 549, 548, 548, 548, 548, 548, 548, 548, 548,
+ 549, 550, 64, 64, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 64,
+ 64, 552, 552, 552, 552, 547, 278, 278, 278, 278, 278, 278, 286, 286, 286,
+ 278, 279, 280, 279, 278, 278, 553, 553, 553, 553, 553, 553, 553, 553,
+ 554, 553, 554, 554, 555, 553, 553, 554, 554, 553, 553, 553, 553, 553,
+ 554, 554, 553, 554, 553, 64, 64, 64, 64, 64, 64, 64, 64, 553, 553, 556,
+ 557, 557, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 559,
+ 560, 560, 559, 559, 561, 561, 558, 562, 562, 559, 563, 64, 64, 292, 292,
+ 292, 292, 292, 292, 64, 41, 41, 41, 516, 44, 44, 44, 44, 64, 64, 64, 64,
+ 41, 62, 64, 64, 558, 558, 558, 559, 559, 560, 559, 559, 560, 559, 559,
+ 561, 559, 563, 64, 64, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564,
+ 64, 64, 64, 64, 64, 64, 290, 565, 565, 565, 565, 565, 565, 565, 565, 565,
+ 565, 565, 565, 565, 565, 565, 565, 565, 565, 290, 64, 64, 64, 64, 291,
+ 291, 291, 291, 291, 291, 291, 64, 64, 64, 64, 291, 291, 291, 291, 291,
+ 291, 291, 291, 291, 64, 64, 64, 64, 566, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 566, 567, 568, 568, 568, 568, 568, 568, 568, 568,
+ 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
+ 567, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496,
+ 496, 498, 498, 496, 496, 498, 498, 498, 498, 498, 498, 41, 41, 41, 41,
+ 41, 41, 41, 64, 64, 64, 64, 83, 83, 83, 83, 83, 64, 64, 64, 64, 64, 110,
+ 569, 110, 110, 570, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
+ 110, 110, 110, 64, 110, 110, 110, 110, 110, 64, 110, 64, 110, 110, 64,
+ 110, 110, 64, 110, 110, 126, 126, 571, 571, 571, 571, 571, 571, 571, 571,
+ 571, 571, 571, 571, 571, 571, 571, 571, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 572, 418, 64,
+ 64, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 116, 119, 64, 64,
+ 58, 58, 58, 58, 58, 58, 58, 58, 469, 469, 469, 469, 469, 469, 469, 474,
+ 475, 469, 64, 64, 64, 64, 64, 64, 78, 78, 78, 78, 78, 78, 78, 136, 136,
+ 136, 136, 136, 136, 136, 64, 64, 469, 473, 473, 573, 573, 474, 475, 474,
+ 475, 474, 475, 474, 475, 474, 475, 474, 475, 474, 475, 474, 475, 469,
+ 469, 474, 475, 469, 469, 469, 469, 573, 573, 573, 574, 469, 574, 64, 469,
+ 574, 469, 469, 473, 451, 452, 451, 452, 451, 452, 575, 469, 469, 576,
+ 577, 578, 578, 579, 64, 469, 580, 575, 469, 64, 64, 64, 64, 126, 126,
+ 126, 126, 126, 64, 126, 126, 126, 126, 126, 126, 126, 64, 64, 410, 64,
+ 581, 581, 582, 583, 582, 581, 581, 584, 585, 581, 586, 587, 588, 587,
+ 587, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 587, 581, 590,
+ 591, 590, 581, 581, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592,
+ 592, 592, 592, 592, 592, 592, 592, 592, 584, 581, 585, 593, 594, 593,
+ 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
+ 595, 595, 595, 595, 584, 591, 585, 591, 584, 585, 596, 597, 598, 596,
+ 596, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 600, 599, 599,
+ 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 600, 600, 601,
+ 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 64,
+ 64, 64, 601, 601, 601, 601, 601, 601, 64, 64, 601, 601, 601, 64, 64, 64,
+ 583, 583, 591, 593, 602, 583, 583, 64, 603, 604, 604, 604, 604, 603, 603,
+ 64, 64, 605, 605, 605, 26, 30, 64, 64, 606, 606, 606, 606, 606, 606, 606,
+ 606, 606, 606, 606, 606, 64, 606, 606, 606, 606, 606, 606, 606, 606, 606,
+ 606, 64, 606, 606, 606, 64, 606, 606, 64, 606, 606, 606, 606, 606, 606,
+ 606, 64, 64, 606, 606, 606, 64, 64, 64, 64, 64, 84, 66, 84, 64, 64, 64,
+ 64, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 64,
+ 64, 64, 277, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 608, 608, 608, 608, 609, 609, 609, 609, 609, 609, 609, 609, 609,
+ 609, 609, 609, 609, 609, 609, 609, 609, 608, 608, 609, 64, 64, 64, 26,
+ 26, 26, 26, 64, 64, 64, 64, 609, 64, 64, 64, 64, 64, 64, 64, 277, 277,
+ 277, 277, 277, 136, 64, 64, 610, 610, 610, 610, 610, 610, 610, 610, 610,
+ 610, 610, 610, 610, 64, 64, 64, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 64, 64, 64, 64, 64, 64, 64, 136, 438, 438, 438, 438, 438, 438, 438,
438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 64, 64, 64,
- 64, 609, 609, 609, 609, 609, 609, 609, 609, 610, 610, 610, 610, 64, 64,
- 64, 64, 611, 611, 611, 611, 611, 611, 611, 611, 611, 612, 611, 611, 611,
- 611, 611, 611, 611, 611, 612, 64, 64, 64, 64, 64, 613, 613, 613, 613,
- 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 614, 614, 614, 614,
- 614, 64, 64, 64, 64, 64, 615, 615, 615, 615, 615, 615, 615, 615, 615,
- 615, 615, 615, 615, 615, 64, 616, 617, 617, 617, 617, 617, 617, 617, 617,
- 617, 617, 617, 617, 64, 64, 64, 64, 618, 619, 619, 619, 619, 619, 64, 64,
- 620, 620, 620, 620, 620, 620, 620, 620, 621, 621, 621, 621, 621, 621,
- 621, 621, 622, 622, 622, 622, 622, 622, 622, 622, 623, 623, 623, 623,
- 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 64, 64, 624, 624, 624,
- 624, 624, 624, 624, 624, 624, 624, 64, 64, 64, 64, 64, 64, 625, 625, 625,
- 625, 625, 625, 625, 625, 626, 626, 626, 626, 626, 626, 626, 626, 626,
- 626, 626, 626, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 627, 628, 628,
- 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 64, 628,
- 628, 628, 628, 628, 628, 64, 64, 629, 629, 629, 629, 629, 629, 64, 64,
- 629, 64, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629,
- 629, 629, 629, 629, 629, 629, 629, 64, 629, 629, 64, 64, 64, 629, 64, 64,
- 629, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630,
- 630, 64, 631, 632, 632, 632, 632, 632, 632, 632, 632, 633, 633, 633, 633,
- 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 634, 634, 635,
- 635, 635, 635, 635, 635, 635, 636, 636, 636, 636, 636, 636, 636, 636,
- 636, 636, 636, 636, 636, 636, 636, 64, 64, 64, 64, 64, 64, 64, 64, 637,
- 637, 637, 637, 637, 637, 637, 637, 637, 638, 638, 638, 638, 638, 638,
- 638, 638, 638, 638, 638, 64, 638, 638, 64, 64, 64, 64, 64, 639, 639, 639,
- 639, 639, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640,
- 640, 640, 641, 641, 641, 641, 641, 641, 64, 64, 64, 642, 643, 643, 643,
- 643, 643, 643, 643, 643, 643, 643, 64, 64, 64, 64, 64, 644, 645, 645,
- 645, 645, 645, 645, 645, 645, 646, 646, 646, 646, 646, 646, 646, 646, 64,
- 64, 64, 64, 647, 647, 646, 646, 647, 647, 647, 647, 647, 647, 647, 647,
- 64, 64, 647, 647, 647, 647, 647, 647, 648, 649, 649, 649, 64, 649, 649,
- 64, 64, 64, 64, 64, 649, 650, 649, 651, 648, 648, 648, 648, 64, 648, 648,
- 648, 64, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648,
- 648, 648, 648, 648, 648, 648, 64, 64, 64, 64, 651, 652, 650, 64, 64, 64,
- 64, 653, 654, 654, 654, 654, 654, 654, 654, 654, 655, 655, 655, 655, 655,
- 655, 655, 655, 655, 64, 64, 64, 64, 64, 64, 64, 656, 656, 656, 656, 656,
- 656, 656, 656, 656, 656, 656, 656, 656, 657, 657, 658, 659, 659, 659,
- 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 660, 660, 660, 661,
- 661, 661, 661, 661, 661, 661, 661, 662, 661, 661, 661, 661, 661, 661,
- 661, 661, 661, 661, 661, 661, 663, 664, 64, 64, 64, 64, 665, 665, 665,
- 665, 665, 666, 666, 666, 666, 666, 666, 666, 64, 667, 667, 667, 667, 667,
- 667, 667, 667, 667, 667, 667, 667, 667, 667, 64, 64, 64, 668, 668, 668,
- 668, 668, 668, 668, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669,
- 669, 669, 669, 669, 64, 64, 670, 670, 670, 670, 670, 670, 670, 670, 671,
- 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 64, 64, 64, 64, 64,
- 672, 672, 672, 672, 672, 672, 672, 672, 673, 673, 673, 673, 673, 673,
- 673, 673, 673, 673, 64, 64, 64, 64, 64, 64, 64, 674, 674, 674, 674, 64,
- 64, 64, 64, 675, 675, 675, 675, 675, 675, 675, 676, 676, 676, 676, 676,
- 676, 676, 676, 676, 64, 64, 64, 64, 64, 64, 64, 677, 677, 677, 677, 677,
- 677, 677, 677, 677, 677, 677, 64, 64, 64, 64, 64, 678, 678, 678, 678,
- 678, 678, 678, 678, 678, 678, 678, 64, 64, 64, 64, 64, 64, 64, 679, 679,
- 679, 679, 679, 679, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680,
- 680, 680, 680, 680, 680, 64, 681, 682, 681, 683, 683, 683, 683, 683, 683,
- 683, 683, 683, 683, 683, 683, 683, 682, 682, 682, 682, 682, 682, 682,
- 682, 682, 682, 682, 682, 682, 682, 684, 685, 685, 685, 685, 685, 685,
- 685, 64, 64, 64, 64, 686, 686, 686, 686, 686, 686, 686, 686, 686, 686,
- 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, 687, 687, 687, 687,
- 687, 687, 687, 687, 687, 687, 64, 64, 64, 64, 64, 64, 64, 684, 688, 688,
- 689, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690,
- 689, 689, 689, 688, 688, 688, 688, 689, 689, 691, 692, 693, 693, 694,
- 693, 693, 693, 693, 64, 64, 64, 64, 64, 64, 695, 695, 695, 695, 695, 695,
- 695, 695, 695, 64, 64, 64, 64, 64, 64, 64, 696, 696, 696, 696, 696, 696,
- 696, 696, 696, 696, 64, 64, 64, 64, 64, 64, 697, 697, 697, 698, 698, 698,
- 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698,
- 698, 698, 698, 699, 699, 699, 699, 699, 700, 699, 699, 699, 699, 699,
- 699, 701, 701, 64, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 703,
- 703, 703, 703, 64, 64, 64, 64, 704, 704, 704, 704, 704, 704, 704, 704,
- 704, 704, 704, 705, 706, 706, 704, 64, 707, 707, 708, 709, 709, 709, 709,
- 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 708, 708,
- 708, 707, 707, 707, 707, 707, 707, 707, 707, 707, 708, 710, 709, 709,
- 709, 709, 711, 711, 711, 711, 711, 712, 707, 707, 711, 64, 64, 713, 713,
- 713, 713, 713, 713, 713, 713, 713, 713, 709, 711, 709, 711, 711, 711, 64,
- 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714,
- 714, 714, 714, 714, 714, 714, 64, 64, 64, 715, 715, 715, 715, 715, 715,
- 715, 715, 715, 715, 64, 715, 715, 715, 715, 715, 715, 715, 715, 715, 716,
- 716, 716, 717, 717, 717, 716, 716, 717, 718, 719, 717, 720, 720, 720,
- 720, 720, 720, 64, 64, 721, 721, 721, 721, 721, 721, 721, 64, 721, 64,
- 721, 721, 721, 721, 64, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721,
- 721, 721, 721, 721, 721, 64, 721, 721, 722, 64, 64, 64, 64, 64, 64, 723,
- 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723,
- 724, 725, 725, 725, 724, 724, 724, 724, 724, 724, 726, 727, 64, 64, 64,
- 64, 64, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 64, 64, 64, 64,
- 64, 64, 729, 729, 730, 730, 64, 731, 731, 731, 731, 731, 731, 731, 731,
- 64, 64, 731, 731, 64, 64, 731, 731, 731, 731, 731, 731, 731, 731, 731,
- 731, 731, 731, 731, 731, 64, 731, 731, 731, 731, 731, 731, 731, 64, 731,
- 731, 64, 731, 731, 731, 731, 731, 64, 64, 732, 731, 730, 730, 729, 730,
- 730, 730, 730, 64, 64, 730, 730, 64, 64, 730, 730, 733, 64, 64, 731, 64,
- 64, 64, 64, 64, 64, 730, 64, 64, 64, 64, 64, 731, 731, 731, 731, 731,
- 730, 730, 64, 64, 734, 734, 734, 734, 734, 734, 734, 64, 64, 64, 735,
- 735, 735, 735, 735, 735, 735, 735, 736, 736, 736, 737, 737, 737, 737,
- 737, 737, 736, 737, 736, 736, 736, 736, 737, 737, 736, 738, 739, 735,
- 735, 740, 735, 741, 741, 741, 741, 741, 741, 741, 741, 741, 741, 64, 64,
- 64, 64, 64, 64, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742,
- 742, 742, 742, 742, 743, 743, 743, 744, 744, 744, 744, 64, 64, 743, 743,
- 743, 743, 744, 744, 743, 745, 746, 747, 747, 747, 747, 747, 747, 747,
- 747, 747, 747, 747, 747, 747, 747, 747, 742, 742, 742, 742, 744, 744, 64,
- 64, 748, 748, 748, 748, 748, 748, 748, 748, 749, 749, 749, 750, 750, 750,
- 750, 750, 750, 750, 750, 749, 749, 750, 749, 751, 750, 752, 752, 752,
- 748, 64, 64, 64, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 64,
- 64, 64, 64, 64, 64, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754,
- 754, 755, 756, 755, 756, 756, 755, 755, 755, 755, 755, 755, 757, 758,
- 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 64, 64, 64, 64, 64, 64,
- 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 64, 64, 64, 761, 761,
- 761, 762, 762, 761, 761, 761, 761, 762, 761, 761, 761, 761, 763, 64, 64,
- 64, 64, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 765, 765, 766,
- 766, 766, 767, 768, 768, 768, 768, 768, 768, 768, 768, 769, 769, 769,
- 769, 769, 769, 769, 769, 770, 770, 770, 770, 770, 770, 770, 770, 770,
- 770, 771, 771, 771, 771, 771, 771, 771, 771, 771, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 772, 773, 773, 773, 773, 773, 773, 773, 773, 773,
- 64, 64, 64, 64, 64, 64, 64, 774, 774, 774, 774, 774, 774, 774, 774, 774,
- 774, 64, 64, 64, 64, 64, 64, 775, 775, 775, 775, 775, 775, 775, 775, 775,
- 775, 775, 775, 775, 775, 775, 64, 776, 776, 776, 776, 776, 64, 64, 64,
- 774, 774, 774, 774, 64, 64, 64, 64, 777, 777, 777, 777, 777, 777, 777,
- 777, 777, 777, 777, 777, 777, 777, 777, 64, 778, 778, 778, 778, 778, 778,
- 778, 778, 778, 778, 778, 778, 778, 778, 778, 64, 511, 64, 64, 64, 64, 64,
- 64, 64, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779,
- 779, 779, 64, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 64, 64,
- 64, 64, 781, 781, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782,
- 782, 782, 782, 64, 64, 783, 783, 783, 783, 783, 784, 64, 64, 785, 785,
- 785, 785, 785, 785, 785, 785, 786, 786, 786, 786, 786, 786, 786, 787,
- 787, 787, 787, 787, 788, 788, 788, 788, 789, 789, 789, 789, 787, 788, 64,
- 64, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 64, 791, 791, 791,
- 791, 791, 791, 791, 64, 785, 785, 785, 785, 785, 64, 64, 64, 64, 64, 785,
- 785, 785, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792, 792,
- 792, 64, 64, 64, 792, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793,
- 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 64, 64, 64,
- 64, 64, 64, 64, 64, 794, 794, 794, 794, 795, 795, 795, 795, 795, 795,
- 795, 795, 795, 795, 795, 795, 795, 486, 482, 64, 64, 64, 64, 64, 64, 796,
- 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 64, 64, 64, 64, 64,
- 796, 796, 796, 796, 796, 64, 64, 64, 796, 64, 64, 64, 64, 64, 64, 64,
- 796, 796, 64, 64, 797, 798, 799, 800, 410, 410, 410, 410, 64, 64, 64, 64,
- 277, 277, 277, 277, 277, 277, 64, 64, 277, 277, 277, 277, 277, 277, 277,
- 64, 64, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 801,
- 801, 400, 400, 400, 277, 277, 277, 802, 801, 801, 801, 801, 801, 410,
- 410, 410, 410, 410, 410, 410, 410, 136, 136, 136, 136, 136, 136, 136,
- 136, 277, 277, 78, 78, 78, 78, 78, 136, 136, 277, 277, 277, 277, 277,
- 277, 78, 78, 78, 78, 277, 277, 277, 64, 64, 64, 64, 64, 64, 64, 606, 606,
- 803, 803, 803, 606, 64, 64, 521, 521, 64, 64, 64, 64, 64, 64, 442, 442,
- 442, 442, 442, 442, 442, 442, 442, 442, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 442, 442, 442, 442, 442, 442,
- 442, 442, 442, 442, 34, 34, 34, 34, 34, 34, 34, 64, 34, 34, 34, 34, 34,
- 34, 442, 64, 442, 442, 64, 64, 442, 64, 64, 442, 442, 64, 64, 442, 442,
- 442, 442, 64, 442, 442, 34, 34, 64, 34, 64, 34, 34, 34, 34, 34, 34, 34,
- 64, 34, 34, 34, 34, 34, 34, 34, 442, 442, 64, 442, 442, 442, 442, 64, 64,
- 442, 442, 442, 442, 442, 442, 442, 442, 64, 442, 442, 442, 442, 442, 442,
- 442, 64, 34, 34, 442, 442, 64, 442, 442, 442, 442, 64, 442, 442, 442,
- 442, 442, 64, 442, 64, 64, 64, 442, 442, 442, 442, 442, 442, 442, 64, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 64, 64, 442, 804, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 445, 34, 34, 34, 34, 34, 34, 442, 442, 442, 442,
- 442, 442, 442, 442, 442, 804, 34, 34, 34, 34, 34, 34, 34, 34, 34, 445,
- 34, 34, 442, 442, 442, 442, 442, 804, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 445, 34, 34, 34, 34, 34, 34, 442, 442, 442, 442, 442, 442, 442, 442, 442,
- 804, 34, 445, 34, 34, 34, 34, 34, 34, 34, 34, 442, 34, 64, 64, 805, 805,
- 805, 805, 805, 805, 805, 805, 805, 805, 806, 806, 806, 806, 806, 806,
- 806, 806, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807,
- 807, 807, 807, 806, 806, 806, 806, 807, 807, 807, 807, 807, 807, 807,
- 807, 807, 807, 806, 806, 806, 806, 806, 806, 806, 806, 807, 806, 806,
- 806, 806, 806, 806, 807, 806, 806, 808, 808, 808, 808, 808, 64, 64, 64,
- 64, 64, 64, 64, 807, 807, 807, 807, 807, 64, 807, 807, 807, 807, 807,
- 807, 807, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809,
- 809, 64, 64, 810, 810, 810, 810, 810, 810, 810, 810, 810, 811, 811, 811,
- 811, 811, 811, 811, 64, 126, 126, 126, 126, 64, 126, 126, 126, 64, 126,
- 126, 64, 126, 64, 64, 126, 64, 126, 126, 126, 126, 126, 126, 126, 126,
- 126, 126, 64, 126, 126, 126, 126, 64, 126, 64, 126, 64, 64, 64, 64, 64,
- 64, 126, 64, 64, 64, 64, 126, 64, 126, 64, 126, 64, 126, 126, 126, 64,
- 126, 64, 126, 64, 126, 64, 126, 64, 126, 126, 126, 126, 64, 126, 64, 126,
- 126, 64, 126, 126, 126, 126, 126, 126, 126, 126, 126, 64, 64, 64, 64, 64,
- 126, 126, 126, 64, 126, 126, 126, 113, 113, 64, 64, 64, 64, 64, 64, 64,
- 26, 26, 26, 26, 26, 26, 26, 33, 33, 33, 446, 446, 64, 64, 64, 453, 453,
- 453, 453, 453, 453, 277, 64, 453, 453, 26, 26, 64, 64, 64, 64, 453, 453,
- 453, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 277, 277, 812, 489, 489,
- 64, 64, 64, 64, 64, 489, 489, 489, 64, 64, 64, 64, 64, 489, 64, 64, 64,
- 64, 64, 64, 64, 489, 489, 64, 64, 64, 64, 64, 64, 26, 26, 26, 47, 47, 47,
- 47, 47, 26, 26, 64, 26, 26, 26, 26, 26, 26, 26, 26, 26, 64, 26, 26, 26,
- 26, 64, 64, 64, 64, 64, 64, 64, 26, 26, 26, 26, 26, 64, 64, 64, 496, 496,
- 496, 496, 496, 496, 496, 497, 496, 496, 496, 496, 496, 497, 497, 497,
- 497, 497, 497, 497, 497, 497, 64, 64, 64, 410, 64, 64, 64, 64, 64, 64,
- 410, 410, 410, 410, 410, 410, 410, 410, 565, 565, 565, 565, 565, 565, 64,
- 64,
+ 64, 612, 612, 612, 612, 612, 612, 612, 612, 613, 613, 613, 613, 64, 64,
+ 64, 64, 614, 614, 614, 614, 614, 614, 614, 614, 614, 615, 614, 614, 614,
+ 614, 614, 614, 614, 614, 615, 64, 64, 64, 64, 64, 616, 616, 616, 616,
+ 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 617, 617, 617, 617,
+ 617, 64, 64, 64, 64, 64, 618, 618, 618, 618, 618, 618, 618, 618, 618,
+ 618, 618, 618, 618, 618, 64, 619, 620, 620, 620, 620, 620, 620, 620, 620,
+ 620, 620, 620, 620, 64, 64, 64, 64, 621, 622, 622, 622, 622, 622, 64, 64,
+ 623, 623, 623, 623, 623, 623, 623, 623, 624, 624, 624, 624, 624, 624,
+ 624, 624, 625, 625, 625, 625, 625, 625, 625, 625, 626, 626, 626, 626,
+ 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 64, 64, 627, 627, 627,
+ 627, 627, 627, 627, 627, 627, 627, 64, 64, 64, 64, 64, 64, 628, 628, 628,
+ 628, 628, 628, 628, 628, 629, 629, 629, 629, 629, 629, 629, 629, 629,
+ 629, 629, 629, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 630, 631, 631,
+ 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 64, 631,
+ 631, 631, 631, 631, 631, 64, 64, 632, 632, 632, 632, 632, 632, 64, 64,
+ 632, 64, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632,
+ 632, 632, 632, 632, 632, 632, 632, 64, 632, 632, 64, 64, 64, 632, 64, 64,
+ 632, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633,
+ 633, 64, 634, 635, 635, 635, 635, 635, 635, 635, 635, 636, 636, 636, 636,
+ 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 637, 637, 638,
+ 638, 638, 638, 638, 638, 638, 639, 639, 639, 639, 639, 639, 639, 639,
+ 639, 639, 639, 639, 639, 639, 639, 64, 64, 64, 64, 64, 64, 64, 64, 640,
+ 640, 640, 640, 640, 640, 640, 640, 640, 641, 641, 641, 641, 641, 641,
+ 641, 641, 641, 641, 641, 641, 641, 641, 642, 642, 642, 642, 642, 642, 64,
+ 64, 64, 643, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 64, 64,
+ 64, 64, 64, 645, 646, 646, 646, 646, 646, 646, 646, 646, 647, 647, 647,
+ 647, 647, 647, 647, 647, 64, 64, 64, 64, 64, 64, 647, 647, 648, 649, 649,
+ 649, 64, 649, 649, 64, 64, 64, 64, 64, 649, 650, 649, 651, 648, 648, 648,
+ 648, 64, 648, 648, 648, 64, 648, 648, 648, 648, 648, 648, 648, 648, 648,
+ 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 64, 64, 64, 64, 651,
+ 652, 650, 64, 64, 64, 64, 653, 654, 654, 654, 654, 654, 654, 654, 654,
+ 655, 655, 655, 655, 655, 655, 655, 655, 655, 64, 64, 64, 64, 64, 64, 64,
+ 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 657,
+ 657, 658, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659,
+ 659, 660, 660, 660, 661, 661, 661, 661, 661, 661, 661, 661, 662, 661,
+ 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 663, 664, 64, 64,
+ 64, 64, 665, 665, 665, 665, 665, 666, 666, 666, 666, 666, 666, 666, 64,
+ 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 64,
+ 64, 64, 668, 668, 668, 668, 668, 668, 668, 669, 669, 669, 669, 669, 669,
+ 669, 669, 669, 669, 669, 669, 669, 669, 64, 64, 670, 670, 670, 670, 670,
+ 670, 670, 670, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 64,
+ 64, 64, 64, 64, 672, 672, 672, 672, 672, 672, 672, 672, 673, 673, 673,
+ 673, 673, 673, 673, 673, 673, 673, 64, 64, 64, 64, 64, 64, 64, 674, 674,
+ 674, 674, 64, 64, 64, 64, 675, 675, 675, 675, 675, 675, 675, 676, 676,
+ 676, 676, 676, 676, 676, 676, 676, 64, 64, 64, 64, 64, 64, 64, 677, 677,
+ 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 64, 678,
+ 679, 678, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680,
+ 680, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679,
+ 679, 681, 682, 682, 682, 682, 682, 682, 682, 64, 64, 64, 64, 683, 683,
+ 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683,
+ 683, 683, 683, 683, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 64,
+ 64, 64, 64, 64, 64, 64, 681, 685, 685, 686, 687, 687, 687, 687, 687, 687,
+ 687, 687, 687, 687, 687, 687, 687, 686, 686, 686, 685, 685, 685, 685,
+ 686, 686, 688, 689, 690, 690, 691, 690, 690, 690, 690, 64, 64, 64, 64,
+ 64, 64, 692, 692, 692, 692, 692, 692, 692, 692, 692, 64, 64, 64, 64, 64,
+ 64, 64, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 64, 64, 64, 64,
+ 64, 64, 694, 694, 694, 695, 695, 695, 695, 695, 695, 695, 695, 695, 695,
+ 695, 695, 695, 695, 695, 695, 695, 695, 695, 695, 696, 696, 696, 696,
+ 696, 697, 696, 696, 696, 696, 696, 696, 698, 698, 64, 699, 699, 699, 699,
+ 699, 699, 699, 699, 699, 699, 700, 700, 700, 700, 64, 64, 64, 64, 701,
+ 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 702, 703, 703, 701, 64,
+ 704, 704, 705, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
+ 706, 706, 706, 706, 706, 705, 705, 705, 704, 704, 704, 704, 704, 704,
+ 704, 704, 704, 705, 707, 706, 706, 706, 706, 708, 708, 708, 708, 64, 64,
+ 64, 64, 708, 64, 64, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709,
+ 706, 64, 64, 64, 64, 64, 64, 710, 710, 710, 710, 710, 710, 710, 710, 710,
+ 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, 64, 64, 64, 711,
+ 711, 711, 711, 711, 711, 711, 711, 711, 711, 64, 711, 711, 711, 711, 711,
+ 711, 711, 711, 711, 712, 712, 712, 713, 713, 713, 712, 712, 713, 714,
+ 715, 713, 716, 716, 716, 716, 716, 716, 64, 64, 717, 717, 717, 717, 717,
+ 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, 718, 719, 719, 719,
+ 718, 718, 718, 718, 718, 718, 720, 721, 64, 64, 64, 64, 64, 722, 722,
+ 722, 722, 722, 722, 722, 722, 722, 722, 64, 64, 64, 64, 64, 64, 64, 723,
+ 724, 724, 64, 725, 725, 725, 725, 725, 725, 725, 725, 64, 64, 725, 725,
+ 64, 64, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725,
+ 725, 64, 725, 725, 725, 725, 725, 725, 725, 64, 725, 725, 64, 725, 725,
+ 725, 725, 725, 64, 64, 726, 725, 724, 724, 723, 724, 724, 724, 724, 64,
+ 64, 724, 724, 64, 64, 724, 724, 727, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 724, 64, 64, 64, 64, 64, 725, 725, 725, 725, 725, 724, 724, 64, 64, 728,
+ 728, 728, 728, 728, 728, 728, 64, 64, 64, 729, 729, 729, 729, 729, 729,
+ 729, 729, 730, 730, 730, 731, 731, 731, 731, 731, 731, 730, 731, 730,
+ 730, 730, 730, 731, 731, 730, 732, 733, 729, 729, 734, 729, 735, 735,
+ 735, 735, 735, 735, 735, 735, 735, 735, 64, 64, 64, 64, 64, 64, 736, 736,
+ 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 737,
+ 737, 737, 738, 738, 738, 738, 64, 64, 737, 737, 737, 737, 738, 738, 737,
+ 739, 740, 741, 741, 741, 741, 741, 741, 741, 741, 741, 64, 64, 64, 64,
+ 64, 64, 742, 742, 742, 742, 742, 742, 742, 742, 743, 743, 743, 744, 744,
+ 744, 744, 744, 744, 744, 744, 743, 743, 744, 743, 745, 744, 746, 746,
+ 746, 742, 64, 64, 64, 747, 747, 747, 747, 747, 747, 747, 747, 747, 747,
+ 64, 64, 64, 64, 64, 64, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748,
+ 748, 749, 750, 749, 750, 750, 749, 749, 749, 749, 749, 749, 751, 752,
+ 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 64, 64, 64, 64, 64, 64,
+ 754, 754, 754, 754, 754, 754, 754, 754, 755, 755, 755, 755, 755, 755,
+ 755, 755, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 757, 757,
+ 757, 757, 757, 757, 757, 757, 757, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 758, 759, 759, 759, 759, 759, 759, 759, 759, 759, 64, 64, 64,
+ 64, 64, 64, 64, 760, 760, 760, 760, 760, 760, 760, 760, 760, 64, 64, 64,
+ 64, 64, 64, 64, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761,
+ 761, 761, 761, 761, 64, 762, 762, 762, 762, 762, 64, 64, 64, 763, 763,
+ 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 64, 512,
+ 64, 64, 64, 64, 64, 64, 64, 764, 764, 764, 764, 764, 764, 764, 764, 764,
+ 764, 764, 764, 764, 764, 764, 64, 765, 765, 765, 765, 765, 765, 765, 765,
+ 765, 765, 64, 64, 64, 64, 766, 766, 767, 767, 767, 767, 767, 767, 767,
+ 767, 767, 767, 767, 767, 767, 767, 64, 64, 768, 768, 768, 768, 768, 769,
+ 64, 64, 770, 770, 770, 770, 770, 770, 770, 770, 771, 771, 771, 771, 771,
+ 771, 771, 772, 772, 772, 772, 772, 773, 773, 773, 773, 774, 774, 774,
+ 774, 772, 773, 64, 64, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775,
+ 64, 776, 776, 776, 776, 776, 776, 776, 64, 770, 770, 770, 770, 770, 64,
+ 64, 64, 64, 64, 770, 770, 770, 777, 777, 777, 777, 777, 777, 777, 777,
+ 777, 777, 777, 777, 777, 64, 64, 64, 777, 778, 778, 778, 778, 778, 778,
+ 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778,
+ 778, 778, 64, 64, 64, 64, 64, 64, 64, 64, 779, 779, 779, 779, 780, 780,
+ 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 486, 482, 64, 64,
+ 64, 64, 64, 64, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
+ 64, 64, 64, 64, 64, 781, 781, 781, 781, 781, 64, 64, 64, 781, 64, 64, 64,
+ 64, 64, 64, 64, 781, 781, 64, 64, 782, 783, 784, 785, 410, 410, 410, 410,
+ 64, 64, 64, 64, 277, 277, 277, 277, 277, 277, 64, 64, 277, 277, 277, 277,
+ 277, 277, 277, 64, 64, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
+ 277, 277, 786, 786, 400, 400, 400, 277, 277, 277, 787, 786, 786, 786,
+ 786, 786, 410, 410, 410, 410, 410, 410, 410, 410, 136, 136, 136, 136,
+ 136, 136, 136, 136, 277, 277, 78, 78, 78, 78, 78, 136, 136, 277, 277,
+ 277, 277, 277, 277, 78, 78, 78, 78, 277, 277, 609, 609, 788, 788, 788,
+ 609, 64, 64, 522, 522, 64, 64, 64, 64, 64, 64, 442, 442, 442, 442, 442,
+ 442, 442, 442, 442, 442, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442,
+ 34, 34, 34, 34, 34, 34, 34, 64, 34, 34, 34, 34, 34, 34, 442, 64, 442,
+ 442, 64, 64, 442, 64, 64, 442, 442, 64, 64, 442, 442, 442, 442, 64, 442,
+ 442, 34, 34, 64, 34, 64, 34, 34, 34, 34, 34, 34, 34, 64, 34, 34, 34, 34,
+ 34, 34, 34, 442, 442, 64, 442, 442, 442, 442, 64, 64, 442, 442, 442, 442,
+ 442, 442, 442, 442, 64, 442, 442, 442, 442, 442, 442, 442, 64, 34, 34,
+ 442, 442, 64, 442, 442, 442, 442, 64, 442, 442, 442, 442, 442, 64, 442,
+ 64, 64, 64, 442, 442, 442, 442, 442, 442, 442, 64, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 64, 64, 442, 789, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 445, 34, 34, 34, 34, 34, 34, 442, 442, 442, 442, 442, 442, 442,
+ 442, 442, 789, 34, 34, 34, 34, 34, 34, 34, 34, 34, 445, 34, 34, 442, 442,
+ 442, 442, 442, 789, 34, 34, 34, 34, 34, 34, 34, 34, 34, 445, 34, 34, 34,
+ 34, 34, 34, 442, 442, 442, 442, 442, 442, 442, 442, 442, 789, 34, 445,
+ 34, 34, 34, 34, 34, 34, 34, 34, 442, 34, 64, 64, 790, 790, 790, 790, 790,
+ 790, 790, 790, 790, 790, 791, 791, 791, 791, 791, 791, 791, 791, 791,
+ 791, 791, 791, 791, 64, 64, 792, 792, 792, 792, 792, 792, 792, 792, 792,
+ 793, 793, 793, 793, 793, 793, 793, 64, 126, 126, 126, 126, 64, 126, 126,
+ 126, 64, 126, 126, 64, 126, 64, 64, 126, 64, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 64, 126, 126, 126, 126, 64, 126, 64, 126, 64,
+ 64, 64, 64, 64, 64, 126, 64, 64, 64, 64, 126, 64, 126, 64, 126, 64, 126,
+ 126, 126, 64, 126, 64, 126, 64, 126, 64, 126, 64, 126, 126, 126, 126, 64,
+ 126, 64, 126, 126, 64, 126, 126, 126, 126, 126, 126, 126, 126, 126, 64,
+ 64, 64, 64, 64, 126, 126, 126, 64, 126, 126, 126, 113, 113, 64, 64, 64,
+ 64, 64, 64, 64, 26, 26, 26, 26, 26, 26, 26, 33, 33, 33, 446, 446, 64, 64,
+ 64, 453, 453, 453, 453, 453, 453, 277, 64, 453, 453, 26, 26, 64, 64, 64,
+ 64, 453, 453, 453, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 277, 277,
+ 794, 489, 489, 64, 64, 64, 64, 64, 489, 489, 489, 64, 64, 64, 64, 64,
+ 489, 64, 64, 64, 64, 64, 64, 64, 489, 489, 64, 64, 64, 64, 64, 64, 26,
+ 26, 26, 26, 26, 64, 64, 64, 64, 64, 64, 64, 26, 26, 26, 26, 26, 26, 64,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 64, 26, 26, 26, 26, 26, 26, 64, 64,
+ 26, 26, 26, 497, 497, 497, 497, 497, 497, 496, 498, 498, 498, 498, 498,
+ 498, 498, 64, 64, 64, 410, 64, 64, 64, 64, 64, 64, 410, 410, 410, 410,
+ 410, 410, 410, 410, 568, 568, 568, 568, 568, 567, 64, 64,
};
/* decomposition data */
diff --git a/src/hb-unicode-private.hh b/src/hb-unicode-private.hh
index 0cb99f0..a2c59da 100644
--- a/src/hb-unicode-private.hh
+++ b/src/hb-unicode-private.hh
@@ -115,8 +115,6 @@ HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS_SIMPLE
/* XXX This hack belongs to the Tibetan shaper:
* Reorder PADMA to ensure it comes after any vowel marks. */
if (unlikely (unicode == 0x0FC6u)) return 254;
- /* Reorder TSA -PHRU to reorder before U+0F74 */
- if (unlikely (unicode == 0x0F39u)) return 127;
return _hb_modified_combining_class[combining_class (unicode)];
}
@@ -201,50 +199,6 @@ HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS_SIMPLE
}
}
- /* Space estimates based on:
- * http://www.unicode.org/charts/PDF/U2000.pdf
- * https://www.microsoft.com/typography/developers/fdsspec/spaces.aspx
- */
- enum space_t {
- NOT_SPACE = 0,
- SPACE_EM = 1,
- SPACE_EM_2 = 2,
- SPACE_EM_3 = 3,
- SPACE_EM_4 = 4,
- SPACE_EM_5 = 5,
- SPACE_EM_6 = 6,
- SPACE_EM_16 = 16,
- SPACE_4_EM_18, /* 4/18th of an EM! */
- SPACE,
- SPACE_FIGURE,
- SPACE_PUNCTUATION,
- SPACE_NARROW,
- };
- static inline space_t
- space_fallback_type (hb_codepoint_t u)
- {
- switch (u)
- {
- /* All GC=Zs chars that can use a fallback. */
- default: return NOT_SPACE; /* U+1680 OGHAM SPACE MARK */
- case 0x0020u: return SPACE; /* U+0020 SPACE */
- case 0x00A0u: return SPACE; /* U+00A0 NO-BREAK SPACE */
- case 0x2000u: return SPACE_EM_2; /* U+2000 EN QUAD */
- case 0x2001u: return SPACE_EM; /* U+2001 EM QUAD */
- case 0x2002u: return SPACE_EM_2; /* U+2002 EN SPACE */
- case 0x2003u: return SPACE_EM; /* U+2003 EM SPACE */
- case 0x2004u: return SPACE_EM_3; /* U+2004 THREE-PER-EM SPACE */
- case 0x2005u: return SPACE_EM_4; /* U+2005 FOUR-PER-EM SPACE */
- case 0x2006u: return SPACE_EM_6; /* U+2006 SIX-PER-EM SPACE */
- case 0x2007u: return SPACE_FIGURE; /* U+2007 FIGURE SPACE */
- case 0x2008u: return SPACE_PUNCTUATION; /* U+2008 PUNCTUATION SPACE */
- case 0x2009u: return SPACE_EM_5; /* U+2009 THIN SPACE */
- case 0x200Au: return SPACE_EM_16; /* U+200A HAIR SPACE */
- case 0x202Fu: return SPACE_NARROW; /* U+202F NARROW NO-BREAK SPACE */
- case 0x205Fu: return SPACE_4_EM_18; /* U+205F MEDIUM MATHEMATICAL SPACE */
- case 0x3000u: return SPACE_EM; /* U+3000 IDEOGRAPHIC SPACE */
- }
- }
struct {
#define HB_UNICODE_FUNC_IMPLEMENT(name) hb_unicode_##name##_func_t name;
@@ -345,26 +299,19 @@ extern HB_INTERNAL const hb_unicode_funcs_t _hb_unicode_funcs_nil;
#define HB_MODIFIED_COMBINING_CLASS_CCC118 118 /* sign u / sign uu */
#define HB_MODIFIED_COMBINING_CLASS_CCC122 122 /* mai * */
-/* Tibetan
- * Modify U+0F74 (ccc=132) to reorder before ccc=130 marks.
- */
+/* Tibetan */
#define HB_MODIFIED_COMBINING_CLASS_CCC129 129 /* sign aa */
#define HB_MODIFIED_COMBINING_CLASS_CCC130 130 /* sign i */
-#define HB_MODIFIED_COMBINING_CLASS_CCC132 128 /* sign u */
+#define HB_MODIFIED_COMBINING_CLASS_CCC132 132 /* sign u */
/* Misc */
#define HB_UNICODE_GENERAL_CATEGORY_IS_MARK(gen_cat) \
- (FLAG_SAFE (gen_cat) & \
+ (FLAG (gen_cat) & \
(FLAG (HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK) | \
FLAG (HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) | \
FLAG (HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)))
-#define HB_UNICODE_GENERAL_CATEGORY_IS_NON_ENCLOSING_MARK_OR_MODIFIER_SYMBOL(gen_cat) \
- (FLAG_SAFE (gen_cat) & \
- (FLAG (HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK) | \
- FLAG (HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) | \
- FLAG (HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL)))
#endif /* HB_UNICODE_PRIVATE_HH */
diff --git a/src/hb-unicode.cc b/src/hb-unicode.cc
index 487d10b..fc19006 100644
--- a/src/hb-unicode.cc
+++ b/src/hb-unicode.cc
@@ -146,8 +146,13 @@ hb_unicode_funcs_get_default (void)
}
#if !defined(HB_NO_UNICODE_FUNCS) && defined(HB_UNICODE_FUNCS_NIL)
-#error "Could not find any Unicode functions implementation, you have to provide your own"
-#error "Consider building hb-ucdn.c. If you absolutely want to build without any, check the code."
+#ifdef _MSC_VER
+#pragma message("Could not find any Unicode functions implementation, you have to provide your own")
+#pragma message("To suppress this warnings, define HB_NO_UNICODE_FUNCS")
+#else
+#warning "Could not find any Unicode functions implementation, you have to provide your own"
+#warning "To suppress this warning, define HB_NO_UNICODE_FUNCS"
+#endif
#endif
/**
@@ -158,7 +163,7 @@ hb_unicode_funcs_get_default (void)
*
* Return value: (transfer full):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_unicode_funcs_t *
hb_unicode_funcs_create (hb_unicode_funcs_t *parent)
@@ -204,7 +209,7 @@ const hb_unicode_funcs_t _hb_unicode_funcs_nil = {
*
* Return value: (transfer full):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_unicode_funcs_t *
hb_unicode_funcs_get_empty (void)
@@ -220,7 +225,7 @@ hb_unicode_funcs_get_empty (void)
*
* Return value: (transfer full):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_unicode_funcs_t *
hb_unicode_funcs_reference (hb_unicode_funcs_t *ufuncs)
@@ -234,7 +239,7 @@ hb_unicode_funcs_reference (hb_unicode_funcs_t *ufuncs)
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_unicode_funcs_destroy (hb_unicode_funcs_t *ufuncs)
@@ -263,7 +268,7 @@ hb_unicode_funcs_destroy (hb_unicode_funcs_t *ufuncs)
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_unicode_funcs_set_user_data (hb_unicode_funcs_t *ufuncs,
@@ -284,7 +289,7 @@ hb_unicode_funcs_set_user_data (hb_unicode_funcs_t *ufuncs,
*
* Return value: (transfer none):
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void *
hb_unicode_funcs_get_user_data (hb_unicode_funcs_t *ufuncs,
@@ -300,7 +305,7 @@ hb_unicode_funcs_get_user_data (hb_unicode_funcs_t *ufuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
void
hb_unicode_funcs_make_immutable (hb_unicode_funcs_t *ufuncs)
@@ -319,7 +324,7 @@ hb_unicode_funcs_make_immutable (hb_unicode_funcs_t *ufuncs)
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_unicode_funcs_is_immutable (hb_unicode_funcs_t *ufuncs)
@@ -335,7 +340,7 @@ hb_unicode_funcs_is_immutable (hb_unicode_funcs_t *ufuncs)
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_unicode_funcs_t *
hb_unicode_funcs_get_parent (hb_unicode_funcs_t *ufuncs)
@@ -395,7 +400,7 @@ HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS_SIMPLE
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_unicode_compose (hb_unicode_funcs_t *ufuncs,
@@ -417,7 +422,7 @@ hb_unicode_compose (hb_unicode_funcs_t *ufuncs,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
hb_bool_t
hb_unicode_decompose (hb_unicode_funcs_t *ufuncs,
@@ -438,7 +443,7 @@ hb_unicode_decompose (hb_unicode_funcs_t *ufuncs,
*
* Return value:
*
- * Since: 0.9.2
+ * Since: 1.0
**/
unsigned int
hb_unicode_decompose_compatibility (hb_unicode_funcs_t *ufuncs,
diff --git a/src/hb-unicode.h b/src/hb-unicode.h
index 6a15cb0..1c4e097 100644
--- a/src/hb-unicode.h
+++ b/src/hb-unicode.h
@@ -174,23 +174,23 @@ typedef struct hb_unicode_funcs_t hb_unicode_funcs_t;
/*
* just give me the best implementation you've got there.
*/
-HB_EXTERN hb_unicode_funcs_t *
+hb_unicode_funcs_t *
hb_unicode_funcs_get_default (void);
-HB_EXTERN hb_unicode_funcs_t *
+hb_unicode_funcs_t *
hb_unicode_funcs_create (hb_unicode_funcs_t *parent);
-HB_EXTERN hb_unicode_funcs_t *
+hb_unicode_funcs_t *
hb_unicode_funcs_get_empty (void);
-HB_EXTERN hb_unicode_funcs_t *
+hb_unicode_funcs_t *
hb_unicode_funcs_reference (hb_unicode_funcs_t *ufuncs);
-HB_EXTERN void
+void
hb_unicode_funcs_destroy (hb_unicode_funcs_t *ufuncs);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_unicode_funcs_set_user_data (hb_unicode_funcs_t *ufuncs,
hb_user_data_key_t *key,
void * data,
@@ -198,18 +198,18 @@ hb_unicode_funcs_set_user_data (hb_unicode_funcs_t *ufuncs,
hb_bool_t replace);
-HB_EXTERN void *
+void *
hb_unicode_funcs_get_user_data (hb_unicode_funcs_t *ufuncs,
hb_user_data_key_t *key);
-HB_EXTERN void
+void
hb_unicode_funcs_make_immutable (hb_unicode_funcs_t *ufuncs);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_unicode_funcs_is_immutable (hb_unicode_funcs_t *ufuncs);
-HB_EXTERN hb_unicode_funcs_t *
+hb_unicode_funcs_t *
hb_unicode_funcs_get_parent (hb_unicode_funcs_t *ufuncs);
@@ -283,9 +283,9 @@ typedef unsigned int (*hb_unicode_decompose_compatibility_func_t) (hb_unicode_
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_unicode_funcs_set_combining_class_func (hb_unicode_funcs_t *ufuncs,
hb_unicode_combining_class_func_t func,
void *user_data, hb_destroy_func_t destroy);
@@ -299,9 +299,9 @@ hb_unicode_funcs_set_combining_class_func (hb_unicode_funcs_t *ufuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_unicode_funcs_set_eastasian_width_func (hb_unicode_funcs_t *ufuncs,
hb_unicode_eastasian_width_func_t func,
void *user_data, hb_destroy_func_t destroy);
@@ -315,9 +315,9 @@ hb_unicode_funcs_set_eastasian_width_func (hb_unicode_funcs_t *ufuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_unicode_funcs_set_general_category_func (hb_unicode_funcs_t *ufuncs,
hb_unicode_general_category_func_t func,
void *user_data, hb_destroy_func_t destroy);
@@ -331,9 +331,9 @@ hb_unicode_funcs_set_general_category_func (hb_unicode_funcs_t *ufuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_unicode_funcs_set_mirroring_func (hb_unicode_funcs_t *ufuncs,
hb_unicode_mirroring_func_t func,
void *user_data, hb_destroy_func_t destroy);
@@ -347,9 +347,9 @@ hb_unicode_funcs_set_mirroring_func (hb_unicode_funcs_t *ufuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_unicode_funcs_set_script_func (hb_unicode_funcs_t *ufuncs,
hb_unicode_script_func_t func,
void *user_data, hb_destroy_func_t destroy);
@@ -363,9 +363,9 @@ hb_unicode_funcs_set_script_func (hb_unicode_funcs_t *ufuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_unicode_funcs_set_compose_func (hb_unicode_funcs_t *ufuncs,
hb_unicode_compose_func_t func,
void *user_data, hb_destroy_func_t destroy);
@@ -379,9 +379,9 @@ hb_unicode_funcs_set_compose_func (hb_unicode_funcs_t *ufuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_unicode_funcs_set_decompose_func (hb_unicode_funcs_t *ufuncs,
hb_unicode_decompose_func_t func,
void *user_data, hb_destroy_func_t destroy);
@@ -395,88 +395,47 @@ hb_unicode_funcs_set_decompose_func (hb_unicode_funcs_t *ufuncs,
*
*
*
- * Since: 0.9.2
+ * Since: 1.0
**/
-HB_EXTERN void
+void
hb_unicode_funcs_set_decompose_compatibility_func (hb_unicode_funcs_t *ufuncs,
hb_unicode_decompose_compatibility_func_t func,
void *user_data, hb_destroy_func_t destroy);
/* accessors */
-/**
- * hb_unicode_combining_class:
- *
- * Since: 0.9.2
- **/
-HB_EXTERN hb_unicode_combining_class_t
+hb_unicode_combining_class_t
hb_unicode_combining_class (hb_unicode_funcs_t *ufuncs,
hb_codepoint_t unicode);
-/**
- * hb_unicode_eastasian_width:
- *
- * Since: 0.9.2
- **/
-HB_EXTERN unsigned int
+unsigned int
hb_unicode_eastasian_width (hb_unicode_funcs_t *ufuncs,
hb_codepoint_t unicode);
-/**
- * hb_unicode_general_category:
- *
- * Since: 0.9.2
- **/
-HB_EXTERN hb_unicode_general_category_t
+hb_unicode_general_category_t
hb_unicode_general_category (hb_unicode_funcs_t *ufuncs,
hb_codepoint_t unicode);
-/**
- * hb_unicode_mirroring:
- *
- * Since: 0.9.2
- **/
-HB_EXTERN hb_codepoint_t
+hb_codepoint_t
hb_unicode_mirroring (hb_unicode_funcs_t *ufuncs,
hb_codepoint_t unicode);
-/**
- * hb_unicode_script:
- *
- * Since: 0.9.2
- **/
-HB_EXTERN hb_script_t
+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_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_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
+unsigned int
hb_unicode_decompose_compatibility (hb_unicode_funcs_t *ufuncs,
hb_codepoint_t u,
hb_codepoint_t *decomposed);
diff --git a/src/hb-uniscribe.cc b/src/hb-uniscribe.cc
index 7fda678..e7bcad2 100644
--- a/src/hb-uniscribe.cc
+++ b/src/hb-uniscribe.cc
@@ -486,16 +486,14 @@ struct hb_uniscribe_shaper_font_data_t {
LOGFONTW log_font;
HFONT hfont;
SCRIPT_CACHE script_cache;
- double x_mult, y_mult; /* From LOGFONT space to HB space. */
};
static bool
populate_log_font (LOGFONTW *lf,
- hb_font_t *font,
- unsigned int font_size)
+ hb_font_t *font)
{
memset (lf, 0, sizeof (*lf));
- lf->lfHeight = -font_size;
+ lf->lfHeight = -font->y_scale;
lf->lfCharSet = DEFAULT_CHARSET;
hb_face_t *face = font->face;
@@ -515,19 +513,9 @@ _hb_uniscribe_shaper_font_data_create (hb_font_t *font)
if (unlikely (!data))
return NULL;
- int font_size = font->face->get_upem (); /* Default... */
- /* No idea if the following is even a good idea. */
- if (font->y_ppem)
- font_size = font->y_ppem;
-
- if (font_size < 0)
- font_size = -font_size;
- data->x_mult = (double) font->x_scale / font_size;
- data->y_mult = (double) font->y_scale / font_size;
-
data->hdc = GetDC (NULL);
- if (unlikely (!populate_log_font (&data->log_font, font, font_size))) {
+ if (unlikely (!populate_log_font (&data->log_font, font))) {
DEBUG_MSG (UNISCRIBE, font, "Font populate_log_font() failed");
_hb_uniscribe_shaper_font_data_destroy (data);
return NULL;
@@ -919,7 +907,7 @@ retry:
if (unlikely (items[i].a.fNoGlyphIndex))
FAIL ("ScriptShapeOpenType() set fNoGlyphIndex");
- if (unlikely (hr == E_OUTOFMEMORY || hr == E_NOT_SUFFICIENT_BUFFER))
+ if (unlikely (hr == E_OUTOFMEMORY))
{
if (unlikely (!buffer->ensure (buffer->allocated * 2)))
FAIL ("Buffer resize failed");
@@ -1006,22 +994,21 @@ retry:
/* The rest is crap. Let's store position info there for now. */
info->mask = advances[i];
- info->var1.i32 = offsets[i].du;
- info->var2.i32 = offsets[i].dv;
+ info->var1.u32 = offsets[i].du;
+ info->var2.u32 = offsets[i].dv;
}
/* Set glyph positions */
buffer->clear_positions ();
- double x_mult = font_data->x_mult, y_mult = font_data->y_mult;
for (unsigned int i = 0; i < glyphs_len; i++)
{
hb_glyph_info_t *info = &buffer->info[i];
hb_glyph_position_t *pos = &buffer->pos[i];
/* TODO vertical */
- pos->x_advance = x_mult * (int32_t) info->mask;
- pos->x_offset = x_mult * (backward ? -info->var1.i32 : info->var1.i32);
- pos->y_offset = y_mult * info->var2.i32;
+ pos->x_advance = info->mask;
+ pos->x_offset = backward ? -info->var1.u32 : info->var1.u32;
+ pos->y_offset = info->var2.u32;
}
if (backward)
diff --git a/src/hb-uniscribe.h b/src/hb-uniscribe.h
index 4e4ef99..001ab38 100644
--- a/src/hb-uniscribe.h
+++ b/src/hb-uniscribe.h
@@ -34,10 +34,10 @@
HB_BEGIN_DECLS
-HB_EXTERN LOGFONTW *
+LOGFONTW *
hb_uniscribe_font_get_logfontw (hb_font_t *font);
-HB_EXTERN HFONT
+HFONT
hb_uniscribe_font_get_hfont (hb_font_t *font);
diff --git a/src/hb-utf-private.hh b/src/hb-utf-private.hh
index 74cf5d6..14d3c2e 100644
--- a/src/hb-utf-private.hh
+++ b/src/hb-utf-private.hh
@@ -146,11 +146,11 @@ struct hb_utf16_t
return text;
}
- if (likely (c <= 0xDBFFu && text < end))
+ if (likely (hb_in_range (c, 0xD800u, 0xDBFFu)))
{
/* High-surrogate in c */
- hb_codepoint_t l = *text;
- if (likely (hb_in_range (l, 0xDC00u, 0xDFFFu)))
+ hb_codepoint_t l;
+ if (text < end && ((l = *text), likely (hb_in_range (l, 0xDC00u, 0xDFFFu))))
{
/* Low-surrogate in l */
*unicode = (c << 10) + l - ((0xD800u << 10) - 0x10000u + 0xDC00u);
@@ -170,7 +170,8 @@ struct hb_utf16_t
hb_codepoint_t *unicode,
hb_codepoint_t replacement)
{
- hb_codepoint_t c = *--text;
+ const uint16_t *end = text--;
+ hb_codepoint_t c = *text;
if (likely (!hb_in_range (c, 0xD800u, 0xDFFFu)))
{
@@ -178,22 +179,14 @@ struct hb_utf16_t
return text;
}
- if (likely (c >= 0xDC00u && start < text))
- {
- /* Low-surrogate in c */
- hb_codepoint_t h = text[-1];
- if (likely (hb_in_range (h, 0xD800u, 0xDBFFu)))
- {
- /* High-surrogate in h */
- *unicode = (h << 10) + c - ((0xD800u << 10) - 0x10000u + 0xDC00u);
- text--;
- return text;
- }
- }
+ if (likely (start < text && hb_in_range (c, 0xDC00u, 0xDFFFu)))
+ text--;
+
+ if (likely (next (text, end, unicode, replacement) == end))
+ return text;
- /* Lonely / out-of-order surrogate. */
*unicode = replacement;
- return text;
+ return end - 1;
}
@@ -218,9 +211,14 @@ struct hb_utf32_t
hb_codepoint_t *unicode,
hb_codepoint_t replacement)
{
- hb_codepoint_t c = *unicode = *text++;
- if (validate && unlikely (c >= 0xD800u && (c <= 0xDFFFu || c > 0x10FFFFu)))
- *unicode = replacement;
+ hb_codepoint_t c = *text++;
+ if (validate && unlikely (c > 0x10FFFFu || hb_in_range (c, 0xD800u, 0xDFFFu)))
+ goto error;
+ *unicode = c;
+ return text;
+
+ error:
+ *unicode = replacement;
return text;
}
@@ -230,10 +228,8 @@ struct hb_utf32_t
hb_codepoint_t *unicode,
hb_codepoint_t replacement)
{
- hb_codepoint_t c = *unicode = *--text;
- if (validate && unlikely (c >= 0xD800u && (c <= 0xDFFFu || c > 0x10FFFFu)))
- *unicode = replacement;
- return text;
+ next (text - 1, text, unicode, replacement);
+ return text - 1;
}
static inline unsigned int
diff --git a/src/hb-version.h b/src/hb-version.h
index c90db6b..648a46f 100644
--- a/src/hb-version.h
+++ b/src/hb-version.h
@@ -36,26 +36,26 @@
HB_BEGIN_DECLS
-#define HB_VERSION_MAJOR 1
-#define HB_VERSION_MINOR 2
-#define HB_VERSION_MICRO 7
+#define HB_VERSION_MAJOR 0
+#define HB_VERSION_MINOR 9
+#define HB_VERSION_MICRO 40
-#define HB_VERSION_STRING "1.2.7"
+#define HB_VERSION_STRING "0.9.40"
#define HB_VERSION_ATLEAST(major,minor,micro) \
((major)*10000+(minor)*100+(micro) <= \
HB_VERSION_MAJOR*10000+HB_VERSION_MINOR*100+HB_VERSION_MICRO)
-HB_EXTERN void
+void
hb_version (unsigned int *major,
unsigned int *minor,
unsigned int *micro);
-HB_EXTERN const char *
+const char *
hb_version_string (void);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_version_atleast (unsigned int major,
unsigned int minor,
unsigned int micro);
diff --git a/src/hb-version.h.in b/src/hb-version.h.in
index 0ffd889..2517160 100644
--- a/src/hb-version.h.in
+++ b/src/hb-version.h.in
@@ -47,15 +47,15 @@ HB_BEGIN_DECLS
HB_VERSION_MAJOR*10000+HB_VERSION_MINOR*100+HB_VERSION_MICRO)
-HB_EXTERN void
+void
hb_version (unsigned int *major,
unsigned int *minor,
unsigned int *micro);
-HB_EXTERN const char *
+const char *
hb_version_string (void);
-HB_EXTERN hb_bool_t
+hb_bool_t
hb_version_atleast (unsigned int major,
unsigned int minor,
unsigned int micro);
diff --git a/src/hb-warning.cc b/src/hb-warning.cc
index 8f322bc..e0f88e2 100644
--- a/src/hb-warning.cc
+++ b/src/hb-warning.cc
@@ -29,11 +29,27 @@
#if defined(HB_ATOMIC_INT_NIL)
-#error "Could not find any system to define atomic_int macros, library WILL NOT be thread-safe"
-#error "Check hb-atomic-private.hh for possible resolutions."
+#ifdef _MSC_VER
+#pragma message("Could not find any system to define atomic_int macros, library may NOT be thread-safe")
+#else
+#warning "Could not find any system to define atomic_int macros, library may NOT be thread-safe"
+#endif
#endif
#if defined(HB_MUTEX_IMPL_NIL)
-#error "Could not find any system to define mutex macros, library WILL NOT be thread-safe"
-#error "Check hb-mutex-private.hh for possible resolutions."
+#ifdef _MSC_VER
+#pragma message("Could not find any system to define mutex macros, library may NOT be thread-safe")
+#else
+#warning "Could not find any system to define mutex macros, library may NOT be thread-safe"
+#endif
+#endif
+
+#if defined(HB_ATOMIC_INT_NIL) || defined(HB_MUTEX_IMPL_NIL)
+#ifdef _MSC_VER
+#pragma message("To suppress these warnings, define HB_NO_MT")
+#else
+#warning "To suppress these warnings, define HB_NO_MT"
#endif
+#endif
+
+
diff --git a/src/hb.h b/src/hb.h
index 7402034..c5a938a 100644
--- a/src/hb.h
+++ b/src/hb.h
@@ -28,10 +28,6 @@
#define HB_H
#define HB_H_IN
-#ifndef HB_EXTERN
-#define HB_EXTERN extern
-#endif
-
#include "hb-blob.h"
#include "hb-buffer.h"
#include "hb-common.h"
diff --git a/src/test.cc b/src/test.cc
index 0c90f8f..a8fe046 100644
--- a/src/test.cc
+++ b/src/test.cc
@@ -120,7 +120,7 @@ main (int argc, char **argv)
info->cluster,
info->codepoint,
pos->x_offset,
- pos->y_offset,
+ pos->x_offset,
pos->x_advance,
pos->y_advance);
diff --git a/test-driver b/test-driver
index d306056..32bf39e 100755
--- a/test-driver
+++ b/test-driver
@@ -1,7 +1,7 @@
#! /bin/sh
# test-driver - basic testsuite driver script.
-scriptversion=2013-07-13.22; # UTC
+scriptversion=2012-06-27.10; # UTC
# Copyright (C) 2011-2013 Free Software Foundation, Inc.
#
@@ -44,12 +44,13 @@ print_usage ()
Usage:
test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
[--expect-failure={yes|no}] [--color-tests={yes|no}]
- [--enable-hard-errors={yes|no}] [--]
- TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
+ [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT
The '--test-name', '--log-file' and '--trs-file' options are mandatory.
END
}
+# TODO: better error handling in option parsing (in particular, ensure
+# TODO: $log_file, $trs_file and $test_name are defined).
test_name= # Used for reporting.
log_file= # Where to save the output of the test script.
trs_file= # Where to save the metadata of the test run.
@@ -68,23 +69,10 @@ while test $# -gt 0; do
--enable-hard-errors) enable_hard_errors=$2; shift;;
--) shift; break;;
-*) usage_error "invalid option: '$1'";;
- *) break;;
esac
shift
done
-missing_opts=
-test x"$test_name" = x && missing_opts="$missing_opts --test-name"
-test x"$log_file" = x && missing_opts="$missing_opts --log-file"
-test x"$trs_file" = x && missing_opts="$missing_opts --trs-file"
-if test x"$missing_opts" != x; then
- usage_error "the following mandatory options are missing:$missing_opts"
-fi
-
-if test $# -eq 0; then
- usage_error "missing argument"
-fi
-
if test $color_tests = yes; then
# Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
red='' # Red.
diff --git a/test/Makefile.am b/test/Makefile.am
index ec77822..16a3cd2 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1,9 +1,5 @@
# Process this file with automake to produce Makefile.in
-SUBDIRS = api shaping fuzzing
-
-# Convenience targets:
-lib:
- @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
+SUBDIRS = api shaping
-include $(top_srcdir)/git.mk
diff --git a/test/Makefile.in b/test/Makefile.in
index 8b9d36d..ce251b6 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -200,8 +200,6 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
-DIRECTWRITE_CXXFLAGS = @DIRECTWRITE_CXXFLAGS@
-DIRECTWRITE_LIBS = @DIRECTWRITE_LIBS@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
@@ -211,20 +209,15 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
-FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
-FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
-FREETYPE_DEPS = @FREETYPE_DEPS@
FREETYPE_LIBS = @FREETYPE_LIBS@
GIT = @GIT@
GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_DEPS = @GLIB_DEPS@
GLIB_LIBS = @GLIB_LIBS@
GLIB_MKENUMS = @GLIB_MKENUMS@
GOBJECT_CFLAGS = @GOBJECT_CFLAGS@
GOBJECT_LIBS = @GOBJECT_LIBS@
GRAPHITE2_CFLAGS = @GRAPHITE2_CFLAGS@
-GRAPHITE2_DEPS = @GRAPHITE2_DEPS@
GRAPHITE2_LIBS = @GRAPHITE2_LIBS@
GREP = @GREP@
GTKDOC_CHECK = @GTKDOC_CHECK@
@@ -347,7 +340,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-SUBDIRS = api shaping fuzzing
+SUBDIRS = api shaping
all: all-recursive
.SUFFIXES:
@@ -659,10 +652,6 @@ uninstall-am:
ps ps-am tags tags-am uninstall uninstall-am
-# Convenience targets:
-lib:
- @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
-
-include $(top_srcdir)/git.mk
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/test/api/Makefile.am b/test/api/Makefile.am
index d7d40af..4ff14fa 100644
--- a/test/api/Makefile.am
+++ b/test/api/Makefile.am
@@ -6,10 +6,6 @@ CLEANFILES =
DISTCLEANFILES =
MAINTAINERCLEANFILES =
-# Convenience targets:
-lib:
- @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
-
if HAVE_GLIB
AM_CPPFLAGS = -DSRCDIR="\"$(srcdir)\"" -I$(top_srcdir)/src/ -I$(top_builddir)/src/ $(GLIB_CFLAGS)
LDADD = $(top_builddir)/src/libharfbuzz.la $(GLIB_LIBS)
@@ -38,7 +34,7 @@ test_unicode_CPPFLAGS += $(GLIB_CFLAGS)
endif
if HAVE_ICU
test_unicode_CPPFLAGS += $(ICU_CFLAGS)
-test_unicode_LDADD += $(top_builddir)/src/libharfbuzz-icu.la $(ICU_LIBS)
+test_unicode_LDADD += $(top_builddir)/src/libharfbuzz-icu.la
endif
diff --git a/test/api/Makefile.in b/test/api/Makefile.in
index 951a535..6faa95f 100644
--- a/test/api/Makefile.in
+++ b/test/api/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -84,7 +84,7 @@ host_triplet = @host@
@HAVE_GLIB_TRUE@check_PROGRAMS = $(am__EXEEXT_3)
@HAVE_GLIB_TRUE@noinst_PROGRAMS = $(am__EXEEXT_3)
@HAVE_GLIB_TRUE@@HAVE_ICU_TRUE@am__append_2 = $(ICU_CFLAGS)
-@HAVE_GLIB_TRUE@@HAVE_ICU_TRUE@am__append_3 = $(top_builddir)/src/libharfbuzz-icu.la $(ICU_LIBS)
+@HAVE_GLIB_TRUE@@HAVE_ICU_TRUE@am__append_3 = $(top_builddir)/src/libharfbuzz-icu.la
@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@am__append_4 = \
@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ test-ot-tag \
@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ $(NULL)
@@ -195,10 +195,8 @@ test_unicode_OBJECTS = test_unicode-test-unicode.$(OBJEXT)
@HAVE_GLIB_TRUE@am__DEPENDENCIES_2 = \
@HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz.la \
@HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_1)
-@HAVE_GLIB_TRUE@@HAVE_ICU_TRUE@am__DEPENDENCIES_3 = $(top_builddir)/src/libharfbuzz-icu.la \
-@HAVE_GLIB_TRUE@@HAVE_ICU_TRUE@ $(am__DEPENDENCIES_1)
@HAVE_GLIB_TRUE@test_unicode_DEPENDENCIES = $(am__DEPENDENCIES_2) \
-@HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_3)
+@HAVE_GLIB_TRUE@ $(am__append_3)
test_version_SOURCES = test-version.c
test_version_OBJECTS = test-version.$(OBJEXT)
test_version_LDADD = $(LDADD)
@@ -520,8 +518,6 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
-DIRECTWRITE_CXXFLAGS = @DIRECTWRITE_CXXFLAGS@
-DIRECTWRITE_LIBS = @DIRECTWRITE_LIBS@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
@@ -531,20 +527,15 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
-FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
-FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
-FREETYPE_DEPS = @FREETYPE_DEPS@
FREETYPE_LIBS = @FREETYPE_LIBS@
GIT = @GIT@
GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_DEPS = @GLIB_DEPS@
GLIB_LIBS = @GLIB_LIBS@
GLIB_MKENUMS = @GLIB_MKENUMS@
GOBJECT_CFLAGS = @GOBJECT_CFLAGS@
GOBJECT_LIBS = @GOBJECT_LIBS@
GRAPHITE2_CFLAGS = @GRAPHITE2_CFLAGS@
-GRAPHITE2_DEPS = @GRAPHITE2_DEPS@
GRAPHITE2_LIBS = @GRAPHITE2_LIBS@
GREP = @GREP@
GTKDOC_CHECK = @GTKDOC_CHECK@
@@ -1374,10 +1365,6 @@ uninstall-am:
uninstall-am
-# Convenience targets:
-lib:
- @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
-
# check-tool: Run tests under $(TOOL)
@HAVE_GLIB_TRUE@check-tool:
@HAVE_GLIB_TRUE@ $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) check \
diff --git a/test/api/test-font.c b/test/api/test-font.c
index 34f6c74..6b6a503 100644
--- a/test/api/test-font.c
+++ b/test/api/test-font.c
@@ -36,8 +36,8 @@ static void
test_face_empty (void)
{
g_assert (hb_face_get_empty ());
- g_assert (hb_face_get_empty () != hb_face_create (hb_blob_get_empty (), 0));
- g_assert (hb_face_get_empty () != hb_face_create (NULL, 0));
+ g_assert (hb_face_get_empty () == hb_face_create (hb_blob_get_empty (), 0));
+ g_assert (hb_face_get_empty () == hb_face_create (NULL, 0));
g_assert (hb_face_reference_table (hb_face_get_empty (), HB_TAG ('h','e','a','d')) == hb_blob_get_empty ());
@@ -115,7 +115,6 @@ _test_font_nil_funcs (hb_font_t *font)
hb_codepoint_t glyph;
hb_position_t x, y;
hb_glyph_extents_t extents;
- unsigned int upem = hb_face_get_upem (hb_font_get_face (font));
x = y = 13;
g_assert (!hb_font_get_glyph_contour_point (font, 17, 2, &x, &y));
@@ -123,7 +122,7 @@ _test_font_nil_funcs (hb_font_t *font)
g_assert_cmpint (y, ==, 0);
x = hb_font_get_glyph_h_advance (font, 17);
- g_assert_cmpint (x, ==, upem);
+ g_assert_cmpint (x, ==, 0);
extents.x_bearing = extents.y_bearing = 13;
extents.width = extents.height = 15;
@@ -291,22 +290,9 @@ test_fontfuncs_subclassing (void)
x = hb_font_get_glyph_h_advance (font1, 2);
g_assert_cmpint (x, ==, 0);
- /* creating sub-font doesn't make the parent font immutable;
- * making a font immutable however makes it's lineage immutable.
- */
- font2 = hb_font_create_sub_font (font1);
- font3 = hb_font_create_sub_font (font2);
- g_assert (!hb_font_is_immutable (font1));
- g_assert (!hb_font_is_immutable (font2));
- g_assert (!hb_font_is_immutable (font3));
- hb_font_make_immutable (font3);
- g_assert (hb_font_is_immutable (font1));
- g_assert (hb_font_is_immutable (font2));
- g_assert (hb_font_is_immutable (font3));
- hb_font_destroy (font2);
- hb_font_destroy (font3);
font2 = hb_font_create_sub_font (font1);
+ g_assert (hb_font_is_immutable (font1));
hb_font_destroy (font1);
/* setup font2 to override some funcs */
@@ -330,8 +316,12 @@ test_fontfuncs_subclassing (void)
x = hb_font_get_glyph_h_advance (font2, 2);
g_assert_cmpint (x, ==, 0);
- /* setup font3 to override scale */
+
font3 = hb_font_create_sub_font (font2);
+ g_assert (hb_font_is_immutable (font2));
+ hb_font_destroy (font2);
+
+ /* setup font3 to override scale */
hb_font_set_scale (font3, 20, 30);
x = y = 1;
@@ -358,9 +348,9 @@ static void
test_font_empty (void)
{
g_assert (hb_font_get_empty ());
- g_assert (hb_font_get_empty () != hb_font_create (hb_face_get_empty ()));
- g_assert (hb_font_get_empty () != hb_font_create (NULL));
- g_assert (hb_font_get_empty () != hb_font_create_sub_font (NULL));
+ g_assert (hb_font_get_empty () == hb_font_create (hb_face_get_empty ()));
+ g_assert (hb_font_get_empty () == hb_font_create (NULL));
+ g_assert (hb_font_get_empty () == hb_font_create_sub_font (NULL));
g_assert (hb_font_is_immutable (hb_font_get_empty ()));
g_assert (hb_font_get_face (hb_font_get_empty ()) == hb_face_get_empty ());
@@ -376,7 +366,6 @@ test_font_properties (void)
hb_font_t *subfont;
int x_scale, y_scale;
unsigned int x_ppem, y_ppem;
- unsigned int upem;
blob = hb_blob_create (test_data, sizeof (test_data), HB_MEMORY_MODE_READONLY, NULL, NULL);
face = hb_face_create (blob, 0);
@@ -386,35 +375,22 @@ test_font_properties (void)
g_assert (hb_font_get_face (font) == face);
- g_assert (hb_font_get_parent (font) == hb_font_get_empty ());
- subfont = hb_font_create_sub_font (font);
- g_assert (hb_font_get_parent (subfont) == font);
- hb_font_set_parent(subfont, NULL);
- g_assert (hb_font_get_parent (subfont) == hb_font_get_empty());
- hb_font_set_parent(subfont, font);
- g_assert (hb_font_get_parent (subfont) == font);
- hb_font_set_parent(subfont, NULL);
- hb_font_make_immutable (subfont);
- g_assert (hb_font_get_parent (subfont) == hb_font_get_empty());
- hb_font_set_parent(subfont, font);
- g_assert (hb_font_get_parent (subfont) == hb_font_get_empty());
- hb_font_destroy (subfont);
+ g_assert (hb_font_get_parent (font) == NULL);
/* Check scale */
- upem = hb_face_get_upem (hb_font_get_face (font));
hb_font_get_scale (font, NULL, NULL);
x_scale = y_scale = 13;
hb_font_get_scale (font, &x_scale, NULL);
- g_assert_cmpint (x_scale, ==, upem);
+ g_assert_cmpint (x_scale, ==, 0);
x_scale = y_scale = 13;
hb_font_get_scale (font, NULL, &y_scale);
- g_assert_cmpint (y_scale, ==, upem);
+ g_assert_cmpint (y_scale, ==, 0);
x_scale = y_scale = 13;
hb_font_get_scale (font, &x_scale, &y_scale);
- g_assert_cmpint (x_scale, ==, upem);
- g_assert_cmpint (y_scale, ==, upem);
+ g_assert_cmpint (x_scale, ==, 0);
+ g_assert_cmpint (y_scale, ==, 0);
hb_font_set_scale (font, 17, 19);
diff --git a/test/api/test-object.c b/test/api/test-object.c
index 02b9760..3afe6ae 100644
--- a/test/api/test-object.c
+++ b/test/api/test-object.c
@@ -36,7 +36,7 @@ create_blob (void)
return hb_blob_create (data, sizeof (data), HB_MEMORY_MODE_READONLY, NULL, NULL);
}
static void *
-create_blob_from_inert (void)
+create_blob_inert (void)
{
return hb_blob_create (NULL, 0, HB_MEMORY_MODE_DUPLICATE, NULL, NULL);
}
@@ -47,7 +47,7 @@ create_buffer (void)
return hb_buffer_create ();
}
static void *
-create_buffer_from_inert (void)
+create_buffer_inert (void)
{
return NULL;
}
@@ -58,7 +58,7 @@ create_set (void)
return hb_set_create ();
}
static void *
-create_set_from_inert (void)
+create_set_inert (void)
{
return NULL;
}
@@ -72,7 +72,7 @@ create_face (void)
return face;
}
static void *
-create_face_from_inert (void)
+create_face_inert (void)
{
return hb_face_create (hb_blob_get_empty (), 0);
}
@@ -86,7 +86,7 @@ create_font (void)
return font;
}
static void *
-create_font_from_inert (void)
+create_font_inert (void)
{
return hb_font_create (hb_face_get_empty ());
}
@@ -97,7 +97,7 @@ create_font_funcs (void)
return hb_font_funcs_create ();
}
static void *
-create_font_funcs_from_inert (void)
+create_font_funcs_inert (void)
{
return NULL;
}
@@ -108,9 +108,9 @@ create_unicode_funcs (void)
return hb_unicode_funcs_create (NULL);
}
static void *
-create_unicode_funcs_from_inert (void)
+create_unicode_funcs_inert (void)
{
- return hb_unicode_funcs_create (hb_unicode_funcs_get_empty ());
+ return hb_unicode_funcs_get_default ();
}
@@ -125,7 +125,7 @@ typedef hb_bool_t (*is_immutable_func_t) (void *obj);
typedef struct {
create_func_t create;
- create_func_t create_from_inert;
+ create_func_t create_inert;
create_func_t get_empty;
reference_func_t reference;
destroy_func_t destroy;
@@ -139,7 +139,7 @@ typedef struct {
#define OBJECT_WITHOUT_IMMUTABILITY(name) \
{ \
(create_func_t) create_##name, \
- (create_func_t) create_##name##_from_inert, \
+ (create_func_t) create_##name##_inert, \
(create_func_t) hb_##name##_get_empty, \
(reference_func_t) hb_##name##_reference, \
(destroy_func_t) hb_##name##_destroy, \
@@ -152,7 +152,7 @@ typedef struct {
#define OBJECT_WITH_IMMUTABILITY(name) \
{ \
(create_func_t) create_##name, \
- (create_func_t) create_##name##_from_inert, \
+ (create_func_t) create_##name##_inert, \
(create_func_t) hb_##name##_get_empty, \
(reference_func_t) hb_##name##_reference, \
(destroy_func_t) hb_##name##_destroy, \
@@ -340,8 +340,8 @@ test_object (void)
{
data_t data[2] = {{MAGIC0, FALSE}, {MAGIC1, FALSE}};
- g_test_message ("->create_from_inert()");
- obj = o->create_from_inert ();
+ g_test_message ("->create_inert()");
+ obj = o->create_inert ();
if (!obj)
continue;
if (obj == o->get_empty ())
@@ -351,14 +351,18 @@ test_object (void)
o->destroy (obj);
if (o->is_immutable)
- g_assert (!o->is_immutable (obj));
+ g_assert (o->is_immutable (obj));
- g_assert (o->set_user_data (obj, &key[0], &data[0], free_up0, TRUE));
- g_assert (o->get_user_data (obj, &key[0]));
+ g_assert (!o->set_user_data (obj, &key[0], &data[0], free_up0, TRUE));
+ g_assert (!o->get_user_data (obj, &key[0]));
o->destroy (obj);
+ o->destroy (obj);
+ o->destroy (obj);
+ o->destroy (obj);
+ o->destroy (obj);
- g_assert (data[0].freed);
+ g_assert (!data[0].freed);
}
}
}
diff --git a/test/api/test-ot-tag.c b/test/api/test-ot-tag.c
index 29e0aa2..b667c7d 100644
--- a/test/api/test-ot-tag.c
+++ b/test/api/test-ot-tag.c
@@ -222,13 +222,6 @@ test_ot_tag_language (void)
test_tag_from_language ("XYZ", "xyz"); /* Unknown ISO 639-3 */
test_tag_from_language ("XYZ", "xyz-qw"); /* Unknown ISO 639-3 */
- /* International Phonetic Alphabet */
- test_tag_from_language ("IPPH", "en-fonipa");
- test_tag_from_language ("IPPH", "rm-CH-fonipa-sursilv-x-foobar");
- test_tag_from_language ("IPPH", "und-fonipa");
- test_tag_from_language ("IPPH", "zh-fonipa");
- test_tag_to_language ("IPPH", "und-fonipa");
-
/* Test that x-hbot overrides the base language */
test_tag_from_language ("ABC", "fa-x-hbotabc-zxc");
test_tag_from_language ("ABC", "fa-ir-x-hbotabc-zxc");
diff --git a/test/api/test-shape.c b/test/api/test-shape.c
index c274f0f..ccf6eed 100644
--- a/test/api/test-shape.c
+++ b/test/api/test-shape.c
@@ -101,7 +101,7 @@ test_shape (void)
ffuncs = hb_font_funcs_create ();
hb_font_funcs_set_glyph_h_advance_func (ffuncs, glyph_h_advance_func, NULL, NULL);
- hb_font_funcs_set_glyph_func (ffuncs, glyph_func, malloc (10), free);
+ hb_font_funcs_set_glyph_func (ffuncs, glyph_func, NULL, NULL);
hb_font_funcs_set_glyph_h_kerning_func (ffuncs, glyph_h_kerning_func, NULL, NULL);
hb_font_set_funcs (font, ffuncs, NULL, NULL);
hb_font_funcs_destroy (ffuncs);
@@ -139,48 +139,6 @@ test_shape (void)
}
static void
-test_shape_clusters (void)
-{
- hb_face_t *face;
- hb_font_t *font;
- hb_buffer_t *buffer;
- unsigned int len;
- hb_glyph_info_t *glyphs;
-
- face = hb_face_create (NULL, 0);
- font = hb_font_create (face);
- hb_face_destroy (face);
-
- buffer = hb_buffer_create ();
- hb_buffer_set_direction (buffer, HB_DIRECTION_LTR);
- {
- /* https://code.google.com/p/chromium/issues/detail?id=497578 */
- hb_codepoint_t test[] = {0xFFF1, 0xF0B6};
- hb_buffer_add_utf32 (buffer, test, 2, 0, 2);
- }
-
- hb_shape (font, buffer, NULL, 0);
-
- len = hb_buffer_get_length (buffer);
- glyphs = hb_buffer_get_glyph_infos (buffer, NULL);
-
- {
- const hb_codepoint_t output_glyphs[] = {0};
- const hb_position_t output_clusters[] = {0};
- unsigned int i;
- g_assert_cmpint (len, ==, 1);
- for (i = 0; i < len; i++) {
- g_assert_cmphex (glyphs[i].codepoint, ==, output_glyphs[i]);
- g_assert_cmphex (glyphs[i].cluster, ==, output_clusters[i]);
- }
- }
-
- hb_buffer_destroy (buffer);
- hb_font_destroy (font);
-}
-
-
-static void
test_shape_list (void)
{
const char **shapers = hb_shape_list_shapers ();
@@ -199,7 +157,6 @@ main (int argc, char **argv)
hb_test_init (&argc, &argv);
hb_test_add (test_shape);
- hb_test_add (test_shape_clusters);
/* TODO test fallback shaper */
/* TODO test shaper_full */
hb_test_add (test_shape_list);
diff --git a/test/fuzzing/Makefile.am b/test/fuzzing/Makefile.am
deleted file mode 100644
index 7b0eb94..0000000
--- a/test/fuzzing/Makefile.am
+++ /dev/null
@@ -1,52 +0,0 @@
-# Process this file with automake to produce Makefile.in
-
-NULL =
-EXTRA_DIST =
-CLEANFILES =
-DISTCLEANFILES =
-MAINTAINERCLEANFILES =
-
-# Convenience targets:
-lib:
- @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src fuzzing
-
-$(top_builddir)/src/libharfbuzz-fuzzing.la: lib
-
-EXTRA_DIST += \
- README \
- $(NULL)
-
-check_PROGRAMS = \
- hb-fuzzer \
- $(NULL)
-
-AM_CPPFLAGS = \
- -DHB_DISABLE_DEPRECATED \
- -I$(top_srcdir)/src/ \
- -I$(top_builddir)/src/ \
- $(NULL)
-LDADD = \
- $(top_builddir)/src/libharfbuzz-fuzzing.la \
- $(NULL)
-
-hb_fuzzer_SOURCES = \
- hb-fuzzer.cc \
- $(NULL)
-hb_fuzzer_LDADD = \
- $(LDADD) \
- $(NULL)
-hb_fuzzer_CPPFLAGS = \
- $(AM_CPPFLAGS) \
- -DMAIN \
- $(NULL)
-hb_fuzzer_DEPENDENCIES = \
- lib \
- $(NULL)
-
-check:
- cat $(srcdir)/../shaping/tests/fuzzed.tests | \
- cut -d: -f1 | while read x; do \
- ./hb-fuzzer $(srcdir)/../shaping/$$x; \
- done
-
--include $(top_srcdir)/git.mk
diff --git a/test/fuzzing/Makefile.in b/test/fuzzing/Makefile.in
deleted file mode 100644
index eca39c0..0000000
--- a/test/fuzzing/Makefile.in
+++ /dev/null
@@ -1,696 +0,0 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# Process this file with automake to produce Makefile.in
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-check_PROGRAMS = hb-fuzzer$(EXEEXT) $(am__EXEEXT_1)
-subdir = test/fuzzing
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/depcomp README
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
- $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
- $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__EXEEXT_1 =
-am__objects_1 =
-am_hb_fuzzer_OBJECTS = hb_fuzzer-hb-fuzzer.$(OBJEXT) $(am__objects_1)
-hb_fuzzer_OBJECTS = $(am_hb_fuzzer_OBJECTS)
-am__DEPENDENCIES_1 =
-am__DEPENDENCIES_2 = $(top_builddir)/src/libharfbuzz-fuzzing.la \
- $(am__DEPENDENCIES_1)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_@AM_V@)
-am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
-am__v_CXX_0 = @echo " CXX " $@;
-am__v_CXX_1 =
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
- $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo " CXXLD " $@;
-am__v_CXXLD_1 =
-SOURCES = $(hb_fuzzer_SOURCES)
-DIST_SOURCES = $(hb_fuzzer_SOURCES)
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_FT_CFLAGS = @CAIRO_FT_CFLAGS@
-CAIRO_FT_LIBS = @CAIRO_FT_LIBS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CORETEXT_CFLAGS = @CORETEXT_CFLAGS@
-CORETEXT_LIBS = @CORETEXT_LIBS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DIRECTWRITE_CXXFLAGS = @DIRECTWRITE_CXXFLAGS@
-DIRECTWRITE_LIBS = @DIRECTWRITE_LIBS@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
-FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
-FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
-FREETYPE_DEPS = @FREETYPE_DEPS@
-FREETYPE_LIBS = @FREETYPE_LIBS@
-GIT = @GIT@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_DEPS = @GLIB_DEPS@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_MKENUMS = @GLIB_MKENUMS@
-GOBJECT_CFLAGS = @GOBJECT_CFLAGS@
-GOBJECT_LIBS = @GOBJECT_LIBS@
-GRAPHITE2_CFLAGS = @GRAPHITE2_CFLAGS@
-GRAPHITE2_DEPS = @GRAPHITE2_DEPS@
-GRAPHITE2_LIBS = @GRAPHITE2_LIBS@
-GREP = @GREP@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@
-GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
-GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
-GTKDOC_MKPDF = @GTKDOC_MKPDF@
-GTKDOC_REBASE = @GTKDOC_REBASE@
-HB_LIBTOOL_VERSION_INFO = @HB_LIBTOOL_VERSION_INFO@
-HB_VERSION = @HB_VERSION@
-HB_VERSION_MAJOR = @HB_VERSION_MAJOR@
-HB_VERSION_MICRO = @HB_VERSION_MICRO@
-HB_VERSION_MINOR = @HB_VERSION_MINOR@
-HTML_DIR = @HTML_DIR@
-ICU_CFLAGS = @ICU_CFLAGS@
-ICU_CONFIG = @ICU_CONFIG@
-ICU_LIBS = @ICU_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
-INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
-INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
-INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
-INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
-INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
-INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
-INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RAGEL = @RAGEL@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-UNISCRIBE_CFLAGS = @UNISCRIBE_CFLAGS@
-UNISCRIBE_LIBS = @UNISCRIBE_LIBS@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-NULL =
-EXTRA_DIST = README $(NULL)
-CLEANFILES =
-DISTCLEANFILES =
-MAINTAINERCLEANFILES =
-AM_CPPFLAGS = \
- -DHB_DISABLE_DEPRECATED \
- -I$(top_srcdir)/src/ \
- -I$(top_builddir)/src/ \
- $(NULL)
-
-LDADD = \
- $(top_builddir)/src/libharfbuzz-fuzzing.la \
- $(NULL)
-
-hb_fuzzer_SOURCES = \
- hb-fuzzer.cc \
- $(NULL)
-
-hb_fuzzer_LDADD = \
- $(LDADD) \
- $(NULL)
-
-hb_fuzzer_CPPFLAGS = \
- $(AM_CPPFLAGS) \
- -DMAIN \
- $(NULL)
-
-hb_fuzzer_DEPENDENCIES = \
- lib \
- $(NULL)
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .lo .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits test/fuzzing/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnits test/fuzzing/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-checkPROGRAMS:
- @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
- echo " rm -f" $$list; \
- rm -f $$list || exit $$?; \
- test -n "$(EXEEXT)" || exit 0; \
- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f" $$list; \
- rm -f $$list
-
-hb-fuzzer$(EXEEXT): $(hb_fuzzer_OBJECTS) $(hb_fuzzer_DEPENDENCIES) $(EXTRA_hb_fuzzer_DEPENDENCIES)
- @rm -f hb-fuzzer$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(hb_fuzzer_OBJECTS) $(hb_fuzzer_LDADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hb_fuzzer-hb-fuzzer.Po@am__quote@
-
-.cc.o:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-hb_fuzzer-hb-fuzzer.o: hb-fuzzer.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hb_fuzzer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT hb_fuzzer-hb-fuzzer.o -MD -MP -MF $(DEPDIR)/hb_fuzzer-hb-fuzzer.Tpo -c -o hb_fuzzer-hb-fuzzer.o `test -f 'hb-fuzzer.cc' || echo '$(srcdir)/'`hb-fuzzer.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hb_fuzzer-hb-fuzzer.Tpo $(DEPDIR)/hb_fuzzer-hb-fuzzer.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-fuzzer.cc' object='hb_fuzzer-hb-fuzzer.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hb_fuzzer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o hb_fuzzer-hb-fuzzer.o `test -f 'hb-fuzzer.cc' || echo '$(srcdir)/'`hb-fuzzer.cc
-
-hb_fuzzer-hb-fuzzer.obj: hb-fuzzer.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hb_fuzzer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT hb_fuzzer-hb-fuzzer.obj -MD -MP -MF $(DEPDIR)/hb_fuzzer-hb-fuzzer.Tpo -c -o hb_fuzzer-hb-fuzzer.obj `if test -f 'hb-fuzzer.cc'; then $(CYGPATH_W) 'hb-fuzzer.cc'; else $(CYGPATH_W) '$(srcdir)/hb-fuzzer.cc'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hb_fuzzer-hb-fuzzer.Tpo $(DEPDIR)/hb_fuzzer-hb-fuzzer.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-fuzzer.cc' object='hb_fuzzer-hb-fuzzer.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hb_fuzzer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o hb_fuzzer-hb-fuzzer.obj `if test -f 'hb-fuzzer.cc'; then $(CYGPATH_W) 'hb-fuzzer.cc'; else $(CYGPATH_W) '$(srcdir)/hb-fuzzer.cc'; fi`
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
- -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
- -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
- clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \
- ctags ctags-am distclean distclean-compile distclean-generic \
- distclean-libtool distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags tags-am uninstall uninstall-am
-
-
-# Convenience targets:
-lib:
- @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src fuzzing
-
-$(top_builddir)/src/libharfbuzz-fuzzing.la: lib
-
-check:
- cat $(srcdir)/../shaping/tests/fuzzed.tests | \
- cut -d: -f1 | while read x; do \
- ./hb-fuzzer $(srcdir)/../shaping/$$x; \
- done
-
--include $(top_srcdir)/git.mk
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/test/fuzzing/README b/test/fuzzing/README
deleted file mode 100644
index c858f5d..0000000
--- a/test/fuzzing/README
+++ /dev/null
@@ -1,21 +0,0 @@
-In order to build the fuzzer one needs to build HarfBuzz and
-harfbuzz/test/fuzzing/hb-fuzzer.cc with:
- - Using the most recent Clang
- - With -fsanitize=address (or =undefined, or a combination)
- - With -fsanitize-coverage=edge[,8bit-counters,trace-cmp]
- - With various defines that limit worst case exponential behavior.
- See FUZZING_CPPFLAGS in harfbuzz/src/Makefile.am for the list.
- - link against libFuzzer
-
-To run the fuzzer one needs to first obtain a test corpus as a directory
-containing interesting fonts. A good starting point is inside
-harfbuzz/test/shaping/fonts/fonts/.
-Then, run the fuzzer like this:
- ./hb-fuzzer -max_len=2048 CORPUS_DIR
-Where max_len specifies the maximal length of font files to handle.
-The smaller the faster.
-
-For more details consult the following locations:
- - http://llvm.org/docs/LibFuzzer.html or
- - https://github.com/google/libfuzzer-bot/tree/master/harfbuzz
- - https://github.com/behdad/harfbuzz/issues/139
diff --git a/test/fuzzing/hb-fuzzer.cc b/test/fuzzing/hb-fuzzer.cc
deleted file mode 100644
index b319a71..0000000
--- a/test/fuzzing/hb-fuzzer.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-#include <stddef.h>
-#include <hb.h>
-#include <hb-ot.h>
-#include <string.h>
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
-
- hb_blob_t *blob = hb_blob_create((const char *)data, size,
- HB_MEMORY_MODE_READONLY, NULL, NULL);
- hb_face_t *face = hb_face_create(blob, 0);
- hb_font_t *font = hb_font_create(face);
- hb_ot_font_set_funcs(font);
- hb_font_set_scale(font, 12, 12);
-
- {
- const char text[] = "ABCDEXYZ123@_%&)*$!";
- hb_buffer_t *buffer = hb_buffer_create();
- hb_buffer_add_utf8(buffer, text, -1, 0, -1);
- hb_buffer_guess_segment_properties(buffer);
- hb_shape(font, buffer, NULL, 0);
- hb_buffer_destroy(buffer);
- }
-
- uint32_t text32[16];
- if (size > sizeof(text32)) {
- memcpy(text32, data + size - sizeof(text32), sizeof(text32));
- hb_buffer_t *buffer = hb_buffer_create();
- hb_buffer_add_utf32(buffer, text32, sizeof(text32)/sizeof(text32[0]), 0, -1);
- hb_buffer_guess_segment_properties(buffer);
- hb_shape(font, buffer, NULL, 0);
- hb_buffer_destroy(buffer);
- }
-
-
- hb_font_destroy(font);
- hb_face_destroy(face);
- hb_blob_destroy(blob);
- return 0;
-}
-
-#ifdef MAIN
-#include <iostream>
-#include <iterator>
-#include <fstream>
-#include <assert.h>
-
-std::string FileToString(const std::string &Path) {
- /* TODO This silently passes if file does not exist. Fix it! */
- std::ifstream T(Path.c_str());
- return std::string((std::istreambuf_iterator<char>(T)),
- std::istreambuf_iterator<char>());
-}
-
-int main(int argc, char **argv) {
- for (int i = 1; i < argc; i++) {
- std::string s = FileToString(argv[i]);
- std::cout << argv[i] << std::endl;
- LLVMFuzzerTestOneInput((const unsigned char*)s.data(), s.size());
- }
-}
-#endif
diff --git a/test/shaping/Makefile.am b/test/shaping/Makefile.am
index e67e3ef..70bcdd5 100644
--- a/test/shaping/Makefile.am
+++ b/test/shaping/Makefile.am
@@ -6,15 +6,10 @@ CLEANFILES =
DISTCLEANFILES =
MAINTAINERCLEANFILES =
-# Convenience targets:
-lib:
- @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
-
manifests:
@$(srcdir)/hb-manifest-update "$(srcdir)/texts" "$(srcdir)/fonts" "$(srcdir)/tests"
EXTRA_DIST += \
- README.md \
hb-diff \
hb-diff-colorize \
hb-diff-filter-failures \
@@ -43,24 +38,12 @@ CLEANFILES += \
TESTS = \
tests/arabic-fallback-shaping.tests \
tests/arabic-feature-order.tests \
- tests/cluster.tests \
tests/context-matching.tests \
- tests/cursive-positioning.tests \
- tests/default-ignorables.tests \
- tests/fallback-positioning.tests \
- tests/fuzzed.tests \
tests/hangul-jamo.tests \
- tests/hyphens.tests \
tests/indic-joiner-candrabindu.tests \
tests/indic-old-spec.tests \
tests/indic-pref-blocking.tests \
- tests/ligature-id.tests \
- tests/mark-filtering-sets.tests \
tests/mongolian-variation-selector.tests \
- tests/spaces.tests \
- tests/simple.tests \
- tests/use.tests \
- tests/vertical.tests \
tests/zero-width-marks.tests \
$(NULL)
diff --git a/test/shaping/Makefile.in b/test/shaping/Makefile.in
index 7f2b708..8e726ff 100644
--- a/test/shaping/Makefile.in
+++ b/test/shaping/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -80,16 +80,10 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
TESTS = tests/arabic-fallback-shaping.tests \
- tests/arabic-feature-order.tests tests/cluster.tests \
- tests/context-matching.tests tests/cursive-positioning.tests \
- tests/default-ignorables.tests \
- tests/fallback-positioning.tests tests/fuzzed.tests \
- tests/hangul-jamo.tests tests/hyphens.tests \
- tests/indic-joiner-candrabindu.tests \
+ tests/arabic-feature-order.tests tests/context-matching.tests \
+ tests/hangul-jamo.tests tests/indic-joiner-candrabindu.tests \
tests/indic-old-spec.tests tests/indic-pref-blocking.tests \
- tests/ligature-id.tests tests/mark-filtering-sets.tests \
- tests/mongolian-variation-selector.tests tests/spaces.tests \
- tests/simple.tests tests/use.tests tests/vertical.tests \
+ tests/mongolian-variation-selector.tests \
tests/zero-width-marks.tests $(am__EXEEXT_1)
subdir = test/shaping
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
@@ -355,8 +349,6 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
-DIRECTWRITE_CXXFLAGS = @DIRECTWRITE_CXXFLAGS@
-DIRECTWRITE_LIBS = @DIRECTWRITE_LIBS@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
@@ -366,20 +358,15 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
-FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
-FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
-FREETYPE_DEPS = @FREETYPE_DEPS@
FREETYPE_LIBS = @FREETYPE_LIBS@
GIT = @GIT@
GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_DEPS = @GLIB_DEPS@
GLIB_LIBS = @GLIB_LIBS@
GLIB_MKENUMS = @GLIB_MKENUMS@
GOBJECT_CFLAGS = @GOBJECT_CFLAGS@
GOBJECT_LIBS = @GOBJECT_LIBS@
GRAPHITE2_CFLAGS = @GRAPHITE2_CFLAGS@
-GRAPHITE2_DEPS = @GRAPHITE2_DEPS@
GRAPHITE2_LIBS = @GRAPHITE2_LIBS@
GREP = @GREP@
GTKDOC_CHECK = @GTKDOC_CHECK@
@@ -505,12 +492,12 @@ top_srcdir = @top_srcdir@
NULL =
# TODO Figure out Python stuff
-EXTRA_DIST = README.md hb-diff hb-diff-colorize \
- hb-diff-filter-failures hb-diff-ngrams hb-diff-stat \
- hb-manifest-read hb-manifest-update hb-unicode-decode \
- hb-unicode-encode hb-unicode-prettyname record-test.sh \
- run-tests.sh texts/in-tree fonts/sha1sum $(TESTS) $(NULL) \
- hb_test_tools.py $(NULL)
+EXTRA_DIST = hb-diff hb-diff-colorize hb-diff-filter-failures \
+ hb-diff-ngrams hb-diff-stat hb-manifest-read \
+ hb-manifest-update hb-unicode-decode hb-unicode-encode \
+ hb-unicode-prettyname record-test.sh run-tests.sh \
+ texts/in-tree fonts/sha1sum $(TESTS) $(NULL) hb_test_tools.py \
+ $(NULL)
CLEANFILES = hb_test_tools.py[co] $(NULL)
DISTCLEANFILES =
MAINTAINERCLEANFILES =
@@ -889,10 +876,6 @@ uninstall-am:
uninstall uninstall-am
-# Convenience targets:
-lib:
- @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
-
manifests:
@$(srcdir)/hb-manifest-update "$(srcdir)/texts" "$(srcdir)/fonts" "$(srcdir)/tests"
diff --git a/test/shaping/README.md b/test/shaping/README.md
deleted file mode 100644
index bf09909..0000000
--- a/test/shaping/README.md
+++ /dev/null
@@ -1,40 +0,0 @@
-Adding tests
-============
-
-You can test shaping of a unicode sequence against a font like this:
-```sh
-$ ./hb-unicode-encode 41 42 43 627 | ../../util/hb-shape font.ttf
-```
-assuming an in-tree build. The 41 42 43 627 here is a sequence of
-Unicode codepoints: U+0041,0042,0043,0627. When you are happy with
-the shape results, you can use the `record-test.sh` script to add
-this to the test suite. `record-test.sh` requires `pyftsubset` to
-be installed. You can get `pyftsubset` by installing
-FontTools from <https://github.com/behdad/fonttools>.
-
-To use `record-test.sh`, just put it right before the `hb-shape` invocation:
-```sh
-$ ./hb-unicode-encode 41 42 43 627 | ./record-it.sh ../../util/hb-shape font.ttf
-```
-what this does is:
- * Subset the font for the sequence of Unicode characters requested,
- * Compare the `hb-shape` output of the original font versus the subset
- font for the input sequence,
- * If the outputs differ, perhaps it is because the font does not have
- glyph names; it then compares the output of `hb-view` for both fonts.
- * If the outputs differ, recording fails. Otherwise, it will move the
- subset font file into `fonts/sha1sum` and name it after its hash,
- and prints out the test case input, which you can then redirect to
- an existing or new test file in `tests`, eg.:
-```sh
-$ ./hb-unicode-encode 41 42 43 627 | ./record-it.sh ../../util/hb-shape font.ttf >> tests/test-name.test
-```
-
-If you created a new test file, add it to `Makefile.am` so it is run.
-Check that `make test` does indeed run it, and that the test passes.
-When everything looks good, `git add` the new font as well as new
-test file if you created any. You can see what new files are there
-by running `git status tests fonts/sha1sum`. And commit!
-
-*Note!* Please only add tests using Open Source fonts, preferably under
-OFL or similar license.
diff --git a/test/shaping/fonts/sha1sum/0509e80afb379d16560e9e47bdd7d888bebdebc6.ttf b/test/shaping/fonts/sha1sum/0509e80afb379d16560e9e47bdd7d888bebdebc6.ttf
deleted file mode 100644
index 2036031..0000000
--- a/test/shaping/fonts/sha1sum/0509e80afb379d16560e9e47bdd7d888bebdebc6.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/051d92f8bc6ff724511b296c27623f824de256e9.ttf b/test/shaping/fonts/sha1sum/051d92f8bc6ff724511b296c27623f824de256e9.ttf
deleted file mode 100644
index 419f8f3..0000000
--- a/test/shaping/fonts/sha1sum/051d92f8bc6ff724511b296c27623f824de256e9.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/07f054357ff8638bac3711b422a1e31180bba863.ttf b/test/shaping/fonts/sha1sum/07f054357ff8638bac3711b422a1e31180bba863.ttf
deleted file mode 100644
index fcd4f32..0000000
--- a/test/shaping/fonts/sha1sum/07f054357ff8638bac3711b422a1e31180bba863.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/191826b9643e3f124d865d617ae609db6a2ce203.ttf b/test/shaping/fonts/sha1sum/191826b9643e3f124d865d617ae609db6a2ce203.ttf
deleted file mode 100644
index dbc6e26..0000000
--- a/test/shaping/fonts/sha1sum/191826b9643e3f124d865d617ae609db6a2ce203.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/1a6f1687b7a221f9f2c834b0b360d3c8463b6daf.ttf b/test/shaping/fonts/sha1sum/1a6f1687b7a221f9f2c834b0b360d3c8463b6daf.ttf
deleted file mode 100644
index c71e85a..0000000
--- a/test/shaping/fonts/sha1sum/1a6f1687b7a221f9f2c834b0b360d3c8463b6daf.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/1c04a16f32a39c26c851b7fc014d2e8d298ba2b8.ttf b/test/shaping/fonts/sha1sum/1c04a16f32a39c26c851b7fc014d2e8d298ba2b8.ttf
deleted file mode 100644
index 26d19ad..0000000
--- a/test/shaping/fonts/sha1sum/1c04a16f32a39c26c851b7fc014d2e8d298ba2b8.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf b/test/shaping/fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf
deleted file mode 100644
index 213e7ce..0000000
--- a/test/shaping/fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf b/test/shaping/fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf
deleted file mode 100644
index 7210658..0000000
--- a/test/shaping/fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/205edd09bd3d141cc9580f650109556cc28b22cb.ttf b/test/shaping/fonts/sha1sum/205edd09bd3d141cc9580f650109556cc28b22cb.ttf
deleted file mode 100644
index 4e0ce0a..0000000
--- a/test/shaping/fonts/sha1sum/205edd09bd3d141cc9580f650109556cc28b22cb.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/298c9e1d955f10f6f72c6915c3c6ff9bf9695cec.ttf b/test/shaping/fonts/sha1sum/298c9e1d955f10f6f72c6915c3c6ff9bf9695cec.ttf
deleted file mode 100644
index 0d677a8..0000000
--- a/test/shaping/fonts/sha1sum/298c9e1d955f10f6f72c6915c3c6ff9bf9695cec.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/3511ff5c1647150595846ac414c595cccac34f18.ttf b/test/shaping/fonts/sha1sum/3511ff5c1647150595846ac414c595cccac34f18.ttf
deleted file mode 100644
index 789abf7..0000000
--- a/test/shaping/fonts/sha1sum/3511ff5c1647150595846ac414c595cccac34f18.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/375d6ae32a3cbe52fbf81a4e5777e3377675d5a3.ttf b/test/shaping/fonts/sha1sum/375d6ae32a3cbe52fbf81a4e5777e3377675d5a3.ttf
deleted file mode 100644
index b284c98..0000000
--- a/test/shaping/fonts/sha1sum/375d6ae32a3cbe52fbf81a4e5777e3377675d5a3.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/43979b90b2dd929723cf4fe1715990bcb9c9a56b.ttf b/test/shaping/fonts/sha1sum/43979b90b2dd929723cf4fe1715990bcb9c9a56b.ttf
deleted file mode 100644
index a5c0156..0000000
--- a/test/shaping/fonts/sha1sum/43979b90b2dd929723cf4fe1715990bcb9c9a56b.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/43ef465752be9af900745f72fe29cb853a1401a5.ttf b/test/shaping/fonts/sha1sum/43ef465752be9af900745f72fe29cb853a1401a5.ttf
deleted file mode 100644
index 649c156..0000000
--- a/test/shaping/fonts/sha1sum/43ef465752be9af900745f72fe29cb853a1401a5.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/45855bc8d46332b39c4ab9e2ee1a26b1f896da6b.ttf b/test/shaping/fonts/sha1sum/45855bc8d46332b39c4ab9e2ee1a26b1f896da6b.ttf
deleted file mode 100644
index 6ef470c..0000000
--- a/test/shaping/fonts/sha1sum/45855bc8d46332b39c4ab9e2ee1a26b1f896da6b.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/49c9f7485c1392fa09a1b801bc2ffea79275f22e.ttf b/test/shaping/fonts/sha1sum/49c9f7485c1392fa09a1b801bc2ffea79275f22e.ttf
deleted file mode 100644
index ea1326d..0000000
--- a/test/shaping/fonts/sha1sum/49c9f7485c1392fa09a1b801bc2ffea79275f22e.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/56cfd0e18d07f41c38e9598545a6d369127fc6f9.ttf b/test/shaping/fonts/sha1sum/56cfd0e18d07f41c38e9598545a6d369127fc6f9.ttf
deleted file mode 100644
index 4795238..0000000
--- a/test/shaping/fonts/sha1sum/56cfd0e18d07f41c38e9598545a6d369127fc6f9.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/5a5daf5eb5a4db77a2baa3ad9c7a6ed6e0655fa8.ttf b/test/shaping/fonts/sha1sum/5a5daf5eb5a4db77a2baa3ad9c7a6ed6e0655fa8.ttf
deleted file mode 100644
index 9b4d23f..0000000
--- a/test/shaping/fonts/sha1sum/5a5daf5eb5a4db77a2baa3ad9c7a6ed6e0655fa8.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/641bd9db850193064d17575053ae2bf8ec149ddc.ttf b/test/shaping/fonts/sha1sum/641bd9db850193064d17575053ae2bf8ec149ddc.ttf
deleted file mode 100644
index 66cefd4..0000000
--- a/test/shaping/fonts/sha1sum/641bd9db850193064d17575053ae2bf8ec149ddc.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/6466d38c62e73a39202435a4f73bf5d6acbb73c0.ttf b/test/shaping/fonts/sha1sum/6466d38c62e73a39202435a4f73bf5d6acbb73c0.ttf
deleted file mode 100644
index 33c4229..0000000
--- a/test/shaping/fonts/sha1sum/6466d38c62e73a39202435a4f73bf5d6acbb73c0.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/706c5d7b625f207bc0d874c67237aad6f1e9cd6f.ttf b/test/shaping/fonts/sha1sum/706c5d7b625f207bc0d874c67237aad6f1e9cd6f.ttf
deleted file mode 100644
index eb5c50c..0000000
--- a/test/shaping/fonts/sha1sum/706c5d7b625f207bc0d874c67237aad6f1e9cd6f.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/7a37dc4d5bf018456aea291cee06daf004c0221c.ttf b/test/shaping/fonts/sha1sum/7a37dc4d5bf018456aea291cee06daf004c0221c.ttf
deleted file mode 100644
index a5787a8..0000000
--- a/test/shaping/fonts/sha1sum/7a37dc4d5bf018456aea291cee06daf004c0221c.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/7ef276fc886ea502a03b9b0e5c8b547d5dc2b61c.ttf b/test/shaping/fonts/sha1sum/7ef276fc886ea502a03b9b0e5c8b547d5dc2b61c.ttf
deleted file mode 100644
index fb4534a..0000000
--- a/test/shaping/fonts/sha1sum/7ef276fc886ea502a03b9b0e5c8b547d5dc2b61c.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/8099955657a54e9ee38a6ba1d6f950ce58e3cc25.ttf b/test/shaping/fonts/sha1sum/8099955657a54e9ee38a6ba1d6f950ce58e3cc25.ttf
deleted file mode 100644
index 6bb13bd..0000000
--- a/test/shaping/fonts/sha1sum/8099955657a54e9ee38a6ba1d6f950ce58e3cc25.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/8240789f6d12d4cfc4b5e8e6f246c3701bcf861f.ttf b/test/shaping/fonts/sha1sum/8240789f6d12d4cfc4b5e8e6f246c3701bcf861f.ttf
deleted file mode 100644
index 8eed14d..0000000
--- a/test/shaping/fonts/sha1sum/8240789f6d12d4cfc4b5e8e6f246c3701bcf861f.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/MANIFEST b/test/shaping/fonts/sha1sum/MANIFEST
new file mode 100644
index 0000000..924732d
--- /dev/null
+++ b/test/shaping/fonts/sha1sum/MANIFEST
@@ -0,0 +1,19 @@
+226bc2deab3846f1a682085f70c67d0421014144.ttf
+270b89df543a7e48e206a2d830c0e10e5265c630.ttf
+37033cc5cf37bb223d7355153016b6ccece93b28.ttf
+4cce528e99f600ed9c25a2b69e32eb94a03b4ae8.ttf
+5028afb650b1bb718ed2131e872fbcce57828fff.ttf
+57a9d9f83020155cbb1d2be1f43d82388cbecc88.ttf
+757ebd573617a24aa9dfbf0b885c54875c6fe06b.ttf
+7e14e7883ed152baa158b80e207b66114c823a8b.ttf
+813c2f8e5512187fd982417a7fb4286728e6f4a8.ttf
+8454d22037f892e76614e1645d066689a0200e61.ttf
+8a9fea2a7384f2116e5b84a9b31f83be7850ce21.ttf
+a919b33197965846f21074b24e30250d67277bce.ttf
+bb29ce50df2bdba2d10726427c6b7609bf460e04.ttf
+bb9473d2403488714043bcfb946c9f78b86ad627.ttf
+d629e7fedc0b350222d7987345fe61613fa3929a.ttf
+df768b9c257e0c9c35786c47cae15c46571d56be.ttf
+e207635780b42f898d58654b65098763e340f5c7.ttf
+ef86fe710cfea877bbe0dbb6946a1f88d0661031.ttf
+f499fbc23865022234775c43503bba2e63978fe1.ttf
diff --git a/test/shaping/fonts/sha1sum/a34a7b00f22ffb5fd7eef6933b81c7e71bc2cdfb.ttf b/test/shaping/fonts/sha1sum/a34a7b00f22ffb5fd7eef6933b81c7e71bc2cdfb.ttf
deleted file mode 100644
index 74fceec..0000000
--- a/test/shaping/fonts/sha1sum/a34a7b00f22ffb5fd7eef6933b81c7e71bc2cdfb.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/a98e908e2ed21b22228ea59ebcc0f05034c86f2e.ttf b/test/shaping/fonts/sha1sum/a98e908e2ed21b22228ea59ebcc0f05034c86f2e.ttf
deleted file mode 100644
index 8bbddb1..0000000
--- a/test/shaping/fonts/sha1sum/a98e908e2ed21b22228ea59ebcc0f05034c86f2e.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/b9e2aaa0d75fcef6971ec3a96d806ba4a6b31fe2.ttf b/test/shaping/fonts/sha1sum/b9e2aaa0d75fcef6971ec3a96d806ba4a6b31fe2.ttf
deleted file mode 100644
index 500276d..0000000
--- a/test/shaping/fonts/sha1sum/b9e2aaa0d75fcef6971ec3a96d806ba4a6b31fe2.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/bb0c53752e85c3d28973ebc913287b8987d3dfe8.ttf b/test/shaping/fonts/sha1sum/bb0c53752e85c3d28973ebc913287b8987d3dfe8.ttf
deleted file mode 100644
index 3b7c470..0000000
--- a/test/shaping/fonts/sha1sum/bb0c53752e85c3d28973ebc913287b8987d3dfe8.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/c4e48b0886ef460f532fb49f00047ec92c432ec0.ttf b/test/shaping/fonts/sha1sum/c4e48b0886ef460f532fb49f00047ec92c432ec0.ttf
deleted file mode 100644
index 99cda16..0000000
--- a/test/shaping/fonts/sha1sum/c4e48b0886ef460f532fb49f00047ec92c432ec0.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/cc5f3d2d717fb6bd4dfae1c16d48a2cb8e12233b.ttf b/test/shaping/fonts/sha1sum/cc5f3d2d717fb6bd4dfae1c16d48a2cb8e12233b.ttf
deleted file mode 100644
index a48d2a6..0000000
--- a/test/shaping/fonts/sha1sum/cc5f3d2d717fb6bd4dfae1c16d48a2cb8e12233b.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/f22416c692720a7d46fadf4af99f4c9e094f00b9.ttf b/test/shaping/fonts/sha1sum/f22416c692720a7d46fadf4af99f4c9e094f00b9.ttf
deleted file mode 100644
index 1dbadde..0000000
--- a/test/shaping/fonts/sha1sum/f22416c692720a7d46fadf4af99f4c9e094f00b9.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/f518eb6f6b5eec2946c9fbbbde44e45d46f5e2ac.ttf b/test/shaping/fonts/sha1sum/f518eb6f6b5eec2946c9fbbbde44e45d46f5e2ac.ttf
deleted file mode 100644
index 039f5e8..0000000
--- a/test/shaping/fonts/sha1sum/f518eb6f6b5eec2946c9fbbbde44e45d46f5e2ac.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/fab39d60d758cb586db5a504f218442cd1395725.ttf b/test/shaping/fonts/sha1sum/fab39d60d758cb586db5a504f218442cd1395725.ttf
deleted file mode 100644
index 451ed04..0000000
--- a/test/shaping/fonts/sha1sum/fab39d60d758cb586db5a504f218442cd1395725.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/fbb6c84c9e1fe0c39e152fbe845e51fd81f6748e.ttf b/test/shaping/fonts/sha1sum/fbb6c84c9e1fe0c39e152fbe845e51fd81f6748e.ttf
deleted file mode 100644
index d49432d..0000000
--- a/test/shaping/fonts/sha1sum/fbb6c84c9e1fe0c39e152fbe845e51fd81f6748e.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/fcdcffbdf1c4c97c05308d7600e4c283eb47dbca.ttf b/test/shaping/fonts/sha1sum/fcdcffbdf1c4c97c05308d7600e4c283eb47dbca.ttf
deleted file mode 100644
index c4e0253..0000000
--- a/test/shaping/fonts/sha1sum/fcdcffbdf1c4c97c05308d7600e4c283eb47dbca.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/fonts/sha1sum/ffa0f5d2d9025486d8469d8b1fdd983e7632499b.ttf b/test/shaping/fonts/sha1sum/ffa0f5d2d9025486d8469d8b1fdd983e7632499b.ttf
deleted file mode 100644
index 224dbc6..0000000
--- a/test/shaping/fonts/sha1sum/ffa0f5d2d9025486d8469d8b1fdd983e7632499b.ttf
+++ /dev/null
Binary files differ
diff --git a/test/shaping/hb-diff b/test/shaping/hb-diff
index 3705de7..6a13fa2 100755
--- a/test/shaping/hb-diff
+++ b/test/shaping/hb-diff
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python
from hb_test_tools import *
import sys, os
diff --git a/test/shaping/hb-diff-colorize b/test/shaping/hb-diff-colorize
index 1fdae8a..4e045d2 100755
--- a/test/shaping/hb-diff-colorize
+++ b/test/shaping/hb-diff-colorize
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python
from hb_test_tools import *
diff --git a/test/shaping/hb-diff-filter-failures b/test/shaping/hb-diff-filter-failures
index 34b76de..4fe218a 100755
--- a/test/shaping/hb-diff-filter-failures
+++ b/test/shaping/hb-diff-filter-failures
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python
from hb_test_tools import *
diff --git a/test/shaping/hb-diff-ngrams b/test/shaping/hb-diff-ngrams
index c02f541..a496447 100755
--- a/test/shaping/hb-diff-ngrams
+++ b/test/shaping/hb-diff-ngrams
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python
from hb_test_tools import *
diff --git a/test/shaping/hb-diff-stat b/test/shaping/hb-diff-stat
index 12ee8f0..81626e1 100755
--- a/test/shaping/hb-diff-stat
+++ b/test/shaping/hb-diff-stat
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python
from hb_test_tools import *
diff --git a/test/shaping/hb-manifest-read b/test/shaping/hb-manifest-read
index b1b36ba..f486bcc 100755
--- a/test/shaping/hb-manifest-read
+++ b/test/shaping/hb-manifest-read
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python
from hb_test_tools import *
diff --git a/test/shaping/hb-manifest-update b/test/shaping/hb-manifest-update
index eeb84b8..b963f22 100755
--- a/test/shaping/hb-manifest-update
+++ b/test/shaping/hb-manifest-update
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python
from hb_test_tools import *
diff --git a/test/shaping/hb-unicode-decode b/test/shaping/hb-unicode-decode
index 9ac5ed6..5b00eae 100755
--- a/test/shaping/hb-unicode-decode
+++ b/test/shaping/hb-unicode-decode
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python
from hb_test_tools import *
diff --git a/test/shaping/hb-unicode-encode b/test/shaping/hb-unicode-encode
index 5889807..11bf365 100755
--- a/test/shaping/hb-unicode-encode
+++ b/test/shaping/hb-unicode-encode
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python
from hb_test_tools import *
diff --git a/test/shaping/hb-unicode-prettyname b/test/shaping/hb-unicode-prettyname
index 1d004c0..ecc26cc 100755
--- a/test/shaping/hb-unicode-prettyname
+++ b/test/shaping/hb-unicode-prettyname
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python
from hb_test_tools import *
diff --git a/test/shaping/hb_test_tools.py b/test/shaping/hb_test_tools.py
index 747699b..a370e5e 100644
--- a/test/shaping/hb_test_tools.py
+++ b/test/shaping/hb_test_tools.py
@@ -1,15 +1,11 @@
-#!/usr/bin/env python
+#!/usr/bin/python
-from __future__ import print_function
import sys, os, re, difflib, unicodedata, errno, cgi
from itertools import *
diff_symbols = "-+=*&^%$#@!~/"
diff_colors = ['red', 'green', 'blue']
-if sys.version_info[0] >= 3:
- unichr = chr
-
class ColorFormatter:
class Null:
@@ -146,7 +142,7 @@ class ZipDiffer:
sys.stdout.writelines ([symbols[i], l])
except IOError as e:
if e.errno != errno.EPIPE:
- print ("%s: %s: %s" % (sys.argv[0], e.filename, e.strerror), file=sys.stderr)
+ print >> sys.stderr, "%s: %s: %s" % (sys.argv[0], e.filename, e.strerror)
sys.exit (1)
@@ -219,7 +215,7 @@ class DiffSinks:
else:
failed += 1
total = passed + failed
- print ("%d out of %d tests passed. %d failed (%g%%)" % (passed, total, failed, 100. * failed / total))
+ print "%d out of %d tests passed. %d failed (%g%%)" % (passed, total, failed, 100. * failed / total)
@staticmethod
def print_ngrams (f, ns=(1,2,3)):
@@ -244,7 +240,7 @@ class DiffSinks:
del importantgrams
for ngram, stats in allgrams.iteritems ():
- print ("zscore: %9f failed: %6d passed: %6d ngram: <%s>" % (stats.zscore (allstats), stats.failed.count, stats.passed.count, ','.join ("U+%04X" % u for u in ngram)))
+ print "zscore: %9f failed: %6d passed: %6d ngram: <%s>" % (stats.zscore (allstats), stats.failed.count, stats.passed.count, ','.join ("U+%04X" % u for u in ngram))
@@ -314,7 +310,7 @@ class FilterHelpers:
def filter_printer_function (filter_callback):
def printer (f):
for line in filter_callback (f):
- print (line)
+ print line
return printer
@staticmethod
@@ -348,7 +344,7 @@ class UtilMains:
def process_multiple_files (callback, mnemonic = "FILE"):
if "--help" in sys.argv:
- print ("Usage: %s %s..." % (sys.argv[0], mnemonic))
+ print "Usage: %s %s..." % (sys.argv[0], mnemonic)
sys.exit (1)
try:
@@ -357,14 +353,14 @@ class UtilMains:
callback (FileHelpers.open_file_or_stdin (s))
except IOError as e:
if e.errno != errno.EPIPE:
- print ("%s: %s: %s" % (sys.argv[0], e.filename, e.strerror), file=sys.stderr)
+ print >> sys.stderr, "%s: %s: %s" % (sys.argv[0], e.filename, e.strerror)
sys.exit (1)
@staticmethod
def process_multiple_args (callback, mnemonic):
if len (sys.argv) == 1 or "--help" in sys.argv:
- print ("Usage: %s %s..." % (sys.argv[0], mnemonic))
+ print "Usage: %s %s..." % (sys.argv[0], mnemonic)
sys.exit (1)
try:
@@ -372,7 +368,7 @@ class UtilMains:
callback (s)
except IOError as e:
if e.errno != errno.EPIPE:
- print ("%s: %s: %s" % (sys.argv[0], e.filename, e.strerror), file=sys.stderr)
+ print >> sys.stderr, "%s: %s: %s" % (sys.argv[0], e.filename, e.strerror)
sys.exit (1)
@staticmethod
@@ -381,8 +377,8 @@ class UtilMains:
concat_separator = False):
if "--help" in sys.argv:
- print ("Usage:\n %s %s...\nor:\n %s\n\nWhen called with no arguments, input is read from standard input." \
- % (sys.argv[0], mnemonic, sys.argv[0]))
+ print "Usage:\n %s %s...\nor:\n %s\n\nWhen called with no arguments, input is read from standard input." \
+ % (sys.argv[0], mnemonic, sys.argv[0])
sys.exit (1)
try:
@@ -393,15 +389,15 @@ class UtilMains:
break
if line[-1] == '\n':
line = line[:-1]
- print (callback (line))
+ print callback (line)
else:
args = sys.argv[1:]
if concat_separator != False:
args = [concat_separator.join (args)]
- print (separator.join (callback (x) for x in (args)))
+ print separator.join (callback (x) for x in (args))
except IOError as e:
if e.errno != errno.EPIPE:
- print ("%s: %s: %s" % (sys.argv[0], e.filename, e.strerror), file=sys.stderr)
+ print >> sys.stderr, "%s: %s: %s" % (sys.argv[0], e.filename, e.strerror)
sys.exit (1)
@@ -414,14 +410,12 @@ class Unicode:
@staticmethod
def parse (s):
s = re.sub (r"0[xX]", " ", s)
- s = re.sub (r"[<+>{},;&#\\xXuUnNiI\n ]", " ", s)
+ s = re.sub (r"[<+>,;&#\\xXuU\n ]", " ", s)
return [int (x, 16) for x in s.split ()]
@staticmethod
def encode (s):
- s = u''.join (unichr (x) for x in Unicode.parse (s))
- if sys.version_info[0] == 2: s = s.encode ('utf-8')
- return s
+ return u''.join (unichr (x) for x in Unicode.parse (s)).encode ('utf-8')
shorthands = {
"ZERO WIDTH NON-JOINER": "ZWNJ",
@@ -477,7 +471,7 @@ class Manifest:
if not os.path.exists (s):
if strict:
- print ("%s: %s does not exist" % (sys.argv[0], s), file=sys.stderr)
+ print >> sys.stderr, "%s: %s does not exist" % (sys.argv[0], s)
sys.exit (1)
return
@@ -493,7 +487,7 @@ class Manifest:
yield p
except IOError:
if strict:
- print ("%s: %s does not exist" % (sys.argv[0], os.path.join (s, "MANIFEST")), file=sys.stderr)
+ print >> sys.stderr, "%s: %s does not exist" % (sys.argv[0], os.path.join (s, "MANIFEST"))
sys.exit (1)
return
else:
@@ -512,12 +506,12 @@ class Manifest:
dirnames.sort ()
filenames.sort ()
ms = os.path.join (dirpath, "MANIFEST")
- print (" GEN %s" % ms)
+ print " GEN %s" % ms
m = open (ms, "w")
for f in filenames:
- print (f, file=m)
+ print >> m, f
for f in dirnames:
- print (f, file=m)
+ print >> m, f
for f in dirnames:
Manifest.update_recursive (os.path.join (dirpath, f))
diff --git a/test/shaping/record-test.sh b/test/shaping/record-test.sh
index b2a74f7..a69157f 100755
--- a/test/shaping/record-test.sh
+++ b/test/shaping/record-test.sh
@@ -5,47 +5,15 @@ dir=`mktemp --directory`
hb_shape=$1
shift
fontfile=$1
-if test "x${fontfile:0:1}" == 'x-'; then
- echo "Specify font file before other options." >&2
- exit 1
-fi
shift
-if ! echo "$hb_shape" | grep -q 'hb-shape'; then
- echo "Specify hb-shape (not hb-view, etc)." >&2
- exit 1
-fi
-options=
-have_text=false
-for arg in "$@"; do
- if test "x${arg:0:1}" == 'x-'; then
- if echo "$arg" | grep -q ' '; then
- echo "Space in argument is not supported: '$arg'." >&2
- exit 1
- fi
- options="$options${options:+ }$arg"
- continue
- fi
- if $have_text; then
- echo "Too many arguments found... Use '=' notation for options: '$arg'" >&2
- exit 1;
- fi
- text="$arg"
- have_text=true
-done
-if ! $have_text; then
- text=`cat`
-fi
-unicodes=`echo "$text" | ./hb-unicode-decode`
-glyphs=`echo "$text" | $hb_shape $options "$fontfile"`
-if test $? != 0; then
- echo "hb-shape failed." >&2
- exit 2
-fi
+hb_shape="$hb_shape $@"
+unicodes=`./hb-unicode-decode`
+text=`./hb-unicode-encode "$unicodes"`
+glyphs=`echo "$text" | $hb_shape "$fontfile"`
cp "$fontfile" "$dir/font.ttf"
pyftsubset \
--glyph-names \
- --no-hinting \
"$dir/font.ttf" \
--text="$text"
if ! test -s "$dir/font.ttf.subset"; then
@@ -54,14 +22,14 @@ if ! test -s "$dir/font.ttf.subset"; then
fi
# Verify that subset font produces same glyphs!
-glyphs_subset=`echo "$text" | $hb_shape $options "$dir/font.ttf.subset"`
+glyphs_subset=`echo "$text" | $hb_shape "$dir/font.ttf.subset"`
if ! test "x$glyphs" = "x$glyphs_subset"; then
echo "Subset font produced different glyphs!" >&2
echo "Perhaps font doesn't have glyph names; checking visually..." >&2
hb_view=${hb_shape/shape/view}
- echo "$text" | $hb_view $options "$dir/font.ttf" --output-format=png --output-file="$dir/orig.png"
- echo "$text" | $hb_view $options "$dir/font.ttf.subset" --output-format=png --output-file="$dir/subset.png"
+ echo "$text" | $hb_view "$dir/font.ttf" --output-format=png --output-file="$dir/orig.png"
+ echo "$text" | $hb_view "$dir/font.ttf.subset" --output-format=png --output-file="$dir/subset.png"
if ! cmp "$dir/orig.png" "$dir/subset.png"; then
echo "Images differ. Please inspect $dir/*.png." >&2
echo "$glyphs"
@@ -78,18 +46,7 @@ sha1sum=`sha1sum "$dir/font.ttf.subset" | cut -d' ' -f1`
subset="fonts/sha1sum/$sha1sum.ttf"
mv "$dir/font.ttf.subset" "$subset"
-# There ought to be an easier way to do this, but it escapes me...
-unicodes_file=`mktemp`
-glyphs_file=`mktemp`
-echo "$unicodes" > "$unicodes_file"
-echo "$glyphs" > "$glyphs_file"
-# Open the "file"s
-exec 3<"$unicodes_file"
-exec 4<"$glyphs_file"
-while read uline <&3 && read gline <&4; do
- echo "$subset:$options:$uline:$gline"
-done
-
+echo "$subset:$unicodes:$glyphs"
rm -f "$dir/font.ttf"
rmdir "$dir"
diff --git a/test/shaping/run-tests.sh b/test/shaping/run-tests.sh
index 021c6f8..a2cdf32 100755
--- a/test/shaping/run-tests.sh
+++ b/test/shaping/run-tests.sh
@@ -8,34 +8,16 @@ hb_shape=$top_builddir/util/hb-shape$EXEEXT
fails=0
-reference=false
-if test "x$1" = x--reference; then
- reference=true
- shift
-fi
-
if test $# = 0; then
set /dev/stdin
fi
+IFS=:
for f in "$@"; do
- $reference || echo "Running tests in $f"
- while IFS=: read fontfile options unicodes glyphs_expected; do
- if echo "$fontfile" | grep -q '^#'; then
- $reference || echo "Skipping $fontfile:$unicodes"
- continue
- fi
- $reference || echo "Testing $fontfile:$unicodes"
- glyphs=`$srcdir/hb-unicode-encode "$unicodes" | $hb_shape $options "$srcdir/$fontfile"`
- if test $? != 0; then
- echo "hb-shape failed." >&2
- fails=$((fails+1))
- continue
- fi
- if $reference; then
- echo "$fontfile:$options:$unicodes:$glyphs"
- continue
- fi
+ echo "Running tests in $f"
+ while read fontfile unicodes glyphs_expected; do
+ echo "Testing $fontfile:$unicodes"
+ glyphs=`$srcdir/hb-unicode-encode "$unicodes" | $hb_shape "$srcdir/$fontfile"`
if ! test "x$glyphs" = "x$glyphs_expected"; then
echo "Actual: $glyphs" >&2
echo "Expected: $glyphs_expected" >&2
@@ -45,8 +27,8 @@ for f in "$@"; do
done
if test $fails != 0; then
- $reference || echo "$fails tests failed."
+ echo "$fails tests failed."
exit 1
else
- $reference || echo "All tests passed."
+ echo "All tests passed."
fi
diff --git a/test/shaping/tests/arabic-fallback-shaping.tests b/test/shaping/tests/arabic-fallback-shaping.tests
index 6f1cb8b..e3eaf3f 100644
--- a/test/shaping/tests/arabic-fallback-shaping.tests
+++ b/test/shaping/tests/arabic-fallback-shaping.tests
@@ -1 +1 @@
-fonts/sha1sum/df768b9c257e0c9c35786c47cae15c46571d56be.ttf::U+0633,U+064F,U+0644,U+064E,U+0651,U+0627,U+0651,U+0650,U+0645,U+062A,U+06CC:[uni06CC.fina=10+1655|uni062A.medi=9+868|uni0645.init=8+1098|uni0650=2@221,0+0|uni0651=2@260,736+0|uni064E=2@935,1259+0|uni0651=2@974,736+0|uni06440627.fina=2+1470|uni064F=0@558,-10+0|uni0633.init=0+1585]
+fonts/sha1sum/df768b9c257e0c9c35786c47cae15c46571d56be.ttf:U+0633,U+064F,U+0644,U+064E,U+0651,U+0627,U+0651,U+0650,U+0645,U+062A,U+06CC:[uni06CC.fina=10+1655|uni062A.medi=9+868|uni0645.init=8+1098|uni0650=2@221,0+0|uni0651=2@260,736+0|uni064E=2@935,1259+0|uni0651=2@974,736+0|uni06440627.fina=2+1470|uni064F=0@558,-10+0|uni0633.init=0+1585]
diff --git a/test/shaping/tests/arabic-feature-order.tests b/test/shaping/tests/arabic-feature-order.tests
index e60ab1a..3e3cf6a 100644
--- a/test/shaping/tests/arabic-feature-order.tests
+++ b/test/shaping/tests/arabic-feature-order.tests
@@ -1,3 +1,3 @@
-fonts/sha1sum/813c2f8e5512187fd982417a7fb4286728e6f4a8.ttf::U+1820,U+180B:[uni2048.E81A=0+1550]
-fonts/sha1sum/8a9fea2a7384f2116e5b84a9b31f83be7850ce21.ttf::U+1820,U+180B:[uni2048.E81A=0+1550]
-fonts/sha1sum/a919b33197965846f21074b24e30250d67277bce.ttf::U+0644,U+0644,U+0647:[Lellah=0+1503]
+fonts/sha1sum/813c2f8e5512187fd982417a7fb4286728e6f4a8.ttf:U+1820,U+180B:[uni2048.E81A=0+1550]
+fonts/sha1sum/8a9fea2a7384f2116e5b84a9b31f83be7850ce21.ttf:U+1820,U+180B:[uni2048.E81A=0+1550]
+fonts/sha1sum/a919b33197965846f21074b24e30250d67277bce.ttf:U+0644,U+0644,U+0647:[Lellah=0+1503]
diff --git a/test/shaping/tests/cluster.tests b/test/shaping/tests/cluster.tests
deleted file mode 100644
index 24f04dd..0000000
--- a/test/shaping/tests/cluster.tests
+++ /dev/null
@@ -1,2 +0,0 @@
-fonts/sha1sum/6466d38c62e73a39202435a4f73bf5d6acbb73c0.ttf:--cluster-level=2:U+0078,U+030A,U+0058,U+030A:[gid2=0+1083|gid4=1@-555,-8+0|gid1=2+1200|gid4=3@-614,349+0]
-fonts/sha1sum/43ef465752be9af900745f72fe29cb853a1401a5.ttf:--cluster-level=1:U+05D4,U+05B7,U+05E9,U+05BC,U+05C1,U+05B8,U+05DE,U+05B4,U+05DD:[uni05DD=8+1359|uni05B4=7@111,0+0|uni05DE=6+1391|uni05B8=5+0|uni05BC=3+0|uni05C1=3+0|uni05E9=2+1451|uni05B7=1@28,0+0|uni05D4=0+1338]
diff --git a/test/shaping/tests/context-matching.tests b/test/shaping/tests/context-matching.tests
index e20616e..4c7d25f 100644
--- a/test/shaping/tests/context-matching.tests
+++ b/test/shaping/tests/context-matching.tests
@@ -1,3 +1,3 @@
-fonts/sha1sum/4cce528e99f600ed9c25a2b69e32eb94a03b4ae8.ttf::U+1A48,U+1A58,U+1A25,U+1A48,U+1A58,U+1A25,U+1A6E,U+1A63:[uni1A48=0+1212|uni1A25=0+1912|uni1A58=0+0|uni1A48=3+1212|uni1A6E=3+0|uni1A25=3+1912|uni1A58=3+0|uni1A63=3+1212]
-fonts/sha1sum/d629e7fedc0b350222d7987345fe61613fa3929a.ttf::U+0915,U+093F,U+0915,U+093F:[ivowelsign03deva=0+530|kadeva=0+1561|ivowelsign03deva=2+530|kadeva=2+1561]
-fonts/sha1sum/f499fbc23865022234775c43503bba2e63978fe1.ttf::U+09B0,U+09CD,U+09A5,U+09CD,U+09AF,U+09C0:[gid1=0+1320|gid13=0+523|gid18=0+545]
+fonts/sha1sum/4cce528e99f600ed9c25a2b69e32eb94a03b4ae8.ttf:U+1A48,U+1A58,U+1A25,U+1A48,U+1A58,U+1A25,U+1A6E,U+1A63:[uni1A48=0+1212|uni1A25=0+1912|uni1A58=0+0|uni1A48=3+1212|uni1A6E=3+1212|uni1A25=3+1912|uni1A58=3+0|uni1A63=3+1212]
+fonts/sha1sum/d629e7fedc0b350222d7987345fe61613fa3929a.ttf:U+0915,U+093F,U+0915,U+093F:[ivowelsign03deva=0+530|kadeva=0+1561|ivowelsign03deva=2+530|kadeva=2+1561]
+fonts/sha1sum/f499fbc23865022234775c43503bba2e63978fe1.ttf:U+09B0,U+09CD,U+09A5,U+09CD,U+09AF,U+09C0:[gid1=0+1320|gid13=0+523|gid18=0+545]
diff --git a/test/shaping/tests/cursive-positioning.tests b/test/shaping/tests/cursive-positioning.tests
deleted file mode 100644
index ce63bd1..0000000
--- a/test/shaping/tests/cursive-positioning.tests
+++ /dev/null
@@ -1,4 +0,0 @@
-fonts/sha1sum/c4e48b0886ef460f532fb49f00047ec92c432ec0.ttf::U+0643,U+0645,U+0645,U+062B,U+0644:[gid8=4+738|gid5=3@441,1197+0|gid6=3@0,432+405|gid9=2@0,477+452|gid9=1@0,977+452|gid10=0@20,1577+207]
-fonts/sha1sum/298c9e1d955f10f6f72c6915c3c6ff9bf9695cec.ttf::U+0643,U+0645,U+0645,U+062B,U+0644:[gid8=4+738|gid5=3@441,1197+0|gid6=3@0,432+405|gid9=2@0,477+500|gid9=1@0,577+452|gid10=0@20,1177+207]
-#fonts/sha1sum/706c5d7b625f207bc0d874c67237aad6f1e9cd6f.ttf::U+0B1F,U+0B4D,U+0B1A,U+0B4D,U+0B1A:[ttaorya=0+1307|casubscriptorya=0@-242,104+-231|casubscriptnarroworya=0@20,104+507]
-fonts/sha1sum/07f054357ff8638bac3711b422a1e31180bba863.ttf:--font-funcs=ot --no-glyph-names:U+0606,U+06E1:[2=0@40,502+0|1=0+1000]
diff --git a/test/shaping/tests/default-ignorables.tests b/test/shaping/tests/default-ignorables.tests
deleted file mode 100644
index 2d3ce97..0000000
--- a/test/shaping/tests/default-ignorables.tests
+++ /dev/null
@@ -1 +0,0 @@
-fonts/sha1sum/051d92f8bc6ff724511b296c27623f824de256e9.ttf::U+0075,U+0361,U+034F,U+0301,U+0069:[gid2=0+1266|gid7=0@-617,442+0|gid5=0@-7,0+0|gid1=4+528]
diff --git a/test/shaping/tests/fallback-positioning.tests b/test/shaping/tests/fallback-positioning.tests
deleted file mode 100644
index 499db7d..0000000
--- a/test/shaping/tests/fallback-positioning.tests
+++ /dev/null
@@ -1,2 +0,0 @@
-fonts/sha1sum/7ef276fc886ea502a03b9b0e5c8b547d5dc2b61c.ttf:--font-funcs=ft:U+0078,U+0301,U+0058,U+0301:[x=0+1030|acutecomb=0@-45,-32+0|X=2+1295|acutecomb=2@-171,310+0]
-fonts/sha1sum/7ef276fc886ea502a03b9b0e5c8b547d5dc2b61c.ttf:--font-funcs=ot:U+0078,U+0301,U+0058,U+0301:[gid2=0+1030|gid4=0@-21,-27+0|gid1=2+1295|gid4=2@-147,321+0]
diff --git a/test/shaping/tests/fuzzed.tests b/test/shaping/tests/fuzzed.tests
deleted file mode 100644
index 7a5d395..0000000
--- a/test/shaping/tests/fuzzed.tests
+++ /dev/null
@@ -1,11 +0,0 @@
-fonts/sha1sum/1a6f1687b7a221f9f2c834b0b360d3c8463b6daf.ttf:--font-funcs=ot:U+0041:[gid0=0+1000]
-fonts/sha1sum/5a5daf5eb5a4db77a2baa3ad9c7a6ed6e0655fa8.ttf:--font-funcs=ot:U+0041:[gid0=0+1000]
-fonts/sha1sum/0509e80afb379d16560e9e47bdd7d888bebdebc6.ttf:--font-funcs=ot:U+0041:[gid0=0+1000]
-fonts/sha1sum/641bd9db850193064d17575053ae2bf8ec149ddc.ttf:--font-funcs=ot:U+0041:[gid0=0+1000]
-fonts/sha1sum/375d6ae32a3cbe52fbf81a4e5777e3377675d5a3.ttf:--font-funcs=ot:U+0041:[gid0=0+4352]
-fonts/sha1sum/8240789f6d12d4cfc4b5e8e6f246c3701bcf861f.ttf:--font-funcs=ot:U+0041:[gid0=0+1024]
-fonts/sha1sum/b9e2aaa0d75fcef6971ec3a96d806ba4a6b31fe2.ttf:--font-funcs=ot:U+0041:[gid0=0+1000|gid1=0+1000|gid8=0+1000|gid3=0+1000|gid0=0+1000|gid1=0+1000|gid1=0+1000|gid8=0+1000|gid3=0+1000|gid0=0+1000|gid1=0+1000|gid8=0+1000|gid3=0+1000|gid0=0+1000|gid1=0+1000|gid1=0+1000]
-fonts/sha1sum/43979b90b2dd929723cf4fe1715990bcb9c9a56b.ttf:--font-funcs=ot:U+0041:[gid0=0+1000]
-fonts/sha1sum/3511ff5c1647150595846ac414c595cccac34f18.ttf:--font-funcs=ot:U+0041:[gid0=0+1000|gid512=0+1000|gid15104=0+1000|gid11004=0+1000|gid3408=0+1000|gid18244=0+1000|gid17872=0+1000|gid17961=0+1000|gid0=0+1000|gid992=0+1000|gid15616=0+1000|gid0=0+1000|gid14151=0+1000|gid20559=0+1000|gid20992=0+1000|gid5440=0+1000|gid256=0+1000|gid0=0+1000|gid10=0+1000|gid8960=0+1000|gid256=0+1000|gid1024=0+1000|gid1490=0+1000|gid0=0+1000|gid768=0+1000|gid4096=0+1000|gid256=0+1000|gid2216=0+1000|gid0=0+1000|gid256=0+1000|gid256=0+1000|gid0=0+1000|gid768=0+1000|gid10752=0+1000|gid11004=0+1000|gid3408=0+1000|gid18244=0+1000|gid17734=0+1000|gid53248=0+1000|gid256=0+1000|gid0=0+1000|gid512=0+1000|gid14848=0+1000|gid10793=0+1000|gid57344=0+1000|gid768=0+1000|gid18227=0+1000|gid20285=0+1000|gid20480=0+1000|gid0=0+1000|gid256=0+1000|gid0=0+1000|gid810=0+1000|gid0=0+1000|gid11004=0+1000|gid3408=0+1000|gid18244=0+1000|gid17734=0+1000|gid53289=0+1000|gid57344=0+1000|gid768=0+1000|gid15667=0+1000|gid71=0+1000|gid0=0+1000|gid20559=0+1000|gid21248=0+1000|gid256=0+1000|gid0=0+1000|gid2816=0+1000|gid2776=0+1000|gid0=0+1000|gid51516=0+1000|gid0=0+1000|gid32=0+1000|gid26209=0+1000|gid28005=0+1000|gid65249=0+1000|gid29690=0+1000|gid0=0+1000|gid51548=0+1000|gid0=0+1000|gid2454=0+1000|gid28783=0+1000|gid29556=0+1000|gid1291=0+1000|gid3458=0+1000|gid80=0+1000|gid0=0+1000|gid2804=0+1000|gid210=0+1000|gid28786=0+1000|gid25968=0+1000|gid45763=0+1000|gid50546=0+1000|gid0=0+1000|gid59136=0+1000|gid0=0+1000|gid38144=0+1000|gid256=0+1000|gid0=0+1000|gid2560=0+1000|gid30208=0+1000|gid52224=0+1000|gid580=0+1000|gid17996=0+1000|gid21504=0+1000|gid6734=0+1000|gid108=0+1000|gid116=0+1000|gid24846=0+1000|gid1024=0+1000|gid0=0+1000|gid255=0+1000|gid65280=0+1000|gid256=0+1000|gid0=0+1000|gid8704=0+1000|gid1345=0+1000|gid23109=0+1000|gid8192=0+1000|gid10823=0+1000|gid21076=0+1000|gid8192=0+1000|gid12877=0+1000|gid20300=0+1000|gid8192=0+1000|gid6738=0+1000|gid20301=0+1000|gid8192=0+1000|gid16980=0+1000|gid21067=0+1000|gid8251=0+1000|gid18944=0+1000|gid255=0+1000|gid65280=0+1000|gid15360=0+1000|gid256=0+1000|gid255=0+1000|gid65280=0+1000|gid256=0+1000|gid768=0+1000|gid255=0+1000|gid65280=0+1000|gid256=0+1000|gid768=0+1000|gid255=0+1000|gid65280=0+1000|gid256=0+1000|gid1024=0+1000|gid12=0+1000|gid65280=0+1000|gid256=0+1000|gid1280=0+1000|gid255=0+1000|gid65280=0+1000|gid256=0+1000|gid1536=0+1000|gid1899=0+1000|gid25970=0+1000|gid110=0+1000|gid11264=0+1000|gid27502=0+1000|gid29285=0+1000|gid12907=0+1000|gid25974=0+1000|gid28160=0+1000|gid14443=0+1000|gid25970=0+1000|gid28288=0+1000|gid3=0+1000|gid118=0+1000|gid18259=0+1000|gid21826=0+1000|gid45716=0+1000|gid46369=0+1000|gid0=0+1000|gid0=0+1000|gid1=0+1000|gid16=0+1000|gid17=0+1000|gid256=0+1000|gid4=0+1000|gid16=0+1000|gid18244=0+1000|gid17734=0+1000|gid28=0+1000|gid12=0+1000|gid0=0+1000|gid284=0+1000|gid0=0+1000|gid28=0+1000|gid18256=0+1000|gid20307=0+1000|gid45114=0+1000|gid47616=0+1000|gid226=0+1000|gid10296=0+1000|gid0=0+1000|gid57927=0+1000|gid1=0+1000|gid0=0+1000|gid0=0+1000|gid21248=0+1000|gid5440=0+1000|gid256=0+1000|gid0=0+1000|gid10=0+1000|gid768=0+1000|gid256=0+1000|gid1024=0+1000|gid512=0+1000|gid0=0+1000|gid297=0+1000|gid16=0+1000|gid24833=0+1000|gid28774=0+1000|gid10794=0+1000|gid2304=0+1000|gid29=0+1000|gid32=0+1000|gid42=0+1000|gid64515=0+1000|gid42=0+1000|gid42=0+1000|gid64525=0+1000|gid20551=0+1000|gid17477=0+1000|gid18128=0+1000|gid10720=0+1000|gid3=0+1000|gid61=0+1000|gid3408=0+1000|gid18244=0+1000|gid17734=0+1000|gid53289=0+1000|gid57344=0+1000|gid768=0+1000|gid15616=0+1000|gid512=0+1000|gid55=0+1000|gid10576=0+1000|gid20307=0+1000|gid0=0+1000|gid255=0+1000|gid56063=0+1000|gid53504=0+1000|gid42=0+1000|gid42=0+1000|gid64525=0+1000|gid12288=0+1000|gid18176=0+1000|gid80=0+1000|gid20307=0+1000|gid1=0+1000|gid0=0+1000|gid62=0+1000]
-fonts/sha1sum/fab39d60d758cb586db5a504f218442cd1395725.ttf:--font-funcs=ot:U+0041,U+0041:[gid0=0+1000|gid0=1+1000]
-fonts/sha1sum/205edd09bd3d141cc9580f650109556cc28b22cb.ttf:--font-funcs=ot:U+0041:[gid0=0+1000]
diff --git a/test/shaping/tests/hangul-jamo.tests b/test/shaping/tests/hangul-jamo.tests
index fe9973f..667a1cc 100644
--- a/test/shaping/tests/hangul-jamo.tests
+++ b/test/shaping/tests/hangul-jamo.tests
@@ -1,2 +1,2 @@
-fonts/sha1sum/757ebd573617a24aa9dfbf0b885c54875c6fe06b.ttf::U+115F,U+11A2:[gid3=0+920|gid4=0+0]
-fonts/sha1sum/7e14e7883ed152baa158b80e207b66114c823a8b.ttf::U+11A2:[gid1=0+920]
+fonts/sha1sum/757ebd573617a24aa9dfbf0b885c54875c6fe06b.ttf:U+115F,U+11A2:[gid3=0+920|gid4=0+0]
+fonts/sha1sum/7e14e7883ed152baa158b80e207b66114c823a8b.ttf:U+11A2:[gid1=0+920]
diff --git a/test/shaping/tests/hyphens.tests b/test/shaping/tests/hyphens.tests
deleted file mode 100644
index d2cb186..0000000
--- a/test/shaping/tests/hyphens.tests
+++ /dev/null
@@ -1,2 +0,0 @@
-fonts/sha1sum/1c04a16f32a39c26c851b7fc014d2e8d298ba2b8.ttf::U+2010:[gid1=0+739]
-fonts/sha1sum/1c04a16f32a39c26c851b7fc014d2e8d298ba2b8.ttf::U+2011:[gid1=0+739]
diff --git a/test/shaping/tests/indic-joiner-candrabindu.tests b/test/shaping/tests/indic-joiner-candrabindu.tests
index 80ad8ce..351e927 100644
--- a/test/shaping/tests/indic-joiner-candrabindu.tests
+++ b/test/shaping/tests/indic-joiner-candrabindu.tests
@@ -1,2 +1,2 @@
-fonts/sha1sum/5028afb650b1bb718ed2131e872fbcce57828fff.ttf::U+0B13,U+200D,U+0B01:[omorya=0+1450]
-fonts/sha1sum/5028afb650b1bb718ed2131e872fbcce57828fff.ttf::U+0B13,U+200C,U+0B01:[oorya=0+1309|space=0+0|candrabinduorya=0+0]
+fonts/sha1sum/5028afb650b1bb718ed2131e872fbcce57828fff.ttf:U+0B13,U+200D,U+0B01:[omorya=0+1450]
+fonts/sha1sum/5028afb650b1bb718ed2131e872fbcce57828fff.ttf:U+0B13,U+200C,U+0B01:[oorya=0+1309|space=1+0|candrabinduorya=1+0]
diff --git a/test/shaping/tests/indic-old-spec.tests b/test/shaping/tests/indic-old-spec.tests
index 5410a6a..96e8cdd 100644
--- a/test/shaping/tests/indic-old-spec.tests
+++ b/test/shaping/tests/indic-old-spec.tests
@@ -1,2 +1,2 @@
-fonts/sha1sum/57a9d9f83020155cbb1d2be1f43d82388cbecc88.ttf::U+0C9A,U+0CCD,U+0C9A,U+0CCD:[U0C9A_U0CCD.haln=0+1066|U0C9A_0CCD.blwf=0+0]
-fonts/sha1sum/270b89df543a7e48e206a2d830c0e10e5265c630.ttf::U+0D38,U+0D4D,U+0D31,U+0D4D,U+0D31,U+0D4D:[glyph201=0+1183|U0D4D=0+0]
+fonts/sha1sum/57a9d9f83020155cbb1d2be1f43d82388cbecc88.ttf:U+0C9A,U+0CCD,U+0C9A,U+0CCD:[U0C9A_U0CCD.haln=0+1066|U0C9A_0CCD.blwf=0+0]
+fonts/sha1sum/270b89df543a7e48e206a2d830c0e10e5265c630.ttf:U+0D38,U+0D4D,U+0D31,U+0D4D,U+0D31,U+0D4D:[glyph201=0+1183|U0D4D=0+0]
diff --git a/test/shaping/tests/indic-pref-blocking.tests b/test/shaping/tests/indic-pref-blocking.tests
index 204b92a..260980a 100644
--- a/test/shaping/tests/indic-pref-blocking.tests
+++ b/test/shaping/tests/indic-pref-blocking.tests
@@ -1,2 +1,2 @@
-fonts/sha1sum/226bc2deab3846f1a682085f70c67d0421014144.ttf::U+0D2F,U+0D4D,U+0D30,U+0D46:[evowelsignmlym=0+1465|rapostmlym=0+499|yamlym=0+2120]
-fonts/sha1sum/e207635780b42f898d58654b65098763e340f5c7.ttf::U+0D2F,U+0D4D,U+0D30,U+0D46:[yamlym=0+2120|viramamlym=0+0|evowelsignmlym=0+1465|ramlym=0+1507]
+fonts/sha1sum/226bc2deab3846f1a682085f70c67d0421014144.ttf:U+0D2F,U+0D4D,U+0D30,U+0D46:[evowelsignmlym=0+1465|rapostmlym=0+499|yamlym=0+2120]
+fonts/sha1sum/e207635780b42f898d58654b65098763e340f5c7.ttf:U+0D2F,U+0D4D,U+0D30,U+0D46:[yamlym=0+2120|viramamlym=0+0|evowelsignmlym=0+1465|ramlym=0+1507]
diff --git a/test/shaping/tests/ligature-id.tests b/test/shaping/tests/ligature-id.tests
deleted file mode 100644
index a1ce2bb..0000000
--- a/test/shaping/tests/ligature-id.tests
+++ /dev/null
@@ -1,35 +0,0 @@
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|space=3+213|u0995_u09B0_u09CD.blwf.vatu=4+643|u0995_u09CD.half_u09B2.pres=7+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|space=6+213|u0995_u09B0_u09CD.blwf.vatu=7+643|u0995_u09CD.half_u09B2.pres=10+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|space=9+213|u0995_u09B0_u09CD.blwf.vatu=10+643|u0995_u09CD.half_u09B2.pres=13+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|space=12+213|u0995_u09B0_u09CD.blwf.vatu=13+643|u0995_u09CD.half_u09B2.pres=16+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|space=15+213|u0995_u09B0_u09CD.blwf.vatu=16+643|u0995_u09CD.half_u09B2.pres=19+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|space=18+213|u0995_u09B0_u09CD.blwf.vatu=19+643|u0995_u09CD.half_u09B2.pres=22+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|space=21+213|u0995_u09B0_u09CD.blwf.vatu=22+643|u0995_u09CD.half_u09B2.pres=25+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|space=24+213|u0995_u09B0_u09CD.blwf.vatu=25+643|u0995_u09CD.half_u09B2.pres=28+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|space=27+213|u0995_u09B0_u09CD.blwf.vatu=28+643|u0995_u09CD.half_u09B2.pres=31+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|space=30+213|u0995_u09B0_u09CD.blwf.vatu=31+643|u0995_u09CD.half_u09B2.pres=34+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|space=33+213|u0995_u09B0_u09CD.blwf.vatu=34+643|u0995_u09CD.half_u09B2.pres=37+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|space=36+213|u0995_u09B0_u09CD.blwf.vatu=37+643|u0995_u09CD.half_u09B2.pres=40+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|space=39+213|u0995_u09B0_u09CD.blwf.vatu=40+643|u0995_u09CD.half_u09B2.pres=43+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|space=42+213|u0995_u09B0_u09CD.blwf.vatu=43+643|u0995_u09CD.half_u09B2.pres=46+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|space=45+213|u0995_u09B0_u09CD.blwf.vatu=46+643|u0995_u09CD.half_u09B2.pres=49+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|space=48+213|u0995_u09B0_u09CD.blwf.vatu=49+643|u0995_u09CD.half_u09B2.pres=52+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|space=51+213|u0995_u09B0_u09CD.blwf.vatu=52+643|u0995_u09CD.half_u09B2.pres=55+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|space=54+213|u0995_u09B0_u09CD.blwf.vatu=55+643|u0995_u09CD.half_u09B2.pres=58+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|u0995_u09CD.half_u0995.pres=54+566|space=57+213|u0995_u09B0_u09CD.blwf.vatu=58+643|u0995_u09CD.half_u09B2.pres=61+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|u0995_u09CD.half_u0995.pres=54+566|u0995_u09CD.half_u0995.pres=57+566|space=60+213|u0995_u09B0_u09CD.blwf.vatu=61+643|u0995_u09CD.half_u09B2.pres=64+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|u0995_u09CD.half_u0995.pres=54+566|u0995_u09CD.half_u0995.pres=57+566|u0995_u09CD.half_u0995.pres=60+566|space=63+213|u0995_u09B0_u09CD.blwf.vatu=64+643|u0995_u09CD.half_u09B2.pres=67+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|u0995_u09CD.half_u0995.pres=54+566|u0995_u09CD.half_u0995.pres=57+566|u0995_u09CD.half_u0995.pres=60+566|u0995_u09CD.half_u0995.pres=63+566|space=66+213|u0995_u09B0_u09CD.blwf.vatu=67+643|u0995_u09CD.half_u09B2.pres=70+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|u0995_u09CD.half_u0995.pres=54+566|u0995_u09CD.half_u0995.pres=57+566|u0995_u09CD.half_u0995.pres=60+566|u0995_u09CD.half_u0995.pres=63+566|u0995_u09CD.half_u0995.pres=66+566|space=69+213|u0995_u09B0_u09CD.blwf.vatu=70+643|u0995_u09CD.half_u09B2.pres=73+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|u0995_u09CD.half_u0995.pres=54+566|u0995_u09CD.half_u0995.pres=57+566|u0995_u09CD.half_u0995.pres=60+566|u0995_u09CD.half_u0995.pres=63+566|u0995_u09CD.half_u0995.pres=66+566|u0995_u09CD.half_u0995.pres=69+566|space=72+213|u0995_u09B0_u09CD.blwf.vatu=73+643|u0995_u09CD.half_u09B2.pres=76+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|u0995_u09CD.half_u0995.pres=54+566|u0995_u09CD.half_u0995.pres=57+566|u0995_u09CD.half_u0995.pres=60+566|u0995_u09CD.half_u0995.pres=63+566|u0995_u09CD.half_u0995.pres=66+566|u0995_u09CD.half_u0995.pres=69+566|u0995_u09CD.half_u0995.pres=72+566|space=75+213|u0995_u09B0_u09CD.blwf.vatu=76+643|u0995_u09CD.half_u09B2.pres=79+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|u0995_u09CD.half_u0995.pres=54+566|u0995_u09CD.half_u0995.pres=57+566|u0995_u09CD.half_u0995.pres=60+566|u0995_u09CD.half_u0995.pres=63+566|u0995_u09CD.half_u0995.pres=66+566|u0995_u09CD.half_u0995.pres=69+566|u0995_u09CD.half_u0995.pres=72+566|u0995_u09CD.half_u0995.pres=75+566|space=78+213|u0995_u09B0_u09CD.blwf.vatu=79+643|u0995_u09CD.half_u09B2.pres=82+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|u0995_u09CD.half_u0995.pres=54+566|u0995_u09CD.half_u0995.pres=57+566|u0995_u09CD.half_u0995.pres=60+566|u0995_u09CD.half_u0995.pres=63+566|u0995_u09CD.half_u0995.pres=66+566|u0995_u09CD.half_u0995.pres=69+566|u0995_u09CD.half_u0995.pres=72+566|u0995_u09CD.half_u0995.pres=75+566|u0995_u09CD.half_u0995.pres=78+566|space=81+213|u0995_u09B0_u09CD.blwf.vatu=82+643|u0995_u09CD.half_u09B2.pres=85+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|u0995_u09CD.half_u0995.pres=54+566|u0995_u09CD.half_u0995.pres=57+566|u0995_u09CD.half_u0995.pres=60+566|u0995_u09CD.half_u0995.pres=63+566|u0995_u09CD.half_u0995.pres=66+566|u0995_u09CD.half_u0995.pres=69+566|u0995_u09CD.half_u0995.pres=72+566|u0995_u09CD.half_u0995.pres=75+566|u0995_u09CD.half_u0995.pres=78+566|u0995_u09CD.half_u0995.pres=81+566|space=84+213|u0995_u09B0_u09CD.blwf.vatu=85+643|u0995_u09CD.half_u09B2.pres=88+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|u0995_u09CD.half_u0995.pres=54+566|u0995_u09CD.half_u0995.pres=57+566|u0995_u09CD.half_u0995.pres=60+566|u0995_u09CD.half_u0995.pres=63+566|u0995_u09CD.half_u0995.pres=66+566|u0995_u09CD.half_u0995.pres=69+566|u0995_u09CD.half_u0995.pres=72+566|u0995_u09CD.half_u0995.pres=75+566|u0995_u09CD.half_u0995.pres=78+566|u0995_u09CD.half_u0995.pres=81+566|u0995_u09CD.half_u0995.pres=84+566|space=87+213|u0995_u09B0_u09CD.blwf.vatu=88+643|u0995_u09CD.half_u09B2.pres=91+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|u0995_u09CD.half_u0995.pres=54+566|u0995_u09CD.half_u0995.pres=57+566|u0995_u09CD.half_u0995.pres=60+566|u0995_u09CD.half_u0995.pres=63+566|u0995_u09CD.half_u0995.pres=66+566|u0995_u09CD.half_u0995.pres=69+566|u0995_u09CD.half_u0995.pres=72+566|u0995_u09CD.half_u0995.pres=75+566|u0995_u09CD.half_u0995.pres=78+566|u0995_u09CD.half_u0995.pres=81+566|u0995_u09CD.half_u0995.pres=84+566|u0995_u09CD.half_u0995.pres=87+566|space=90+213|u0995_u09B0_u09CD.blwf.vatu=91+643|u0995_u09CD.half_u09B2.pres=94+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|u0995_u09CD.half_u0995.pres=54+566|u0995_u09CD.half_u0995.pres=57+566|u0995_u09CD.half_u0995.pres=60+566|u0995_u09CD.half_u0995.pres=63+566|u0995_u09CD.half_u0995.pres=66+566|u0995_u09CD.half_u0995.pres=69+566|u0995_u09CD.half_u0995.pres=72+566|u0995_u09CD.half_u0995.pres=75+566|u0995_u09CD.half_u0995.pres=78+566|u0995_u09CD.half_u0995.pres=81+566|u0995_u09CD.half_u0995.pres=84+566|u0995_u09CD.half_u0995.pres=87+566|u0995_u09CD.half_u0995.pres=90+566|space=93+213|u0995_u09B0_u09CD.blwf.vatu=94+643|u0995_u09CD.half_u09B2.pres=97+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|u0995_u09CD.half_u0995.pres=54+566|u0995_u09CD.half_u0995.pres=57+566|u0995_u09CD.half_u0995.pres=60+566|u0995_u09CD.half_u0995.pres=63+566|u0995_u09CD.half_u0995.pres=66+566|u0995_u09CD.half_u0995.pres=69+566|u0995_u09CD.half_u0995.pres=72+566|u0995_u09CD.half_u0995.pres=75+566|u0995_u09CD.half_u0995.pres=78+566|u0995_u09CD.half_u0995.pres=81+566|u0995_u09CD.half_u0995.pres=84+566|u0995_u09CD.half_u0995.pres=87+566|u0995_u09CD.half_u0995.pres=90+566|u0995_u09CD.half_u0995.pres=93+566|space=96+213|u0995_u09B0_u09CD.blwf.vatu=97+643|u0995_u09CD.half_u09B2.pres=100+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|u0995_u09CD.half_u0995.pres=54+566|u0995_u09CD.half_u0995.pres=57+566|u0995_u09CD.half_u0995.pres=60+566|u0995_u09CD.half_u0995.pres=63+566|u0995_u09CD.half_u0995.pres=66+566|u0995_u09CD.half_u0995.pres=69+566|u0995_u09CD.half_u0995.pres=72+566|u0995_u09CD.half_u0995.pres=75+566|u0995_u09CD.half_u0995.pres=78+566|u0995_u09CD.half_u0995.pres=81+566|u0995_u09CD.half_u0995.pres=84+566|u0995_u09CD.half_u0995.pres=87+566|u0995_u09CD.half_u0995.pres=90+566|u0995_u09CD.half_u0995.pres=93+566|u0995_u09CD.half_u0995.pres=96+566|space=99+213|u0995_u09B0_u09CD.blwf.vatu=100+643|u0995_u09CD.half_u09B2.pres=103+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|u0995_u09CD.half_u0995.pres=54+566|u0995_u09CD.half_u0995.pres=57+566|u0995_u09CD.half_u0995.pres=60+566|u0995_u09CD.half_u0995.pres=63+566|u0995_u09CD.half_u0995.pres=66+566|u0995_u09CD.half_u0995.pres=69+566|u0995_u09CD.half_u0995.pres=72+566|u0995_u09CD.half_u0995.pres=75+566|u0995_u09CD.half_u0995.pres=78+566|u0995_u09CD.half_u0995.pres=81+566|u0995_u09CD.half_u0995.pres=84+566|u0995_u09CD.half_u0995.pres=87+566|u0995_u09CD.half_u0995.pres=90+566|u0995_u09CD.half_u0995.pres=93+566|u0995_u09CD.half_u0995.pres=96+566|u0995_u09CD.half_u0995.pres=99+566|space=102+213|u0995_u09B0_u09CD.blwf.vatu=103+643|u0995_u09CD.half_u09B2.pres=106+602]
-fonts/sha1sum/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf::U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0995,U+09CD,U+0995,U+0020,U+0995,U+09CD,U+09B0,U+0995,U+09CD,U+09B2:[u0995_u09CD.half_u0995.pres=0+566|u0995_u09CD.half_u0995.pres=3+566|u0995_u09CD.half_u0995.pres=6+566|u0995_u09CD.half_u0995.pres=9+566|u0995_u09CD.half_u0995.pres=12+566|u0995_u09CD.half_u0995.pres=15+566|u0995_u09CD.half_u0995.pres=18+566|u0995_u09CD.half_u0995.pres=21+566|u0995_u09CD.half_u0995.pres=24+566|u0995_u09CD.half_u0995.pres=27+566|u0995_u09CD.half_u0995.pres=30+566|u0995_u09CD.half_u0995.pres=33+566|u0995_u09CD.half_u0995.pres=36+566|u0995_u09CD.half_u0995.pres=39+566|u0995_u09CD.half_u0995.pres=42+566|u0995_u09CD.half_u0995.pres=45+566|u0995_u09CD.half_u0995.pres=48+566|u0995_u09CD.half_u0995.pres=51+566|u0995_u09CD.half_u0995.pres=54+566|u0995_u09CD.half_u0995.pres=57+566|u0995_u09CD.half_u0995.pres=60+566|u0995_u09CD.half_u0995.pres=63+566|u0995_u09CD.half_u0995.pres=66+566|u0995_u09CD.half_u0995.pres=69+566|u0995_u09CD.half_u0995.pres=72+566|u0995_u09CD.half_u0995.pres=75+566|u0995_u09CD.half_u0995.pres=78+566|u0995_u09CD.half_u0995.pres=81+566|u0995_u09CD.half_u0995.pres=84+566|u0995_u09CD.half_u0995.pres=87+566|u0995_u09CD.half_u0995.pres=90+566|u0995_u09CD.half_u0995.pres=93+566|u0995_u09CD.half_u0995.pres=96+566|u0995_u09CD.half_u0995.pres=99+566|u0995_u09CD.half_u0995.pres=102+566|space=105+213|u0995_u09B0_u09CD.blwf.vatu=106+643|u0995_u09CD.half_u09B2.pres=109+602]
diff --git a/test/shaping/tests/mark-filtering-sets.tests b/test/shaping/tests/mark-filtering-sets.tests
deleted file mode 100644
index 7b5c910..0000000
--- a/test/shaping/tests/mark-filtering-sets.tests
+++ /dev/null
@@ -1,5 +0,0 @@
-fonts/sha1sum/f22416c692720a7d46fadf4af99f4c9e094f00b9.ttf::U+062A,U+062E,U+062A,U+0629:[glyph837=3@299,1170+0|uni06C1.1=3+502|glyph837=2@149,690+0|uni0628.8=2+532|glyph836=1@-51,1259+0|glyph514=1+196|glyph837=0@655,1751+0|glyph112=0@0,-358+905]
-fonts/sha1sum/f22416c692720a7d46fadf4af99f4c9e094f00b9.ttf::U+062A,U+062E,U+0646,U+0629:[glyph837=3@299,1170+0|uni06C1.1=3+502|glyph836=2@149,690+0|uni0628.8=2+532|glyph836=1@-51,1259+0|glyph514=1+196|glyph837=0@655,1751+0|glyph112=0@0,-358+905]
-fonts/sha1sum/f22416c692720a7d46fadf4af99f4c9e094f00b9.ttf::U+062A,U+062E,U+0626,U+0629:[glyph837=3@299,1170+0|uni06C1.1=3+502|glyph847=2@149,690+0|uni0628.8=2+532|glyph836=1@-51,1259+0|glyph514=1+196|glyph837=0@655,1751+0|glyph112=0@0,-358+905]
-fonts/sha1sum/f22416c692720a7d46fadf4af99f4c9e094f00b9.ttf::U+062A,U+062E,U+062B,U+0629:[glyph837=3@299,1520+0|uni06C1.1=3+502|glyph838=2@149,690+0|uni0628.8=2+532|glyph836=1@-51,1259+0|glyph514=1+196|glyph837=0@655,1751+0|glyph112=0@0,-358+905]
-fonts/sha1sum/f22416c692720a7d46fadf4af99f4c9e094f00b9.ttf::U+062A,U+062E,U+0679,U+0629:[glyph837=3@299,1520+0|uni06C1.1=3+502|glyph842=2@149,690+0|uni0628.8=2+532|glyph836=1@-51,1259+0|glyph514=1+196|glyph837=0@655,1751+0|glyph112=0@0,-358+905]
diff --git a/test/shaping/tests/mongolian-variation-selector.tests b/test/shaping/tests/mongolian-variation-selector.tests
index 0a2e580..6b7e94a 100644
--- a/test/shaping/tests/mongolian-variation-selector.tests
+++ b/test/shaping/tests/mongolian-variation-selector.tests
@@ -1,4 +1,3 @@
-fonts/sha1sum/37033cc5cf37bb223d7355153016b6ccece93b28.ttf::U+1826,U+180B,U+1826:[uni1826.E85E_ue.init1=0+599|uni1826.E856_ue.fina=2+750]
-fonts/sha1sum/ef86fe710cfea877bbe0dbb6946a1f88d0661031.ttf::U+1820,U+180B:[uni1820.E821_a.isol1=0+1199]
-fonts/sha1sum/bb29ce50df2bdba2d10726427c6b7609bf460e04.ttf::U+183A,U+1823,U+182E,U+182B,U+1822,U+1826,U+180B,U+1832,U+180B,U+1827,U+1837,U+0020,U+182D,U+182D,U+180B,U+0020,U+182D,U+180C,U+0020,U+182D,U+180D,U+200D,U+0020,U+182D,U+200D,U+182D,U+180B,U+200D,U+0020,U+182D,U+180C,U+200D,U+0020,U+182D,U+180D,U+200D,U+0020,U+200D,U+182D,U+200D,U+200D,U+182D,U+180B,U+200D,U+0020,U+200D,U+182D,U+180C,U+200D,U+0020,U+200D,U+182D,U+180D,U+200D,U+0020,U+200D,U+182D,U+200D,U+182D,U+180B,U+0020,U+200D,U+182D,U+180C,U+0020,U+1820,U+200C,U+182D,U+1820,U+1837,U+0020,U+1830,U+1824,U+1837,U+200D,U+200D,U+182D,U+1820,U+200D,U+0020,U+200D,U+182D,U+1824,U+182F,U+1822,U+0020,U+182A,U+1820,U+1822,U+182D,U+180E,U+1820,U+202F,U+1836,U+1822,U+1828:[uni183A1823.E971_ko.init=0+950|uni182E.E904_m.medi=2+400|uni182B1822.E8A6_pi.medi=3+1150|uni1826.E854_ue.medi1=5+1100|uni1832.E916_t.medi1=7+1000|uni1827.E85C_ee.medi=9+750|uni1837.E931_r.fina=10+750|space=11+500|uni182D.E8E2_g.init=12+1000|uni182D.E8E8_g.fina1=13+1250|space=15+500|uni182D.EA1B_g.isol2=16+1000|space=18+500|uni182D.EA1E_g.init3=19+650|space=19+0|space=22+500|uni182D.E8E2_g.init=23+1000|space=23+0|uni182D.E8E5_g.medi1=25+800|space=25+0|space=28+500|uni182D.EA1D_g.init2=29+950|space=29+0|space=32+500|uni182D.EA1E_g.init3=33+650|space=33+0|space=36+500|space=36+0|uni182D.E8E4_g.medi=38+800|space=38+0|space=38+0|uni182D.E8E5_g.medi1=41+800|space=41+0|space=44+500|space=44+0|uni182D.E8E6_g.medi2=46+650|space=46+0|space=49+500|space=49+0|uni182D.E8E6_g.medi2=51+650|space=51+0|space=54+500|space=54+0|uni182D.E8E4_g.medi=56+800|space=56+0|uni182D.E8E8_g.fina1=58+1250|space=60+500|space=60+0|uni182D.E8E9_g.fina2=62+1050|space=64+500|uni1820.E820_a.isol=65+1550|space=65+0|uni182D.E8E2_g.init=67+1000|uni1820.E823_a.medi=68+400|uni1837.E931_r.fina=69+750|space=70+500|uni1830.E90B_s.init=71+850|uni1824.E844_u.medi=72+600|uni1837.E930_r.medi=73+600|space=73+0|space=73+0|uni182D.E8E5_g.medi1=76+800|uni1820.E823_a.medi=77+400|space=77+0|space=79+500|space=79+0|uni182D.E8E5_g.medi1=81+800|uni1824.E844_u.medi=82+600|uni182F.E908_l.medi=83+400|uni1822.E837_i.fina=84+600|space=85+500|uni182A1820.E875_ba.init=86+1000|uni1822.E836_i.medi2=88+1000|uni182D.E8E8_g.fina1=89+1250|space=90+0|uni1820.E827_a.fina2=91+600|uni202F.nobreak=92+500|uni1836.E92B_y.init1=93+500|uni1822.E834_i.medi=94+500|uni1828.E866_n.fina=95+850]
-fonts/sha1sum/a34a7b00f22ffb5fd7eef6933b81c7e71bc2cdfb.ttf::U+180A,U+1868,U+180A,U+1868,U+180B,U+180A,U+1868,U+180C,U+180A,U+1868,U+180D,U+180A:[gid1=0+268|gid10=1+778|gid1=2+268|gid9=3+575|gid1=5+268|gid10=6+778|gid1=8+268|gid8=9+575|gid1=11+268]
+fonts/sha1sum/37033cc5cf37bb223d7355153016b6ccece93b28.ttf:U+1826,U+180B,U+1826:[uni1826.E85E_ue.init1=0+599|uni1826.E856_ue.fina=2+750]
+fonts/sha1sum/ef86fe710cfea877bbe0dbb6946a1f88d0661031.ttf:U+1820,U+180B:[uni1820.E821_a.isol1=0+1199]
+fonts/sha1sum/bb29ce50df2bdba2d10726427c6b7609bf460e04.ttf:U+183A,U+1823,U+182E,U+182B,U+1822,U+1826,U+180B,U+1832,U+180B,U+1827,U+1837,U+0020,U+182D,U+182D,U+180B,U+0020,U+182D,U+180C,U+0020,U+182D,U+180D,U+200D,U+0020,U+182D,U+200D,U+182D,U+180B,U+200D,U+0020,U+182D,U+180C,U+200D,U+0020,U+182D,U+180D,U+200D,U+0020,U+200D,U+182D,U+200D,U+200D,U+182D,U+180B,U+200D,U+0020,U+200D,U+182D,U+180C,U+200D,U+0020,U+200D,U+182D,U+180D,U+200D,U+0020,U+200D,U+182D,U+200D,U+182D,U+180B,U+0020,U+200D,U+182D,U+180C,U+0020,U+1820,U+200C,U+182D,U+1820,U+1837,U+0020,U+1830,U+1824,U+1837,U+200D,U+200D,U+182D,U+1820,U+200D,U+0020,U+200D,U+182D,U+1824,U+182F,U+1822,U+0020,U+182A,U+1820,U+1822,U+182D,U+180E,U+1820,U+202F,U+1836,U+1822,U+1828:[uni183A1823.E971_ko.init=0+950|uni182E.E904_m.medi=2+400|uni182B1822.E8A6_pi.medi=3+1150|uni1826.E854_ue.medi1=5+1100|uni1832.E916_t.medi1=7+1000|uni1827.E85C_ee.medi=9+750|uni1837.E931_r.fina=10+750|space=11+500|uni182D.E8E2_g.init=12+1000|uni182D.E8E8_g.fina1=13+1250|space=15+500|uni182D.EA1B_g.isol2=16+1000|space=18+500|uni182D.EA1E_g.init3=19+650|space=21+0|space=22+500|uni182D.E8E2_g.init=23+1000|space=24+0|uni182D.E8E5_g.medi1=25+800|space=27+0|space=28+500|uni182D.EA1D_g.init2=29+950|space=31+0|space=32+500|uni182D.EA1E_g.init3=33+650|space=35+0|space=36+500|space=37+0|uni182D.E8E4_g.medi=38+800|space=39+0|space=40+0|uni182D.E8E5_g.medi1=41+800|space=43+0|space=44+500|space=45+0|uni182D.E8E6_g.medi2=46+650|space=48+0|space=49+500|space=50+0|uni182D.E8E6_g.medi2=51+650|space=53+0|space=54+500|space=55+0|uni182D.E8E4_g.medi=56+800|space=57+0|uni182D.E8E8_g.fina1=58+1250|space=60+500|space=61+0|uni182D.E8E9_g.fina2=62+1050|space=64+500|uni1820.E820_a.isol=65+1550|space=66+0|uni182D.E8E2_g.init=67+1000|uni1820.E823_a.medi=68+400|uni1837.E931_r.fina=69+750|space=70+500|uni1830.E90B_s.init=71+850|uni1824.E844_u.medi=72+600|uni1837.E930_r.medi=73+600|space=74+0|space=75+0|uni182D.E8E5_g.medi1=76+800|uni1820.E823_a.medi=77+400|space=78+0|space=79+500|space=80+0|uni182D.E8E5_g.medi1=81+800|uni1824.E844_u.medi=82+600|uni182F.E908_l.medi=83+400|uni1822.E837_i.fina=84+600|space=85+500|uni182A1820.E875_ba.init=86+1000|uni1822.E836_i.medi2=88+1000|uni182D.E8E8_g.fina1=89+1250|space=90+0|uni1820.E827_a.fina2=91+600|uni202F.nobreak=92+500|uni1836.E92B_y.init1=93+500|uni1822.E834_i.medi=94+500|uni1828.E866_n.fina=95+850]
diff --git a/test/shaping/tests/simple.tests b/test/shaping/tests/simple.tests
deleted file mode 100644
index bebe008..0000000
--- a/test/shaping/tests/simple.tests
+++ /dev/null
@@ -1,2 +0,0 @@
-fonts/sha1sum/49c9f7485c1392fa09a1b801bc2ffea79275f22e.ttf:--shaper=ot:U+0056,U+0041,U+0042,U+0045,U+0061,U+0062,U+0063,U+0064:[V=0+1142|A=1+1295|B=2+1295|E=3+1123|a=4+1126|b=5+1164|c=6+1072|d=7+1164]
-fonts/sha1sum/49c9f7485c1392fa09a1b801bc2ffea79275f22e.ttf:--shaper=fallback:U+0056,U+0041,U+0042,U+0045,U+0061,U+0062,U+0063,U+0064:[V=0+1295|A=1+1295|B=2+1295|E=3+1123|a=4+1126|b=5+1164|c=6+1072|d=7+1164]
diff --git a/test/shaping/tests/spaces.tests b/test/shaping/tests/spaces.tests
deleted file mode 100644
index cb386de..0000000
--- a/test/shaping/tests/spaces.tests
+++ /dev/null
@@ -1,17 +0,0 @@
-fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+0020:[gid1=0+560]
-fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+00A0:[gid1=0+560]
-fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+1680:[gid0=0+692]
-fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+2000:[gid1=0+1024]
-fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+2001:[gid1=0+2048]
-fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+2002:[gid1=0+1024]
-fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+2003:[gid1=0+2048]
-fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+2004:[gid1=0+683]
-fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+2005:[gid1=0+512]
-fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+2006:[gid1=0+341]
-fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+2007:[gid1=0+560]
-fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+2008:[gid1=0+560]
-fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+2009:[gid1=0+410]
-fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+200A:[gid1=0+128]
-fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+202F:[gid1=0+280]
-fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+205F:[gid1=0+455]
-fonts/sha1sum/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+3000:[gid1=0+2048]
diff --git a/test/shaping/tests/use.tests b/test/shaping/tests/use.tests
deleted file mode 100644
index e35259c..0000000
--- a/test/shaping/tests/use.tests
+++ /dev/null
@@ -1,3 +0,0 @@
-fonts/sha1sum/fbb6c84c9e1fe0c39e152fbe845e51fd81f6748e.ttf::U+1B1B,U+1B44,U+1B13,U+1B3E:[gid3=0+990|gid7=0+2473|gid5=0@-293,-400+0]
-fonts/sha1sum/4cce528e99f600ed9c25a2b69e32eb94a03b4ae8.ttf::U+1A48,U+1A58,U+1A25,U+1A48,U+1A58,U+1A25,U+1A6E,U+1A63:[uni1A48=0+1212|uni1A25=0+1912|uni1A58=0+0|uni1A48=3+1212|uni1A6E=3+0|uni1A25=3+1912|uni1A58=3+0|uni1A63=3+1212]
-fonts/sha1sum/f518eb6f6b5eec2946c9fbbbde44e45d46f5e2ac.ttf::U+1A48,U+1A58,U+1A25,U+1A48,U+1A58,U+1A25,U+1A6E,U+1A63:[uni1A48=0+1212|uni1A25=0+1912|uni1A58=0+0|uni1A48=3+1212|uni1A6E=3+1211|uni1A25=3+1912|uni1A58=3+0|uni1A63=3+1212]
diff --git a/test/shaping/tests/vertical.tests b/test/shaping/tests/vertical.tests
deleted file mode 100644
index 8276890..0000000
--- a/test/shaping/tests/vertical.tests
+++ /dev/null
@@ -1 +0,0 @@
-fonts/sha1sum/191826b9643e3f124d865d617ae609db6a2ce203.ttf:--direction=t:U+300C:[uni300C.vert=0@-512,-578+0,-1024]
diff --git a/test/shaping/tests/zero-width-marks.tests b/test/shaping/tests/zero-width-marks.tests
index c08f26b..be7ec96 100644
--- a/test/shaping/tests/zero-width-marks.tests
+++ b/test/shaping/tests/zero-width-marks.tests
@@ -1,11 +1,2 @@
-fonts/sha1sum/bb9473d2403488714043bcfb946c9f78b86ad627.ttf::U+1030:[circledash=0+636|u1030.med=0@-162,0+0]
-fonts/sha1sum/8454d22037f892e76614e1645d066689a0200e61.ttf::U+05E0,U+05B8,U+0591,U+05DA,U+05B0:[uni05DA05B0=3+991|uni2009=0+200|uni0591=0@75,0+0|uni05B8=0@495,0+0|uni05E0=0+683]
-fonts/sha1sum/45855bc8d46332b39c4ab9e2ee1a26b1f896da6b.ttf::U+0E01,U+0E34,U+0E01:[gid1=0+1264|gid2=0@20,0+0|gid1=2+1264]
-fonts/sha1sum/7a37dc4d5bf018456aea291cee06daf004c0221c.ttf::U+0E01,U+0E34,U+0E01:[gid1=0+1264|gid2=0@20,0+1000|gid1=2+1264]
-fonts/sha1sum/8099955657a54e9ee38a6ba1d6f950ce58e3cc25.ttf::U+0E01,U+0E34,U+0E01:[gid1=0+1264|gid2=0+0|gid1=2+1264]
-fonts/sha1sum/bb0c53752e85c3d28973ebc913287b8987d3dfe8.ttf::U+0E01,U+0E34,U+0E01:[gid1=0+1264|gid2=0+0|gid1=2+1264]
-fonts/sha1sum/ffa0f5d2d9025486d8469d8b1fdd983e7632499b.ttf::U+0058,U+0303,U+0078,U+0303,U+006A,U+006A,U+006A,U+0303,U+006A,U+0303,U+006A,U+006A:[gid1=0+1200|gid6=0@-1029,340+0|gid3=2+1083|gid6=2@-992,0+0|gid2=4+528|gid2=5+528|gid5=6+528|gid6=6@-693,0+0|gid5=8+528|gid6=8@-693,0+0|gid2=10+528|gid2=11+528]
-fonts/sha1sum/cc5f3d2d717fb6bd4dfae1c16d48a2cb8e12233b.ttf::U+0058,U+0303,U+0078,U+0303,U+006A,U+006A,U+006A,U+0303,U+006A,U+0303,U+006A,U+006A:[gid1=0+1200|gid6=0@-1029,340+1200|gid3=2+1083|gid6=2@-992,0+1200|gid2=4+528|gid2=5+528|gid5=6+528|gid6=6@-693,0+1200|gid5=8+528|gid6=8@-693,0+1200|gid2=10+528|gid2=11+528]
-fonts/sha1sum/fcdcffbdf1c4c97c05308d7600e4c283eb47dbca.ttf::U+0058,U+0303,U+0078,U+0303,U+006A,U+006A,U+006A,U+0303,U+006A,U+0303,U+006A,U+006A:[gid1=0+1200|gid6=0+0|gid3=2+1083|gid6=2+0|gid2=4+528|gid2=5+528|gid5=6+528|gid6=6+0|gid5=8+528|gid6=8+0|gid2=10+528|gid2=11+528]
-fonts/sha1sum/56cfd0e18d07f41c38e9598545a6d369127fc6f9.ttf::U+0058,U+0303,U+0078,U+0303,U+006A,U+006A,U+006A,U+0303,U+006A,U+0303,U+006A,U+006A:[gid1=0+1200|gid6=0@-1029,340+0|gid3=2+1083|gid6=2@-992,0+0|gid2=4+528|gid2=5+528|gid5=6+528|gid6=6@-693,0+0|gid5=8+528|gid6=8@-693,0+0|gid2=10+528|gid2=11+528]
-fonts/sha1sum/a98e908e2ed21b22228ea59ebcc0f05034c86f2e.ttf::U+0041,U+0042,U+0041:[A=0+1368|B=1+0|A=2+1368]
+fonts/sha1sum/bb9473d2403488714043bcfb946c9f78b86ad627.ttf:U+1030:[circledash=0+636|u1030.med=0@-162,0+0]
+fonts/sha1sum/8454d22037f892e76614e1645d066689a0200e61.ttf:U+05E0,U+05B8,U+0591,U+05DA,U+05B0:[uni05DA05B0=3+991|uni2009=0+200|uni0591=0@75,0+0|uni05B8=0@495,0+0|uni05E0=0+683]
diff --git a/test/shaping/texts/in-tree/MANIFEST b/test/shaping/texts/in-tree/MANIFEST
new file mode 100644
index 0000000..f7a7a96
--- /dev/null
+++ b/test/shaping/texts/in-tree/MANIFEST
@@ -0,0 +1,9 @@
+shaper-arabic
+shaper-default
+shaper-hangul
+shaper-hebrew
+shaper-indic
+shaper-myanmar
+shaper-sea
+shaper-thai
+shaper-tibetan
diff --git a/test/shaping/texts/in-tree/shaper-arabic/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/MANIFEST
new file mode 100644
index 0000000..eb8f9ec
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/MANIFEST
@@ -0,0 +1,6 @@
+script-arabic
+script-mandaic
+script-mongolian
+script-nko
+script-phags-pa
+script-syriac
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-arabic/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/script-arabic/MANIFEST
new file mode 100644
index 0000000..62e050d
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/script-arabic/MANIFEST
@@ -0,0 +1,3 @@
+language-persian
+language-urdu
+misc
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-arabic/language-persian/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/script-arabic/language-persian/MANIFEST
new file mode 100644
index 0000000..a6ac235
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/script-arabic/language-persian/MANIFEST
@@ -0,0 +1 @@
+mehran.txt
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-arabic/language-urdu/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/script-arabic/language-urdu/MANIFEST
new file mode 100644
index 0000000..0c0a6f3
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/script-arabic/language-urdu/MANIFEST
@@ -0,0 +1 @@
+crulp
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-arabic/language-urdu/crulp/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/script-arabic/language-urdu/crulp/MANIFEST
new file mode 100644
index 0000000..5786e7b
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/script-arabic/language-urdu/crulp/MANIFEST
@@ -0,0 +1 @@
+ligatures
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-arabic/language-urdu/crulp/ligatures/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/script-arabic/language-urdu/crulp/ligatures/MANIFEST
new file mode 100644
index 0000000..c945d0e
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/script-arabic/language-urdu/crulp/ligatures/MANIFEST
@@ -0,0 +1,7 @@
+2grams.txt
+3grams.txt
+4grams.txt
+5grams.txt
+6grams.txt
+7grams.txt
+8grams.txt
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-arabic/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/script-arabic/misc/MANIFEST
new file mode 100644
index 0000000..0ac75c3
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/script-arabic/misc/MANIFEST
@@ -0,0 +1 @@
+diacritics
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-arabic/misc/diacritics/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/script-arabic/misc/diacritics/MANIFEST
new file mode 100644
index 0000000..c71d035
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/script-arabic/misc/diacritics/MANIFEST
@@ -0,0 +1,7 @@
+lam-alef.txt
+language-arabic.txt
+language-persian.txt
+language-urdu.txt
+ligature-components.txt
+ligature-diacritics.txt
+mark-skipping.txt
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-mandaic/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/script-mandaic/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/script-mandaic/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-mandaic/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/script-mandaic/misc/MANIFEST
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/script-mandaic/misc/MANIFEST
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-mongolian/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/script-mongolian/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/script-mongolian/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-mongolian/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/script-mongolian/misc/MANIFEST
new file mode 100644
index 0000000..3c76c94
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/script-mongolian/misc/MANIFEST
@@ -0,0 +1,4 @@
+misc.txt
+non-joining.txt
+poem.txt
+variation-selectors.txt
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-nko/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/script-nko/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/script-nko/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-nko/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/script-nko/misc/MANIFEST
new file mode 100644
index 0000000..29cfb2f
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/script-nko/misc/MANIFEST
@@ -0,0 +1 @@
+misc.txt
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-phags-pa/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/script-phags-pa/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/script-phags-pa/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-phags-pa/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/script-phags-pa/misc/MANIFEST
new file mode 100644
index 0000000..29cfb2f
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/script-phags-pa/misc/MANIFEST
@@ -0,0 +1 @@
+misc.txt
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-syriac/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/script-syriac/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/script-syriac/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-syriac/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-arabic/script-syriac/misc/MANIFEST
new file mode 100644
index 0000000..ae45bdf
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-arabic/script-syriac/misc/MANIFEST
@@ -0,0 +1 @@
+alaph.txt
diff --git a/test/shaping/texts/in-tree/shaper-arabic/script-syriac/misc/abbreviation-mark.txt b/test/shaping/texts/in-tree/shaper-arabic/script-syriac/misc/abbreviation-mark.txt
deleted file mode 100644
index a450678..0000000
--- a/test/shaping/texts/in-tree/shaper-arabic/script-syriac/misc/abbreviation-mark.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-ܐܒ
-ܐ܏
-ܐ܏ܒ
-ܐ܏ܒܓ
-ܐ܏ܒܓܕ
-ܐ܏ܒܓܕܐ
-ܐ܏ܒܓܕܐܐܐܐܐܐܐܐܐ
-ܐ܏ܒܓܕܐ܏ܐܐܐ܏ܐ܏ܐܐܐܐ
-ܐ܏ܒܓܕܓܓܓܓܓܓ
-ܐ܏ܒܓ
-܏ܫܘabcܒ.
diff --git a/test/shaping/texts/in-tree/shaper-default/MANIFEST b/test/shaping/texts/in-tree/shaper-default/MANIFEST
new file mode 100644
index 0000000..d08deb7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-default/MANIFEST
@@ -0,0 +1,5 @@
+script-ethiopic
+script-han
+script-hiragana
+script-linear-b
+script-tifinagh
diff --git a/test/shaping/texts/in-tree/shaper-default/script-ethiopic/MANIFEST b/test/shaping/texts/in-tree/shaper-default/script-ethiopic/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-default/script-ethiopic/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-default/script-ethiopic/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-default/script-ethiopic/misc/MANIFEST
new file mode 100644
index 0000000..29cfb2f
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-default/script-ethiopic/misc/MANIFEST
@@ -0,0 +1 @@
+misc.txt
diff --git a/test/shaping/texts/in-tree/shaper-default/script-han/MANIFEST b/test/shaping/texts/in-tree/shaper-default/script-han/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-default/script-han/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-default/script-han/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-default/script-han/misc/MANIFEST
new file mode 100644
index 0000000..003c956
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-default/script-han/misc/MANIFEST
@@ -0,0 +1 @@
+cjk-compat.txt
diff --git a/test/shaping/texts/in-tree/shaper-default/script-hiragana/MANIFEST b/test/shaping/texts/in-tree/shaper-default/script-hiragana/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-default/script-hiragana/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-default/script-hiragana/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-default/script-hiragana/misc/MANIFEST
new file mode 100644
index 0000000..4d2d52c
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-default/script-hiragana/misc/MANIFEST
@@ -0,0 +1,2 @@
+kazuraki-liga-lines.txt
+kazuraki-liga.txt
diff --git a/test/shaping/texts/in-tree/shaper-default/script-linear-b/MANIFEST b/test/shaping/texts/in-tree/shaper-default/script-linear-b/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-default/script-linear-b/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-default/script-linear-b/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-default/script-linear-b/misc/MANIFEST
new file mode 100644
index 0000000..29cfb2f
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-default/script-linear-b/misc/MANIFEST
@@ -0,0 +1 @@
+misc.txt
diff --git a/test/shaping/texts/in-tree/shaper-default/script-tifinagh/MANIFEST b/test/shaping/texts/in-tree/shaper-default/script-tifinagh/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-default/script-tifinagh/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-default/script-tifinagh/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-default/script-tifinagh/misc/MANIFEST
new file mode 100644
index 0000000..29cfb2f
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-default/script-tifinagh/misc/MANIFEST
@@ -0,0 +1 @@
+misc.txt
diff --git a/test/shaping/texts/in-tree/shaper-hangul/MANIFEST b/test/shaping/texts/in-tree/shaper-hangul/MANIFEST
new file mode 100644
index 0000000..ea81716
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-hangul/MANIFEST
@@ -0,0 +1 @@
+script-hangul
diff --git a/test/shaping/texts/in-tree/shaper-hangul/script-hangul/MANIFEST b/test/shaping/texts/in-tree/shaper-hangul/script-hangul/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-hangul/script-hangul/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-hangul/script-hangul/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-hangul/script-hangul/misc/MANIFEST
new file mode 100644
index 0000000..29cfb2f
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-hangul/script-hangul/misc/MANIFEST
@@ -0,0 +1 @@
+misc.txt
diff --git a/test/shaping/texts/in-tree/shaper-hebrew/MANIFEST b/test/shaping/texts/in-tree/shaper-hebrew/MANIFEST
new file mode 100644
index 0000000..12da794
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-hebrew/MANIFEST
@@ -0,0 +1 @@
+script-hebrew
diff --git a/test/shaping/texts/in-tree/shaper-hebrew/script-hebrew/MANIFEST b/test/shaping/texts/in-tree/shaper-hebrew/script-hebrew/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-hebrew/script-hebrew/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-hebrew/script-hebrew/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-hebrew/script-hebrew/misc/MANIFEST
new file mode 100644
index 0000000..06ca481
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-hebrew/script-hebrew/misc/MANIFEST
@@ -0,0 +1 @@
+diacritics.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/MANIFEST
new file mode 100644
index 0000000..3f2011f
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/MANIFEST
@@ -0,0 +1,2 @@
+indic
+south-east-asian
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/MANIFEST
new file mode 100644
index 0000000..5e62ebf
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/MANIFEST
@@ -0,0 +1,11 @@
+script-assamese
+script-bengali
+script-devanagari
+script-gujarati
+script-gurmukhi
+script-kannada
+script-malayalam
+script-oriya
+script-sinhala
+script-tamil
+script-telugu
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/MANIFEST
new file mode 100644
index 0000000..ecb8d96
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/MANIFEST
@@ -0,0 +1,2 @@
+misc
+utrrs
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/misc/MANIFEST
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/misc/MANIFEST
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/utrrs/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/utrrs/MANIFEST
new file mode 100644
index 0000000..0658824
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/utrrs/MANIFEST
@@ -0,0 +1,3 @@
+codepoint
+gpos
+gsub
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/utrrs/codepoint/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/utrrs/codepoint/MANIFEST
new file mode 100644
index 0000000..1490dfe
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/utrrs/codepoint/MANIFEST
@@ -0,0 +1,7 @@
+IndicFontFeatureCodepoint-AdditionalVowels.txt
+IndicFontFeatureCodepoint-Consonants.txt
+IndicFontFeatureCodepoint-DependentVowels.txt
+IndicFontFeatureCodepoint-Digits.txt
+IndicFontFeatureCodepoint-IndependentVowels.txt
+IndicFontFeatureCodepoint-Reserved.txt
+IndicFontFeatureCodepoint-VariousSigns.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/utrrs/gpos/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/utrrs/gpos/MANIFEST
new file mode 100644
index 0000000..d7ae70e
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/utrrs/gpos/MANIFEST
@@ -0,0 +1,2 @@
+IndicFontFeatureGPOS-AboveBase.txt
+IndicFontFeatureGPOS-BelowBase.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/utrrs/gsub/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/utrrs/gsub/MANIFEST
new file mode 100644
index 0000000..4b47068
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-assamese/utrrs/gsub/MANIFEST
@@ -0,0 +1 @@
+IndicFontFeatureGSUB.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/MANIFEST
new file mode 100644
index 0000000..ecb8d96
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/MANIFEST
@@ -0,0 +1,2 @@
+misc
+utrrs
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/misc/MANIFEST
new file mode 100644
index 0000000..3c2a4fb
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/misc/MANIFEST
@@ -0,0 +1,2 @@
+misc.txt
+reph.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/utrrs/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/utrrs/MANIFEST
new file mode 100644
index 0000000..0658824
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/utrrs/MANIFEST
@@ -0,0 +1,3 @@
+codepoint
+gpos
+gsub
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/utrrs/codepoint/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/utrrs/codepoint/MANIFEST
new file mode 100644
index 0000000..1490dfe
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/utrrs/codepoint/MANIFEST
@@ -0,0 +1,7 @@
+IndicFontFeatureCodepoint-AdditionalVowels.txt
+IndicFontFeatureCodepoint-Consonants.txt
+IndicFontFeatureCodepoint-DependentVowels.txt
+IndicFontFeatureCodepoint-Digits.txt
+IndicFontFeatureCodepoint-IndependentVowels.txt
+IndicFontFeatureCodepoint-Reserved.txt
+IndicFontFeatureCodepoint-VariousSigns.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/utrrs/gpos/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/utrrs/gpos/MANIFEST
new file mode 100644
index 0000000..d7ae70e
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/utrrs/gpos/MANIFEST
@@ -0,0 +1,2 @@
+IndicFontFeatureGPOS-AboveBase.txt
+IndicFontFeatureGPOS-BelowBase.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/utrrs/gsub/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/utrrs/gsub/MANIFEST
new file mode 100644
index 0000000..4b47068
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-bengali/utrrs/gsub/MANIFEST
@@ -0,0 +1 @@
+IndicFontFeatureGSUB.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/MANIFEST
new file mode 100644
index 0000000..ecb8d96
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/MANIFEST
@@ -0,0 +1,2 @@
+misc
+utrrs
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/misc/MANIFEST
new file mode 100644
index 0000000..c384b38
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/misc/MANIFEST
@@ -0,0 +1,6 @@
+dottedcircle.txt
+eyelash.txt
+joiners.txt
+misc.txt
+spec-deviations.txt
+tricky-reordering.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/utrrs/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/utrrs/MANIFEST
new file mode 100644
index 0000000..0658824
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/utrrs/MANIFEST
@@ -0,0 +1,3 @@
+codepoint
+gpos
+gsub
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/utrrs/codepoint/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/utrrs/codepoint/MANIFEST
new file mode 100644
index 0000000..21eb56c
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/utrrs/codepoint/MANIFEST
@@ -0,0 +1,9 @@
+IndicFontFeatureCodepoint-AdditionalConsonants.txt
+IndicFontFeatureCodepoint-AdditionalVowels.txt
+IndicFontFeatureCodepoint-Consonants.txt
+IndicFontFeatureCodepoint-DependentVowels.txt
+IndicFontFeatureCodepoint-DevnagariSpecificAddition.txt
+IndicFontFeatureCodepoint-Digits.txt
+IndicFontFeatureCodepoint-GenericPunctuation.txt
+IndicFontFeatureCodepoint-IndependentVowels.txt
+IndicFontFeatureCodepoint-VariousSigns.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/utrrs/gpos/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/utrrs/gpos/MANIFEST
new file mode 100644
index 0000000..d7ae70e
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/utrrs/gpos/MANIFEST
@@ -0,0 +1,2 @@
+IndicFontFeatureGPOS-AboveBase.txt
+IndicFontFeatureGPOS-BelowBase.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/utrrs/gsub/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/utrrs/gsub/MANIFEST
new file mode 100644
index 0000000..4b47068
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-devanagari/utrrs/gsub/MANIFEST
@@ -0,0 +1 @@
+IndicFontFeatureGSUB.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/MANIFEST
new file mode 100644
index 0000000..ecb8d96
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/MANIFEST
@@ -0,0 +1,2 @@
+misc
+utrrs
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/misc/MANIFEST
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/misc/MANIFEST
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/utrrs/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/utrrs/MANIFEST
new file mode 100644
index 0000000..0658824
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/utrrs/MANIFEST
@@ -0,0 +1,3 @@
+codepoint
+gpos
+gsub
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/utrrs/codepoint/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/utrrs/codepoint/MANIFEST
new file mode 100644
index 0000000..1490dfe
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/utrrs/codepoint/MANIFEST
@@ -0,0 +1,7 @@
+IndicFontFeatureCodepoint-AdditionalVowels.txt
+IndicFontFeatureCodepoint-Consonants.txt
+IndicFontFeatureCodepoint-DependentVowels.txt
+IndicFontFeatureCodepoint-Digits.txt
+IndicFontFeatureCodepoint-IndependentVowels.txt
+IndicFontFeatureCodepoint-Reserved.txt
+IndicFontFeatureCodepoint-VariousSigns.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/utrrs/gpos/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/utrrs/gpos/MANIFEST
new file mode 100644
index 0000000..d7ae70e
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/utrrs/gpos/MANIFEST
@@ -0,0 +1,2 @@
+IndicFontFeatureGPOS-AboveBase.txt
+IndicFontFeatureGPOS-BelowBase.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/utrrs/gsub/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/utrrs/gsub/MANIFEST
new file mode 100644
index 0000000..4b47068
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-gujarati/utrrs/gsub/MANIFEST
@@ -0,0 +1 @@
+IndicFontFeatureGSUB.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/MANIFEST
new file mode 100644
index 0000000..ecb8d96
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/MANIFEST
@@ -0,0 +1,2 @@
+misc
+utrrs
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/misc/MANIFEST
new file mode 100644
index 0000000..29cfb2f
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/misc/MANIFEST
@@ -0,0 +1 @@
+misc.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/utrrs/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/utrrs/MANIFEST
new file mode 100644
index 0000000..0658824
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/utrrs/MANIFEST
@@ -0,0 +1,3 @@
+codepoint
+gpos
+gsub
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/MANIFEST
new file mode 100644
index 0000000..c213616
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/MANIFEST
@@ -0,0 +1,7 @@
+IndicFontFeatureCodepoint-Consonants.txt
+IndicFontFeatureCodepoint-DependentVowels.txt
+IndicFontFeatureCodepoint-Digits.txt
+IndicFontFeatureCodepoint-GurmukhiSpecific.txt
+IndicFontFeatureCodepoint-IndependentVowels.txt
+IndicFontFeatureCodepoint-Reserved.txt
+IndicFontFeatureCodepoint-VariousSigns.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/utrrs/gpos/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/utrrs/gpos/MANIFEST
new file mode 100644
index 0000000..d7ae70e
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/utrrs/gpos/MANIFEST
@@ -0,0 +1,2 @@
+IndicFontFeatureGPOS-AboveBase.txt
+IndicFontFeatureGPOS-BelowBase.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/utrrs/gsub/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/utrrs/gsub/MANIFEST
new file mode 100644
index 0000000..4b47068
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-gurmukhi/utrrs/gsub/MANIFEST
@@ -0,0 +1 @@
+IndicFontFeatureGSUB.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/MANIFEST
new file mode 100644
index 0000000..ecb8d96
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/MANIFEST
@@ -0,0 +1,2 @@
+misc
+utrrs
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/misc/MANIFEST
new file mode 100644
index 0000000..f53f999
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/misc/MANIFEST
@@ -0,0 +1,2 @@
+misc.txt
+right-matras.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/utrrs/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/utrrs/MANIFEST
new file mode 100644
index 0000000..0658824
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/utrrs/MANIFEST
@@ -0,0 +1,3 @@
+codepoint
+gpos
+gsub
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/utrrs/codepoint/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/utrrs/codepoint/MANIFEST
new file mode 100644
index 0000000..8fac7bc
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/utrrs/codepoint/MANIFEST
@@ -0,0 +1,8 @@
+IndicFontFeatureCodepoint-AdditionalConsonants.txt
+IndicFontFeatureCodepoint-AdditionalVowels.txt
+IndicFontFeatureCodepoint-Consonants.txt
+IndicFontFeatureCodepoint-DependentVowels.txt
+IndicFontFeatureCodepoint-Digits.txt
+IndicFontFeatureCodepoint-IndependentVowels.txt
+IndicFontFeatureCodepoint-Reserved.txt
+IndicFontFeatureCodepoint-VariousSigns.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/utrrs/gpos/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/utrrs/gpos/MANIFEST
new file mode 100644
index 0000000..49d0284
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/utrrs/gpos/MANIFEST
@@ -0,0 +1 @@
+IndicFontFeatureGPOS-AboveBase.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/utrrs/gsub/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/utrrs/gsub/MANIFEST
new file mode 100644
index 0000000..4b47068
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-kannada/utrrs/gsub/MANIFEST
@@ -0,0 +1 @@
+IndicFontFeatureGSUB.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/MANIFEST
new file mode 100644
index 0000000..ecb8d96
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/MANIFEST
@@ -0,0 +1,2 @@
+misc
+utrrs
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/misc/MANIFEST
new file mode 100644
index 0000000..48800d4
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/misc/MANIFEST
@@ -0,0 +1,3 @@
+cibu.txt
+dot-reph.txt
+misc.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/utrrs/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/utrrs/MANIFEST
new file mode 100644
index 0000000..b389359
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/utrrs/MANIFEST
@@ -0,0 +1,2 @@
+codepoint
+gsub
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/utrrs/codepoint/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/utrrs/codepoint/MANIFEST
new file mode 100644
index 0000000..1490dfe
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/utrrs/codepoint/MANIFEST
@@ -0,0 +1,7 @@
+IndicFontFeatureCodepoint-AdditionalVowels.txt
+IndicFontFeatureCodepoint-Consonants.txt
+IndicFontFeatureCodepoint-DependentVowels.txt
+IndicFontFeatureCodepoint-Digits.txt
+IndicFontFeatureCodepoint-IndependentVowels.txt
+IndicFontFeatureCodepoint-Reserved.txt
+IndicFontFeatureCodepoint-VariousSigns.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/utrrs/gsub/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/utrrs/gsub/MANIFEST
new file mode 100644
index 0000000..4b47068
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-malayalam/utrrs/gsub/MANIFEST
@@ -0,0 +1 @@
+IndicFontFeatureGSUB.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/MANIFEST
new file mode 100644
index 0000000..ecb8d96
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/MANIFEST
@@ -0,0 +1,2 @@
+misc
+utrrs
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/misc/MANIFEST
new file mode 100644
index 0000000..66a2468
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/misc/MANIFEST
@@ -0,0 +1,2 @@
+bindu.txt
+misc.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/utrrs/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/utrrs/MANIFEST
new file mode 100644
index 0000000..b389359
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/utrrs/MANIFEST
@@ -0,0 +1,2 @@
+codepoint
+gsub
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/utrrs/codepoint/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/utrrs/codepoint/MANIFEST
new file mode 100644
index 0000000..17fe498
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/utrrs/codepoint/MANIFEST
@@ -0,0 +1,9 @@
+IndicFontFeatureCodepoint-AdditionalConsonants.txt
+IndicFontFeatureCodepoint-AdditionalVowels.txt
+IndicFontFeatureCodepoint-Consonants.txt
+IndicFontFeatureCodepoint-DependentVowels.txt
+IndicFontFeatureCodepoint-Digits.txt
+IndicFontFeatureCodepoint-IndependentVowels.txt
+IndicFontFeatureCodepoint-OriyaSpecific.txt
+IndicFontFeatureCodepoint-Reserved.txt
+IndicFontFeatureCodepoint-VariousSigns.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/utrrs/gsub/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/utrrs/gsub/MANIFEST
new file mode 100644
index 0000000..4b47068
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-oriya/utrrs/gsub/MANIFEST
@@ -0,0 +1 @@
+IndicFontFeatureGSUB.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/MANIFEST
new file mode 100644
index 0000000..ecb8d96
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/MANIFEST
@@ -0,0 +1,2 @@
+misc
+utrrs
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/misc/MANIFEST
new file mode 100644
index 0000000..a00d7ae
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/misc/MANIFEST
@@ -0,0 +1,4 @@
+extensive.txt
+misc.txt
+reph.txt
+split-matras.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/utrrs/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/utrrs/MANIFEST
new file mode 100644
index 0000000..0658824
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/utrrs/MANIFEST
@@ -0,0 +1,3 @@
+codepoint
+gpos
+gsub
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/utrrs/codepoint/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/utrrs/codepoint/MANIFEST
new file mode 100644
index 0000000..48e393c
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/utrrs/codepoint/MANIFEST
@@ -0,0 +1,5 @@
+IndicFontFeatureCodepoint-Consonants.txt
+IndicFontFeatureCodepoint-DependentVowels.txt
+IndicFontFeatureCodepoint-IndependentVowels.txt
+IndicFontFeatureCodepoint-Punctuation.txt
+IndicFontFeatureCodepoint-VariousSigns.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/utrrs/gpos/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/utrrs/gpos/MANIFEST
new file mode 100644
index 0000000..f4d0fc3
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/utrrs/gpos/MANIFEST
@@ -0,0 +1 @@
+IndicFontFeatureGPOS.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/utrrs/gsub/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/utrrs/gsub/MANIFEST
new file mode 100644
index 0000000..6aa964b
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-sinhala/utrrs/gsub/MANIFEST
@@ -0,0 +1,7 @@
+IndicFontFeatureGSUB-Conjunct.txt
+IndicFontFeatureGSUB-Rakaaraansaya.txt
+IndicFontFeatureGSUB-Repaya.txt
+IndicFontFeatureGSUB-Special-Cases.txt
+IndicFontFeatureGSUB-TouchingLetters.txt
+IndicFontFeatureGSUB-Yansaya.txt
+IndicFontFeatureGSUB.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/MANIFEST
new file mode 100644
index 0000000..ecb8d96
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/MANIFEST
@@ -0,0 +1,2 @@
+misc
+utrrs
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/misc/MANIFEST
new file mode 100644
index 0000000..29cfb2f
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/misc/MANIFEST
@@ -0,0 +1 @@
+misc.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/utrrs/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/utrrs/MANIFEST
new file mode 100644
index 0000000..0658824
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/utrrs/MANIFEST
@@ -0,0 +1,3 @@
+codepoint
+gpos
+gsub
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/utrrs/codepoint/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/utrrs/codepoint/MANIFEST
new file mode 100644
index 0000000..3e28731
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/utrrs/codepoint/MANIFEST
@@ -0,0 +1,10 @@
+IndicFontFeatureCodepoint-Consonants.txt
+IndicFontFeatureCodepoint-CurrencySymbols.txt
+IndicFontFeatureCodepoint-DependentVowels.txt
+IndicFontFeatureCodepoint-Digits.txt
+IndicFontFeatureCodepoint-IndependentVowels.txt
+IndicFontFeatureCodepoint-Numerics.txt
+IndicFontFeatureCodepoint-Reserved.txt
+IndicFontFeatureCodepoint-Symbols.txt
+IndicFontFeatureCodepoint-TamilSymbol.txt
+IndicFontFeatureCodepoint-VariousSigns.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/utrrs/gpos/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/utrrs/gpos/MANIFEST
new file mode 100644
index 0000000..d7ae70e
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/utrrs/gpos/MANIFEST
@@ -0,0 +1,2 @@
+IndicFontFeatureGPOS-AboveBase.txt
+IndicFontFeatureGPOS-BelowBase.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/utrrs/gsub/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/utrrs/gsub/MANIFEST
new file mode 100644
index 0000000..4b47068
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-tamil/utrrs/gsub/MANIFEST
@@ -0,0 +1 @@
+IndicFontFeatureGSUB.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/MANIFEST
new file mode 100644
index 0000000..ecb8d96
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/MANIFEST
@@ -0,0 +1,2 @@
+misc
+utrrs
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/misc/MANIFEST
new file mode 100644
index 0000000..29cfb2f
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/misc/MANIFEST
@@ -0,0 +1 @@
+misc.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/utrrs/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/utrrs/MANIFEST
new file mode 100644
index 0000000..0658824
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/utrrs/MANIFEST
@@ -0,0 +1,3 @@
+codepoint
+gpos
+gsub
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/utrrs/codepoint/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/utrrs/codepoint/MANIFEST
new file mode 100644
index 0000000..1490dfe
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/utrrs/codepoint/MANIFEST
@@ -0,0 +1,7 @@
+IndicFontFeatureCodepoint-AdditionalVowels.txt
+IndicFontFeatureCodepoint-Consonants.txt
+IndicFontFeatureCodepoint-DependentVowels.txt
+IndicFontFeatureCodepoint-Digits.txt
+IndicFontFeatureCodepoint-IndependentVowels.txt
+IndicFontFeatureCodepoint-Reserved.txt
+IndicFontFeatureCodepoint-VariousSigns.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/utrrs/gpos/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/utrrs/gpos/MANIFEST
new file mode 100644
index 0000000..49d0284
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/utrrs/gpos/MANIFEST
@@ -0,0 +1 @@
+IndicFontFeatureGPOS-AboveBase.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/utrrs/gsub/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/utrrs/gsub/MANIFEST
new file mode 100644
index 0000000..4b47068
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/indic/script-telugu/utrrs/gsub/MANIFEST
@@ -0,0 +1 @@
+IndicFontFeatureGSUB.txt
diff --git a/test/shaping/texts/in-tree/shaper-indic/south-east-asian/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/south-east-asian/MANIFEST
new file mode 100644
index 0000000..9627b9e
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/south-east-asian/MANIFEST
@@ -0,0 +1 @@
+script-khmer
diff --git a/test/shaping/texts/in-tree/shaper-indic/south-east-asian/script-khmer/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/south-east-asian/script-khmer/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/south-east-asian/script-khmer/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-indic/south-east-asian/script-khmer/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-indic/south-east-asian/script-khmer/misc/MANIFEST
new file mode 100644
index 0000000..fde3fa1
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-indic/south-east-asian/script-khmer/misc/MANIFEST
@@ -0,0 +1,3 @@
+misc.txt
+other-marks-invalid.txt
+other-marks.txt
diff --git a/test/shaping/texts/in-tree/shaper-myanmar/MANIFEST b/test/shaping/texts/in-tree/shaper-myanmar/MANIFEST
new file mode 100644
index 0000000..895bcea
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-myanmar/MANIFEST
@@ -0,0 +1 @@
+script-myanmar
diff --git a/test/shaping/texts/in-tree/shaper-myanmar/script-myanmar/MANIFEST b/test/shaping/texts/in-tree/shaper-myanmar/script-myanmar/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-myanmar/script-myanmar/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-myanmar/script-myanmar/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-myanmar/script-myanmar/misc/MANIFEST
new file mode 100644
index 0000000..b5a09c0
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-myanmar/script-myanmar/misc/MANIFEST
@@ -0,0 +1,3 @@
+misc.txt
+otspec.txt
+utn11.txt
diff --git a/test/shaping/texts/in-tree/shaper-sea/MANIFEST b/test/shaping/texts/in-tree/shaper-sea/MANIFEST
new file mode 100644
index 0000000..ba95488
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-sea/MANIFEST
@@ -0,0 +1,3 @@
+script-cham
+script-new-tai-lue
+script-tai-tham
diff --git a/test/shaping/texts/in-tree/shaper-sea/script-cham/MANIFEST b/test/shaping/texts/in-tree/shaper-sea/script-cham/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-sea/script-cham/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-sea/script-cham/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-sea/script-cham/misc/MANIFEST
new file mode 100644
index 0000000..29cfb2f
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-sea/script-cham/misc/MANIFEST
@@ -0,0 +1 @@
+misc.txt
diff --git a/test/shaping/texts/in-tree/shaper-use/script-cham/misc.txt b/test/shaping/texts/in-tree/shaper-sea/script-cham/misc/misc.txt
index 32b793a..32b793a 100644
--- a/test/shaping/texts/in-tree/shaper-use/script-cham/misc.txt
+++ b/test/shaping/texts/in-tree/shaper-sea/script-cham/misc/misc.txt
diff --git a/test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/MANIFEST b/test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/misc/MANIFEST
new file mode 100644
index 0000000..29cfb2f
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/misc/MANIFEST
@@ -0,0 +1 @@
+misc.txt
diff --git a/test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/misc/misc.txt b/test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/misc/misc.txt
new file mode 100644
index 0000000..11224a1
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-sea/script-new-tai-lue/misc/misc.txt
@@ -0,0 +1 @@
+ᦀᦷᧃᧈ
diff --git a/test/shaping/texts/in-tree/shaper-sea/script-tai-tham/MANIFEST b/test/shaping/texts/in-tree/shaper-sea/script-tai-tham/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-sea/script-tai-tham/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-sea/script-tai-tham/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-sea/script-tai-tham/misc/MANIFEST
new file mode 100644
index 0000000..cfc4f65
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-sea/script-tai-tham/misc/MANIFEST
@@ -0,0 +1,2 @@
+misc.txt
+torture.txt
diff --git a/test/shaping/texts/in-tree/shaper-use/script-tai-tham/misc.txt b/test/shaping/texts/in-tree/shaper-sea/script-tai-tham/misc/misc.txt
index 62e9317..62e9317 100644
--- a/test/shaping/texts/in-tree/shaper-use/script-tai-tham/misc.txt
+++ b/test/shaping/texts/in-tree/shaper-sea/script-tai-tham/misc/misc.txt
diff --git a/test/shaping/texts/in-tree/shaper-use/script-tai-tham/torture.txt b/test/shaping/texts/in-tree/shaper-sea/script-tai-tham/misc/torture.txt
index faee302..faee302 100644
--- a/test/shaping/texts/in-tree/shaper-use/script-tai-tham/torture.txt
+++ b/test/shaping/texts/in-tree/shaper-sea/script-tai-tham/misc/torture.txt
diff --git a/test/shaping/texts/in-tree/shaper-thai/MANIFEST b/test/shaping/texts/in-tree/shaper-thai/MANIFEST
new file mode 100644
index 0000000..32b5476
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-thai/MANIFEST
@@ -0,0 +1,2 @@
+script-lao
+script-thai
diff --git a/test/shaping/texts/in-tree/shaper-thai/script-lao/MANIFEST b/test/shaping/texts/in-tree/shaper-thai/script-lao/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-thai/script-lao/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-thai/script-lao/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-thai/script-lao/misc/MANIFEST
new file mode 100644
index 0000000..ffd16f1
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-thai/script-lao/misc/MANIFEST
@@ -0,0 +1 @@
+sara-am.txt
diff --git a/test/shaping/texts/in-tree/shaper-thai/script-thai/MANIFEST b/test/shaping/texts/in-tree/shaper-thai/script-thai/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-thai/script-thai/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-thai/script-thai/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-thai/script-thai/misc/MANIFEST
new file mode 100644
index 0000000..6b5ca6f
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-thai/script-thai/misc/MANIFEST
@@ -0,0 +1,4 @@
+misc.txt
+phinthu.txt
+pua-shaping.txt
+sara-am.txt
diff --git a/test/shaping/texts/in-tree/shaper-tibetan/MANIFEST b/test/shaping/texts/in-tree/shaper-tibetan/MANIFEST
new file mode 100644
index 0000000..3ed6c85
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-tibetan/MANIFEST
@@ -0,0 +1 @@
+script-tibetan
diff --git a/test/shaping/texts/in-tree/shaper-tibetan/script-tibetan/MANIFEST b/test/shaping/texts/in-tree/shaper-tibetan/script-tibetan/MANIFEST
new file mode 100644
index 0000000..b8752e7
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-tibetan/script-tibetan/MANIFEST
@@ -0,0 +1 @@
+misc
diff --git a/test/shaping/texts/in-tree/shaper-tibetan/script-tibetan/misc/MANIFEST b/test/shaping/texts/in-tree/shaper-tibetan/script-tibetan/misc/MANIFEST
new file mode 100644
index 0000000..29cfb2f
--- /dev/null
+++ b/test/shaping/texts/in-tree/shaper-tibetan/script-tibetan/misc/MANIFEST
@@ -0,0 +1 @@
+misc.txt
diff --git a/test/shaping/texts/in-tree/shaper-tibetan/script-tibetan/misc/contractions.txt b/test/shaping/texts/in-tree/shaper-tibetan/script-tibetan/misc/contractions.txt
deleted file mode 100644
index 46da1af..0000000
--- a/test/shaping/texts/in-tree/shaper-tibetan/script-tibetan/misc/contractions.txt
+++ /dev/null
@@ -1,612 +0,0 @@
-ཀི་ཀང་
-ཀྐིང་
-ཀི་ཀི་སྭོ་སྭོ་
-ཀིི་སྭོོ་
-ཀུན་དཀྲིས་
-ཀིུས་
-ཀུན་མཁྱེན་
-ཀེུན་
-ཀུན་དགའ་
-ཀུནའ་
-ཀུན་འཇོམས་
-ཀུནོམས་
-ཀུན་བརྡུངས་
-ཀུནྡུང་
-ཀུན་ནས་
-ཀུནྶ་
-ཀུན་རྫོབ་
-ཀོུབ༹་
-ཀུན་གཟིགས་
-ཀིུགས་
-ཀུན་བཟང་
-ཀུན༹ང་
-ཀུན་ཤེས་
-ཀེུས་
-ཀླུ་ཐེབས་
-ཀླེུབས་
-ཀླུ་ཟློག་
-ཀློུག་
-དཀར་པོ་
-དཀརོ་
-དཀར་ཡོལ་
-དཀོལ་
-དཀོན་མཆོག་
-དཀོོག་
-དཀོར་ནོར་
-དཀོོར་
-དཀྱིལ་འཁོར་
-དཀྱོིར་
-བཀའ་དྲིན་
-བཀྲིན་
-བཀྲ་ཤིས་
-བཀྲིས་
-བཀྲ་ཤིས་ཉི་མ་
-བཀྲིསྙི་
-སྐལ་བཟང་
-སྐལ༹ང་
-སྐུ་གསུང་ཐུགས་
-སྐུགས་
-སྐྱེ་རྒུ་
-སྐྱེུ་
-སྐྱེ་མཆེད་
-སྐྱེདེ་
-བསྐྱེད་བསྐྱེད་
-བསྐྱེེད་
-བསྐྱེད་བསྐྱེད་བསྐྱེད་
-བསྐྱེེེད་
-ཁམས་གསུམ་
-ཁམསུཾ་
-ཁུར་ཚོས་
-ཁོུས༹་
-ཁྱད་པར་
-ཁྱདར་
-ཁྱབ་བདག་
-ཁྱབདག་
-ཁྱུ་མཆོག་
-ཁྱོུག་
-ཁྲུན་མེད་
-ཁྲེུད་
-ཁྲུན་རིང་
-ཁྲིུང་
-ཁྲུམས་སྟོད་
-ཁྲོུད་
-ཁྲུམས་སྨད་
-ཁྲུཾད་
-མཁའ་འགྲོ་
-མཁའགྲོ་
-མཁྱེན་མཁྱེན་མཁྱེན་
-མཁྱེེེན་
-འཁོར་འདས་
-འཁོརས་
-འཁོར་བཅས་
-འཁོརས་
-འཁོར་ལོ་
-འཁོོར་
-གུར་ཐོག་
-གོུག་
-གྱུར་ཅིག་
-གྱིུག་
-གྲུ་འཛིན་
-གྲིུན་
-གྲུ་བཞི་
-གྲིུ་
-གྲུ་ཡོན་
-གྲོུན་
-གྲུབ་ཉི་
-གྲུབྙི་
-གྲུབ་ཐོབ་
-གྲོུབ་
-གྲོ་བཞིན་
-གྲོིན་
-གྲོང་ཁྱེར་
-གྲོེར་
-གླང་པོ་
-གླངོ་
-གླེགས་བམ་
-གླེམ་
-དགུང་ཐིག་
-དགིུག་
-དགེ་འདུན་
-དགེུན་
-དགེ་ལུགས་
-དགེུགས་
-དགེ་སློང་
-དགློེང་
-དགྲ་བགེགས་
-དགྲེགས་
-དགྲ་བཅོམ་
-དགྲོམ་
-མགོན་པོ་
-མགོོན་
-འགྲུབ་བྱ་
-འགྲུབྱ་
-འགྲུབ་སྦྱོར་
-འགྲུབྱོར་
-རྒ་ཤི་
-རྒི་
-རྒུན་འབྲུམ་
-རྒྲུམ་
-རྒྱ་མཚོ་
-རྪོ་
-རྒྱལ་པོ་
-རྒྱོལ་
-རྒྱལ་བློན་
-རྒྱལོན་
-རྒྱལ་མཚན་
-རྒྱལ༹ན་
-ངན་ཀྱང་
-ངནྱང་
-ངུར་སྨྲིག་
-ངིུག་
-དངོས་གྲུབ་
-དགྲོུབ་
-གཅུ་གལ་
-གཅུལ་
-བཅུ་གཅིག་
-བཅིུག་
-བཅུ་གཉིས་
-བཅིུས་
-བཅུ་དྲུག་
-བཅྲུག་
-བཅུ་བདུན་
-བཅུན་
-བཅུ་བཞི་
-བཅིུ་
-བཅུ་གསུམ་
-བཅུཾ་
-བཅོ་བརྒྱད་
-བཅྱོད་
-བཅོམ་ལྡན་
-བཅོནཾ་
-བཅོམ་ལྡན་འདས་
-བཅོནྡས་
-ལྕགས་
-ལྕཊ་
-ལྕགས་སྒྲོག་
-ལྕགསྒྲོག་
-ཆ་ཤེས་
-ཆེས་
-ཆགས་ཐོགས་
-ཆཊ་ཐོཊ་
-ཆད་
-ཆྡ་
-ཆུ་དཀྱིལ་
-ཆིུལ་
-ཆུ་སྟོད་
-ཆོུད་
-ཆུ་སྣོད་
-ཆོུད་
-ཆུ་སྨད་
-ཆུཾད་
-ཆུ་ཚོད་
-ཆོུ༹ད་
-ཆུ་སྲིན་
-ཆྲིུན་
-ཆུབ་ཉི་
-ཆུབྙི་
-ཆོ་འཕྲུལ་
-ཆྲོུལ་
-ཆོས་སྤྱོད་
-ཆོསྤྱོད་
-མཆོད་རྟེན་
-མཆོེན་
-འཆི་བདག་
-འཆྡིག་
-འཆི་སྦྱོར་
-འཆྱོིར་
-ཇོ་བོ་
-ཇོོ་
-ཇོ་མོ་
-ཇོོ་
-ཇོ་ཇོ་
-ཇོོ་
-འཇིག་ཉི་
-འཇིགྙི་
-འཇིག་རྟེན་
-འཇིགེན་
-རྗེ་བཙུན་
-རྗེུན༹་
-ཉན་ཐོས་
-ཉནོས་
-ཉི་ཤུ་
-ཉིུ་
-ཉིན་གུང་
-ཉིུང་
-ཉིན་ནག་
-ཉིནག་
-ཉིན་ཚད་
-ཉིན༹ད་
-ཉིན་མཚན་
-ཉི༹ན་
-ཉེར་གཅིག་
-ཉྲེ་གཅིག་
-ཉོན་མོངས་
-ཉོནོངས་
-མཉན་ཡོད་
-མཉོད་
-མཉམ་ཉིད་
-མཉིཾད་
-མཉམ་བཞག་
-མཉཾག་
-སྙིང་རྗེ་
-སྙིངེ་
-བསྙེན་བཀུར་
-བསྙུར་
-ཏིང་འཛིན་
-ཏིངི༹ན་
-གཏི་མུག་
-གཏིུག་
-གཏུན་ཤིང་
-་གཏུནིང་
-གཏུམ་མོ་
-གཏུམོ་
-བཏང་སྙོམས་
-བཏངོཾས་
-རྟག་ཏུ་
-རྟགྟུ་
-སྟག་སྨྱོས་
-སྟྱོས་
-སྟོབས་རྒྱས་
-སྟོབྱས་
-བསྟན་འཛིན་
-བསྟི༹ན་
-ཐམ་པ་
-ཐཾ་པ་
-ཐམས་ཅད་
-ཐཾད་
-ཐུགས་རྗེ་
-ཐུཊེ་
-ཐུགས་བརྩེ་
-ཐེུ༹ཊ་
-ཐུན་མོང་
-ཐུནོང་
-ཐུན་བཞི་
-ཐིུན་
-ཐེག་ཆེན་
-ཐེགེན་
-མཐའ་འཁོབ་
-མཐོབ་
-མཐའ་དག་
-མཐྡག་
-མཐར་ཕྱིན་
-མཐྱིན་
-མཐུན་མོང་
-མཐོུང་
-མཐེ་བོང་
-མཐོེང་
-མཐོ་རིས་
-མཐོིས་
-དུར་ཁྲོད་
-དུརྲོད་
-དུས་དབྱིགས་
-དུསྱིགས་
-དུས་སུ་
-དུསུ་
-དེ་བཞིན་གཤེགས་པ་
-དེནིཊེ་པ་
-དྲག་པོ་
-དྲགོ་
-དྲག་ཤོས་
-དྲགོས་
-དྲང་སྲོང་
-དྲོང་
-དྲུང་དུ་
-དྲུངྡུ་
-དྲུང་ཡིག་
-དྲིུག་
-གདུང་རྟེན་
-གདེུན་
-གདུང་འཛིན་
-གདིུ༹ན་
-གདུབ་བུ་
-གདུབུ་
-བདུག་སྤོས་
-བདོུས་
-བདུད་རྒྱལ་
-བདུདྱལ་
-བདུད་ཉི་
-བདུདྙི་
-བདུད་རྩི་
-བདུདི༹་
-བདེ་ཆེན་
-བདེནེ་
-བདེ་གཤེགས་
-བདཻགས་
-འདུ་བྱེད་
-འདེུད་
-རྡོ་རྗེ་
-རྡོེ་
-སྡིག་སྲིན་
-སྡིན་
-སྡིགས་མཛུབ་
-སྡིུབ་
-སྡུག་བསྔལ་
-སྡུགལ་
-ནབས་སོ་
-ནབསོ་
-ནམ་མཁའ་
-ནམཁའ་
-ནམ་གྲུ་
-ནམྲུ་
-ནུབ་ཕྱོགས་
-ནོུགས་
-ནོར་བུ་
-ནོུར་
-གནམ་སྦྱོར་
-གནྱོཾར་
-གནས་སྐབས་
-གནསྐབས་
-རྣམ་གྲངས་
-རྣངཾས་
-རྣམ་ཤེས་
-རྣཾསེ་
-རྣམས་
-རྣཾས་
-རྣལ་འབྱོར་
-རྣལྱོར་
-སྣ་ཚོགས་
-སྣོ༹གས་
-པི་ལིང་
-པླིང་
-དཔག་མེད་
-དཔགེད་
-དཔལ་ལྡན་
-དཔལྡན་
-དཔལ་བེའུ་
-དཔལེ་
-དཔལ་འབྱོར་
-དཔལྱོར་
-དཔུང་ཚོགས་
-དཔོུགས་
-དཔེ་བྱད་
-དཔྱེད་
-སྤྱན་རས་གཟིགས་
-སྤྱས་གཟིགས་
-སྤྲོས་བྲལ་
-སྤྲོལ་
-ཕན་གནོད་
-ཕནོད་
-ཕུན་ཚོགས་
-ཕུགས་
-ཕོ་ཉ་
-ཕྙོ་
-ཕོ་རོལ་
-ཕརོལ་
-ཕྱག་འཚལ་ལོ་
-ཕྱ༹ལོ་
-ཕྲག་དོག་
-ཕྲོག་
-ཕྲིན་ལས་
-ཕྲིས་
-འཕེལ་ཉི་
-འཕེལྙི་
-འཕྲིན་ལས་
-ཕྲིས་
-བར་ཆད་
-བརད་
-བུ་མོ་
-བོུ་
-བུད་མེད་
-བེུད་
-བུད་ཤིང་
-བིུང་
-བོང་བུ་
-བོུང་
-བྱ་ཚོགས་
-བྱོ༹གས་
-བྱ་རོག་
-བྱོག་
-བྱང་ཆུབ་
-བྱུཾབ་
-བྱང་ཕྱོགས་
-བྱོགས་
-བྱི་བཞིན་
-བྱིནི་
-བྱོལ་སོང་
-བྱོང་
-བྲམ་ཟེ་
-བྲེམ་
-བླུན་པོ་
-བློུན་
-བློ་གྲོས་
-བློས་
-བློན་པོ་
-བློོན་
-དབང་པོ་
-དབངོ་
-དབང་ཕྱུག་
-དབྱུག་
-དབུ་ཐོད་
-དབོུད་
-དབུགས་ཐོབ་
-དབོུབས་
-དབྱེར་མེད་
-དབྱེརེད་
-འབྲས་བུ་
-འབྲུས་
-སྦྱོར་ཉི་
-སྦྱོརྙི་
-སྦྲང་རྩི་
-སྦྲིང༹་
-མ་རིག་
-མྲིག་
-མི་འཕྲོད་ཉི་
-མི་འཕྲོདྙི་
-མིག་དམར་
-མིར་
-མིང་གཟུགས་
-མིངུགས་
-མུ་གེ་
-མེུ་
-མུ་སྙེགས་
-མེུགས་
-མུ་ཏིག་
-མིུག་
-མུ་སྟེགས་
-མེུགས་
-མུ་མེན་
-མེུན་
-མེ་ཏོག་
-མྟོེག་
-མེ་ལོང་
-མོེང་
-མོན་གྲུ་
-མོནྲུ་
-མོན་དྲེ་
-མོནྲེ་
-མྱ་ངན་
-མྱན་
-དམག་དཔུང་
-དམུང་
-དམག་དཔོན་
-དམོན་
-སྨིན་དྲུག་
-སྨིནྲུག་
-ཙན་དན་
-ཙྡན་
-གཙུག་ཏོར་
-གཙོུར་
-རྩ་བཏོན་
-རྩོན་
-བརྩོན་འགྲུས་
-བརྩུས་
-ཚུལ་ཁྲིམས་
-ཚུལྲིམས་
-ཚུལ་ལྡན་
-ཚུལྡན་
-ཚེ་ལྡན་
-ཚྡེན་
-མཚན་ཉིད་
-མཚིད་
-མཚན་ཚད་
-མཚན༹ད་
-མཚམས་ཞུས་
-མཚྮུཾས་
-རྫུ་འཕྲུལ་
-རྫྲུལ་
-རྫུས་སྐྱེས་
-རྫེུས་
-རྫེ་བཙུན་
-རྫེུན་
-ཞུ་གསོལ་
-ཞོུལ་
-གཞལ་སྒང་
-གཞལྒང་
-གཞུ་ཐོག་
-གཞོུག་
-གཞུ་འདོམས་
-གཞོུམས་
-གཞོན་ནུ་
-གཞོནུ་
-གཟུ་བོ་
-གཟོུ་
-གཟུ་ཤིང་
-གཟིུང་
-གཟུག་གིན་འདུག་
-གཟུགིན་འདུག་
-གཟུག་ཟེར་
-གཟེུར་
-གཟུག་གཟེར་
-གཟེུར་
-གཟུགས་སྐུ་
-གཟུགསྐུ་
-གཟུགས་སྡུག་
-གཟུགསྡུག་
-གཟུགས་མེད་
-གཟེུད་
-འོད་དཀར་
-འོདཀར་
-འོད་ཟེར་
-འོེར་
-ཡན་ལག་
-ཡནག་
-ཡི་གེ་
-ཡིེ་
-ཡིན་ནམ་
-ཡིནམ་
-ཡེ་ཤེས་
-ཡེེས་
-ཡོན་ཏན་
-ཡྟོན་
-རབ་བྱུང་
-རབྱུང་
-རལ་གྲི་
-རལྲི་
-རིན་ཆེན་
-རིནེ་
-རིན་པོ་ཆེ་
-རིནོེ་
-རོང་ཡུལ་
-རོུལ་
-ལང་འཚོ་
-ལངོ༹་
-ལས་བཟང་
-ལསང་
-ལེགས་སྦྱར་
-ལེགསྦྱར་
-ལོངས་སྐུ་
-ལོངསྐུ་
-ལོངས་སྤྱོད་
-ལོངསྤྱོད་
-ཤ་འཁོན་
-ཤྑོན་
-ཤིན་ཏུ་
-ཤིནྟུ་
-ཤེས་བྱ་
-ཤྱེས་
-ཤེས་རབ་
-ཤེབ་
-ས་བོན་
-སོན་
-སངས་རྒྱས་
-སངྱས་
-སེང་གེ་
-སེངྒེ་
-སེམས་
-སྶེ་
-སེམས་ཅན་
-སེཾན་
-སེམས་དཔའ་
-སེཾདའ་
-སོ་སོ་བ་
-སོོབ་
-སོ་སོར་
-སོོར་
-སོགས་
-སོཊ་
-སོམས་ཤིག་
-སོསཾ་ཤིག་
-སྲེག་སྦྱོར་
-སྲེགྱོར་
-སྲེག་ཚེས་
-སྲོེས་
-སློབ་འདོད་
-སློོད་
-སློབ་དཔོན་
-སློོན་
-གསུང་རབ་
-གསུབ་
-བསོད་སྙོམས་
-བསྙོཾདས་
-བསོད་ནམས་
-བསོདཾས་
-ལྷ་ཚོགས་
-ལྷོ༹གས་
-ལྷ་མཚམས་
-ལྷ༹ཾས་
-ལྷག་
-ལྷྒ་
-ལྷན་རྒྱས་
-ལྷྱས་
-ལྷན་ཅིག་
-ལྷིག་
-ལྷན་གཅིག་
-ལྷིག་
-ལྷན་ཚོགས་
-ལྷནོ༹ཊ་
-ལྷུན་གྲུབ་
-ལྷུནྲུབ་
-ལྷོ་ཕྱོགས་
-ལྷྱོགས་
-ཨོ་རྒྱན་
-ཨྱོན་
diff --git a/test/shaping/texts/in-tree/shaper-use/script-batak/misc.txt b/test/shaping/texts/in-tree/shaper-use/script-batak/misc.txt
deleted file mode 100644
index c8ae04b..0000000
--- a/test/shaping/texts/in-tree/shaper-use/script-batak/misc.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-ᯂᯩ
-ᯄ᯦ᯩ
-ᯇᯪᯰ
-ᯓᯩᯰ
-ᯄᯮ
-ᯃᯮ
-ᯎᯮ
-ᯞᯮ
-ᯖᯪᯇ᯲
diff --git a/test/shaping/texts/in-tree/shaper-use/script-buginese/misc.txt b/test/shaping/texts/in-tree/shaper-use/script-buginese/misc.txt
deleted file mode 100644
index fe1b76d..0000000
--- a/test/shaping/texts/in-tree/shaper-use/script-buginese/misc.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-ᨒᨚᨈᨑ
-ᨔᨑ
-ᨅᨔ ᨈᨚ ᨅᨙᨀ
-ᨕᨒᨚ ᨆᨒᨗᨕᨘ ᨅᨛᨈᨘᨕᨊ
-ᨕᨗᨉᨚ ᨔᨘᨑᨛ
-ᨕᨗᨊ ᨔᨘᨑᨛ
-ᨕᨊ ᨔᨘᨑᨛ
-
-ᨊᨀᨚ ᨕᨛᨃ ᨈᨕᨘᨄᨔᨒ᨞ ᨕᨍ ᨆᨘᨄᨈᨒᨒᨚᨓᨗ ᨄᨌᨒᨆᨘ ᨑᨗᨈᨚᨄᨔᨒᨕᨙ᨞
-ᨄᨔᨗᨈᨘᨍᨘᨓᨗᨆᨘᨈᨚᨓᨗᨔ ᨕᨔᨒᨊ ᨄᨌᨒᨆᨘ᨞ ᨕᨄ ᨕᨗᨀᨚᨊᨈᨘ ᨊᨁᨗᨒᨗ ᨉᨙᨓᨈᨕᨙ᨞
-ᨊᨀᨚ ᨅᨕᨗᨌᨘᨆᨘᨄᨗ ᨕᨔᨒᨊ ᨈᨕᨘᨓᨙ᨞ ᨆᨘᨄᨙᨑᨍᨕᨗᨔ ᨄᨉᨈᨚᨓᨗ᨞
-ᨊᨀᨚ ᨄᨔᨒᨕᨗ ᨈᨕᨘᨓᨙ᨞ ᨕᨍ ᨈᨗᨆᨘᨌᨒᨕᨗ ᨑᨗᨔᨗᨈᨗᨊᨍᨊᨕᨙᨈᨚᨔ ᨕᨔᨒᨊ᨞
-
-ᨕᨛᨛᨃ ᨕᨛᨃ ᨄ ᨙᨑ᨞ ᨕᨛᨃ ᨙᨔᨕᨘᨓ ᨓᨛᨈᨘ᨞
-ᨕᨛᨃ ᨙᨔᨕᨘᨓ ᨕᨑᨘ ᨆᨀᨘᨋᨕᨗ ᨑᨗ ᨒᨘᨓᨘ᨞ ᨆᨔᨒ ᨕᨘᨒᨗ᨞
-
-ᨄᨘᨑᨊᨗᨀᨚ ᨆᨙᨋ?
-ᨉᨙᨄ
-
-ᨆᨙᨒᨚ ᨀ ᨌᨛᨙᨆ
-ᨔᨙᨉᨗ
-ᨉᨘᨓ
-ᨈᨛᨒᨘ
-ᨕᨛᨄ
-ᨒᨗᨆ
-ᨕᨛᨊᨛ
-ᨄᨗᨈᨘ
-ᨕᨑᨘᨓ
-ᨕᨙᨔᨑ
-ᨔᨄᨘᨒᨚ
-ᨉᨘᨓᨄᨘᨒᨚ
-ᨈᨛᨒᨘᨄᨘᨒᨚ
-ᨄᨈᨄᨘᨒᨚ
-ᨒᨗᨆᨄᨘᨒᨚ
-ᨕᨛᨊᨛᨄᨘᨒᨚᨊ
-ᨄᨗᨈᨘᨄᨘᨒᨚ
-ᨕᨑᨘᨓᨄᨘᨒᨚᨊ
-ᨕᨙᨔᨑᨄᨘᨒᨚᨊ
-ᨔᨗᨑᨈᨘ
-ᨔᨗᨔᨛᨅᨘ
-ᨔᨗᨒᨔ
-ᨔᨗᨀᨚᨈᨗ
-
-ᨅᨔ ᨕᨘᨁᨗ
-
-ᨅᨔ ᨆᨀᨔᨑ
-ᨅᨒ
-ᨅᨚᨒᨚ
-ᨅᨅ
-ᨌᨗᨄᨘᨑᨘ
-ᨉᨚᨕᨙ
-ᨕᨗᨐᨚ
-ᨒᨚᨄᨚ
-ᨔᨒᨚ
-ᨈ ᨅᨙᨙ
-ᨈᨙᨊ
-ᨀᨑᨕᨙ
-ᨕᨄ ᨀᨑᨙᨅ?
-ᨒᨀᨙᨀᨚ ᨆᨕᨙ?
-ᨅᨒ
-ᨅᨚᨈᨚ
-ᨑᨈᨔ
-ᨅᨈᨒ
-ᨅᨗᨒ
-ᨁᨙᨒᨙ ᨁᨙᨒᨙ
-ᨀᨚᨀᨚ
-ᨍᨑ
-ᨅᨙᨅᨙ
-ᨆᨚᨈᨙᨑᨙ
-ᨂᨑᨙ
diff --git a/test/shaping/texts/in-tree/shaper-use/script-kaithi/misc.txt b/test/shaping/texts/in-tree/shaper-use/script-kaithi/misc.txt
deleted file mode 100644
index 5503298..0000000
--- a/test/shaping/texts/in-tree/shaper-use/script-kaithi/misc.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-𑂍 𑂎 𑂍𑂹𑂎 𑂍𑂹𑂎𑂱 𑂍𑂹𑂍𑂹𑂎𑂱 𑂍𑂹𑂎𑂹𑂎𑂱 𑂍𑂱 𑂍𑂹𑂍𑂹𑂎𑂱 𑂍𑂹𑂎𑂹𑂎𑂱𑂁 𑂍𑂹𑂎𑂹𑂎𑂱𑂀 𑂎𑂱𑂁
-𑂩𑂍 𑂩𑂹𑂍 𑂩𑂹𑂞 𑂩𑂹𑂍𑂹𑂍 𑂩𑂹𑂍
-𑂩𑂹𑂍𑂵 𑂩𑂹𑂍𑂵
-𑂩𑂍 𑂩𑂹𑂍 𑂩𑂹𑂞 𑂩𑂹𑂍𑂹𑂍 𑂩𑂹𑂍
-𑂩𑂹𑂍𑂵 𑂩𑂹𑂍𑂵
-𑂩𑂍 𑂩𑂹𑂍𑂱 𑂩𑂹𑂍𑂹𑂍𑂱 𑂩𑂹𑂍𑂹𑂍𑂵 𑂩𑂹𑂔𑂹𑂍𑂹𑂍𑂱 𑂩𑂹𑂞
diff --git a/test/shaping/texts/in-tree/shaper-use/script-kharoshti/misc.txt b/test/shaping/texts/in-tree/shaper-use/script-kharoshti/misc.txt
deleted file mode 100644
index 5a563c1..0000000
--- a/test/shaping/texts/in-tree/shaper-use/script-kharoshti/misc.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-𐨤𐨪𐨌𐨪𐨿𐨗𐨸𐨅𐨌𐨏
-𐨀𐨁
-𐨐𐨁
-𐨠𐨁
-𐨀𐨂
-𐨱𐨂
-𐨨𐨂
-𐨀𐨃
-𐨨𐨃
-𐨀𐨅
-𐨐𐨅
-𐨠𐨅
-𐨡𐨅
-𐨀𐨆
-𐨤𐨆
-𐨨𐨌
-𐨯𐨍
-𐨀𐨎
-𐨐𐨏
-𐨗𐨸
-𐨒𐨹
-𐨨𐨺
-𐨢𐨁𐨐𐨿
-𐨐𐨿𐨮
-𐨨𐨿𐨪
-𐨬𐨿𐨱
-𐨯𐨿𐨟
-𐨯𐨿𐨩
-𐨪𐨿𐨟
-𐨟𐨿𐨪
-𐨫𐨿𐨤
-𐨤𐨿𐨫
-𐨐𐨿𐨫
-𐨟𐨿𐨬
-𐨐𐨿𐨟
-𐨑𐨿𐨐𐨿𐨮
diff --git a/util/Makefile.am b/util/Makefile.am
index 2543a60..3f23bab 100644
--- a/util/Makefile.am
+++ b/util/Makefile.am
@@ -1,12 +1,11 @@
# Process this file with automake to produce Makefile.in
+NULL =
EXTRA_DIST =
CLEANFILES =
DISTCLEANFILES =
MAINTAINERCLEANFILES =
-include Makefile.sources
-
# Convenience targets:
lib:
@$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
@@ -32,7 +31,21 @@ if HAVE_GLIB
if HAVE_FREETYPE
if HAVE_CAIRO_FT
-hb_view_SOURCES = $(HB_VIEW_sources)
+hb_view_SOURCES = \
+ hb-view.cc \
+ options.cc \
+ options.hh \
+ main-font-text.hh \
+ shape-consumer.hh \
+ ansi-print.cc \
+ ansi-print.hh \
+ helper-cairo.cc \
+ helper-cairo.hh \
+ helper-cairo-ansi.cc \
+ helper-cairo-ansi.hh \
+ view-cairo.cc \
+ view-cairo.hh \
+ $(NULL)
hb_view_LDADD = \
$(LDADD) \
$(CAIRO_LIBS) \
@@ -42,29 +55,25 @@ bin_PROGRAMS += hb-view
endif # HAVE_CAIRO_FT
endif # HAVE_FREETYPE
-hb_shape_SOURCES = $(HB_SHAPE_sources)
+hb_shape_SOURCES = \
+ hb-shape.cc \
+ options.cc \
+ options.hh \
+ main-font-text.hh \
+ shape-consumer.hh \
+ $(NULL)
bin_PROGRAMS += hb-shape
if HAVE_OT
-hb_ot_shape_closure_SOURCES = $(HB_OT_SHAPE_CLOSURE_sources)
+hb_ot_shape_closure_SOURCES = \
+ hb-ot-shape-closure.cc \
+ options.cc \
+ options.hh \
+ main-font-text.hh \
+ $(NULL)
bin_PROGRAMS += hb-ot-shape-closure
endif # HAVE_OT
endif # HAVE_GLIB
-#if HAVE_OT
-#if HAVE_FONTCONFIG
-#hb_fc_list_SOURCES = \
-# hb-fc.cc \
-# hb-fc.h \
-# hb-fc-list.c \
-# $(NULL)
-#hb_fc_list_LDADD = \
-# $(LDADD) \
-# $(FONTCONFIG_LIBS) \
-# $(NULL)
-#bin_PROGRAMS += hb-fc-list
-#endif # HAVE_FONTCONFIG
-#endif # HAVE_OT
-
-include $(top_srcdir)/git.mk
diff --git a/util/Makefile.in b/util/Makefile.in
index f6fe331..6fecdd0 100644
--- a/util/Makefile.in
+++ b/util/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -80,13 +80,13 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.sources $(srcdir)/Makefile.in \
- $(srcdir)/Makefile.am $(top_srcdir)/depcomp
bin_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3)
@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@am__append_1 = hb-view
@HAVE_GLIB_TRUE@am__append_2 = hb-shape
@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@am__append_3 = hb-ot-shape-closure
subdir = util
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
$(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \
@@ -108,10 +108,10 @@ PROGRAMS = $(bin_PROGRAMS)
am__hb_ot_shape_closure_SOURCES_DIST = hb-ot-shape-closure.cc \
options.cc options.hh main-font-text.hh
am__objects_1 =
-am__objects_2 = hb-ot-shape-closure.$(OBJEXT) options.$(OBJEXT) \
- $(am__objects_1)
@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@am_hb_ot_shape_closure_OBJECTS = \
-@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ $(am__objects_2)
+@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ hb-ot-shape-closure.$(OBJEXT) \
+@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ options.$(OBJEXT) \
+@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ $(am__objects_1)
hb_ot_shape_closure_OBJECTS = $(am_hb_ot_shape_closure_OBJECTS)
hb_ot_shape_closure_LDADD = $(LDADD)
am__DEPENDENCIES_1 =
@@ -124,8 +124,8 @@ am__v_lt_0 = --silent
am__v_lt_1 =
am__hb_shape_SOURCES_DIST = hb-shape.cc options.cc options.hh \
main-font-text.hh shape-consumer.hh
-am__objects_3 = hb-shape.$(OBJEXT) options.$(OBJEXT) $(am__objects_1)
-@HAVE_GLIB_TRUE@am_hb_shape_OBJECTS = $(am__objects_3)
+@HAVE_GLIB_TRUE@am_hb_shape_OBJECTS = hb-shape.$(OBJEXT) \
+@HAVE_GLIB_TRUE@ options.$(OBJEXT) $(am__objects_1)
hb_shape_OBJECTS = $(am_hb_shape_OBJECTS)
hb_shape_LDADD = $(LDADD)
hb_shape_DEPENDENCIES = $(top_builddir)/src/libharfbuzz.la \
@@ -136,11 +136,13 @@ am__hb_view_SOURCES_DIST = hb-view.cc options.cc options.hh \
ansi-print.hh helper-cairo.cc helper-cairo.hh \
helper-cairo-ansi.cc helper-cairo-ansi.hh view-cairo.cc \
view-cairo.hh
-am__objects_4 = hb-view.$(OBJEXT) options.$(OBJEXT) \
- ansi-print.$(OBJEXT) helper-cairo.$(OBJEXT) \
- helper-cairo-ansi.$(OBJEXT) view-cairo.$(OBJEXT) \
- $(am__objects_1)
-@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@am_hb_view_OBJECTS = $(am__objects_4)
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@am_hb_view_OBJECTS = hb-view.$(OBJEXT) \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ options.$(OBJEXT) \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ ansi-print.$(OBJEXT) \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ helper-cairo.$(OBJEXT) \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ helper-cairo-ansi.$(OBJEXT) \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ view-cairo.$(OBJEXT) \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ $(am__objects_1)
hb_view_OBJECTS = $(am_hb_view_OBJECTS)
am__DEPENDENCIES_2 = $(top_builddir)/src/libharfbuzz.la \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
@@ -256,8 +258,6 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
-DIRECTWRITE_CXXFLAGS = @DIRECTWRITE_CXXFLAGS@
-DIRECTWRITE_LIBS = @DIRECTWRITE_LIBS@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
@@ -267,20 +267,15 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
-FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
-FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
-FREETYPE_DEPS = @FREETYPE_DEPS@
FREETYPE_LIBS = @FREETYPE_LIBS@
GIT = @GIT@
GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_DEPS = @GLIB_DEPS@
GLIB_LIBS = @GLIB_LIBS@
GLIB_MKENUMS = @GLIB_MKENUMS@
GOBJECT_CFLAGS = @GOBJECT_CFLAGS@
GOBJECT_LIBS = @GOBJECT_LIBS@
GRAPHITE2_CFLAGS = @GRAPHITE2_CFLAGS@
-GRAPHITE2_DEPS = @GRAPHITE2_DEPS@
GRAPHITE2_LIBS = @GRAPHITE2_LIBS@
GREP = @GREP@
GTKDOC_CHECK = @GTKDOC_CHECK@
@@ -403,42 +398,11 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+NULL =
EXTRA_DIST =
CLEANFILES =
DISTCLEANFILES =
MAINTAINERCLEANFILES =
-NULL =
-HB_VIEW_sources = \
- hb-view.cc \
- options.cc \
- options.hh \
- main-font-text.hh \
- shape-consumer.hh \
- ansi-print.cc \
- ansi-print.hh \
- helper-cairo.cc \
- helper-cairo.hh \
- helper-cairo-ansi.cc \
- helper-cairo-ansi.hh \
- view-cairo.cc \
- view-cairo.hh \
- $(NULL)
-
-HB_SHAPE_sources = \
- hb-shape.cc \
- options.cc \
- options.hh \
- main-font-text.hh \
- shape-consumer.hh \
- $(NULL)
-
-HB_OT_SHAPE_CLOSURE_sources = \
- hb-ot-shape-closure.cc \
- options.cc \
- options.hh \
- main-font-text.hh \
- $(NULL)
-
AM_CPPFLAGS = \
-DHB_DISABLE_DEPRECATED \
-I$(top_srcdir)/src/ \
@@ -455,20 +419,48 @@ LDADD = \
$(FREETYPE_LIBS) \
$(NULL)
-@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@hb_view_SOURCES = $(HB_VIEW_sources)
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@hb_view_SOURCES = \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ hb-view.cc \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ options.cc \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ options.hh \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ main-font-text.hh \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ shape-consumer.hh \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ ansi-print.cc \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ ansi-print.hh \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ helper-cairo.cc \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ helper-cairo.hh \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ helper-cairo-ansi.cc \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ helper-cairo-ansi.hh \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ view-cairo.cc \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ view-cairo.hh \
+@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ $(NULL)
+
@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@hb_view_LDADD = \
@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ $(LDADD) \
@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ $(CAIRO_LIBS) \
@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ $(CAIRO_FT_LIBS) \
@HAVE_CAIRO_FT_TRUE@@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ $(NULL)
-@HAVE_GLIB_TRUE@hb_shape_SOURCES = $(HB_SHAPE_sources)
-@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@hb_ot_shape_closure_SOURCES = $(HB_OT_SHAPE_CLOSURE_sources)
+@HAVE_GLIB_TRUE@hb_shape_SOURCES = \
+@HAVE_GLIB_TRUE@ hb-shape.cc \
+@HAVE_GLIB_TRUE@ options.cc \
+@HAVE_GLIB_TRUE@ options.hh \
+@HAVE_GLIB_TRUE@ main-font-text.hh \
+@HAVE_GLIB_TRUE@ shape-consumer.hh \
+@HAVE_GLIB_TRUE@ $(NULL)
+
+@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@hb_ot_shape_closure_SOURCES = \
+@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ hb-ot-shape-closure.cc \
+@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ options.cc \
+@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ options.hh \
+@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ main-font-text.hh \
+@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ $(NULL)
+
all: all-am
.SUFFIXES:
.SUFFIXES: .cc .lo .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.sources $(am__configure_deps)
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -489,7 +481,6 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(srcdir)/Makefile.sources:
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -833,21 +824,6 @@ uninstall-am: uninstall-binPROGRAMS
lib:
@$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
-#if HAVE_OT
-#if HAVE_FONTCONFIG
-#hb_fc_list_SOURCES = \
-# hb-fc.cc \
-# hb-fc.h \
-# hb-fc-list.c \
-# $(NULL)
-#hb_fc_list_LDADD = \
-# $(LDADD) \
-# $(FONTCONFIG_LIBS) \
-# $(NULL)
-#bin_PROGRAMS += hb-fc-list
-#endif # HAVE_FONTCONFIG
-#endif # HAVE_OT
-
-include $(top_srcdir)/git.mk
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/util/Makefile.sources b/util/Makefile.sources
deleted file mode 100644
index 368fdb0..0000000
--- a/util/Makefile.sources
+++ /dev/null
@@ -1,32 +0,0 @@
-NULL =
-
-HB_VIEW_sources = \
- hb-view.cc \
- options.cc \
- options.hh \
- main-font-text.hh \
- shape-consumer.hh \
- ansi-print.cc \
- ansi-print.hh \
- helper-cairo.cc \
- helper-cairo.hh \
- helper-cairo-ansi.cc \
- helper-cairo-ansi.hh \
- view-cairo.cc \
- view-cairo.hh \
- $(NULL)
-
-HB_SHAPE_sources = \
- hb-shape.cc \
- options.cc \
- options.hh \
- main-font-text.hh \
- shape-consumer.hh \
- $(NULL)
-
-HB_OT_SHAPE_CLOSURE_sources = \
- hb-ot-shape-closure.cc \
- options.cc \
- options.hh \
- main-font-text.hh \
- $(NULL)
diff --git a/util/ansi-print.cc b/util/ansi-print.cc
index e0ce7b3..0fc3719 100644
--- a/util/ansi-print.cc
+++ b/util/ansi-print.cc
@@ -41,7 +41,7 @@
#include <unistd.h> /* for isatty() */
#endif
-#if defined (_MSC_VER) && (_MSC_VER < 1800)
+#ifdef _MSC_VER
static inline long int
lround (double x)
{
@@ -52,8 +52,6 @@ lround (double x)
}
#endif
-#define ESC_E (char)27
-
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#define CELL_W 8
@@ -224,12 +222,11 @@ struct biimage_t
};
const char *
-block_best (const biimage_t &bi, bool *inverse)
+block_best (const biimage_t &bi, unsigned int *score, bool *inverse)
{
assert (bi.width <= CELL_W);
assert (bi.height <= CELL_H);
- unsigned int score = (unsigned int) -1;
unsigned int row_sum[CELL_H] = {0};
unsigned int col_sum[CELL_W] = {0};
unsigned int row_sum_i[CELL_H] = {0};
@@ -265,14 +262,14 @@ block_best (const biimage_t &bi, bool *inverse)
const char *best_c = " ";
/* Maybe empty is better! */
- if (total < score) {
- score = total;
+ if (total < *score) {
+ *score = total;
*inverse = false;
best_c = " ";
}
/* Maybe full is better! */
- if (total_i < score) {
- score = total_i;
+ if (total_i < *score) {
+ *score = total_i;
*inverse = true;
best_c = " ";
}
@@ -298,11 +295,11 @@ block_best (const biimage_t &bi, bool *inverse)
best_inv = true;
}
}
- if (best_s < score) {
+ if (best_s < *score) {
static const char *lower[7] = {"▁", "▂", "▃", "▄", "▅", "▆", "▇"};
- unsigned int which = lround ((double) ((best_i + 1) * 8) / bi.height);
+ unsigned int which = lround (((best_i + 1) * 8) / bi.height);
if (1 <= which && which <= 7) {
- score = best_s;
+ *score = best_s;
*inverse = best_inv;
best_c = lower[7 - which];
}
@@ -330,11 +327,11 @@ block_best (const biimage_t &bi, bool *inverse)
best_inv = false;
}
}
- if (best_s < score) {
+ if (best_s < *score) {
static const char *left [7] = {"▏", "▎", "▍", "▌", "▋", "▊", "▉"};
- unsigned int which = lround ((double) ((best_i + 1) * 8) / bi.width);
+ unsigned int which = lround (((best_i + 1) * 8) / bi.width);
if (1 <= which && which <= 7) {
- score = best_s;
+ *score = best_s;
*inverse = best_inv;
best_c = left[which - 1];
}
@@ -352,7 +349,7 @@ block_best (const biimage_t &bi, bool *inverse)
qs += quad_i[i][j];
} else
qs += quad[i][j];
- if (qs < score) {
+ if (qs < *score) {
const char *c = NULL;
bool inv = false;
switch (q) {
@@ -368,7 +365,7 @@ block_best (const biimage_t &bi, bool *inverse)
case 14: c = "▟"; inv = true; break;
}
if (c) {
- score = qs;
+ *score = qs;
*inverse = inv;
best_c = c;
}
@@ -397,23 +394,24 @@ ansi_print_image_rgb24 (const uint32_t *data,
bi.set (cell);
if (bi.unicolor) {
if (last_bg != bi.bg) {
- printf ("%c[%dm", ESC_E, 40 + bi.bg);
+ printf ("\e[%dm", 40 + bi.bg);
last_bg = bi.bg;
}
printf (" ");
} else {
/* Figure out the closest character to the biimage */
+ unsigned int score = (unsigned int) -1;
bool inverse = false;
- const char *c = block_best (bi, &inverse);
+ const char *c = block_best (bi, &score, &inverse);
if (inverse) {
if (last_bg != bi.fg || last_fg != bi.bg) {
- printf ("%c[%d;%dm", ESC_E, 30 + bi.bg, 40 + bi.fg);
+ printf ("\e[%d;%dm", 30 + bi.bg, 40 + bi.fg);
last_bg = bi.fg;
last_fg = bi.bg;
}
} else {
if (last_bg != bi.bg || last_fg != bi.fg) {
- printf ("%c[%d;%dm", ESC_E, 40 + bi.bg, 30 + bi.fg);
+ printf ("\e[%d;%dm", 40 + bi.bg, 30 + bi.fg);
last_bg = bi.bg;
last_fg = bi.fg;
}
@@ -421,7 +419,7 @@ ansi_print_image_rgb24 (const uint32_t *data,
printf ("%s", c);
}
}
- printf ("%c[0m\n", ESC_E); /* Reset */
+ printf ("\e[0m\n"); /* Reset */
last_bg = last_fg = -1;
}
}
diff --git a/util/hb-shape.cc b/util/hb-shape.cc
index 3bd2184..f38f387 100644
--- a/util/hb-shape.cc
+++ b/util/hb-shape.cc
@@ -70,8 +70,6 @@ struct output_buffer_t
flags |= HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS;
if (!format.show_positions)
flags |= HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS;
- if (format.show_extents)
- flags |= HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS;
format_flags = (hb_buffer_serialize_flags_t) flags;
}
void new_line (void)
diff --git a/util/helper-cairo.cc b/util/helper-cairo.cc
index 8f30eea..d576c3f 100644
--- a/util/helper-cairo.cc
+++ b/util/helper-cairo.cc
@@ -75,9 +75,7 @@ helper_cairo_create_scaled_font (const font_options_t *font_opts)
hb_font_t *font = hb_font_reference (font_opts->get_font ());
cairo_font_face_t *cairo_face;
- /* We cannot use the FT_Face from hb_font_t, as doing so will confuse hb_font_t because
- * cairo will reset the face size. As such, create new face... */
- FT_Face ft_face = NULL;//hb_ft_font_get_face (font);
+ FT_Face ft_face = hb_ft_font_get_face (font);
if (!ft_face)
{
if (!ft_library)
@@ -130,22 +128,6 @@ helper_cairo_create_scaled_font (const font_options_t *font_opts)
return scaled_font;
}
-bool
-helper_cairo_scaled_font_has_color (cairo_scaled_font_t *scaled_font)
-{
- bool ret = false;
-#ifdef FT_HAS_COLOR
- FT_Face ft_face = cairo_ft_scaled_font_lock_face (scaled_font);
- if (ft_face)
- {
- if (FT_HAS_COLOR (ft_face))
- ret = true;
- cairo_ft_scaled_font_unlock_face (scaled_font);
- }
-#endif
- return ret;
-}
-
struct finalize_closure_t {
void (*callback)(finalize_closure_t *);
@@ -313,8 +295,7 @@ const char *helper_cairo_supported_formats[] =
cairo_t *
helper_cairo_create_context (double w, double h,
view_options_t *view_opts,
- output_options_t *out_opts,
- cairo_content_t content)
+ output_options_t *out_opts)
{
cairo_surface_t *(*constructor) (cairo_write_func_t write_func,
void *closure,
@@ -343,47 +324,42 @@ helper_cairo_create_context (double w, double h,
}
if (0)
;
- else if (0 == g_ascii_strcasecmp (extension, "ansi"))
+ else if (0 == strcasecmp (extension, "ansi"))
constructor2 = _cairo_ansi_surface_create_for_stream;
#ifdef CAIRO_HAS_PNG_FUNCTIONS
- else if (0 == g_ascii_strcasecmp (extension, "png"))
+ else if (0 == strcasecmp (extension, "png"))
constructor2 = _cairo_png_surface_create_for_stream;
#endif
#ifdef CAIRO_HAS_SVG_SURFACE
- else if (0 == g_ascii_strcasecmp (extension, "svg"))
+ else if (0 == strcasecmp (extension, "svg"))
constructor = cairo_svg_surface_create_for_stream;
#endif
#ifdef CAIRO_HAS_PDF_SURFACE
- else if (0 == g_ascii_strcasecmp (extension, "pdf"))
+ else if (0 == strcasecmp (extension, "pdf"))
constructor = cairo_pdf_surface_create_for_stream;
#endif
#ifdef CAIRO_HAS_PS_SURFACE
- else if (0 == g_ascii_strcasecmp (extension, "ps"))
+ else if (0 == strcasecmp (extension, "ps"))
constructor = cairo_ps_surface_create_for_stream;
#ifdef HAS_EPS
- else if (0 == g_ascii_strcasecmp (extension, "eps"))
+ else if (0 == strcasecmp (extension, "eps"))
constructor = _cairo_eps_surface_create_for_stream;
#endif
#endif
unsigned int fr, fg, fb, fa, br, bg, bb, ba;
- const char *color;
br = bg = bb = 0; ba = 255;
- color = view_opts->back ? view_opts->back : DEFAULT_BACK;
- sscanf (color + (*color=='#'), "%2x%2x%2x%2x", &br, &bg, &bb, &ba);
+ sscanf (view_opts->back + (*view_opts->back=='#'), "%2x%2x%2x%2x", &br, &bg, &bb, &ba);
fr = fg = fb = 0; fa = 255;
- color = view_opts->fore ? view_opts->fore : DEFAULT_FORE;
- sscanf (color + (*color=='#'), "%2x%2x%2x%2x", &fr, &fg, &fb, &fa);
+ sscanf (view_opts->fore + (*view_opts->fore=='#'), "%2x%2x%2x%2x", &fr, &fg, &fb, &fa);
- if (content == CAIRO_CONTENT_ALPHA)
- {
- if (view_opts->annotate ||
- br != bg || bg != bb ||
- fr != fg || fg != fb)
- content = CAIRO_CONTENT_COLOR;
- }
- if (ba != 255)
+ cairo_content_t content;
+ if (!view_opts->annotate && ba == 255 && br == bg && bg == bb && fr == fg && fg == fb)
+ content = CAIRO_CONTENT_ALPHA;
+ else if (ba == 255)
+ content = CAIRO_CONTENT_COLOR;
+ else
content = CAIRO_CONTENT_COLOR_ALPHA;
cairo_surface_t *surface;
@@ -480,16 +456,16 @@ helper_cairo_line_from_buffer (helper_cairo_line_t *l,
for (i = 0; i < (int) l->num_glyphs; i++)
{
l->glyphs[i].index = hb_glyph[i].codepoint;
- l->glyphs[i].x = scalbn ((double) hb_position->x_offset + x, scale_bits);
- l->glyphs[i].y = scalbn ((double) -hb_position->y_offset + y, scale_bits);
+ l->glyphs[i].x = scalbn ( hb_position->x_offset + x, scale_bits);
+ l->glyphs[i].y = scalbn (-hb_position->y_offset + y, scale_bits);
x += hb_position->x_advance;
y += -hb_position->y_advance;
hb_position++;
}
l->glyphs[i].index = -1;
- l->glyphs[i].x = scalbn ((double) x, scale_bits);
- l->glyphs[i].y = scalbn ((double) y, scale_bits);
+ l->glyphs[i].x = scalbn (x, scale_bits);
+ l->glyphs[i].y = scalbn (y, scale_bits);
if (l->num_clusters) {
memset ((void *) l->clusters, 0, l->num_clusters * sizeof (l->clusters[0]));
diff --git a/util/helper-cairo.hh b/util/helper-cairo.hh
index 27b6eb3..ed55a45 100644
--- a/util/helper-cairo.hh
+++ b/util/helper-cairo.hh
@@ -35,16 +35,12 @@
cairo_scaled_font_t *
helper_cairo_create_scaled_font (const font_options_t *font_opts);
-bool
-helper_cairo_scaled_font_has_color (cairo_scaled_font_t *scaled_font);
-
extern const char *helper_cairo_supported_formats[];
cairo_t *
helper_cairo_create_context (double w, double h,
view_options_t *view_opts,
- output_options_t *out_opts,
- cairo_content_t content);
+ output_options_t *out_opts);
void
helper_cairo_destroy_context (cairo_t *cr);
diff --git a/util/main-font-text.hh b/util/main-font-text.hh
index 55de567..628cdf9 100644
--- a/util/main-font-text.hh
+++ b/util/main-font-text.hh
@@ -31,38 +31,6 @@
/* main() body for utilities taking font and processing text.*/
-static char *
-locale_to_utf8 (char *s)
-{
- char *t;
- GError *error = NULL;
-
- t = g_locale_to_utf8 (s, -1, NULL, NULL, &error);
- if (!t)
- {
- fail (true, "Failed converting text to UTF-8");
- }
-
- return t;
-}
-
-static hb_bool_t
-message_func (hb_buffer_t *buffer,
- hb_font_t *font,
- const char *message,
- void *user_data)
-{
- fprintf (stderr, "HB: %s\n", message);
- char buf[4096];
- hb_buffer_serialize_glyphs (buffer, 0, hb_buffer_get_length (buffer),
- buf, sizeof (buf), NULL,
- font,
- HB_BUFFER_SERIALIZE_FORMAT_TEXT,
- HB_BUFFER_SERIALIZE_FLAG_DEFAULT);
- fprintf (stderr, "HB: buffer [%s]\n", buf);
- return true;
-}
-
template <typename consumer_t, int default_font_size, int subpixel_bits>
struct main_font_text_t
{
@@ -78,20 +46,18 @@ struct main_font_text_t
options.parse (&argc, &argv);
argc--, argv++;
- if (argc && !font_opts.font_file) font_opts.font_file = locale_to_utf8 (argv[0]), argc--, argv++;
- if (argc && !input.text && !input.text_file) input.text = locale_to_utf8 (argv[0]), argc--, argv++;
+ if (argc && !font_opts.font_file) font_opts.font_file = argv[0], argc--, argv++;
+ if (argc && !input.text && !input.text_file) input.text = argv[0], argc--, argv++;
if (argc)
fail (true, "Too many arguments on the command line");
if (!font_opts.font_file)
options.usage ();
if (!input.text && !input.text_file)
- input.text_file = g_strdup ("-");
+ input.text_file = "-";
consumer.init (&font_opts);
hb_buffer_t *buffer = hb_buffer_create ();
- if (debug)
- hb_buffer_set_message_func (buffer, message_func, NULL, NULL);
unsigned int text_len;
const char *text;
while ((text = input.get_line (&text_len)))
diff --git a/util/options.cc b/util/options.cc
index bc699c1..7387a56 100644
--- a/util/options.cc
+++ b/util/options.cc
@@ -30,7 +30,7 @@
#include <hb-ft.h>
#endif
#ifdef HAVE_OT
-#include <hb-ot.h>
+#include <hb-ot-font.h>
#endif
struct supported_font_funcs_t {
@@ -174,7 +174,7 @@ parse_margin (const char *name G_GNUC_UNUSED,
{
view_options_t *view_opts = (view_options_t *) data;
view_options_t::margin_t &m = view_opts->margin;
- switch (sscanf (arg, "%lf%*[ ,]%lf%*[ ,]%lf%*[ ,]%lf", &m.t, &m.r, &m.b, &m.l)) {
+ switch (sscanf (arg, "%lf %lf %lf %lf", &m.t, &m.r, &m.b, &m.l)) {
case 1: m.r = m.t;
case 2: m.b = m.t;
case 3: m.l = m.r;
@@ -291,7 +291,6 @@ shape_options_t::add_options (option_parser_t *parser)
{"eot", 0, 0, G_OPTION_ARG_NONE, &this->eot, "Treat text as end-of-paragraph", NULL},
{"preserve-default-ignorables",0, 0, G_OPTION_ARG_NONE, &this->preserve_default_ignorables, "Preserve Default-Ignorable characters", NULL},
{"utf8-clusters", 0, 0, G_OPTION_ARG_NONE, &this->utf8_clusters, "Use UTF8 byte indices, not char indices", NULL},
- {"cluster-level", 0, 0, G_OPTION_ARG_INT, &this->cluster_level, "Cluster merging level (default: 0)", "0/1/2"},
{"normalize-glyphs",0, 0, G_OPTION_ARG_NONE, &this->normalize_glyphs, "Rearrange glyph clusters in nominal order", NULL},
{"num-iterations", 0, 0, G_OPTION_ARG_INT, &this->num_iterations, "Run shaper N times (default: 1)", "N"},
{NULL}
@@ -362,7 +361,7 @@ parse_font_size (const char *name G_GNUC_UNUSED,
font_opts->font_size_y = font_opts->font_size_x = FONT_SIZE_UPEM;
return true;
}
- switch (sscanf (arg, "%lf%*[ ,]%lf", &font_opts->font_size_x, &font_opts->font_size_y)) {
+ switch (sscanf (arg, "%lf %lf", &font_opts->font_size_x, &font_opts->font_size_y)) {
case 1: font_opts->font_size_y = font_opts->font_size_x;
case 2: return true;
default:
@@ -441,7 +440,7 @@ output_options_t::add_options (option_parser_t *parser)
const char *text;
if (NULL == supported_formats)
- text = "Set output serialization format";
+ text = "Set output format";
else
{
char *items = g_strjoinv ("/", const_cast<char **> (supported_formats));
@@ -458,8 +457,8 @@ output_options_t::add_options (option_parser_t *parser)
};
parser->add_group (entries,
"output",
- "Output destination & format options:",
- "Options controlling the destination and form of the output",
+ "Output options:",
+ "Options controlling the output",
this);
}
@@ -490,7 +489,7 @@ font_options_t::get_font (void) const
GString *gs = g_string_new (NULL);
char buf[BUFSIZ];
#if defined(_WIN32) || defined(__CYGWIN__)
- setmode (fileno (stdin), O_BINARY);
+ setmode (fileno (stdin), _O_BINARY);
#endif
while (!feof (stdin)) {
size_t ret = fread (buf, 1, sizeof (buf), stdin);
@@ -538,9 +537,6 @@ font_options_t::get_font (void) const
}
}
- if (debug)
- mm = HB_MEMORY_MODE_DUPLICATE;
-
blob = hb_blob_create (font_data, len, mm, user_data, destroy);
}
@@ -569,7 +565,7 @@ font_options_t::get_font (void) const
else
{
for (unsigned int i = 0; i < ARRAY_LENGTH (supported_font_funcs); i++)
- if (0 == g_ascii_strcasecmp (font_funcs, supported_font_funcs[i].name))
+ if (0 == strcasecmp (font_funcs, supported_font_funcs[i].name))
{
set_font_funcs = supported_font_funcs[i].func;
break;
@@ -601,26 +597,25 @@ const char *
text_options_t::get_line (unsigned int *len)
{
if (text) {
- if (!line) line = text;
- if (line_len == (unsigned int) -1)
- line_len = strlen (line);
+ if (text_len == (unsigned int) -1)
+ text_len = strlen (text);
- if (!line_len) {
+ if (!text_len) {
*len = 0;
return NULL;
}
- const char *ret = line;
- const char *p = (const char *) memchr (line, '\n', line_len);
+ const char *ret = text;
+ const char *p = (const char *) memchr (text, '\n', text_len);
unsigned int ret_len;
if (!p) {
- ret_len = line_len;
- line += ret_len;
- line_len = 0;
+ ret_len = text_len;
+ text += ret_len;
+ text_len = 0;
} else {
ret_len = p - ret;
- line += ret_len + 1;
- line_len -= ret_len + 1;
+ text += ret_len + 1;
+ text_len -= ret_len + 1;
}
*len = ret_len;
@@ -672,7 +667,7 @@ output_options_t::get_file_handle (void)
fp = fopen (output_file, "wb");
else {
#if defined(_WIN32) || defined(__CYGWIN__)
- setmode (fileno (stdout), O_BINARY);
+ setmode (fileno (stdout), _O_BINARY);
#endif
fp = stdout;
}
@@ -699,27 +694,19 @@ format_options_t::add_options (option_parser_t *parser)
{
GOptionEntry entries[] =
{
- {"show-text", 0, 0, G_OPTION_ARG_NONE, &this->show_text, "Prefix each line of output with its corresponding input text", NULL},
- {"show-unicode", 0, 0, G_OPTION_ARG_NONE, &this->show_unicode, "Prefix each line of output with its corresponding input codepoint(s)", NULL},
- {"show-line-num", 0, 0, G_OPTION_ARG_NONE, &this->show_line_num, "Prefix each line of output with its corresponding input line number", NULL},
- {"verbose", 0, G_OPTION_FLAG_NO_ARG,
- G_OPTION_ARG_CALLBACK, (gpointer) &parse_verbose, "Prefix each line of output with all of the above", NULL},
- {"no-glyph-names", 0, G_OPTION_FLAG_REVERSE,
- G_OPTION_ARG_NONE, &this->show_glyph_names, "Output glyph indices instead of names", NULL},
- {"no-positions", 0, G_OPTION_FLAG_REVERSE,
- G_OPTION_ARG_NONE, &this->show_positions, "Do not output glyph positions", NULL},
- {"no-clusters", 0, G_OPTION_FLAG_REVERSE,
- G_OPTION_ARG_NONE, &this->show_clusters, "Do not output cluster indices", NULL},
- {"show-extents", 0, 0, G_OPTION_ARG_NONE, &this->show_extents, "Output glyph extents", NULL},
+ {"no-glyph-names", 0, G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &this->show_glyph_names, "Use glyph indices instead of names", NULL},
+ {"no-positions", 0, G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &this->show_positions, "Do not show glyph positions", NULL},
+ {"no-clusters", 0, G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &this->show_clusters, "Do not show cluster mapping", NULL},
+ {"show-text", 0, 0, G_OPTION_ARG_NONE, &this->show_text, "Show input text", NULL},
+ {"show-unicode", 0, 0, G_OPTION_ARG_NONE, &this->show_unicode, "Show input Unicode codepoints", NULL},
+ {"show-line-num", 0, 0, G_OPTION_ARG_NONE, &this->show_line_num, "Show line numbers", NULL},
+ {"verbose", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK,(gpointer) &parse_verbose, "Show everything", NULL},
{NULL}
};
parser->add_group (entries,
- "output-syntax",
- "Output syntax:\n"
- " text: [<glyph name or index>=<glyph cluster index within input>@<horizontal displacement>,<vertical displacement>+<horizontal advance>,<vertical advance>|...]\n"
- " json: [{\"g\": <glyph name or index>, \"ax\": <horizontal advance>, \"ay\": <vertical advance>, \"dx\": <horizontal displacement>, \"dy\": <vertical displacement>, \"cl\": <glyph cluster index within input>}, ...]\n"
- "\nOutput syntax options:",
- "Options controlling the syntax of the output",
+ "format",
+ "Format options:",
+ "Options controlling the formatting of buffer contents",
this);
}
diff --git a/util/options.hh b/util/options.hh
index 919e4f8..8b9b10e 100644
--- a/util/options.hh
+++ b/util/options.hh
@@ -150,24 +150,19 @@ struct view_options_t : option_group_t
{
view_options_t (option_parser_t *parser) {
annotate = false;
- fore = NULL;
- back = NULL;
+ fore = DEFAULT_FORE;
+ back = DEFAULT_BACK;
line_space = 0;
margin.t = margin.r = margin.b = margin.l = DEFAULT_MARGIN;
add_options (parser);
}
- ~view_options_t (void)
- {
- g_free (fore);
- g_free (back);
- }
void add_options (option_parser_t *parser);
hb_bool_t annotate;
- char *fore;
- char *back;
+ const char *fore;
+ const char *back;
double line_space;
struct margin_t {
double t, r, b, l;
@@ -185,7 +180,6 @@ struct shape_options_t : option_group_t
num_features = 0;
shapers = NULL;
utf8_clusters = false;
- cluster_level = HB_BUFFER_CLUSTER_LEVEL_DEFAULT;
normalize_glyphs = false;
num_iterations = 1;
@@ -193,9 +187,6 @@ struct shape_options_t : option_group_t
}
~shape_options_t (void)
{
- g_free (direction);
- g_free (language);
- g_free (script);
free (features);
g_strfreev (shapers);
}
@@ -211,7 +202,6 @@ struct shape_options_t : option_group_t
(bot ? HB_BUFFER_FLAG_BOT : 0) |
(eot ? HB_BUFFER_FLAG_EOT : 0) |
(preserve_default_ignorables ? HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES : 0)));
- hb_buffer_set_cluster_level (buffer, cluster_level);
hb_buffer_guess_segment_properties (buffer);
}
@@ -262,9 +252,9 @@ struct shape_options_t : option_group_t
}
/* Buffer properties */
- char *direction;
- char *language;
- char *script;
+ const char *direction;
+ const char *language;
+ const char *script;
/* Buffer flags */
hb_bool_t bot;
@@ -275,7 +265,6 @@ struct shape_options_t : option_group_t
unsigned int num_features;
char **shapers;
hb_bool_t utf8_clusters;
- hb_buffer_cluster_level_t cluster_level;
hb_bool_t normalize_glyphs;
unsigned int num_iterations;
};
@@ -298,8 +287,6 @@ struct font_options_t : option_group_t
add_options (parser);
}
~font_options_t (void) {
- g_free (font_file);
- g_free (font_funcs);
hb_font_destroy (font);
}
@@ -307,13 +294,13 @@ struct font_options_t : option_group_t
hb_font_t *get_font (void) const;
- char *font_file;
+ const char *font_file;
int face_index;
int default_font_size;
unsigned int subpixel_bits;
mutable double font_size_x;
mutable double font_size_y;
- char *font_funcs;
+ const char *font_funcs;
private:
mutable hb_font_t *font;
@@ -331,16 +318,11 @@ struct text_options_t : option_group_t
fp = NULL;
gs = NULL;
- line = NULL;
- line_len = (unsigned int) -1;
+ text_len = (unsigned int) -1;
add_options (parser);
}
~text_options_t (void) {
- g_free (text_before);
- g_free (text_after);
- g_free (text);
- g_free (text_file);
if (gs)
g_string_free (gs, true);
if (fp)
@@ -354,21 +336,21 @@ struct text_options_t : option_group_t
g_set_error (error,
G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE,
"Only one of text and text-file can be set");
+
};
const char *get_line (unsigned int *len);
- char *text_before;
- char *text_after;
+ const char *text_before;
+ const char *text_after;
- char *text;
- char *text_file;
+ const char *text;
+ const char *text_file;
private:
FILE *fp;
GString *gs;
- char *line;
- unsigned int line_len;
+ unsigned int text_len;
};
struct output_options_t : option_group_t
@@ -385,8 +367,6 @@ struct output_options_t : option_group_t
add_options (parser);
}
~output_options_t (void) {
- g_free (output_file);
- g_free (output_format);
if (fp)
fclose (fp);
}
@@ -401,10 +381,7 @@ struct output_options_t : option_group_t
if (output_file && !output_format) {
output_format = strrchr (output_file, '.');
if (output_format)
- {
output_format++; /* skip the dot */
- output_format = strdup (output_format);
- }
}
if (output_file && 0 == strcmp (output_file, "-"))
@@ -413,8 +390,8 @@ struct output_options_t : option_group_t
FILE *get_file_handle (void);
- char *output_file;
- char *output_format;
+ const char *output_file;
+ const char *output_format;
const char **supported_formats;
bool explicit_output_format;
@@ -430,7 +407,6 @@ struct format_options_t : option_group_t
show_text = false;
show_unicode = false;
show_line_num = false;
- show_extents = false;
add_options (parser);
}
@@ -471,25 +447,7 @@ struct format_options_t : option_group_t
hb_bool_t show_text;
hb_bool_t show_unicode;
hb_bool_t show_line_num;
- hb_bool_t show_extents;
};
-/* fallback implementation for scalbn()/scalbnf() for pre-2013 MSVC */
-#if defined (_MSC_VER) && (_MSC_VER < 1800)
-
-#ifndef FLT_RADIX
-#define FLT_RADIX 2
-#endif
-
-__inline long double scalbn (long double x, int exp)
-{
- return x * (pow ((long double) FLT_RADIX, exp));
-}
-
-__inline float scalbnf (float x, int exp)
-{
- return x * (pow ((float) FLT_RADIX, exp));
-}
-#endif
#endif
diff --git a/util/view-cairo.cc b/util/view-cairo.cc
index f4f2bc5..160250e 100644
--- a/util/view-cairo.cc
+++ b/util/view-cairo.cc
@@ -26,76 +26,71 @@
#include "view-cairo.hh"
-#include <assert.h>
-
-
void
-view_cairo_t::render (const font_options_t *font_opts)
+view_cairo_t::get_surface_size (cairo_scaled_font_t *scaled_font,
+ double *w, double *h)
{
- bool vertical = HB_DIRECTION_IS_VERTICAL (direction);
- int vert = vertical ? 1 : 0;
- int horiz = vertical ? 0 : 1;
+ cairo_font_extents_t font_extents;
- int x_sign = font_opts->font_size_x < 0 ? -1 : +1;
- int y_sign = font_opts->font_size_y < 0 ? -1 : +1;
+ cairo_scaled_font_extents (scaled_font, &font_extents);
- hb_font_t *font = font_opts->get_font();
- hb_font_extents_t extents;
- hb_font_get_extents_for_direction (font, direction, &extents);
-
- double ascent = y_sign * scalbn ((double) extents.ascender, scale_bits);
- double descent = y_sign * -scalbn ((double) extents.descender, scale_bits);
- double font_height = y_sign * scalbn ((double) extents.ascender - extents.descender + extents.line_gap, scale_bits);
- double leading = font_height + view_options.line_space;
-
- /* Calculate surface size. */
- double w, h;
- (vertical ? w : h) = (int) lines->len * leading - view_options.line_space;
- (vertical ? h : w) = 0;
+ bool vertical = HB_DIRECTION_IS_VERTICAL (direction);
+ (vertical ? *w : *h) = (int) lines->len * (font_extents.height + view_options.line_space) - view_options.line_space;
+ (vertical ? *h : *w) = 0;
for (unsigned int i = 0; i < lines->len; i++) {
helper_cairo_line_t &line = g_array_index (lines, helper_cairo_line_t, i);
double x_advance, y_advance;
line.get_advance (&x_advance, &y_advance);
if (vertical)
- h = MAX (h, y_sign * y_advance);
+ *h = MAX (*h, y_advance);
else
- w = MAX (w, x_sign * x_advance);
+ *w = MAX (*w, x_advance);
}
+ *w += view_options.margin.l + view_options.margin.r;
+ *h += view_options.margin.t + view_options.margin.b;
+}
+
+void
+view_cairo_t::render (const font_options_t *font_opts)
+{
cairo_scaled_font_t *scaled_font = helper_cairo_create_scaled_font (font_opts);
+ double w, h;
+ get_surface_size (scaled_font, &w, &h);
+ cairo_t *cr = helper_cairo_create_context (w, h, &view_options, &output_options);
+ cairo_set_scaled_font (cr, scaled_font);
+ cairo_scaled_font_destroy (scaled_font);
- /* See if font needs color. */
- cairo_content_t content = CAIRO_CONTENT_ALPHA;
- if (helper_cairo_scaled_font_has_color (scaled_font))
- content = CAIRO_CONTENT_COLOR;
+ draw (cr);
- /* Create surface. */
- cairo_t *cr = helper_cairo_create_context (w + view_options.margin.l + view_options.margin.r,
- h + view_options.margin.t + view_options.margin.b,
- &view_options, &output_options, content);
- cairo_set_scaled_font (cr, scaled_font);
+ helper_cairo_destroy_context (cr);
+}
- /* Setup coordinate system. */
+void
+view_cairo_t::draw (cairo_t *cr)
+{
+ cairo_save (cr);
+
+ bool vertical = HB_DIRECTION_IS_VERTICAL (direction);
+ int v = vertical ? 1 : 0;
+ int h = vertical ? 0 : 1;
+ cairo_font_extents_t font_extents;
+ cairo_font_extents (cr, &font_extents);
cairo_translate (cr, view_options.margin.l, view_options.margin.t);
+ double descent;
if (vertical)
- cairo_translate (cr,
- w /* We stack lines right to left */
- -font_height * .5 /* "ascent" for vertical */,
- y_sign < 0 ? h : 0);
+ descent = font_extents.height * (lines->len + .5);
else
- {
- cairo_translate (cr,
- x_sign < 0 ? w : 0,
- y_sign < 0 ? descent : ascent);
- }
-
- /* Draw. */
- cairo_translate (cr, +vert * leading, -horiz * leading);
+ descent = font_extents.height - font_extents.ascent;
+ cairo_translate (cr, v * descent, h * -descent);
for (unsigned int i = 0; i < lines->len; i++)
{
helper_cairo_line_t &l = g_array_index (lines, helper_cairo_line_t, i);
- cairo_translate (cr, -vert * leading, +horiz * leading);
+ if (i)
+ cairo_translate (cr, v * -view_options.line_space, h * view_options.line_space);
+
+ cairo_translate (cr, v * -font_extents.height, h * font_extents.height);
if (view_options.annotate) {
cairo_save (cr);
@@ -127,7 +122,5 @@ view_cairo_t::render (const font_options_t *font_opts)
cairo_show_glyphs (cr, l.glyphs, l.num_glyphs);
}
- /* Clean up. */
- helper_cairo_destroy_context (cr);
- cairo_scaled_font_destroy (scaled_font);
+ cairo_restore (cr);
}
diff --git a/util/view-cairo.hh b/util/view-cairo.hh
index f55d4bb..cb52373 100644
--- a/util/view-cairo.hh
+++ b/util/view-cairo.hh
@@ -95,6 +95,8 @@ struct view_cairo_t
view_options_t view_options;
void render (const font_options_t *font_opts);
+ void get_surface_size (cairo_scaled_font_t *scaled_font, double *w, double *h);
+ void draw (cairo_t *cr);
hb_direction_t direction; // Remove this, make segment_properties accessible
GArray *lines;
diff --git a/win32/Makefile.am b/win32/Makefile.am
deleted file mode 100644
index 63ba468..0000000
--- a/win32/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-EXTRA_DIST = \
- build-rules-msvc.mak \
- config-msvc.mak \
- config.h.win32 \
- create-lists.bat \
- create-lists-msvc.mak \
- detectenv-msvc.mak \
- generate-msvc.mak \
- hb-introspection-msvc.mak \
- info-msvc.mak \
- install.mak \
- introspection-msvc.mak \
- Makefile.vc \
- README.txt
-
--include $(top_srcdir)/git.mk
diff --git a/win32/Makefile.in b/win32/Makefile.in
deleted file mode 100644
index f7a08c2..0000000
--- a/win32/Makefile.in
+++ /dev/null
@@ -1,501 +0,0 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = win32
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(srcdir)/config.h.win32.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
- $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
- $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = config.h.win32
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_FT_CFLAGS = @CAIRO_FT_CFLAGS@
-CAIRO_FT_LIBS = @CAIRO_FT_LIBS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CORETEXT_CFLAGS = @CORETEXT_CFLAGS@
-CORETEXT_LIBS = @CORETEXT_LIBS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DIRECTWRITE_CXXFLAGS = @DIRECTWRITE_CXXFLAGS@
-DIRECTWRITE_LIBS = @DIRECTWRITE_LIBS@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
-FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
-FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
-FREETYPE_DEPS = @FREETYPE_DEPS@
-FREETYPE_LIBS = @FREETYPE_LIBS@
-GIT = @GIT@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_DEPS = @GLIB_DEPS@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_MKENUMS = @GLIB_MKENUMS@
-GOBJECT_CFLAGS = @GOBJECT_CFLAGS@
-GOBJECT_LIBS = @GOBJECT_LIBS@
-GRAPHITE2_CFLAGS = @GRAPHITE2_CFLAGS@
-GRAPHITE2_DEPS = @GRAPHITE2_DEPS@
-GRAPHITE2_LIBS = @GRAPHITE2_LIBS@
-GREP = @GREP@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@
-GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
-GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
-GTKDOC_MKPDF = @GTKDOC_MKPDF@
-GTKDOC_REBASE = @GTKDOC_REBASE@
-HB_LIBTOOL_VERSION_INFO = @HB_LIBTOOL_VERSION_INFO@
-HB_VERSION = @HB_VERSION@
-HB_VERSION_MAJOR = @HB_VERSION_MAJOR@
-HB_VERSION_MICRO = @HB_VERSION_MICRO@
-HB_VERSION_MINOR = @HB_VERSION_MINOR@
-HTML_DIR = @HTML_DIR@
-ICU_CFLAGS = @ICU_CFLAGS@
-ICU_CONFIG = @ICU_CONFIG@
-ICU_LIBS = @ICU_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
-INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
-INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
-INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
-INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
-INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
-INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
-INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RAGEL = @RAGEL@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-UNISCRIBE_CFLAGS = @UNISCRIBE_CFLAGS@
-UNISCRIBE_LIBS = @UNISCRIBE_LIBS@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-EXTRA_DIST = \
- build-rules-msvc.mak \
- config-msvc.mak \
- config.h.win32 \
- create-lists.bat \
- create-lists-msvc.mak \
- detectenv-msvc.mak \
- generate-msvc.mak \
- hb-introspection-msvc.mak \
- info-msvc.mak \
- install.mak \
- introspection-msvc.mak \
- Makefile.vc \
- README.txt
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits win32/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnits win32/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-config.h.win32: $(top_builddir)/config.status $(srcdir)/config.h.win32.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
- cscopelist-am ctags-am distclean distclean-generic \
- distclean-libtool distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags-am uninstall uninstall-am
-
-
--include $(top_srcdir)/git.mk
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/win32/Makefile.vc b/win32/Makefile.vc
deleted file mode 100644
index fdde7a7..0000000
--- a/win32/Makefile.vc
+++ /dev/null
@@ -1,52 +0,0 @@
-# NMake Makefile for building HarfBuzz as a DLL on Windows
-
-# The items below this line should not be changed, unless one is maintaining
-# the NMake Makefiles. Customizations can be done in the following NMake Makefile
-# portions (please see comments in the these files to see what can be customized):
-#
-# detectenv-msvc.mak
-# config-msvc.mak
-
-!include detectenv-msvc.mak
-
-# Include the Makefile portions with the source listings
-!include ..\src\Makefile.sources
-!include ..\src\hb-ucdn\Makefile.sources
-!include ..\util\Makefile.sources
-
-# Include the Makefile portion that enables features based on user input
-!include config-msvc.mak
-
-!if "$(VALID_CFGSET)" == "TRUE"
-
-# Include the Makefile portion to convert the source and header lists
-# into the lists we need for compilation and introspection
-!include create-lists-msvc.mak
-
-all: $(HB_LIBS) $(HB_UTILS) $(EXTRA_TARGETS) all-build-info
-
-tests: all $(HB_TESTS)
-
-# Include the build rules for sources, DLLs and executables
-!include build-rules-msvc.mak
-
-# Include the rules for build directory creation and code generation
-!include generate-msvc.mak
-
-# Generate the introspection files
-
-!if "$(INTROSPECTION)" == "1"
-# Include the rules for building the introspection files
-!include introspection-msvc.mak
-!include hb-introspection-msvc.mak
-!endif
-
-!include install.mak
-
-!else
-all: help
- @echo You need to specify a valid configuration, via
- @echo CFG=release or CFG=debug
-!endif
-
-!include info-msvc.mak
diff --git a/win32/README.txt b/win32/README.txt
deleted file mode 100644
index e2ead01..0000000
--- a/win32/README.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-Instructions for building HarfBuzz on Visual Studio
-===================================================
-Building the HarfBuzz DLL on Windows is now also supported using Visual Studio
-versions 2008 through 2015, in both 32-bit and 64-bit (x64) flavors, via NMake
-Makefiles.
-
-The following are instructions for performing such a build, as there is a
-number of build configurations supported for the build. Note that for all
-build configurations, the OpenType and Simple TrueType layout (fallback)
-backends are enabled, as well as the Uniscribe platform shaper, and this
-is the base configuration that is built if no options (see below) are
-specified. A 'clean' target is provided-it is recommended that one cleans
-the build and redo the build if any configuration option changed. An
-'install' target is also provided to copy the built items in their appropriate
-locations under $(PREFIX), which is described below.
-
-Invoke the build by issuing the command:
-nmake /f Makefile.vc CFG=[release|debug] [PREFIX=...] <option1=1 option2=1 ...>
-where:
-
-CFG: Required. Choose from a release or debug build. Note that
- all builds generate a .pdb file for each .dll and .exe built--this refers
- to the C/C++ runtime that the build uses.
-
-PREFIX: Optional. Base directory of where the third-party headers, libraries
- and needed tools can be found, i.e. headers in $(PREFIX)\include,
- libraries in $(PREFIX)\lib and tools in $(PREFIX)\bin. If not
- specified, $(PREFIX) is set as $(srcroot)\..\vs$(X)\$(platform), where
- $(platform) is win32 for 32-bit builds or x64 for 64-bit builds, and
- $(X) is the short version of the Visual Studio used, as follows:
- 2008: 9
- 2010: 10
- 2012: 11
- 2013: 12
- 2015: 14
-
-Explanation of options, set by <option>=1:
-------------------------------------------
-GLIB: Enable GLib support in HarfBuzz, which also uses the GLib unicode
- callback instead of the bundled UCDN unicode callback. This requires the
- GLib libraries, and is required for building all tool and test programs.
-
-GOBJECT: Enable building the HarfBuzz-GObject DLL, and thus implies GLib
- support. This requires the GObject libraries and glib-mkenums script,
- along with PERL to generate the enum sources and headers, which is
- required for the build.
-
-INTROSPECTION: Enable build of introspection files, for making HarfBuzz
- bindings for other programming languages available, such as
- Python, available. This requires the GObject-Introspection
- libraries and tools, along with the Python interpretor that was
- used during the build of GObject-Introspection. Please see
- $(srcroot)\README.python for more related details. This implies
- the build of the HarfBuzz-GObject DLL, along with GLib support.
-
-FREETYPE: Enable the FreeType font callbacks. Requires the FreeType2 library.
-
-CAIRO: Enable Cairo support. Requires the Cairo library.
-
-CAIRO_FT: Enable the build of the hb-view tool, which makes use of Cairo, and
- thus implies FreeType font callback support and Cairo support.
- Requires Cairo libraries built with FreeType support. Note that the
- hb-view tool requires GLib support as well.
-
-GRAPHITE2: Enable the Graphite2 shaper, requires the SIL Graphite2 library.
-
-ICU: Enables the build HarfBuzz-ICU, which is now the recommended layout engine
- for ICU (International Components for Unicode), which deprecated ICU LE.
- Requires the ICU libraries.
-
-DIRECTWRITE: Enable (experimental) DirectWrite platform shaper support,
- requires a rather recent Windows SDK, and at least Windows Vista/
- Server 2008 with SP2 and platform update.
-
-PYTHON: Full path to the Python interpretor to be used, if it is not in %PATH%.
-
-PERL: Full path to the PERL interpretor to be used, if it is not in %PATH%.
-
-LIBTOOL_DLL_NAME: Enable libtool-style DLL names. \ No newline at end of file
diff --git a/win32/build-rules-msvc.mak b/win32/build-rules-msvc.mak
deleted file mode 100644
index 03b3833..0000000
--- a/win32/build-rules-msvc.mak
+++ /dev/null
@@ -1,140 +0,0 @@
-# NMake Makefile portion for compilation rules
-# Items in here should not need to be edited unless
-# one is maintaining the NMake build files. The format
-# of NMake Makefiles here are different from the GNU
-# Makefiles. Please see the comments about these formats.
-
-# Inference rules for compiling the .obj files.
-# Used for libs and programs with more than a single source file.
-# Format is as follows
-# (all dirs must have a trailing '\'):
-#
-# {$(srcdir)}.$(srcext){$(destdir)}.obj::
-# $(CC)|$(CXX) $(cflags) /Fo$(destdir) /c @<<
-# $<
-# <<
-{..\src\}.cc{$(CFG)\$(PLAT)\harfbuzz\}.obj::
- $(CXX) $(CFLAGS) $(HB_DEFINES) $(HB_LIB_CFLAGS) /Fo$(CFG)\$(PLAT)\harfbuzz\ /c @<<
-$<
-<<
-
-{..\src\hb-ucdn\}.c{$(CFG)\$(PLAT)\harfbuzz\}.obj::
- $(CC) $(CFLAGS) /Fo$(CFG)\$(PLAT)\harfbuzz\ /c @<<
-$<
-<<
-
-{..\src\}.cc{$(CFG)\$(PLAT)\harfbuzz-icu\}.obj::
- $(CXX) $(CFLAGS) $(HB_LIB_CFLAGS) $(HB_ICU_CFLAGS) /Fo$(CFG)\$(PLAT)\harfbuzz-icu\ /c @<<
-$<
-<<
-
-{..\util\}.cc{$(CFG)\$(PLAT)\util\}.obj::
- $(CXX) $(CFLAGS) $(HB_DEFINES) $(HB_CFLAGS) /Fo$(CFG)\$(PLAT)\util\ /c @<<
-$<
-<<
-
-# Inference rules for building the test programs
-# Used for programs with a single source file.
-# Format is as follows
-# (all dirs must have a trailing '\'):
-#
-# {$(srcdir)}.$(srcext){$(destdir)}.exe::
-# $(CC)|$(CXX) $(cflags) $< /Fo$*.obj /Fe$@ [/link $(linker_flags) $(dep_libs)]
-{..\src\}.cc{$(CFG)\$(PLAT)\}.exe:
- $(CXX) $(CFLAGS) $(HB_DEFINES) $(HB_CFLAGS) $< /Fo$*.obj /Fe$@ /link $(LDFLAGS) $(CFG)\$(PLAT)\harfbuzz.lib $(HB_TESTS_DEP_LIBS)
-
-{..\test\api\}.c{$(CFG)\$(PLAT)\}.exe:
- $(CXX) $(CFLAGS) $(HB_DEFINES) $(HB_CFLAGS) /DSRCDIR="\"../../../test/api\"" $< /Fo$*.obj /Fe$@ /link $(LDFLAGS) $(CFG)\$(PLAT)\harfbuzz.lib $(HB_TESTS_DEP_LIBS)
-
-# Rules for building .lib files
-$(CFG)\$(PLAT)\harfbuzz.lib: $(HARFBUZZ_DLL_FILENAME).dll
-$(CFG)\$(PLAT)\harfbuzz-icu.lib: $(HARFBUZZ_ICU_DLL_FILENAME).dll
-$(CFG)\$(PLAT)\harfbuzz-gobject.lib: $(HARFBUZZ_GOBJECT_DLL_FILENAME).dll
-
-# Rules for linking DLLs
-# Format is as follows (the mt command is needed for MSVC 2005/2008 builds):
-# $(dll_name_with_path): $(dependent_libs_files_objects_and_items)
-# link /DLL [$(linker_flags)] [$(dependent_libs)] [/def:$(def_file_if_used)] [/implib:$(lib_name_if_needed)] -out:$@ @<<
-# $(dependent_objects)
-# <<
-# @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
-$(HARFBUZZ_DLL_FILENAME).dll: config.h $(harfbuzz_dll_OBJS) $(CFG)\$(PLAT)\harfbuzz
- link /DLL $(LDFLAGS) $(HB_DEP_LIBS) /implib:$(CFG)\$(PLAT)\harfbuzz.lib -out:$@ @<<
-$(harfbuzz_dll_OBJS)
-<<
- @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
-
-$(HARFBUZZ_ICU_DLL_FILENAME).dll: $(CFG)\$(PLAT)\harfbuzz.lib $(harfbuzz_icu_OBJS) $(CFG)\$(PLAT)\harfbuzz-icu
- link /DLL $(LDFLAGS) $(CFG)\$(PLAT)\harfbuzz.lib $(HB_ICU_DEP_LIBS) /implib:$(CFG)\$(PLAT)\harfbuzz-icu.lib -out:$@ @<<
-$(harfbuzz_icu_OBJS)
-<<
- @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
-
-$(HARFBUZZ_GOBJECT_DLL_FILENAME).dll: $(CFG)\$(PLAT)\harfbuzz.lib $(harfbuzz_gobject_OBJS) $(CFG)\$(PLAT)\harfbuzz-gobject
- link /DLL $(LDFLAGS) $(CFG)\$(PLAT)\harfbuzz.lib $(HB_GOBJECT_DEP_LIBS) /implib:$(CFG)\$(PLAT)\harfbuzz-gobject.lib -out:$@ @<<
-$(harfbuzz_gobject_OBJS)
-<<
- @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
-
-# Rules for linking Executables
-# Format is as follows (the mt command is needed for MSVC 2005/2008 builds):
-# $(dll_name_with_path): $(dependent_libs_files_objects_and_items)
-# link [$(linker_flags)] [$(dependent_libs)] -out:$@ @<<
-# $(dependent_objects)
-# <<
-# @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
-$(CFG)\$(PLAT)\hb-view.exe: $(CFG)\$(PLAT)\harfbuzz.lib $(CFG)\$(PLAT)\util $(hb_view_OBJS)
- link $(LDFLAGS) $(CFG)\$(PLAT)\harfbuzz.lib $(HB_UTILS_DEP_LIBS) -out:$@ @<<
-$(hb_view_OBJS)
-<<
- @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
-
-$(CFG)\$(PLAT)\hb-shape.exe: $(CFG)\$(PLAT)\harfbuzz.lib $(CFG)\$(PLAT)\util $(hb_shape_OBJS)
- link $(LDFLAGS) $(CFG)\$(PLAT)\harfbuzz.lib $(HB_UTILS_DEP_LIBS) -out:$@ @<<
-$(hb_shape_OBJS)
-<<
- @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
-
-$(CFG)\$(PLAT)\hb-ot-shape-closure.exe: $(CFG)\$(PLAT)\harfbuzz.lib $(CFG)\$(PLAT)\util $(hb_ot_shape_closure_OBJS)
- link $(LDFLAGS) $(CFG)\$(PLAT)\harfbuzz.lib $(HB_UTILS_DEP_LIBS) -out:$@ @<<
-$(hb_ot_shape_closure_OBJS)
-<<
- @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
-
-# Other .obj files requiring individual attention, that could not be covered by the inference rules.
-# Format is as follows (all dirs must have a trailing '\'):
-#
-# $(obj_file):
-# $(CC)|$(CXX) $(cflags) /Fo$(obj_destdir) /c @<<
-# $(srcfile)
-# <<
-$(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-structs.obj: $(CFG)\$(PLAT)\harfbuzz-gobject $(HB_GOBJECT_ENUM_GENERATED_SOURCES)
- $(CXX) $(CFLAGS) $(HB_DEFINES) $(HB_LIB_CFLAGS) /I$(CFG)\$(PLAT)\harfbuzz-gobject /Fo$(CFG)\$(PLAT)\harfbuzz-gobject\ /c @<<
-..\src\hb-gobject-structs.cc
-<<
-
-$(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.obj: $(CFG)\$(PLAT)\harfbuzz-gobject $(HB_GOBJECT_ENUM_GENERATED_SOURCES)
- $(CXX) $(CFLAGS) $(HB_DEFINES) $(HB_LIB_CFLAGS) /I$(CFG)\$(PLAT)\harfbuzz-gobject /Fo$(CFG)\$(PLAT)\harfbuzz-gobject\ /c @<<
-$(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.cc
-<<
-
-clean:
- @-if exist $(CFG)\$(PLAT)\HarfBuzz-0.0.typelib del /f /q $(CFG)\$(PLAT)\HarfBuzz-0.0.typelib
- @-if exist $(CFG)\$(PLAT)\HarfBuzz-0.0.gir del /f /q $(CFG)\$(PLAT)\HarfBuzz-0.0.gir
- @-if exist $(CFG)\$(PLAT)\hb_list del /f /q $(CFG)\$(PLAT)\hb_list
- @-del /f /q $(CFG)\$(PLAT)\*.pdb
- @-if exist $(CFG)\$(PLAT)\.exe.manifest del /f /q $(CFG)\$(PLAT)\*.exe.manifest
- @-if exist $(CFG)\$(PLAT)\.exe del /f /q $(CFG)\$(PLAT)\*.exe
- @-del /f /q $(CFG)\$(PLAT)\*.dll.manifest
- @-del /f /q $(CFG)\$(PLAT)\*.dll
- @-del /f /q $(CFG)\$(PLAT)\*.ilk
- @-del /f /q $(CFG)\$(PLAT)\*.obj
- @-if exist $(CFG)\$(PLAT)\util del /f /q $(CFG)\$(PLAT)\util\*.obj
- @-if exist $(CFG)\$(PLAT)\harfbuzz-gobject del /f /q $(CFG)\$(PLAT)\harfbuzz-gobject\*.obj
- @-if exist $(CFG)\$(PLAT)\harfbuzz-icu del /f /q $(CFG)\$(PLAT)\harfbuzz-icu\*.obj
- @-del /f /q $(CFG)\$(PLAT)\harfbuzz\*.obj
- @-rmdir /s /q $(CFG)\$(PLAT)
- @-if exist $(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.h del $(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.h
- @-if exist $(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.cc del $(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.cc
- @-del vc$(VSVER)0.pdb
- @-del config.h
diff --git a/win32/config-msvc.mak b/win32/config-msvc.mak
deleted file mode 100644
index e0c6468..0000000
--- a/win32/config-msvc.mak
+++ /dev/null
@@ -1,198 +0,0 @@
-# NMake Makefile portion for enabling features for Windows builds
-
-# You may change these lines to customize the .lib files that will be linked to
-# Additional Libraries for building HarfBuzz-ICU
-# icudt.lib may be required for static ICU builds
-HB_ICU_DEP_LIBS = icuuc.lib
-
-# GLib is required for all utility programs and tests
-HB_GLIB_LIBS = glib-2.0.lib
-
-# Needed for building HarfBuzz-GObject
-HB_GOBJECT_DEP_LIBS = gobject-2.0.lib $(HB_GLIB_LIBS)
-
-# Freetype is needed for building FreeType support and hb-view
-FREETYPE_LIB = freetype.lib
-
-# Cairo is needed for building hb-view
-CAIRO_LIB = cairo.lib
-
-# Graphite2 is needed for building SIL Graphite2 support
-GRAPHITE2_LIB = graphite2.lib
-
-# Directwrite is needed for DirectWrite shaping support
-DIRECTWRITE_LIB = dwrite.lib
-
-# Please do not change anything beneath this line unless maintaining the NMake Makefiles
-# Bare minimum features and sources built into HarfBuzz on Windows
-HB_DEFINES =
-HB_CFLAGS = /DHAVE_CONFIG_H
-HB_UCDN_CFLAGS = /I..\src\hb-ucdn
-HB_SOURCES = \
- $(HB_BASE_sources) \
- $(HB_FALLBACK_sources) \
- $(HB_OT_sources) \
- $(HB_UNISCRIBE_sources) \
-
-HB_HEADERS = \
- $(HB_BASE_headers) \
- $(HB_NODIST_headers) \
- $(HB_OT_headers) \
- $(HB_UNISCRIBE_headers)
-
-# Minimal set of (system) libraries needed for the HarfBuzz DLL
-HB_DEP_LIBS = usp10.lib gdi32.lib rpcrt4.lib user32.lib
-
-# We build the HarfBuzz DLL/LIB at least
-HB_LIBS = $(CFG)\$(PLAT)\harfbuzz.lib
-
-# Note: All the utility and test programs require GLib support to be present!
-HB_UTILS =
-HB_UTILS_DEP_LIBS = $(HB_GLIB_LIBS)
-HB_TESTS =
-HB_TESTS_DEP_LIBS = $(HB_GLIB_LIBS)
-
-# Use libtool-style DLL names, if desired
-!if "$(LIBTOOL_DLL_NAME)" == "1"
-HARFBUZZ_DLL_FILENAME = $(CFG)\$(PLAT)\libharfbuzz-0
-HARFBUZZ_ICU_DLL_FILENAME = $(CFG)\$(PLAT)\libharfbuzz-icu-0
-HARFBUZZ_GOBJECT_DLL_FILENAME = $(CFG)\$(PLAT)\libharfbuzz-gobject-0
-!else
-HARFBUZZ_DLL_FILENAME = $(CFG)\$(PLAT)\harfbuzz-vs$(VSVER)
-HARFBUZZ_ICU_DLL_FILENAME = $(CFG)\$(PLAT)\harfbuzz-icu-vs$(VSVER)
-HARFBUZZ_GOBJECT_DLL_FILENAME = $(CFG)\$(PLAT)\harfbuzz-gobject-vs$(VSVER)
-!endif
-
-# Enable HarfBuzz-ICU, if desired
-!if "$(ICU)" == "1"
-HB_ICU_CFLAGS =
-HB_LIBS = \
- $(HB_LIBS) \
- $(CFG)\$(PLAT)\harfbuzz-icu.lib
-
-# We don't want to re-define int8_t Visual Studio 2008, will cause build breakage
-# as we define it in hb-common.h, and we ought to use the definitions there.
-!if "$(VSVER)" == "9"
-HB_ICU_CFLAGS = /DU_HAVE_INT8_T
-!endif
-
-!endif
-
-# Enable Introspection (enables HarfBuzz-Gobject as well)
-!if "$(INTROSPECTION)" == "1"
-GOBJECT = 1
-CHECK_PACKAGE = gobject-2.0
-EXTRA_TARGETS = $(CFG)\$(PLAT)\HarfBuzz-0.0.gir $(CFG)\$(PLAT)\HarfBuzz-0.0.typelib
-!else
-EXTRA_TARGETS =
-!endif
-
-# Enable HarfBuzz-GObject (enables GLib support as well)
-!if "$(GOBJECT)" == "1"
-GLIB = 1
-HB_LIBS = \
- $(HB_LIBS) \
- $(CFG)\$(PLAT)\harfbuzz-gobject.lib
-
-HB_GOBJECT_ENUM_GENERATED_SOURCES = \
- $(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.cc \
- $(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.h
-
-!endif
-
-# Enable cairo-ft (enables cairo and freetype as well)
-!if "$(CAIRO_FT)" == "1"
-HB_DEFINES = $(HB_DEFINES) /DHAVE_CAIRO_FT=1
-CAIRO = 1
-FREETYPE = 1
-!if "$(GLIB)" == "1"
-HB_UTILS = \
- $(HB_UTILS) \
- $(CFG)\$(PLAT)\hb-view.exe
-
-HB_UTILS_DEP_LIBS = $(HB_UTILS_DEP_LIBS) $(CAIRO_LIB) $(FREETYPE_LIB)
-!else
-!if [echo Warning: GLib support not enabled, hb-view not built]
-!endif
-!endif
-!endif
-
-# Enable cairo
-!if "$(CAIRO)" == "1"
-HB_DEFINES = $(HB_DEFINES) /DHAVE_CAIRO=1
-!endif
-
-# Enable freetype if desired
-!if "$(FREETYPE)" == "1"
-HB_DEFINES = $(HB_DEFINES) /DHAVE_FREETYPE=1
-HB_SOURCES = $(HB_SOURCES) $(HB_FT_sources)
-HB_HEADERS = $(HB_HEADERS) $(HB_FT_headers)
-HB_DEP_LIBS = $(HB_DEP_LIBS) $(FREETYPE_LIB)
-!endif
-
-# Enable graphite2 if desired
-!if "$(GRAPHITE2)" == "1"
-HB_DEFINES = $(HB_DEFINES) /DHAVE_GRAPHITE2=1
-HB_SOURCES = $(HB_SOURCES) $(HB_GRAPHITE2_sources)
-HB_HEADERS = $(HB_HEADERS) $(HB_GRAPHITE2_headers)
-HB_DEP_LIBS = $(HB_DEP_LIBS) $(GRAPHITE2_LIB)
-!endif
-
-# Enable GLib if desired
-!if "$(GLIB)" == "1"
-HB_DEFINES = $(HB_DEFINES) /DHAVE_GLIB=1
-HB_CFLAGS = \
- $(HB_CFLAGS) \
- /FImsvc_recommended_pragmas.h \
- /I$(PREFIX)\include\glib-2.0 \
- /I$(PREFIX)\lib\glib-2.0\include
-
-HB_SOURCES = $(HB_SOURCES) $(HB_GLIB_sources)
-HB_HEADERS = $(HB_HEADERS) $(HB_GLIB_headers)
-HB_DEP_LIBS = $(HB_DEP_LIBS) $(HB_GLIB_LIBS)
-
-HB_UTILS = \
- $(HB_UTILS) \
- $(CFG)\$(PLAT)\hb-shape.exe \
- $(CFG)\$(PLAT)\hb-ot-shape-closure.exe
-
-HB_TESTS = \
- $(HB_TESTS) \
- $(CFG)\$(PLAT)\main.exe \
- $(CFG)\$(PLAT)\test.exe \
- $(CFG)\$(PLAT)\test-buffer-serialize.exe \
- $(CFG)\$(PLAT)\test-size-params.exe \
- $(CFG)\$(PLAT)\test-would-substitute.exe \
- $(CFG)\$(PLAT)\test-blob.exe \
- $(CFG)\$(PLAT)\test-buffer.exe \
- $(CFG)\$(PLAT)\test-common.exe \
- $(CFG)\$(PLAT)\test-font.exe \
- $(CFG)\$(PLAT)\test-object.exe \
- $(CFG)\$(PLAT)\test-set.exe \
- $(CFG)\$(PLAT)\test-shape.exe \
- $(CFG)\$(PLAT)\test-unicode.exe \
- $(CFG)\$(PLAT)\test-version.exe
-
-!else
-# If there is no GLib support, use the built-in UCDN
-# and define some of the macros in GLib's msvc_recommended_pragmas.h
-# to reduce some unneeded build-time warnings
-HB_DEFINES = $(HB_DEFINES) /DHAVE_UCDN=1
-HB_CFLAGS = \
- $(HB_CFLAGS) \
- $(HB_UCDN_CFLAGS) \
- /wd4244 \
- /D_CRT_SECURE_NO_WARNINGS \
- /D_CRT_NONSTDC_NO_WARNINGS
-
-HB_SOURCES = $(HB_SOURCES) $(LIBHB_UCDN_sources) $(HB_UCDN_sources)
-!endif
-
-!if "$(DIRECTWRITE)" == "1"
-HB_CFLAGS = $(HB_CFLAGS) /DHAVE_DIRECTWRITE
-HB_SOURCES = $(HB_SOURCES) $(HB_DIRECTWRITE_sources)
-HB_HEADERS = $(HB_HEADERS) $(HB_DIRECTWRITE_headers)
-HB_DEP_LIBS = $(HB_DEP_LIBS) $(DIRECTWRITE_LIB)
-!endif
-
-HB_LIB_CFLAGS = $(HB_CFLAGS) /DHB_EXTERN="__declspec (dllexport) extern"
diff --git a/win32/config.h.win32 b/win32/config.h.win32
deleted file mode 100644
index 522b9e1..0000000
--- a/win32/config.h.win32
+++ /dev/null
@@ -1,158 +0,0 @@
-/* config.h.in. Generated from configure.ac by autoheader. */
-
-/* The normal alignment of `struct{char;}', in bytes. */
-#define ALIGNOF_STRUCT_CHAR__ 1
-
-/* Define to 1 if you have the `atexit' function. */
-#define HAVE_ATEXIT 1
-
-/* Have cairo graphics library */
-/* #undef HAVE_CAIRO */
-
-/* Have cairo-ft support in cairo graphics library */
-/* #undef HAVE_CAIRO_FT */
-
-/* Have Core Text backend */
-/* #undef HAVE_CORETEXT */
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-/* #undef HAVE_DLFCN_H */
-
-/* Have DirectWrite Library */
-/* #undef HAVE_DIRECTWRITE */
-
-/* Have simple TrueType Layout backend */
-#define HAVE_FALLBACK 1
-
-/* Have fontconfig library */
-/* #undef HAVE_FONTCONFIG */
-
-/* Have FreeType 2 library */
-/* #undef HAVE_FREETYPE */
-
-/* Define to 1 if you have the `getpagesize' function. */
-/* #undef HAVE_GETPAGESIZE */
-
-/* Have glib2 library */
-/* #undef HAVE_GLIB */
-
-/* Have gobject2 library */
-/* #undef HAVE_GOBJECT */
-
-/* Have Graphite2 library */
-/* #undef HAVE_GRAPHITE2 */
-
-/* Have ICU library */
-/* #undef HAVE_ICU */
-
-/* Have Intel __sync_* atomic primitives */
-/* #undef HAVE_INTEL_ATOMIC_PRIMITIVES */
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#if !defined (_MSC_VER) || (_MSC_VER >= 1800)
-#define HAVE_INTTYPES_H 1
-#endif
-
-/* Define to 1 if you have the `isatty' function. */
-#define HAVE_ISATTY 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `mmap' function. */
-/* #undef HAVE_MMAP */
-
-/* Define to 1 if you have the `mprotect' function. */
-/* #undef HAVE_MPROTECT */
-
-/* Have native OpenType Layout backend */
-#define HAVE_OT 1
-
-/* Have POSIX threads */
-/* #undef HAVE_PTHREAD */
-
-/* Have PTHREAD_PRIO_INHERIT. */
-/* #undef HAVE_PTHREAD_PRIO_INHERIT */
-
-/* Define to 1 if you have the <sched.h> header file. */
-/* #undef HAVE_SCHED_H */
-
-/* Have sched_yield */
-/* #undef HAVE_SCHED_YIELD */
-
-/* Have Solaris __machine_*_barrier and atomic_* operations */
-/* #undef HAVE_SOLARIS_ATOMIC_OPS */
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#if !defined (_MSC_VER) || (_MSC_VER >= 1600)
-#define HAVE_STDINT_H 1
-#endif
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#ifndef _MSC_VER
-#define HAVE_STRINGS_H 1
-#endif
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `sysconf' function. */
-/* #undef HAVE_SYSCONF */
-
-/* Define to 1 if you have the <sys/mman.h> header file. */
-/* #undef HAVE_SYS_MMAN_H */
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Have UCDN Unicode functions */
-#define HAVE_UCDN 1
-
-/* Have Uniscribe library */
-#define HAVE_UNISCRIBE 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#ifndef _MSC_VER
-#define HAVE_UNISTD_H 1
-#endif
-
-/* Define to 1 if you have the <usp10.h> header file. */
-#define HAVE_USP10_H 1
-
-/* Define to 1 if you have the <windows.h> header file. */
-#define HAVE_WINDOWS_H 1
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
-#define LT_OBJDIR ".libs/"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "HarfBuzz"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "HarfBuzz 1.2.7"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "harfbuzz"
-
-/* Define to the home page for this package. */
-#define PACKAGE_URL "http://harfbuzz.org/"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.2.7"
-
-/* Define to necessary symbol if this constant uses a non-standard name on
- your system. */
-/* #undef PTHREAD_CREATE_JOINABLE */
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
diff --git a/win32/config.h.win32.in b/win32/config.h.win32.in
deleted file mode 100644
index 73ad205..0000000
--- a/win32/config.h.win32.in
+++ /dev/null
@@ -1,158 +0,0 @@
-/* config.h.in. Generated from configure.ac by autoheader. */
-
-/* The normal alignment of `struct{char;}', in bytes. */
-#define ALIGNOF_STRUCT_CHAR__ 1
-
-/* Define to 1 if you have the `atexit' function. */
-#define HAVE_ATEXIT 1
-
-/* Have cairo graphics library */
-/* #undef HAVE_CAIRO */
-
-/* Have cairo-ft support in cairo graphics library */
-/* #undef HAVE_CAIRO_FT */
-
-/* Have Core Text backend */
-/* #undef HAVE_CORETEXT */
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-/* #undef HAVE_DLFCN_H */
-
-/* Have DirectWrite Library */
-/* #undef HAVE_DIRECTWRITE */
-
-/* Have simple TrueType Layout backend */
-#define HAVE_FALLBACK 1
-
-/* Have fontconfig library */
-/* #undef HAVE_FONTCONFIG */
-
-/* Have FreeType 2 library */
-/* #undef HAVE_FREETYPE */
-
-/* Define to 1 if you have the `getpagesize' function. */
-/* #undef HAVE_GETPAGESIZE */
-
-/* Have glib2 library */
-/* #undef HAVE_GLIB */
-
-/* Have gobject2 library */
-/* #undef HAVE_GOBJECT */
-
-/* Have Graphite2 library */
-/* #undef HAVE_GRAPHITE2 */
-
-/* Have ICU library */
-/* #undef HAVE_ICU */
-
-/* Have Intel __sync_* atomic primitives */
-/* #undef HAVE_INTEL_ATOMIC_PRIMITIVES */
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#if !defined (_MSC_VER) || (_MSC_VER >= 1800)
-#define HAVE_INTTYPES_H 1
-#endif
-
-/* Define to 1 if you have the `isatty' function. */
-#define HAVE_ISATTY 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `mmap' function. */
-/* #undef HAVE_MMAP */
-
-/* Define to 1 if you have the `mprotect' function. */
-/* #undef HAVE_MPROTECT */
-
-/* Have native OpenType Layout backend */
-#define HAVE_OT 1
-
-/* Have POSIX threads */
-/* #undef HAVE_PTHREAD */
-
-/* Have PTHREAD_PRIO_INHERIT. */
-/* #undef HAVE_PTHREAD_PRIO_INHERIT */
-
-/* Define to 1 if you have the <sched.h> header file. */
-/* #undef HAVE_SCHED_H */
-
-/* Have sched_yield */
-/* #undef HAVE_SCHED_YIELD */
-
-/* Have Solaris __machine_*_barrier and atomic_* operations */
-/* #undef HAVE_SOLARIS_ATOMIC_OPS */
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#if !defined (_MSC_VER) || (_MSC_VER >= 1600)
-#define HAVE_STDINT_H 1
-#endif
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#ifndef _MSC_VER
-#define HAVE_STRINGS_H 1
-#endif
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `sysconf' function. */
-/* #undef HAVE_SYSCONF */
-
-/* Define to 1 if you have the <sys/mman.h> header file. */
-/* #undef HAVE_SYS_MMAN_H */
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Have UCDN Unicode functions */
-#define HAVE_UCDN 1
-
-/* Have Uniscribe library */
-#define HAVE_UNISCRIBE 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#ifndef _MSC_VER
-#define HAVE_UNISTD_H 1
-#endif
-
-/* Define to 1 if you have the <usp10.h> header file. */
-#define HAVE_USP10_H 1
-
-/* Define to 1 if you have the <windows.h> header file. */
-#define HAVE_WINDOWS_H 1
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
-#define LT_OBJDIR ".libs/"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "@PACKAGE_BUGREPORT@"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "@PACKAGE_NAME@"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "@PACKAGE_NAME@ @PACKAGE_VERSION@"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "@PACKAGE_TARNAME@"
-
-/* Define to the home page for this package. */
-#define PACKAGE_URL "@PACKAGE_URL@"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "@PACKAGE_VERSION@"
-
-/* Define to necessary symbol if this constant uses a non-standard name on
- your system. */
-/* #undef PTHREAD_CREATE_JOINABLE */
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
diff --git a/win32/create-lists-msvc.mak b/win32/create-lists-msvc.mak
deleted file mode 100644
index 9b5574b..0000000
--- a/win32/create-lists-msvc.mak
+++ /dev/null
@@ -1,151 +0,0 @@
-# Convert the source listing to object (.obj) listing in
-# another NMake Makefile module, include it, and clean it up.
-# This is a "fact-of-life" regarding NMake Makefiles...
-# This file does not need to be changed unless one is maintaining the NMake Makefiles
-
-# For those wanting to add things here:
-# To add a list, do the following:
-# # $(description_of_list)
-# if [call create-lists.bat header $(makefile_snippet_file) $(variable_name)]
-# endif
-#
-# if [call create-lists.bat file $(makefile_snippet_file) $(file_name)]
-# endif
-#
-# if [call create-lists.bat footer $(makefile_snippet_file)]
-# endif
-# ... (repeat the if [call ...] lines in the above order if needed)
-# !include $(makefile_snippet_file)
-#
-# (add the following after checking the entries in $(makefile_snippet_file) is correct)
-# (the batch script appends to $(makefile_snippet_file), you will need to clear the file unless the following line is added)
-#!if [del /f /q $(makefile_snippet_file)]
-#!endif
-
-# In order to obtain the .obj filename that is needed for NMake Makefiles to build DLLs/static LIBs or EXEs, do the following
-# instead when doing 'if [call create-lists.bat file $(makefile_snippet_file) $(file_name)]'
-# (repeat if there are multiple $(srcext)'s in $(source_list), ignore any headers):
-# !if [for %c in ($(source_list)) do @if "%~xc" == ".$(srcext)" @call create-lists.bat file $(makefile_snippet_file) $(intdir)\%~nc.obj]
-#
-# $(intdir)\%~nc.obj needs to correspond to the rules added in build-rules-msvc.mak
-# %~xc gives the file extension of a given file, %c in this case, so if %c is a.cc, %~xc means .cc
-# %~nc gives the file name of a given file without extension, %c in this case, so if %c is a.cc, %~nc means a
-
-NULL=
-
-# For HarfBuzz
-!if [call create-lists.bat header hb_objs.mak harfbuzz_dll_OBJS]
-!endif
-
-!if [for %c in ($(HB_SOURCES)) do @if "%~xc" == ".cc" @call create-lists.bat file hb_objs.mak ^$(CFG)\^$(PLAT)\harfbuzz\%~nc.obj]
-!endif
-
-!if [for %c in ($(HB_SOURCES)) do @if "%~xc" == ".c" @call create-lists.bat file hb_objs.mak ^$(CFG)\^$(PLAT)\harfbuzz\%~nc.obj]
-!endif
-
-!if [call create-lists.bat footer hb_objs.mak]
-!endif
-
-# For HarfBuzz-GObject
-!if "$(GOBJECT)" == "1"
-
-!if [call create-lists.bat header hb_objs.mak harfbuzz_gobject_OBJS]
-!endif
-
-!if [for %c in ($(HB_GOBJECT_sources) $(HB_GOBJECT_ENUM_sources)) do @if "%~xc" == ".cc" @call create-lists.bat file hb_objs.mak ^$(CFG)\^$(PLAT)\harfbuzz-gobject\%~nc.obj]
-!endif
-
-!if [call create-lists.bat footer hb_objs.mak]
-!endif
-!endif
-
-# For HarfBuzz-ICU
-!if "$(ICU)" == "1"
-
-!if [call create-lists.bat header hb_objs.mak harfbuzz_icu_OBJS]
-!endif
-
-!if [for %c in ($(HB_ICU_sources)) do @if "%~xc" == ".cc" @call create-lists.bat file hb_objs.mak ^$(CFG)\^$(PLAT)\harfbuzz-icu\%~nc.obj]
-!endif
-
-!if [call create-lists.bat footer hb_objs.mak]
-!endif
-!endif
-
-# For the utility programs (GLib support is required)
-!if "$(GLIB)" == "1"
-
-# For hb-view, Cairo-FT support is required
-!if "$(CAIRO_FT)" == "1"
-
-!if [call create-lists.bat header hb_objs.mak hb_view_OBJS]
-!endif
-
-!if [for %c in ($(HB_VIEW_sources)) do @if "%~xc" == ".cc" @call create-lists.bat file hb_objs.mak ^$(CFG)\^$(PLAT)\util\%~nc.obj]
-!endif
-
-!if [call create-lists.bat footer hb_objs.mak]
-!endif
-!endif
-
-# For hb-shape
-!if [call create-lists.bat header hb_objs.mak hb_shape_OBJS]
-!endif
-
-!if [for %c in ($(HB_SHAPE_sources)) do @if "%~xc" == ".cc" @call create-lists.bat file hb_objs.mak ^$(CFG)\^$(PLAT)\util\%~nc.obj]
-!endif
-
-!if [call create-lists.bat footer hb_objs.mak]
-!endif
-
-# For hb-ot-shape-closure
-
-!if [call create-lists.bat header hb_objs.mak hb_ot_shape_closure_OBJS]
-!endif
-
-!if [for %c in ($(HB_OT_SHAPE_CLOSURE_sources)) do @if "%~xc" == ".cc" @call create-lists.bat file hb_objs.mak ^$(CFG)\^$(PLAT)\util\%~nc.obj]
-!endif
-
-!if [call create-lists.bat footer hb_objs.mak]
-!endif
-
-!endif
-
-!include hb_objs.mak
-
-!if [del /f /q hb_objs.mak]
-!endif
-
-# Gather the list of headers and sources for introspection and glib-mkenums
-!if [call create-lists.bat header hb_srcs.mak HB_ACTUAL_HEADERS]
-!endif
-
-!if [for %h in ($(HB_HEADERS)) do @call create-lists.bat file hb_srcs.mak ..\src\%h]
-!endif
-
-!if [call create-lists.bat footer hb_srcs.mak]
-!endif
-
-# Gather the lists of sources for introspection
-!if [call create-lists.bat header hb_srcs.mak HB_ACTUAL_SOURCES]
-!endif
-
-!if [for %s in ($(HB_SOURCES)) do @call create-lists.bat file hb_srcs.mak ..\src\%s]
-!endif
-
-!if [call create-lists.bat footer hb_srcs.mak]
-!endif
-
-!if [call create-lists.bat header hb_srcs.mak HB_GOBJECT_ACTUAL_SOURCES]
-!endif
-
-!if [for %s in ($(HB_GOBJECT_sources) $(HB_GOBJECT_STRUCTS_headers)) do @call create-lists.bat file hb_srcs.mak ..\src\%s]
-!endif
-
-!if [call create-lists.bat footer hb_srcs.mak]
-!endif
-
-!include hb_srcs.mak
-
-!if [del /f /q hb_srcs.mak]
-!endif
diff --git a/win32/create-lists.bat b/win32/create-lists.bat
deleted file mode 100644
index ef60d5c..0000000
--- a/win32/create-lists.bat
+++ /dev/null
@@ -1,42 +0,0 @@
-@echo off
-rem Simple .bat script for creating the NMake Makefile snippets.
-
-if not "%1" == "header" if not "%1" == "file" if not "%1" == "footer" goto :error_cmd
-if "%2" == "" goto error_no_destfile
-
-if "%1" == "header" goto :header
-if "%1" == "file" goto :addfile
-if "%1" == "footer" goto :footer
-
-:header
-if "%3" == "" goto error_var
-echo %3 = \>>%2
-goto done
-
-:addfile
-if "%3" == "" goto error_file
-echo. %3 \>>%2
-goto done
-
-:footer
-echo. $(NULL)>>%2
-echo.>>%2
-goto done
-
-:error_cmd
-echo Specified command '%1' was invalid. Valid commands are: header file footer.
-goto done
-
-:error_no_destfile
-echo Destination NMake snippet file must be specified
-goto done
-
-:error_var
-echo A name must be specified for using '%1'.
-goto done
-
-:error_file
-echo A file must be specified for using '%1'.
-goto done
-
-:done \ No newline at end of file
diff --git a/win32/detectenv-msvc.mak b/win32/detectenv-msvc.mak
deleted file mode 100644
index a94ab84..0000000
--- a/win32/detectenv-msvc.mak
+++ /dev/null
@@ -1,136 +0,0 @@
-# Change this (or specify PREFIX= when invoking this NMake Makefile) if
-# necessary, so that the libs and headers of the dependent third-party
-# libraries can be located. For instance, if building from GLib's
-# included Visual Studio projects, this should be able to locate the GLib
-# build out-of-the-box if they were not moved. GLib's headers will be
-# found in $(GLIB_PREFIX)\include\glib-2.0 and
-# $(GLIB_PREFIX)\lib\glib-2.0\include and its import library will be found
-# in $(GLIB_PREFIX)\lib.
-
-!if "$(PREFIX)" == ""
-PREFIX = ..\..\vs$(VSVER)\$(PLAT)
-!endif
-
-# Location of the PERL interpretor, for running glib-mkenums. glib-mkenums
-# needs to be found in $(PREFIX)\bin. Using either a 32-bit or x64 PERL
-# interpretor are supported for either a 32-bit or x64 build.
-
-!if "$(PERL)" == ""
-PERL = perl
-!endif
-
-# Location of the Python interpretor, for building introspection. The complete set
-# of Python Modules for introspection (the giscanner Python scripts and the _giscanner.pyd
-# compiled module) needs to be found in $(PREFIX)\lib\gobject-introspection\giscanner, and
-# the g-ir-scanner Python script and g-ir-compiler utility program needs to be found
-# in $(PREFIX)\bin, together with any DLLs they will depend on, if those DLLs are not already
-# in your PATH.
-# Note that the Python interpretor and the introspection modules and utility progam must
-# correspond to the build type (i.e. 32-bit Release for 32-bit Release builds, and so on).
-#
-# For introspection, currently only Python 2.7.x is supported. This may change when Python 3.x
-# support is added upstream in gobject-introspection--when this happens, the _giscanner.pyd must
-# be the one that is built against the release series of Python that is used here.
-
-!if "$(PYTHON)" == ""
-PYTHON = python
-!endif
-
-# Location of the pkg-config utility program, for building introspection. It needs to be able
-# to find the pkg-config (.pc) files so that the correct libraries and headers for the needed libraries
-# can be located, using PKG_CONFIG_PATH. Using either a 32-bit or x64 pkg-config are supported for
-# either a 32-bit or x64 build.
-
-!if "$(PKG_CONFIG)" == ""
-PKG_CONFIG = pkg-config
-!endif
-
-# The items below this line should not be changed, unless one is maintaining
-# the NMake Makefiles. The exception is for the CFLAGS_ADD line(s) where one
-# could use his/her desired compiler optimization flags, if he/she knows what is
-# being done.
-
-# Check to see we are configured to build with MSVC (MSDEVDIR, MSVCDIR or
-# VCINSTALLDIR) or with the MS Platform SDK (MSSDK or WindowsSDKDir)
-!if !defined(VCINSTALLDIR) && !defined(WINDOWSSDKDIR)
-MSG = ^
-This Makefile is only for Visual Studio 2008 and later.^
-You need to ensure that the Visual Studio Environment is properly set up^
-before running this Makefile.
-!error $(MSG)
-!endif
-
-ERRNUL = 2>NUL
-_HASH=^#
-
-!if ![echo VCVERSION=_MSC_VER > vercl.x] \
- && ![echo $(_HASH)if defined(_M_IX86) >> vercl.x] \
- && ![echo PLAT=Win32 >> vercl.x] \
- && ![echo $(_HASH)elif defined(_M_AMD64) >> vercl.x] \
- && ![echo PLAT=x64 >> vercl.x] \
- && ![echo $(_HASH)endif >> vercl.x] \
- && ![cl -nologo -TC -P vercl.x $(ERRNUL)]
-!include vercl.i
-!if ![echo VCVER= ^\> vercl.vc] \
- && ![set /a $(VCVERSION) / 100 - 6 >> vercl.vc]
-!include vercl.vc
-!endif
-!endif
-!if ![del $(ERRNUL) /q/f vercl.x vercl.i vercl.vc]
-!endif
-
-!if $(VCVERSION) > 1499 && $(VCVERSION) < 1600
-VSVER = 9
-!elseif $(VCVERSION) > 1599 && $(VCVERSION) < 1700
-VSVER = 10
-!elseif $(VCVERSION) > 1699 && $(VCVERSION) < 1800
-VSVER = 11
-!elseif $(VCVERSION) > 1799 && $(VCVERSION) < 1900
-VSVER = 12
-!elseif $(VCVERSION) > 1899 && $(VCVERSION) < 2000
-VSVER = 14
-!else
-VSVER = 0
-!endif
-
-!if "$(VSVER)" == "0"
-MSG = ^
-This NMake Makefile set supports Visual Studio^
-9 (2008) through 14 (2015). Your Visual Studio^
-version is not supported.
-!error $(MSG)
-!endif
-
-VALID_CFGSET = FALSE
-!if "$(CFG)" == "release" || "$(CFG)" == "debug"
-VALID_CFGSET = TRUE
-!endif
-
-# One may change these items, but be sure to test
-# the resulting binaries
-!if "$(CFG)" == "release"
-CFLAGS_ADD = /MD /O2 /GL /MP
-!if "$(VSVER)" != "9"
-CFLAGS_ADD = $(CFLAGS_ADD) /d2Zi+
-!endif
-!else
-CFLAGS_ADD = /MDd /Od
-!endif
-
-!if "$(PLAT)" == "x64"
-LDFLAGS_ARCH = /machine:x64
-!else
-LDFLAGS_ARCH = /machine:x86
-!endif
-
-!if "$(VALID_CFGSET)" == "TRUE"
-CFLAGS = $(CFLAGS_ADD) /W3 /Zi /I.. /I..\src /I. /I$(PREFIX)\include
-
-LDFLAGS_BASE = $(LDFLAGS_ARCH) /libpath:$(PREFIX)\lib /DEBUG
-
-!if "$(CFG)" == "debug"
-LDFLAGS = $(LDFLAGS_BASE)
-!else
-LDFLAGS = $(LDFLAGS_BASE) /opt:ref /LTCG
-!endif
-!endif
diff --git a/win32/generate-msvc.mak b/win32/generate-msvc.mak
deleted file mode 100644
index 48bd9f0..0000000
--- a/win32/generate-msvc.mak
+++ /dev/null
@@ -1,26 +0,0 @@
-# NMake Makefile portion for code generation and
-# intermediate build directory creation
-# Items in here should not need to be edited unless
-# one is maintaining the NMake build files.
-
-# Copy the pre-defined config.h.win32
-config.h: config.h.win32
- @-copy $@.win32 $@
-
-# Generate the enumeration sources and headers
-# sed is not normally available on Windows, but since
-# we are already using PERL, use PERL one-liners.
-!if "$(GOBJECT)" == "1"
-$(HB_GOBJECT_ENUM_GENERATED_SOURCES): ..\src\hb-gobject-enums.h.tmpl ..\src\hb-gobject-enums.cc.tmpl $(HB_ACTUAL_HEADERS)
- $(PERL) $(PREFIX)\bin\glib-mkenums \
- --identifier-prefix hb_ --symbol-prefix hb_gobject \
- --template ..\src\$(@F).tmpl $(HB_ACTUAL_HEADERS) > $@
- $(PERL) -p -i.tmp1 -e "s/_t_get_type/_get_type/g" $@
- $(PERL) -p -i.tmp2 -e "s/_T \(/ (/g" $@
- @-del $@.tmp1
- @-del $@.tmp2
-!endif
-
-# Create the build directories
-$(CFG)\$(PLAT)\harfbuzz $(CFG)\$(PLAT)\harfbuzz-icu $(CFG)\$(PLAT)\harfbuzz-gobject $(CFG)\$(PLAT)\util:
- @-mkdir $@
diff --git a/win32/hb-introspection-msvc.mak b/win32/hb-introspection-msvc.mak
deleted file mode 100644
index 67a0c5e..0000000
--- a/win32/hb-introspection-msvc.mak
+++ /dev/null
@@ -1,42 +0,0 @@
-
-!if "$(BUILD_INTROSPECTION)" == "TRUE"
-# Create the file list for introspection (to avoid the dreaded command-line-too-long problem on Windows)
-$(CFG)\$(PLAT)\hb_list: $(HB_ACTUAL_HEADERS) $(HB_ACTUAL_SOURCES) $(HB_GOBJECT_ENUM_GENERATED_SOURCES) $(HB_GOBJECT_ACTUAL_SOURCES)
- @for %f in ($(HB_ACTUAL_HEADERS) $(HB_ACTUAL_SOURCES) $(HB_GOBJECT_ENUM_GENERATED_SOURCES) $(HB_GOBJECT_ACTUAL_SOURCES)) do @echo %f >> $@
-
-$(CFG)\$(PLAT)\HarfBuzz-0.0.gir: $(CFG)\$(PLAT)\harfbuzz-gobject.lib $(CFG)\$(PLAT)\hb_list
- @set LIB=$(CFG)\$(PLAT);$(PREFIX)\lib;$(LIB)
- @set PATH=$(CFG)\$(PLAT);$(PREFIX)\bin;$(PATH)
- @-echo Generating $@...
- $(PYTHON) $(G_IR_SCANNER) \
- --verbose -no-libtool \
- -I..\src -n hb --identifier-prefix=hb_ --warn-all \
- --namespace=HarfBuzz \
- --nsversion=0.0 \
- --include=GObject-2.0 \
- --library=harfbuzz-gobject \
- --library=harfbuzz \
- --add-include-path=$(G_IR_INCLUDEDIR) \
- --pkg-export=harfbuzz \
- --cflags-begin \
- $(CFLAGS) $(HB_DEFINES) $(HB_CFLAGS) \
- -DHB_H \
- -DHB_H_IN \
- -DHB_OT_H \
- -DHB_OT_H_IN \
- -DHB_GOBJECT_H \
- -DHB_GOBJECT_H_IN \
- --cflags-end \
- --filelist=$(CFG)\$(PLAT)\hb_list \
- -o $@
-
-$(CFG)\$(PLAT)\HarfBuzz-0.0.typelib: $(CFG)\$(PLAT)\HarfBuzz-0.0.gir
- @copy $*.gir $(@B).gir
- $(PREFIX)\bin\g-ir-compiler \
- --includedir=$(CFG)\$(PLAT) --debug --verbose \
- $(@B).gir \
- -o $@
- @del $(@B).gir
-!else
-!error $(ERROR_MSG)
-!endif
diff --git a/win32/info-msvc.mak b/win32/info-msvc.mak
deleted file mode 100644
index bc85dc9..0000000
--- a/win32/info-msvc.mak
+++ /dev/null
@@ -1,137 +0,0 @@
-# NMake Makefile portion for displaying config info
-
-INC_FEATURES = Uniscribe Fallback OT
-BUILT_TOOLS =
-BUILT_LIBRARIES = HarfBuzz
-
-!if "$(GLIB)" == "1"
-UNICODE_IMPL = GLib
-INC_FEATURES = $(INC_FEATURES) GLib
-BUILT_TOOLS = hb-shape.exe hb-ot-shape-closure.exe
-!if "$(CAIRO_FT)" == "1"
-BUILT_TOOLS = hb-view.exe $(BUILT_TOOLS)
-!endif
-!else
-UNICODE_IMPL = ucdn
-!endif
-
-!if "$(FREETYPE)" == "1"
-INC_FEATURES = $(INC_FEATURES) FreeType
-!endif
-
-!if "$(GRAPHITE2)" == "1"
-INC_FEATURES = $(INC_FEATURES) Graphite2
-!endif
-
-!if "$(DIRECTWRITE)" == "1"
-INC_FEATURES = $(INC_FEATURES) DirectWrite
-!endif
-
-!if "$(ICU)" == "1"
-BUILT_LIBRARIES = $(BUILT_LIBRARIES) HarfBuzz-ICU
-!endif
-
-!if "$(GOBJECT)" == "1"
-BUILT_LIBRARIES = $(BUILT_LIBRARIES) HarfBuzz-GObject
-!endif
-
-!if "$(INTROSPECTION)" == "1"
-BUILD_INTROSPECTION = yes
-!else
-BUILD_INTROSPECTION = no
-!endif
-
-build-info-hb:
- @echo.
- @echo ==================================
- @echo Configuration for HarfBuzz Library
- @echo ==================================
- @echo Unicode Implementation: $(UNICODE_IMPL)
- @echo Enabled Features: $(INC_FEATURES)
-
-all-build-info: build-info-hb
- @echo.
- @echo ----------------
- @echo Other build info
- @echo ----------------
- @echo Built Libraries: $(BUILT_LIBRARIES)
- @echo Built Tools: $(BUILT_TOOLS)
- @echo Introspection: $(BUILD_INTROSPECTION)
-
-help:
- @echo.
- @echo =============================
- @echo Building HarfBuzz Using NMake
- @echo =============================
- @echo nmake /f Makefile.vc CFG=[release^|debug] ^<PREFIX=PATH^> OPTION=1 ...
- @echo.
- @echo Where:
- @echo ------
- @echo CFG: Required, use CFG=release for an optimized build and CFG=debug
- @echo for a debug build. PDB files are generated for all builds.
- @echo.
- @echo PREFIX: Optional, the path where dependent libraries and tools may be
- @echo found, default is ^$(srcrootdir)\..\vs^$(short_vs_ver)\^$(platform),
- @echo where ^$(short_vs_ver) is 9 for VS 2008, 10 for VS 2010 and so on; and
- @echo ^$(platform) is Win32 for 32-bit builds and x64 for x64 builds.
- @echo.
- @echo OPTION: Optional, may be any of the following, use OPTION=1 to enable;
- @echo multiple OPTION's may be used. If no OPTION is specified, a default
- @echo HarfBuzz DLL is built with OpenType, fallback and Uniscribe support
- @echo with a bundled Unicode implementation (UCDN).
- @echo ======
- @echo DIRECTWRITE:
- @echo Enable DirectWrite support, requires a recent enough Windows SDK.
- @echo.
- @echo GRAPHITE2:
- @echo Enable graphite2 support, requires the SIL Graphite2 library
- @echo.
- @echo FREETYPE:
- @echo Enable FreeType2 support, requires the FreeType2 library
- @echo.
- @echo GLIB:
- @echo Enable GLib2 support, with GLib Unicode support, requires the GNOME GLib2
- @echo library. Enables the build of utility programs.
- @echo.
- @echo ICU:
- @echo Enable the HarfBuzz-ICU layout library, requires the International
- @echo Components for Unicode (ICU) libraries.
- @echo.
- @echo GOBJECT:
- @echo Enable the HarfBuzz-GObject library, also implies GLib2 support,
- @echo requires the GNOME GLib2 libraries and tools, notably the glib-mkenums
- @echo tool script, which will require a PERL interpretor (use
- @echo PERL=^$(PATH_TO_PERL_INTERPRETOR)) if it is not already in your PATH).
- @echo.
- @echo INTROSPECTION:
- @echo Enable the build of introspection files, also implies GObject/GLib2 support,
- @echo requires the GNOME gobject-introspection libraries and tools. You will need
- @echo to ensure the pkg-config (.pc) files can be found for GObject-2.0 and the
- @echo Python interpretor (that was used to build the gobject-introsoection tools)
- @echo can be found by setting PKG_CONFIG_PATH beforehand, and passing in PYTHON=
- @echo ^$(PATH_TO_PYTHON_INTERPRETOR) respectively, if python.exe is not already
- @echo in your PATH.
- @echo.
- @echo CAIRO_FT:
- @echo Enables Cairo-Freetype support, needed for the build of the hb-view utility.
- @echo Implies FreeType2 support and also requires Cairo built with FreeType2
- @echo support; GLib2 support must also be enabled.
- @echo.
- @echo LIBTOOL_DLL_NAME:
- @echo Use a libtool-style DLL name to mimic the DLL file naming generated by
- @echo MinGW builds.
- @echo.
- @echo Note that GLib2 support is required for all utility and test programs.
- @echo ======
- @echo A 'clean' target is supported to remove all generated files, intermediate
- @echo object files and binaries for the specified configuration.
- @echo.
- @echo A 'tests' target is supported to build the test programs, if GLib2 support
- @echo is enabled. Use after building the libraries and utilities.
- @echo.
- @echo An 'install' target is supported to copy the build (DLLs, utility programs,
- @echo LIBs, along with the introspection files if applicable) to appropriate
- @echo locations under ^$(PREFIX).
- @echo ======
- @echo.
-
diff --git a/win32/install.mak b/win32/install.mak
deleted file mode 100644
index fa239ea..0000000
--- a/win32/install.mak
+++ /dev/null
@@ -1,29 +0,0 @@
-# NMake Makefile snippet for copying the built libraries, utilities and headers to
-# a path under $(PREFIX).
-
-install: all
- @if not exist $(PREFIX)\bin\ mkdir $(PREFIX)\bin
- @if not exist $(PREFIX)\lib\ mkdir $(PREFIX)\lib
- @if not exist $(PREFIX)\include\harfbuzz\ mkdir $(PREFIX)\include\harfbuzz
- @copy /b $(HARFBUZZ_DLL_FILENAME).dll $(PREFIX)\bin
- @copy /b $(HARFBUZZ_DLL_FILENAME).pdb $(PREFIX)\bin
- @copy /b $(CFG)\$(PLAT)\harfbuzz.lib $(PREFIX)\lib
- @if exist $(HARFBUZZ_ICU_DLL_FILENAME).dll copy /b $(HARFBUZZ_ICU_DLL_FILENAME).dll $(PREFIX)\bin
- @if exist $(HARFBUZZ_ICU_DLL_FILENAME).dll copy /b $(HARFBUZZ_ICU_DLL_FILENAME).pdb $(PREFIX)\bin
- @if exist $(HARFBUZZ_ICU_DLL_FILENAME).dll copy /b $(CFG)\$(PLAT)\harfbuzz-icu.lib $(PREFIX)\lib
- @if exist $(HARFBUZZ_GOBJECT_DLL_FILENAME).dll copy /b $(HARFBUZZ_GOBJECT_DLL_FILENAME).dll $(PREFIX)\bin
- @if exist $(HARFBUZZ_GOBJECT_DLL_FILENAME).dll copy /b $(HARFBUZZ_GOBJECT_DLL_FILENAME).pdb $(PREFIX)\bin
- @if exist $(HARFBUZZ_GOBJECT_DLL_FILENAME).dll copy /b $(CFG)\$(PLAT)\harfbuzz-gobject.lib $(PREFIX)\lib
- @if exist $(CFG)\$(PLAT)\hb-view.exe copy /b $(CFG)\$(PLAT)\hb-view.exe $(PREFIX)\bin
- @if exist $(CFG)\$(PLAT)\hb-view.exe copy /b $(CFG)\$(PLAT)\hb-view.pdb $(PREFIX)\bin
- @if exist $(CFG)\$(PLAT)\hb-ot-shape-closure.exe copy /b $(CFG)\$(PLAT)\hb-ot-shape-closure.exe $(PREFIX)\bin
- @if exist $(CFG)\$(PLAT)\hb-ot-shape-closure.exe copy /b $(CFG)\$(PLAT)\hb-ot-shape-closure.pdb $(PREFIX)\bin
- @if exist $(CFG)\$(PLAT)\hb-shape.exe copy /b $(CFG)\$(PLAT)\hb-shape.exe $(PREFIX)\bin
- @if exist $(CFG)\$(PLAT)\hb-shape.exe copy /b $(CFG)\$(PLAT)\hb-shape.pdb $(PREFIX)\bin
- @for %h in ($(HB_ACTUAL_HEADERS)) do @copy %h $(PREFIX)\include\harfbuzz
- @if exist $(HARFBUZZ_ICU_DLL_FILENAME).dll for %h in ($(HB_ICU_headers)) do @copy ..\src\%h $(PREFIX)\include\harfbuzz
- @if exist $(HARFBUZZ_GOBJECT_DLL_FILENAME).dll for %h in ($(HB_GOBJECT_headers)) do @copy ..\src\%h $(PREFIX)\include\harfbuzz
- @if exist $(HARFBUZZ_GOBJECT_DLL_FILENAME).dll copy $(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.h $(PREFIX)\include\harfbuzz
- @rem Copy the generated introspection files
- @if exist $(CFG)\$(PLAT)\HarfBuzz-0.0.gir copy $(CFG)\$(PLAT)\HarfBuzz-0.0.gir $(PREFIX)\share\gir-1.0
- @if exist $(CFG)\$(PLAT)\HarfBuzz-0.0.typelib copy /b $(CFG)\$(PLAT)\HarfBuzz-0.0.typelib $(PREFIX)\lib\girepository-1.0
diff --git a/win32/introspection-msvc.mak b/win32/introspection-msvc.mak
deleted file mode 100644
index d32f7cf..0000000
--- a/win32/introspection-msvc.mak
+++ /dev/null
@@ -1,73 +0,0 @@
-# Common NMake Makefile module for checking the build environment is sane
-# for building introspection files under MSVC/NMake.
-# This can be copied from $(gi_srcroot)\build\win32 for GNOME items
-# that support MSVC builds and introspection under MSVC.
-
-# Can override with env vars as needed
-# You will need to have built gobject-introspection for this to work.
-# Change or pass in or set the following to suit your environment
-
-!if "$(PREFIX)" == ""
-PREFIX = ..\..\..\vs$(VSVER)\$(PLAT)
-!endif
-
-# Note: The PYTHON must be the Python release series that was used to build
-# the GObject-introspection scanner Python module!
-# Either having python.exe your PATH will work or passing in
-# PYTHON=<full path to your Python interpretor> will do
-
-# This is required, and gobject-introspection needs to be built
-# before this can be successfully run.
-!if "$(PYTHON)" == ""
-PYTHON=python
-!endif
-
-# Don't change anything following this line!
-
-GIR_SUBDIR = share\gir-1.0
-GIR_TYPELIBDIR = lib\girepository-1.0
-G_IR_SCANNER = $(PREFIX)\bin\g-ir-scanner
-G_IR_COMPILER = $(PREFIX)\bin\g-ir-compiler.exe
-G_IR_INCLUDEDIR = $(PREFIX)\$(GIR_SUBDIR)
-G_IR_TYPELIBDIR = $(PREFIX)\$(GIR_TYPELIBDIR)
-
-VALID_PKG_CONFIG_PATH = FALSE
-
-MSG_INVALID_PKGCONFIG = You must set or specifiy a valid PKG_CONFIG_PATH
-MSG_INVALID_CFG = You need to specify or set CFG to be release or debug to use this Makefile to build the Introspection Files
-
-ERROR_MSG =
-
-BUILD_INTROSPECTION = TRUE
-
-!if ![pkg-config --print-errors --errors-to-stdout $(CHECK_PACKAGE) > pkgconfig.x] \
- && ![setlocal] \
- && ![set file="pkgconfig.x"] \
- && ![FOR %A IN (%file%) DO @echo PKG_CHECK_SIZE=%~zA > pkgconfig.chksize] \
- && ![del $(ERRNUL) /q/f pkgconfig.x]
-!endif
-
-!include pkgconfig.chksize
-!if "$(PKG_CHECK_SIZE)" == "0"
-VALID_PKG_CONFIG_PATH = TRUE
-!else
-VALID_PKG_CONFIG_PATH = FALSE
-!endif
-
-!if ![del $(ERRNUL) /q/f pkgconfig.chksize]
-!endif
-
-VALID_CFGSET = FALSE
-!if "$(CFG)" == "release" || "$(CFG)" == "debug"
-VALID_CFGSET = TRUE
-!endif
-
-!if "$(VALID_PKG_CONFIG_PATH)" != "TRUE"
-BUILD_INTROSPECTION = FALSE
-ERROR_MSG = $(MSG_INVALID_PKGCONFIG)
-!endif
-
-!if "$(VALID_CFGSET)" != "TRUE"
-BUILD_INTROSPECTION = FALSE
-ERROR_MSG = $(MSG_INVALID_CFG)
-!endif