Commit Graph

3948 Commits

Author SHA1 Message Date
Jonathan Kew dfd234a97d [set] Fix page_map[] indexing in backward loop.
Fixes https://github.com/behdad/harfbuzz/issues/579.
2017-10-26 12:33:05 -05:00
Jonathan Kew d511cfb557 [set] Bugfix for hb_set_next 2017-10-26 12:30:52 -05:00
Behdad Esfahbod 92bac64bd2 [post] Oops!
https://ci.appveyor.com/project/behdad/harfbuzz/build/1.0.668/job/ikfj8peowgrp059t
2017-10-25 18:22:47 -06:00
Behdad Esfahbod 543bd58d7a [post] Touch up and fixes
The get_glyph_from_name() is incorrect; needs fixing.
2017-10-25 18:01:03 -06:00
Khaled Hosny d9e166f74c [ot-font] Implement hb_ot_get_glyph_from_name 2017-10-25 19:29:51 -04:00
Khaled Hosny 9d4d2fb9af [ot-font] Implement hb_ot_get_glyph_name
Turns out we already have support for “post” table, it just needed to be
activated and put in use.
2017-10-25 19:29:51 -04:00
Behdad Esfahbod 33ca3b67bf Check for headers in builddir first, in check-*.sh
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=103346
2017-10-25 12:09:11 -04:00
Behdad Esfahbod 9ac2e5c6c0 check-externs.sh: Make output more verbose
Trying to figure out why this is failing on some Debian bots:
https://bugs.freedesktop.org/show_bug.cgi?id=103346

Maybe I should check for GNU grep specifically now that I'm using -n as well.
2017-10-24 10:06:25 -04:00
Behdad Esfahbod 30a591e3ce [set] Rewrite another way :P 2017-10-23 14:29:20 -04:00
Behdad Esfahbod 8170801d78 [set] Fix crash
Ouch!  That's what happens when one plays with increment/decrement operators!

Fixes https://github.com/behdad/harfbuzz/issues/578
2017-10-23 14:29:14 -04:00
Behdad Esfahbod 2ee710e02f Minor 2017-10-23 08:37:48 -04:00
Behdad Esfahbod dd33e4e96b [set] Don't use major()
Fixes https://github.com/behdad/harfbuzz/issues/577
2017-10-23 08:36:40 -04:00
Behdad Esfahbod d0f0ff85b9 [set] Don't use PAGE_SIZE
Fixes https://github.com/behdad/harfbuzz/issues/576
2017-10-23 08:34:30 -04:00
Behdad Esfahbod ce97945440 [icu] Fix error check 2017-10-22 18:23:38 -04:00
Behdad Esfahbod 8b9d9b71b0 Fix set initialization issues 2017-10-22 17:48:06 -04:00
Behdad Esfahbod ced86da7dd Another try at fixing mingw32 build bot fail 2017-10-22 17:06:10 -04:00
ebraminio d45a2138d9 Merge pull request #572 from fanc999/master.msvc
builds: Support HarfBuzz-GObject and introspection in CMake builds
2017-10-21 10:19:55 +03:30
Behdad Esfahbod d8adaa97fb Another try at fixing build bots
hb-ot-shape.cc:287:18: error: comparison of constant 32 with expression of type 'hb_unicode_general_category_t' is always true [-Werror,-Wtautological-constant-out-of-range-compare]
2017-10-20 13:57:43 -04:00
Behdad Esfahbod 6058f98825 Remove FLAG_SAFE()
No flag is safe, over time... See previous commit.
2017-10-19 11:39:52 -07:00
Behdad Esfahbod 7c561dacc3 [myanmar] Fix unsafe usage of FLAG_SAFE()
The commit f559c63307 caused
"undefined-shift" errors in Myanmar shaper as we changed the
numeric value of type D from 19 to 32 there, making the
"FLAG_SAFE (info.myanmar_category())" wrong.

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3546
2017-10-19 11:35:51 -07:00
Chun-wei Fan 162575f2c6 CMake builds: Fix builds
Include the fallback sources in the build, and update
src/Makefile.sources so that it can be read by the CMake build files.

