.ci/run-coveralls.sh | 2 + .ci/trigger-coverity.sh | 6 +--- .travis.yml | 5 +-- src/Makefile.sources | 2 - src/dev-run.sh | 22 ++++++++++++-- src/hb-aat-layout-kerx-table.hh | 1 src/hb-ot-color-cbdt-table.hh | 6 ++-- src/hb-ot-color-colr-table.hh | 37 ++++++++++++++----------- src/hb-ot-color-cpal-table.hh | 59 +++++++++++++--------------------------- src/hb-ot-color.h | 12 +------- src/hb-ot-font.cc | 3 +- src/hb-ot-glyf-table.hh | 1 src/hb-set-private.hh | 39 ++++++++++++++++++++------ src/test-unicode-ranges.cc | 2 - test/api/test-set.c | 10 ++++++ 15 files changed, 115 insertions(+), 92 deletions(-)
New commits: commit f014a124f582215fa96afc28b534a1ca0bf17167 Author: Behdad Esfahbod <beh...@behdad.org> Date: Wed Mar 7 10:49:26 2018 +0100 [set] Fix algebra Was totally b0rked. Ouch! Fixes https://github.com/harfbuzz/harfbuzz/issues/863 diff --git a/src/hb-set-private.hh b/src/hb-set-private.hh index 09ca010d..3615c50e 100644 --- a/src/hb-set-private.hh +++ b/src/hb-set-private.hh @@ -389,6 +389,7 @@ struct hb_set_t unsigned int na = pages.len; unsigned int nb = other->pages.len; + unsigned int next_page = na; unsigned int count = 0; unsigned int a = 0, b = 0; @@ -431,6 +432,7 @@ struct hb_set_t a--; b--; count--; + page_map[count] = page_map[a]; Op::process (page_at (count).v, page_at (a).v, other->page_at (b).v); } else if (page_map[a - 1].major > other->page_map[b - 1].major) @@ -439,7 +441,7 @@ struct hb_set_t if (Op::passthru_left) { count--; - page_at (count).v = page_at (a).v; + page_map[count] = page_map[a]; } } else @@ -448,16 +450,28 @@ struct hb_set_t if (Op::passthru_right) { count--; + page_map[count].major = other->page_map[b].major; + page_map[count].index = next_page++; page_at (count).v = other->page_at (b).v; } } } if (Op::passthru_left) while (a) - page_at (--count).v = page_at (--a).v; + { + a--; + count--; + page_map[count] = page_map [a]; + } if (Op::passthru_right) while (b) - page_at (--count).v = other->page_at (--b).v; + { + b--; + count--; + page_map[count].major = other->page_map[b].major; + page_map[count].index = next_page++; + page_at (count).v = other->page_at (b).v; + } assert (!count); } commit 7587683cdce8ee9b7f07bae82aa1bb163e79ab92 Author: Behdad Esfahbod <beh...@behdad.org> Date: Wed Mar 7 09:55:22 2018 +0100 [set] Minor In preparation to fix https://github.com/harfbuzz/harfbuzz/issues/863 Binary operations are sets are completely broken. Ouch. diff --git a/src/hb-set-private.hh b/src/hb-set-private.hh index 49cd7912..09ca010d 100644 --- a/src/hb-set-private.hh +++ b/src/hb-set-private.hh @@ -430,19 +430,26 @@ struct hb_set_t { a--; b--; - Op::process (page_at (--count).v, page_at (a).v, other->page_at (b).v); + count--; + Op::process (page_at (count).v, page_at (a).v, other->page_at (b).v); } else if (page_map[a - 1].major > other->page_map[b - 1].major) { - a--; - if (Op::passthru_left) - page_at (--count).v = page_at (a).v; + a--; + if (Op::passthru_left) + { + count--; + page_at (count).v = page_at (a).v; + } } else { - b--; - if (Op::passthru_right) - page_at (--count).v = other->page_at (b).v; + b--; + if (Op::passthru_right) + { + count--; + page_at (count).v = other->page_at (b).v; + } } } if (Op::passthru_left) commit e4cbb87bd3512c3a6e97ea3923ecd1b26b0a1251 Author: Behdad Esfahbod <beh...@behdad.org> Date: Wed Mar 7 09:37:22 2018 +0100 Minor diff --git a/src/hb-ot-color-colr-table.hh b/src/hb-ot-color-colr-table.hh index 15bfafbb..2c3b1ccc 100644 --- a/src/hb-ot-color-colr-table.hh +++ b/src/hb-ot-color-colr-table.hh @@ -93,7 +93,7 @@ struct COLR return_trace (true); } - inline const bool get_base_glyph_record ( + inline bool get_base_glyph_record ( hb_codepoint_t glyph_id, unsigned int &first_layer, unsigned int &num_layers) const { const BaseGlyphRecord* base_glyph_records = &baseGlyphRecordsZ (this); commit c6150333c29b458ed34858f24e94acc0f771aa0b Author: Behdad Esfahbod <beh...@behdad.org> Date: Wed Mar 7 09:27:16 2018 +0100 Sign diff --git a/src/test-unicode-ranges.cc b/src/test-unicode-ranges.cc index 16d01ef2..dbc5fa42 100644 --- a/src/test-unicode-ranges.cc +++ b/src/test-unicode-ranges.cc @@ -29,7 +29,7 @@ #include "hb-ot-os2-unicode-ranges.hh" void -test (hb_codepoint_t cp, int bit) +test (hb_codepoint_t cp, unsigned int bit) { if (OT::hb_get_unicode_range_bit (cp) != bit) { commit 9a6f9b4d4284f0378a71a181fe216d97c913669e Author: Garret Rieger <grie...@google.com> Date: Tue Mar 6 13:46:51 2018 -0800 [set] add a test demonstrating a bug in hb_set_union. diff --git a/test/api/test-set.c b/test/api/test-set.c index 1c51e846..15958c57 100644 --- a/test/api/test-set.c +++ b/test/api/test-set.c @@ -137,10 +137,13 @@ test_set_algebra (void) { hb_set_t *s = hb_set_create (); hb_set_t *o = hb_set_create (); + hb_set_t *o2 = hb_set_create (); hb_set_add (o, 13); hb_set_add (o, 19); + hb_set_add (o2, 0x660E); + test_empty (s); g_assert (!hb_set_is_equal (s, o)); hb_set_set (s, o); @@ -159,6 +162,13 @@ test_set_algebra (void) hb_set_clear (s); test_empty (s); + g_assert_cmpint (hb_set_get_population (s), ==, 0); + hb_set_union (s, o2); + g_assert_cmpint (hb_set_get_population (s), ==, 1); + g_assert (hb_set_has (s, 0x660E)); + + hb_set_clear (s); + test_empty (s); hb_set_add_range (s, 10, 17); g_assert (!hb_set_is_equal (s, o)); hb_set_intersect (s, o); commit 9b4a5d7ef1ec068042e3c793845a4dbc3308d4b7 Author: Ebrahim Byagowi <ebra...@gnu.org> Date: Wed Mar 7 00:23:40 2018 +0330 [ci] Enable -Werror=unused (#862) diff --git a/.travis.yml b/.travis.yml index 0d719641..69b09c18 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,8 +6,8 @@ language: cpp env: global: - CPPFLAGS="" - - CFLAGS="-Werror -Werror=unused-function" - - CXXFLAGS="-Werror -Werror=unused-function -Wno-deprecated-register" # glib uses register and clang raises a warning + - CFLAGS="-Werror -Werror=unused -Werror=unused-function" + - CXXFLAGS="-Werror -Werror=unused -Werror=unused-function -Wno-deprecated-register" # glib uses register and clang raises a warning - CONFIGURE_OPTS="--with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2" - NOCONFIGURE=1 # COVERITY_SCAN_TOKEN diff --git a/src/hb-ot-glyf-table.hh b/src/hb-ot-glyf-table.hh index e4d3ec85..d62f24bd 100644 --- a/src/hb-ot-glyf-table.hh +++ b/src/hb-ot-glyf-table.hh @@ -299,7 +299,6 @@ struct glyf return true; else if (num_contours > 0) { - unsigned int glyph_len = *end_offset - start_offset; /* simple glyph w/contours, possibly trimmable */ glyph += GlyphHeader::static_size + 2 * num_contours; commit 54cbe6702c1e4c934c60512367abaf801294c1bb Author: Ebrahim Byagowi <ebra...@gnu.org> Date: Tue Mar 6 16:41:08 2018 +0330 [ot-color] Further improvements on COLR/CPAL implementation (#859) * Implemented a bsearch on get_base_glyph_record * Made get_color_record_argb actually work diff --git a/src/hb-ot-color-colr-table.hh b/src/hb-ot-color-colr-table.hh index f9d65aa8..15bfafbb 100644 --- a/src/hb-ot-color-colr-table.hh +++ b/src/hb-ot-color-colr-table.hh @@ -80,41 +80,46 @@ struct COLR { TRACE_SANITIZE (this); if (!(c->check_struct (this) && - c->check_array ((const void*) &layerRecordsOffset, sizeof (LayerRecord), numLayerRecords) && - c->check_array ((const void*) &baseGlyphRecords, sizeof (BaseGlyphRecord), numBaseGlyphRecords))) + c->check_array ((const void*) &layerRecordsOffsetZ, sizeof (LayerRecord), numLayerRecords) && + c->check_array ((const void*) &baseGlyphRecordsZ, sizeof (BaseGlyphRecord), numBaseGlyphRecords))) return_trace (false); - const BaseGlyphRecord* base_glyph_records = &baseGlyphRecords (this); + const BaseGlyphRecord* base_glyph_records = &baseGlyphRecordsZ (this); for (unsigned int i = 0; i < numBaseGlyphRecords; ++i) if (base_glyph_records[i].firstLayerIndex + base_glyph_records[i].numLayers > numLayerRecords) return_trace (false); - /* XXX values of LayerRecord structs should be sanitized */ - return_trace (true); } inline const bool get_base_glyph_record ( hb_codepoint_t glyph_id, unsigned int &first_layer, unsigned int &num_layers) const { - /* TODO replace with bsearch */ - const BaseGlyphRecord* base_glyph_records = &baseGlyphRecords (this); - unsigned int records = numBaseGlyphRecords; - for (unsigned int i = 0; i < records; ++i) - if (base_glyph_records[i].gID == glyph_id) + const BaseGlyphRecord* base_glyph_records = &baseGlyphRecordsZ (this); + unsigned int min = 0, max = numBaseGlyphRecords - 1; + while (min <= max) + { + unsigned int mid = (min + max) / 2; + hb_codepoint_t gID = base_glyph_records[mid].gID; + if (gID > glyph_id) + max = mid - 1; + else if (gID < glyph_id) + min = mid + 1; + else { - first_layer = base_glyph_records[i].firstLayerIndex; - num_layers = base_glyph_records[i].numLayers; + first_layer = base_glyph_records[mid].firstLayerIndex; + num_layers = base_glyph_records[mid].numLayers; return true; } + } return false; } inline void get_layer_record (int layer, hb_codepoint_t &glyph_id, unsigned int &palette_index) const { - const LayerRecord* records = &layerRecordsOffset (this); + const LayerRecord* records = &layerRecordsOffsetZ (this); glyph_id = records[layer].gID; palette_index = records[layer].paletteIndex; } @@ -123,9 +128,9 @@ struct COLR HBUINT16 version; /* Table version number */ HBUINT16 numBaseGlyphRecords; /* Number of Base Glyph Records */ LOffsetTo<BaseGlyphRecord> - baseGlyphRecords; /* Offset to Base Glyph records. */ + baseGlyphRecordsZ; /* Offset to Base Glyph records. */ LOffsetTo<LayerRecord> - layerRecordsOffset; /* Offset to Layer Records */ + layerRecordsOffsetZ; /* Offset to Layer Records */ HBUINT16 numLayerRecords; /* Number of Layer Records */ public: DEFINE_SIZE_STATIC (14); diff --git a/src/hb-ot-color-cpal-table.hh b/src/hb-ot-color-cpal-table.hh index 135862d4..d2741879 100644 --- a/src/hb-ot-color-cpal-table.hh +++ b/src/hb-ot-color-cpal-table.hh @@ -40,25 +40,6 @@ namespace OT { -struct ColorRecord -{ - friend struct CPAL; - - inline bool sanitize (hb_sanitize_context_t *c) const - { - TRACE_SANITIZE (this); - return_trace (true); - } - - protected: - HBUINT8 blue; - HBUINT8 green; - HBUINT8 red; - HBUINT8 alpha; - public: - DEFINE_SIZE_STATIC (4); -}; - struct CPALV1Tail { friend struct CPAL; @@ -96,6 +77,8 @@ struct CPALV1Tail DEFINE_SIZE_STATIC (12); }; +typedef HBUINT32 BGRAColor; + struct CPAL { static const hb_tag_t tableTag = HB_OT_TAG_CPAL; @@ -103,16 +86,13 @@ struct CPAL inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - if (!(c->check_struct (this) && - colorRecords.sanitize (c))) - return_trace (false); - - unsigned int palettes = numPalettes; - if (!c->check_array (colorRecordIndices, sizeof (HBUINT16), palettes)) + if (!(c->check_struct (this) && // This checks colorRecordIndicesX sanity also, see #get_size + c->check_array ((const void*) &colorRecordsZ, sizeof (BGRAColor), numColorRecords))) return_trace (false); - for (unsigned int i = 0; i < palettes; ++i) - if (colorRecordIndices[i] + numPaletteEntries > colorRecords.get_size ()) + // Check for indices sanity so no need for doing it runtime + for (unsigned int i = 0; i < numPalettes; ++i) + if (colorRecordIndicesX[i] + numPaletteEntries > numColorRecords) return_trace (false); // If version is zero, we are done here; otherwise we need to check tail also @@ -120,12 +100,12 @@ struct CPAL return_trace (true); const CPALV1Tail &v1 = StructAfter<CPALV1Tail> (*this); - return_trace (v1.sanitize (c, palettes)); + return_trace (v1.sanitize (c, numPalettes)); } inline unsigned int get_size (void) const { - return min_size + numPalettes * 2; + return min_size + numPalettes * sizeof (HBUINT16); } inline hb_ot_color_palette_flags_t get_palette_flags (unsigned int palette) const @@ -151,14 +131,14 @@ struct CPAL return numPalettes; } - inline void get_color_record (int palette_index, uint8_t &r, uint8_t &g, - uint8_t &b, uint8_t &a) const + inline hb_ot_color_t get_color_record_argb (unsigned int color_index, unsigned int palette) const { - // We should check if palette_index is in range as it is not done on COLR sanitization - r = colorRecords[palette_index].red; - g = colorRecords[palette_index].green; - b = colorRecords[palette_index].blue; - a = colorRecords[palette_index].alpha; + if (color_index >= numPaletteEntries || palette >= numPalettes) + return 0; + + const BGRAColor* records = &colorRecordsZ(this); + // No need for more range check as it is already done on #sanitize + return records[colorRecordIndicesX[palette] + color_index]; } protected: @@ -166,11 +146,12 @@ struct CPAL /* Version 0 */ HBUINT16 numPaletteEntries; HBUINT16 numPalettes; - ArrayOf<ColorRecord> colorRecords; - HBUINT16 colorRecordIndices[VAR]; // VAR=numPalettes + HBUINT16 numColorRecords; + LOffsetTo<HBUINT32> colorRecordsZ; + HBUINT16 colorRecordIndicesX[VAR]; // VAR=numPalettes /*CPALV1Tail v1[VAR];*/ public: - DEFINE_SIZE_ARRAY (12, colorRecordIndices); + DEFINE_SIZE_ARRAY (12, colorRecordIndicesX); }; } /* namespace OT */ diff --git a/src/hb-ot-color.h b/src/hb-ot-color.h index 8c276e59..44b3406e 100644 --- a/src/hb-ot-color.h +++ b/src/hb-ot-color.h @@ -39,19 +39,11 @@ HB_BEGIN_DECLS /** * hb_ot_color_t: - * @red: the intensity of the red channel - * @green: the intensity of the green channel - * @blue: the intensity of the blue channel - * @alpha: the transparency - * - * Structure for holding color values. + * ARGB data type for holding color values. * * Since: REPLACEME */ -typedef struct -{ - uint8_t red, green, blue, alpha; -} hb_ot_color_t; +typedef uint32_t hb_ot_color_t; /** commit 18d14b8e0d5d28106800ebf835ff3155a4f4de7c Author: Ebrahim Byagowi <ebra...@gnu.org> Date: Mon Mar 5 14:25:11 2018 +0330 [dev-run] an option to open using a GUI app diff --git a/src/dev-run.sh b/src/dev-run.sh index 9c82db0b..e3d5bccc 100755 --- a/src/dev-run.sh +++ b/src/dev-run.sh @@ -9,7 +9,10 @@ # $ cmake -DHB_CHECK=ON -Bbuild -H. -GNinja && ninja -Cbuild # $ src/dev-run.sh [FONT-FILE] [TEXT] # -# If you are using iTerm2, issue the script like this: +# If you want to open the result rendering using a GUI app, +# $ src/dev-run.sh open [FONT-FILE] [TEXT] +# +# And if you are using iTerm2, you can use the script like this, # $ src/dev-run.sh img [FONT-FILE] [TEXT] # @@ -22,6 +25,11 @@ GDB=gdb command -v $GDB >/dev/null 2>&1 || export GDB="lldb" +[ $1 = "open" ] && openimg=1 && shift +OPEN=xdg-open +[ "$(uname)" == "Darwin" ] && OPEN=open + + [ $1 = "img" ] && img=1 && shift # http://iterm2.com/documentation-images.html osc="\033]" @@ -30,7 +38,7 @@ st="\a" if [[ $TERM == screen* ]]; then st="\a"; fi -tmp=$(mktemp) +tmp=tmp.png [ -f 'build/build.ninja' ] && CMAKENINJA=TRUE # or "fswatch -0 . -e build/ -e .git" find src/ | entr printf '\0' | while read -d ""; do @@ -39,7 +47,10 @@ find src/ | entr printf '\0' | while read -d ""; do if [[ $CMAKENINJA ]]; then ninja -Cbuild hb-shape hb-view && { build/hb-shape $@ - if [ $img ]; then + if [ $openimg ]; then + build/hb-view $@ -O png -o $tmp + $OPEN $tmp + elif [ $img ]; then build/hb-view $@ -O png -o $tmp printf "\n${osc}1337;File=;inline=1:`cat $tmp | base64`${st}\n" else @@ -49,7 +60,10 @@ find src/ | entr printf '\0' | while read -d ""; do else make -Cbuild/src -j5 -s lib && { build/util/hb-shape $@ - if [ $img ]; then + if [ $openimg ]; then + build/util/hb-view $@ -O png -o $tmp + $OPEN $tmp + elif [ $img ]; then build/util/hb-view $@ -O png -o $tmp printf "\n${osc}1337;File=;inline=1:`cat $tmp | base64`${st}\n" else commit 1db83954948dfae3f75f61c535c5de1b3a843a69 Author: Ebrahim Byagowi <ebra...@gnu.org> Date: Mon Mar 5 13:02:50 2018 +0330 [ci] minor, bring back the removed assertion diff --git a/.ci/run-coveralls.sh b/.ci/run-coveralls.sh index 59b4c56d..8d1ceb5e 100755 --- a/.ci/run-coveralls.sh +++ b/.ci/run-coveralls.sh @@ -3,6 +3,8 @@ set -x set -o errexit -o nounset +if test x"$TRAVIS_REPO_SLUG" != x"harfbuzz/harfbuzz"; then exit; fi + pip install --user nose pip install --user cpp-coveralls export PATH=$HOME/.local/bin:$PATH commit 5895fe3d4d0441dacf8989740cf4150193397796 Author: Ebrahim Byagowi <ebra...@gnu.org> Date: Mon Mar 5 12:58:34 2018 +0330 [ci] minor diff --git a/.ci/trigger-coverity.sh b/.ci/trigger-coverity.sh index e2416922..19852bd1 100644 --- a/.ci/trigger-coverity.sh +++ b/.ci/trigger-coverity.sh @@ -3,10 +3,8 @@ set -x set -o errexit -o nounset -if test "x$TRAVIS_EVENT_TYPE" != x"cron"; then exit; fi - -BRANCH="$TRAVIS_BRANCH" -if test "x$BRANCH" != xmaster; then exit; fi +if test x"$TRAVIS_EVENT_TYPE" != x"cron"; then exit; fi +if test x"$TRAVIS_BRANCH" != x"master"; then exit; fi git fetch --unshallow git remote add upstream "https://$gh_to...@github.com/harfbuzz/harfbuzz.git" commit a3e29fd38f01b26b6306f9f7142a54cc7d6c6080 Author: Ebrahim Byagowi <ebra...@gnu.org> Date: Sun Mar 4 02:56:27 2018 +0330 [aat/kerx] Add a TODO diff --git a/src/hb-aat-layout-kerx-table.hh b/src/hb-aat-layout-kerx-table.hh index 2414ecbf..ce7ca105 100644 --- a/src/hb-aat-layout-kerx-table.hh +++ b/src/hb-aat-layout-kerx-table.hh @@ -299,6 +299,7 @@ struct kerx if (!(c->check_struct (this))) return_trace (false); + /* TODO: Something like `morx`s ChainSubtable should be done here instead */ const KerxTable *table = &StructAfter<KerxTable> (*this); if (!(table->sanitize (c))) return_trace (false); commit 0ef6ab25ab4456e387711ae246900486ad738d26 Author: Ebrahim Byagowi <ebra...@gnu.org> Date: Sun Mar 4 02:47:26 2018 +0330 [ot-color] Move cbdt to the namespace (#860) diff --git a/src/Makefile.sources b/src/Makefile.sources index cb4a63c0..5428c6b1 100644 --- a/src/Makefile.sources +++ b/src/Makefile.sources @@ -17,7 +17,7 @@ HB_BASE_sources = \ hb-object-private.hh \ hb-open-file-private.hh \ hb-open-type-private.hh \ - hb-ot-cbdt-table.hh \ + hb-ot-color-cbdt-table.hh \ hb-ot-cmap-table.hh \ hb-ot-glyf-table.hh \ hb-ot-hdmx-table.hh \ diff --git a/src/hb-ot-cbdt-table.hh b/src/hb-ot-color-cbdt-table.hh similarity index 99% rename from src/hb-ot-cbdt-table.hh rename to src/hb-ot-color-cbdt-table.hh index e4519529..e7ab917e 100644 --- a/src/hb-ot-cbdt-table.hh +++ b/src/hb-ot-color-cbdt-table.hh @@ -24,8 +24,8 @@ * Google Author(s): Seigo Nonaka */ -#ifndef HB_OT_CBDT_TABLE_HH -#define HB_OT_CBDT_TABLE_HH +#ifndef HB_OT_COLOR_CBDT_TABLE_HH +#define HB_OT_COLOR_CBDT_TABLE_HH #include "hb-open-type-private.hh" @@ -468,4 +468,4 @@ struct CBDT } /* namespace OT */ -#endif /* HB_OT_CBDT_TABLE_HH */ +#endif /* HB_OT_COLOR_CBDT_TABLE_HH */ diff --git a/src/hb-ot-font.cc b/src/hb-ot-font.cc index 9864064b..0e373d30 100644 --- a/src/hb-ot-font.cc +++ b/src/hb-ot-font.cc @@ -31,12 +31,13 @@ #include "hb-font-private.hh" #include "hb-ot-cmap-table.hh" -#include "hb-ot-cbdt-table.hh" #include "hb-ot-glyf-table.hh" #include "hb-ot-hmtx-table.hh" #include "hb-ot-kern-table.hh" #include "hb-ot-post-table.hh" +#include "hb-ot-color-cbdt-table.hh" + struct hb_ot_font_t { commit 6659cb56fae0c900ae88e95bedcb3b76234c8838 Author: Ebrahim Byagowi <ebra...@gnu.org> Date: Sun Mar 4 02:31:53 2018 +0330 [ci] Remove --coverage as use of --enable-code-coverage diff --git a/.travis.yml b/.travis.yml index 9ab686c4..0d719641 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,9 +6,8 @@ language: cpp env: global: - CPPFLAGS="" - - CFLAGS="-Werror -Werror=unused-function --coverage" - - CXXFLAGS="-Werror -Werror=unused-function -Wno-deprecated-register --coverage" # glib uses register and clang raises a warning - - LDFLAGS="--coverage" + - CFLAGS="-Werror -Werror=unused-function" + - CXXFLAGS="-Werror -Werror=unused-function -Wno-deprecated-register" # glib uses register and clang raises a warning - CONFIGURE_OPTS="--with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2" - NOCONFIGURE=1 # COVERITY_SCAN_TOKEN _______________________________________________ HarfBuzz mailing list HarfBuzz@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/harfbuzz