Commit Graph

191 Commits

Author SHA1 Message Date
Behdad Esfahbod fe8f40a418
Merge branch 'master' into bitops 2018-02-18 10:45:33 -08:00
Behdad Esfahbod 04dedec96b [test] Remove unused var 2018-02-16 18:32:57 -08:00
Behdad Esfahbod 6d56db8983 [test/api] Distribute all fonts 2018-02-16 18:29:29 -08:00
Garret Rieger df9e22656d [subset] add a glyf subsetting test for a font with composite glyphs. 2018-02-16 18:29:29 -08:00
Garret Rieger c36d015b0e [subset] missing return. 2018-02-16 18:29:29 -08:00
Behdad Esfahbod 7b5ce74047 Fix warnings 2018-02-16 15:38:02 -08:00
Rod Sheeter c7a633f957 [subset] try to get more info from bot where g_assert_cmpmem fails 2018-02-16 11:11:20 -08:00
Rod Sheeter 0bb2d7ac12 [subset] fix int type for blob length in hb-subset-test.h 2018-02-16 06:26:02 -08:00
Rod Sheeter 6122ad2442 [subset] add files to EXTRA_DIST 2018-02-15 11:40:28 -08:00
Rod Sheeter 27012526f9 [subset] whitespace 2018-02-14 19:01:00 -08:00
Garret Rieger e0ffebead6 [subset] In hb-subset-test use hb_set_union instead of manually copying set. 2018-02-14 16:01:08 -08:00
Rod Sheeter fa87770372 [subset] First pass at hmtx 2018-02-14 14:53:10 -08:00
Garret Rieger e5edcc81bf [subset] Fix codepoint iteration in hb-subset-test. 2018-02-14 11:17:53 -08:00
Garret Rieger 8b1dbbef1a Fix compile error in hb-subset-test. 2018-02-14 11:05:19 -08:00
Behdad Esfahbod f53627e191 [test] Fix warning 2018-02-14 10:59:22 -08:00
Garret Rieger d008b62887 Merge remote-tracking branch 'upstream/master' into fixed 2018-02-14 10:38:52 -08:00
Garret Rieger df6d780355 [subset] Extract maxp subsetting into hb-ot-maxp-table. 2018-02-14 10:19:50 -08:00
Garret Rieger 865b6971ad [subset] Add a test for OS/2 fixes during subsetting. 2018-02-14 10:19:50 -08:00
Behdad Esfahbod 694eaf6367 [set] Add backwards iterator
New API:
- hb_set_previous()
- hb_set_previous_range()
2018-02-14 01:00:10 -08:00
Behdad Esfahbod 9046e92442 [subset] Rename constructor to hb_subset_input_create_or_fail()
To signify that unlike rest of library, returns nullptr on failure.
2018-02-13 22:07:12 -08:00
Behdad Esfahbod d5b33f2fe1 [subset] hb_subset_input_t changes 2018-02-13 13:55:10 -08:00
Garret Rieger 8cf8b78faa [subset] whitespace 2018-02-12 16:30:21 -08:00
Rod Sheeter 89ee20f1a3 basic wiring for a (failing) cmap test 2018-02-12 16:01:15 -08:00
Garret Rieger 1639bdd331 [subset] Remove test-subset, testing is planned to be done at the table level here with test/subset covering the complete subsetting operation. 2018-02-12 13:40:42 -08:00
Garret Rieger 4cdd1b16c9 [subset] added todo in test-subset-glyf. 2018-02-12 13:36:28 -08:00
Garret Rieger 1714feef4f [subset] re-enable test-subset-glyf. Refactor to use common functions in hb-subset-test.h 2018-02-12 13:35:17 -08:00
Garret Rieger d8d8bd8405 [subset] Add some helper functions for writing tests around subsetting. 2018-02-12 13:34:08 -08:00
Behdad Esfahbod d33ba16361 Fix more warnings 2018-02-11 18:26:41 -08:00
Behdad Esfahbod 6c1848b1e3 Misc warning fixes 2018-02-10 15:52:35 -06:00
Behdad Esfahbod 4c5bdb4b39 [test] Disable test-subset-glyf for now 2018-02-10 15:40:54 -06:00
Behdad Esfahbod 43314ff4c0 More fixes
test-subset-glyf still failing. No idea why :(
2018-02-10 15:40:03 -06:00
Behdad Esfahbod 9682ef135f Minor fixups 2018-02-08 17:35:57 -06:00
Garret Rieger 0f3c756cbf Add CMake config for building a separate harfbuzz-subset. 2018-02-08 17:31:11 -06:00
Garret Rieger f2ceb5ee4d Comment out failing assert in test-subset-glyf for now. Should be re-enabled once hb_subset is writing out a new face. 2018-02-08 17:31:11 -06:00
Garret Rieger 89dbebd4ad Add a basic test for glyf subsetting. 2018-02-08 17:31:11 -06:00
Behdad Esfahbod c479a59988 [subset] Assemble font 2018-02-07 21:26:04 -06:00
Behdad Esfahbod f70100417c [test] Minor 2018-02-07 13:58:23 -05:00
Behdad Esfahbod af02812fc5 [subset] Change hb_subset API to remove hb_subset_face_t 2018-02-07 13:07:46 -05:00
Garret Rieger 7481f0ce21 Add codepoints to subset input. 2018-02-07 12:41:21 -05:00
Ebrahim Byagowi 8cb8bfd5b5
[test] Fix test-subset on old distros (#758)
https://developer.gnome.org/glib/stable/glib-Testing.html#g-assert-cmpmem
2018-02-06 20:40:42 +03:30
Behdad Esfahbod b7b7f0ac59 [test] Minor 2018-02-05 19:40:31 -05:00
Garret Rieger 5f6eb1256f Add libharfbuzz-subset.la to linking when building api tests. 2018-02-05 10:23:38 -08:00
Garret Rieger 76b84c36b9 Whitespace 2018-02-04 12:57:34 -08:00
Garret Rieger a2965f2ea5 Add a basic implementation of hb-subset to enable compilation of test-subset. 2018-02-04 12:57:33 -08:00
Garret Rieger b59c08eb04 Add the beginning of a unit test for hb-subset 2018-02-04 12:57:33 -08:00
Ebrahim Byagowi e849b8a85b
[cmake] Always put test/api/CMakeLists.txt on distributions 2018-01-19 16:12:24 +03:30
Ebrahim Byagowi 2dbdeb1421
[cmake] Run fuzzing and shaping tests (#666) 2017-12-29 23:13:29 +03:30
Ebrahim Byagowi 50163976d2
[cmake] Enable cmake tests on distribution and test it (#664) 2017-12-25 01:55:48 +03:30
Khaled Hosny c860955148 Add API tests to cmake build 2017-12-06 15:25:10 +02:00
Khaled Hosny f19126dd35 We are already inside “if HAVE_GLIB” check 2017-12-06 15:25:10 +02:00
Behdad Esfahbod 20b4672754 [set] Fix recent changes
Ouch!

Add tests.
2017-12-02 15:15:50 -08:00
ebraminio 7c6937e7c7
Move all references of old url to the new address (#622) 2017-11-20 14:49:22 -05:00
Behdad Esfahbod cb6c6b0c42 Fix warning
49a41dc759 (commitcomment-25203194)
2017-10-26 11:43:33 -06:00
Jonathan Kew 7339926525 [test] Extend hb_set test for issue 579 (currently failing) 2017-10-26 12:33:05 -05:00
Jonathan Kew 3d6f7df42a [test] Additional coverage in test_set_iter.
This adds a couple extra entries to the set used, such that iteration
would fail in 1.6.2 due to the bug in hb_set_t::page_t::next().
2017-10-26 12:30:52 -05:00
Behdad Esfahbod 49a41dc759 [test] Add more hb-set tests
https://github.com/behdad/harfbuzz/issues/579
2017-10-25 16:17:45 -06:00
Behdad Esfahbod deed4a48d1 Faster hb_set_t
Fixes https://github.com/behdad/harfbuzz/pull/23
2017-10-15 16:45:33 -03:00
Behdad Esfahbod c4712f8e37 Fix test 2017-08-10 20:27:21 -07:00
Philip Withnall a6ced90efc test: Fix some memory leaks in test-font.c (#409)
Coverity IDs: 141039, 141040, 141041
2017-02-07 18:18:33 -08:00
Behdad Esfahbod a8a5e81a52 [test-ot-math] Add test with nil face/font 2017-01-19 16:55:04 -08:00
Behdad Esfahbod 331d07bd40 Minor 2017-01-19 16:51:36 -08:00
Behdad Esfahbod b5ecf1bfa4 Fix warnings 2017-01-19 16:50:29 -08:00
Behdad Esfahbod 2f2ceee185 Minor 2017-01-19 16:48:01 -08:00
Sascha Brawer 1337428e4f Update language tags to OpenType 1.8.1 (#403)
Resolves https://github.com/behdad/harfbuzz/issues/324
2017-01-18 04:51:02 -08:00
Mike Hommey 1c98ff87c7 Support building with older glib versions
It is desirable to be able to build against older versions of glib.

fd7a245 changed the configure check to require glib > 2.38 for
G_TEST_DIST. Before that, version 2.16 was required, but in fact,
since aafe395, G_PASTE is being used, which was introduced in 2.19.1.
And since 0ef179e2, hb-glib uses GBytes, which were introduced in
2.31.10.

2.19.1 is rather old, but 2.38 is rather new. For Firefox, building
against 2.22 is still supported, although we could probably get away
with bumping that to 2.28. Either way, GBytes is not available.

Arguably, if you build against a glib that doesn't support GBytes,
you're not going to use the hb_glib_blob_create function, so we hide
the function when building against such a glib.

As for G_TEST_DIST, when building against versions of glib that don't
support it, we can fallback to the previous behavior, which, AIUI, was
just making the test not work when building in a separate directory.
2016-12-18 01:37:07 -06:00
Frédéric Wang c3fa5d0e03 Remove inexistent file ttx file from test/api/Makefile.am 2016-10-24 21:42:04 +02:00
Behdad Esfahbod 34fc4a2cfa Fix dist 2016-10-04 14:47:12 -07:00
Behdad Esfahbod 46cc4a3a2a [MATH] Rename hb_math_*_t types to hb_ot_math_*_t
With this, I believe MATH table API is not ready to be merged.
2016-09-27 16:44:22 +02:00
Frédéric Wang 8d622f1114 Add tests for get_mathvariant (#329) 2016-09-27 13:53:34 +02:00
Frédéric Wang 485e4873fb Add tests for hb_ot_math_get_glyph_variants (#328) 2016-09-27 13:18:00 +02:00
Behdad Esfahbod a5629a2ed9 [MATH] Simplify test 2016-09-27 11:31:29 +02:00
Frédéric Wang edcfa789bf test-ot-math: Use different scales for vertical and horizontal directions and add test for hb_ot_math_get_min_connector_overlap. (#327) 2016-09-27 11:02:08 +02:00
Behdad Esfahbod cdc9eef7da [MATH] Enable tests for glyph-assembly italics-correction 2016-09-26 22:18:41 +02:00
Behdad Esfahbod 86106c7528 [MATH] Rename all API to hb_ot_math_* 2016-09-26 22:14:29 +02:00
Frédéric Wang 51da7a1cd6 MATH table: Add API to access math variants. 2016-09-26 15:18:16 +01:00
Frédéric Wang 722e620f20 Use G_TEST_DIST to build the path of math test fonts 2016-09-26 13:49:18 +01:00
Behdad Esfahbod 17ff30e9af [MATH] Clean up get_top_accent_attachment()
Note, the function now returns "half of horizontal advance width"
if top accent attachment for glyph is not explicitly defined.
This is what the spec requires.  Updated tests.
2016-09-26 12:21:27 +01:00
Behdad Esfahbod 8bcf517fe5 [MATH] Clean up get_italics_correction() 2016-09-26 12:13:14 +01:00
Frédéric Wang d7182d1296 MATH Table: Add API to access glyph info. 2016-09-26 11:32:25 +01:00
Frédéric Wang 319ff59161 MATH Table: Add API to access math contants. 2016-09-26 10:49:09 +01:00
Behdad Esfahbod 4d3892e9b0 [MATH] Fixups for previous commit 2016-09-26 10:45:58 +01:00
Frédéric Wang 5fbcb992bd MATH Table: Add API to check availability of math data. 2016-09-26 10:27:33 +01:00
Sascha Brawer e7ecbba2cc Support Americanist Phonetic Notation
OpenType language system tag: `APPH`
https://www.microsoft.com/typography/otspec/languagetags.htm

IETF BCP47 variant tag: `fonnapa`
http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
2016-08-18 14:13:26 +02:00
Behdad Esfahbod 18c19dd34d Fix build 2016-08-09 13:03:14 -07:00
Sascha Brawer 5967eaba72 [CPAL] Return 0xFFFF as name id for unnamed palettes
The name id 0 is used as Copyright notice. It's quite unlikely that a
font supplies a color palette with the exact same name as the font's
copyright notice, but the API should not prevent this.

Also, try to fix a problem with GObject introspection, where the
auto-generated Python bindings could not return palette colors.
2016-06-24 16:46:49 +02:00
Sascha Brawer d34d3ac985 Support CPAL table 2016-06-19 13:17:57 +02:00
Behdad Esfahbod dd8598c1c7 [test] Pass closure to hb_font_set_glyph_func()
Exercises fix in c335fd7986
2016-02-25 11:20:05 +09:00
Behdad Esfahbod da29b43794 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().
2015-11-04 20:22:44 -08:00
Behdad Esfahbod 3e905e396b 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...
2015-10-08 12:51:02 -04:00
Behdad Esfahbod 88da7bba9f 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".
2015-10-02 14:38:20 +01:00
Behdad Esfahbod 1866e17114 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.
2015-10-02 14:21:29 +01:00
Sascha Brawer f2ad935e19 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
2015-09-29 14:32:06 +01:00
Behdad Esfahbod fad2674874 Minor 2015-09-01 14:45:46 +01:00
Behdad Esfahbod 31594b98af [test] Fix test-object
See previous commit.
2015-08-30 17:33:04 +01:00
Romain Naour 160f635523 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>
2015-07-31 16:12:26 +02:00
Behdad Esfahbod b3a2f6afba [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.
2015-06-18 17:15:33 -07:00
Behdad Esfahbod eb0bf3ae66 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.
2015-04-09 19:16:57 -07:00
Behdad Esfahbod 7d5e7613ce Fail blob creation if length overflows or is too large
Fail if blob start plus length overflows; or if blob length
is greater than 2GB.  It takes a while for fonts to get to that
size.  In the mean time, it protects against bugs like this:

  http://www.icu-project.org/trac/ticket/11450

Also avoids some weird issues with 32bit vs 64bit systems
as we accept length as unsigned int.  As such, a length of
-1 will cause overflow on 32bit machines, but happily
accepted on a 64bit machine.  Avoid that.
2014-12-18 18:22:21 -08:00
Behdad Esfahbod b5fbc3b8f5 API: Do not clear buffer-flags in hb_buffer_clear_contents()
After 763e5466c0, one doesn't
need to set flags for different pieces of text.  The flags now
are something the client sets up once, depending on how it
actually uses the buffer.  As such, don't clear it in
clear_contents().

Tests updated.
2014-08-11 18:40:01 -04:00
Behdad Esfahbod 976c8f4552 New API: hb_buffer_[sg]et_replacement_codepoint()
With this change, we now by default replace broken UTF-8/16/32 bits
with U+FFFD.  This can be changed by calling new API on the buffer.
Previously the replacement value used to be (hb_codepoint_t)-1.

Note that hb_buffer_clear_contents() does NOT reset the replacement
character.

See discussion here:

6f13b6d62d

New API:

  hb_buffer_set_replacement_codepoint()
  hb_buffer_get_replacement_codepoint()
2014-07-16 15:34:20 -04:00