Fix a typo in the DirectWrite configure option so that we can properly
enable DirectWrite builds.

Also, when building the utility program, install them as well.
2017-10-18 22:48:18 +08:00
Behdad Esfahbod d6f612fac8 [bsearch] Micro-optimization 2017-10-17 16:32:12 -07:00
Fredrik Roubert 41b1984be9 Switch from ICU deprecated unorm_normalize to unorm2_normalize. (#569)
The new unorm2_normalize has been public API since ICU 4.4, while
the old unorm_normalize has been deprecated since ICU 56.

Now, beginning with ICU 60, unorm_normalize will also be annotated
U_DEPRECATED and trigger the compiler -Wdeprecated-declarations warning.
2017-10-17 15:06:31 -07:00
Behdad Esfahbod ba8b569607 Try fixing build on VC
c:\projects\harfbuzz\src\hb-set-private.hh(151): error C2327: 'hb_set_t::page_t::v': is not a type name, static, or enumerator [C:\projects\harfbuzz\build\harfbuzz.vcxproj]
2017-10-17 11:16:36 -07:00
Behdad Esfahbod 80cc0a7e3e [coretext] Fix build
error: static_assert expression is not an integral constant expression
2017-10-17 11:14:48 -07:00
Behdad Esfahbod a11249ee93 [set] Fix merge logic 2017-10-16 01:33:32 -04:00
Behdad Esfahbod ab8f327eb4 Ouch. 2017-10-15 18:21:35 -04:00
Behdad Esfahbod bb9917913f [set] Disable vectorization
Fixes clang "non-const reference cannot bind to vector element" error.
2017-10-15 18:20:25 -04:00
Behdad Esfahbod 221ce6c18f Fix bots 2017-10-15 17:58:58 -04:00
Behdad Esfahbod 0cf7d957b7 [set] Remove TODO items not worth pursuing 2017-10-15 17:01:31 -04:00
Behdad Esfahbod 10d43658e7 [set] Speed up intersects() 2017-10-15 16:56:05 -04:00
Behdad Esfahbod 56ef4e0c52 Simplify hb_prealloced_array_t initialization 2017-10-15 16:38:29 -04:00
Behdad Esfahbod 7737e87ac4 Properly detect vector_size attribute and use fallback otherwise 2017-10-15 16:21:03 -04:00
Behdad Esfahbod f8a0ec50e2 [set] Add fallback implementation of int-vector type 2017-10-15 16:10:35 -04: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 1d3971200b Deprecate hb_set_invert() 2017-10-15 16:28:34 -03:00
Behdad Esfahbod 5e74044b6b Add bfind() to prealloaced_array_t 2017-10-15 16:28:34 -03:00
Behdad Esfahbod db5f7ef189 Inline another bsearch() 2017-10-15 16:28:34 -03:00
Behdad Esfahbod 6fb4ac73f9 Add popcount for 64bit ints 2017-10-15 16:00:09 +02:00
Behdad Esfahbod 473b17af4d Remove unused hb_cache_t 2017-10-15 14:11:09 +02:00
Behdad Esfahbod a433e60a43 Remove unused hb_frozen_set_t 2017-10-15 14:09:46 +02:00
Behdad Esfahbod 826a1daf2f Move set-digests into their own header file 2017-10-15 14:09:05 +02:00
Behdad Esfahbod 3c13e153fe Try fixing AppVeyor bots 2017-10-15 14:02:58 +02:00
Behdad Esfahbod 7e3015a315 Fix warnings 2017-10-15 12:13:19 +02:00
Behdad Esfahbod dbdbfe3d7b Use nullptr instead of NULL 2017-10-15 12:11:08 +02:00
Behdad Esfahbod fbb937b680 Don't use NULL in public headers 2017-10-15 12:04:16 +02:00
Behdad Esfahbod c3448e8d21 Use static_assert instead of custom ASSERT_STATIC 2017-10-15 12:02:00 +02:00
Behdad Esfahbod 76dcbf8b23 Add polyfill for static_assert and nullptr
Also fix hb_assert_constant_t.
2017-10-15 11:24:35 +02:00
Behdad Esfahbod 81e2b9b8a9 Never skip over CGJ
We might want to tweak this some more.  For now, never skipping over
it is better behavior than always skipping.

Part of https://github.com/behdad/harfbuzz/issues/554
2017-10-15 10:49:06 +02:00
Behdad Esfahbod 74f1b88e37 [ucdn] Fix compiler warnings 2017-10-13 11:01:55 +02:00
Behdad Esfahbod c2cf68dbdf [coretext] Fix build 2017-10-13 10:30:19 +02:00
Behdad Esfahbod 95883fc5d4 [coretext] Pass correct font size to CoreText
CoreText "point"s are not typographic points, but CSS pixels.  Ie.
they are 96 per inch, not 72 per inch.
2017-10-13 10:22:20 +02:00
Behdad Esfahbod 4f9a83ec21 Merge remote-tracking branch 'origin/master' 2017-10-12 14:08:58 +02:00
Behdad Esfahbod fa48ccbe12 [indic] Special-case Kannada Ra,H,ZWJ sequence
Fixes https://github.com/behdad/harfbuzz/issues/435
2017-10-12 14:07:37 +02:00
n8willis 40b05d7b77 Replacing 'cluster' with 'syllable' when comments describe certain Indic shaping behavior (#563)
* Clarified wording of syllable/cluster behavior in Uniscribe in final_reordering; changed one other probable typo.

* Additional syllable/cluster swap in comments for final reordering and for initial-reordering matra decomposition.
2017-10-12 13:48:48 +02:00
Behdad Esfahbod 8923033eb2 [coretext] Use fabs() to silence compiler warning 2017-10-12 12:02:04 +02:00
Dominik Röttsches dd4b321b4a [coretext] Activate tracking for system fonts
Another attempt at fully fixing
https://github.com/behdad/harfbuzz/issues/360
2017-10-12 11:54:17 +02:00
Behdad Esfahbod 6a2cbc6ef5 [coretext] Use fabsf() instead of abs()
Fixes bots.

Link libharfbuzz.so with -lm.  Surprising that we survived without
it so far!
2017-10-12 10:46:09 +02:00
Behdad Esfahbod 4e4781319b [ft] Add hb_ft_font_changed()
When the font size or variations settings on underlying FT_Face change,
one can call hb_ft_font_changed() and continue using hb_font created using
hb_ft_font_create().

Fixes https://github.com/behdad/harfbuzz/issues/559

New API:
hb_ft_font_changed()
2017-10-12 10:33:16 +02:00
Behdad Esfahbod 94b3cafc3a Add hb_face_get_table_tags()
New API:
hb_face_get_table_tags()

Fixes https://github.com/behdad/harfbuzz/issues/560
2017-10-11 17:22:44 +02:00
Behdad Esfahbod e1b6d92302 Remove cast of functions to (hb_destroy_func_t)
Fixes https://github.com/behdad/harfbuzz/issues/474
2017-10-11 15:51:31 +02:00
Behdad Esfahbod 717fcb51dd [coretext] Minor 2017-10-11 15:38:21 +02:00
Behdad Esfahbod 374bb48d90 Change ptem API to make 0 mean unset 2017-10-11 15:37:50 +02:00
Behdad Esfahbod 06c14225b2 [coretext] Minor 2017-10-11 15:29:53 +02:00
Behdad Esfahbod a4b46212c5 [coretext] Adjust font size check for 0 2017-10-11 15:29:22 +02:00
Behdad Esfahbod 269cf1ca82 Correctly initialize ptem 2017-10-11 15:24:22 +02:00
Behdad Esfahbod 84686bf4c7 [coretext-aat] Also pass through CoreText if font has kerx table
SFNSText has kerx table which apparently is applied.
2017-10-11 15:02:48 +02:00
Behdad Esfahbod 296d0134c9 [coretext] Change default point size to 12 2017-10-11 14:09:30 +02:00
Dominik Röttsches a5ebe1d4ae [coretext] Recreate CTFont if pt size changed
Attempt at fixing #360
2017-10-11 13:33:05 +02:00
Dominik Röttsches db7a73ce07 [coretext] Fix build 2017-10-11 13:24:48 +02:00
Behdad Esfahbod f334130756 [coretext] Another try 2017-10-11 13:17:46 +02:00
Behdad Esfahbod a8e466c3c1 [coretext] Move CT_Font to font data
Towards implementing optical sizing.  Untested; won't compile.

https://github.com/behdad/harfbuzz/issues/360
2017-10-11 13:05:59 +02:00
Behdad Esfahbod f9b4c6570a [coretext] Move font size to a macro 2017-10-11 12:51:25 +02:00
Behdad Esfahbod 8d450dd188 Infrastructure for creating CTFont with correct font size
https://github.com/behdad/harfbuzz/issues/360
2017-10-11 12:43:46 +02:00
Behdad Esfahbod 16d02a58cf [coretext] Change default font size from 36 to 18 2017-10-11 12:28:06 +02:00
Behdad Esfahbod c0c2dbc871 Remove dirty tracking
Turns out I don't need this to resolve CoreText optical sizing
issue after all.

https://github.com/behdad/harfbuzz/issues/360
2017-10-11 12:23:35 +02:00
Behdad Esfahbod b57f18da70 Add hb_font_[sg]et_ptem() to set/get point size on font
New API:
hb_font_set_ptem()
hb_font_get_ptem()

Needed for hb-coretext optical sizing:
https://github.com/behdad/harfbuzz/issues/360
2017-10-11 11:47:47 +02:00
Behdad Esfahbod 3f9370d9e5 Fix TODO item 2017-10-11 11:34:53 +02:00
Behdad Esfahbod 5f50f8837f [arabic] Fix cluster merging 2017-10-07 13:17:33 +02:00
Behdad Esfahbod c2545b9215 Add check for HB_EXTERNs
https://github.com/behdad/harfbuzz/pull/555
2017-10-07 12:57:30 +02:00
fanc999 48a9406839 Fix build of HarfBuzz tools and HarfBuzz-GObject on Visual Studio (#555)
* hb-buffer.h: Mark hb_buffer_diff() for export

This will fix the tools builds on Visual Studio, as the symbol is used
by the tools.

* build: Adapt NMake Makefiles for GLib 2.53.4 or later

glib-mkenums was ported from a PERL script to a Python script, so we
need to update how we generate the enum sources for HarfBuzz-GObject in
the NMake builds.  Let this be known in the build documentation for MSVC
builds.

One of the problems with the underlying cmd.exe that the NMake Makefiles
run on is that shebang lines are not recognized, so we need to to test
run the script with Python and see whether it succeeded by outputing a
source file that is larger than 0 in file size (since running the PERL
version of the script will clearly fail and cause an empty file to be
created).

If it succeeds, we then run a small Python utility script that makes the
necessary string replacements, and we are done.  If that fails, then we
run the glib-mkenums script with PERL, and do the replacements with the
PERL one-liners as we did before.

We need to make replace.py use latin-1 encoding when using Python 3.x to
cope with the copyright sign that is in the generated enum sources.
2017-10-07 12:57:14 +02:00
Behdad Esfahbod c9e2cf6f55 [ot] Remove 'mal' and 'gle' lang tags
Fixes https://github.com/behdad/harfbuzz/issues/477
2017-10-04 16:59:22 +02:00
Behdad Esfahbod 621c49cb86 Improve performance of ligature component matching
This O(N^2) was introduced in 8b2c94c43f.
Make it O(N).
2017-10-04 15:06:48 +02:00
Behdad Esfahbod ab8d70ec70 [arabic] Implement Unicode Arabic Mark Ordering Algorithm UTR#53
Fixes https://github.com/behdad/harfbuzz/issues/509
2017-10-04 14:47:10 +02:00
Behdad Esfahbod b6fe0ab636 Add info_cc() convenience macro 2017-10-04 13:37:08 +02:00
Behdad Esfahbod 7f9e7f8689 Adjust normalizer for out-of-order marks
We are going to implement Unicode Arabic Mark Ordering Algorithm:

  http://www.unicode.org/reports/tr53/tr53-1.pdf

which will reorder marks out of their sorted ccc order.  Adjust
normalizer to stop combining as soon as dangerous ordering is
detected.
2017-10-04 13:20:33 +02:00
Behdad Esfahbod a252ad61f0 Minor 2017-10-04 13:07:08 +02:00
Behdad Esfahbod 4c05a405ac Revert "Treat HAMZA ABOVE similar to SHADD for sorting purposes"
This reverts commit 5a33057576.

Proper fix coming soon.
2017-10-04 13:06:51 +02:00
Behdad Esfahbod d695cacbf4 Shorthand format controls should not be ignored
Fixes https://github.com/behdad/harfbuzz/issues/503
2017-10-04 11:33:47 +02:00
Behdad Esfahbod 50e95229d7 Add Chinantec language tags
Fixes https://github.com/behdad/harfbuzz/issues/516
2017-10-04 11:28:04 +02:00
Behdad Esfahbod 9786fcd8fd Fix GPOS v_origin ordering
This should affect mark attachment in vertical text.  I have no font to test,
but this sounds the right order.

Noticed while debugging https://github.com/behdad/harfbuzz/issues/532
2017-10-03 17:22:43 +02:00
Behdad Esfahbod 63db692fa9 [indic] Fix shaping of U+0AFB GUJARATI SIGN SHADDA
Fixes https://github.com/behdad/harfbuzz/issues/552
2017-10-03 16:00:18 +02:00
Behdad Esfahbod f559c63307 [indic] Implement Consonent_With_Stacker
Fixes https://github.com/behdad/harfbuzz/issues/528
2017-10-03 15:20:07 +02:00
Behdad Esfahbod e07669fc43 [use] Implement Consonant_With_Stacker
Related to https://github.com/behdad/harfbuzz/issues/528
2017-10-03 14:57:14 +02:00
Behdad Esfahbod 5d98de1f38 Tweak mark-base attachment
Apparently a base glyph can also become an attached component of a
ligature if the ligature-forming lookup used IgnoreBase.  This was
being confused with a non-first component of a MultipleSubst and
hence not matched for mark-attachment.  Tweak test to fix.

Fixes https://github.com/behdad/harfbuzz/issues/543
2017-10-03 13:49:40 +02:00
Behdad Esfahbod c44657a05d Tweak input matching some more
Followup to 8b2c94c43f

Allow matching sequences of marks attached to different ligatures,
as supposedly the base of the subsequent marks were already jumped
over.
2017-10-03 13:14:17 +02:00
Behdad Esfahbod 8b2c94c43f Tweak ligature component matching for ligature formation
If two marks want to ligate and they belong to different components of the
same ligature glyph, and said ligature glyph is to be ignored according to
mark-filtering rules, then allow.

Example Burmese senquence:

  U+1004,U+103A,U+1039,U+101B,U+103D,U+102D

Test font provided by Norbert Lindenberg.

Fixes https://github.com/behdad/harfbuzz/issues/545
2017-10-02 20:03:35 +02:00
Behdad Esfahbod 71c0a1429d [indic] Fix shaping of U+0A51
Mark it as matra below to allow the sequence U+0A15, U+0A51, U+0A47.
Oh well...

Fixes https://github.com/behdad/harfbuzz/issues/524
2017-10-02 18:57:03 +02:00
Behdad Esfahbod 6eb8950e62 [ucdn] Oops! 2017-10-02 18:30:05 +02:00
Behdad Esfahbod cbec0cd65e Remove some really old cruft 2017-10-02 18:26:52 +02:00