Behdad Esfahbod [Wed, 6 Aug 2014 19:36:41 +0000 (15:36 -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.
Behdad Esfahbod [Thu, 9 Apr 2015 22:52:26 +0000 (15:52 -0700)]
[util/hb-view] Fix rendering with all combinations of negative scales
Behdad Esfahbod [Thu, 9 Apr 2015 22:17:16 +0000 (15:17 -0700)]
[util] Minor
Behdad Esfahbod [Thu, 9 Apr 2015 22:04:42 +0000 (15:04 -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).
Behdad Esfahbod [Thu, 9 Apr 2015 19:04:14 +0000 (12:04 -0700)]
Minor rename
Behdad Esfahbod [Wed, 8 Apr 2015 23:26:24 +0000 (16:26 -0700)]
Minor
Behdad Esfahbod [Wed, 8 Apr 2015 23:26:16 +0000 (16:26 -0700)]
Fixup
Behdad Esfahbod [Wed, 8 Apr 2015 21:39:00 +0000 (14:39 -0700)]
Fix warnings
Part of https://github.com/behdad/harfbuzz/pull/68
Behdad Esfahbod [Wed, 8 Apr 2015 20:25:04 +0000 (13:25 -0700)]
Err, instead of warn, if mutex / atomic / unicode funcs are missing
Hopefully this results in fewer badly built HarfBuzz integrations.
Behdad Esfahbod [Wed, 8 Apr 2015 20:03:27 +0000 (13:03 -0700)]
Fix unused var warnings
Konstantin Ritt [Fri, 27 Mar 2015 20:49:33 +0000 (00:49 +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).
Behdad Esfahbod [Wed, 8 Apr 2015 19:52:06 +0000 (12:52 -0700)]
Minor
Behdad Esfahbod [Wed, 8 Apr 2015 19:49:38 +0000 (12:49 -0700)]
Allow implementing atomic and mutex ops in config
Motivated by
https://github.com/behdad/harfbuzz/pull/92
Behdad Esfahbod [Wed, 8 Apr 2015 19:49:23 +0000 (12:49 -0700)]
Minor
Behdad Esfahbod [Mon, 6 Apr 2015 21:51:31 +0000 (14:51 -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
Behdad Esfahbod [Mon, 6 Apr 2015 21:41:32 +0000 (14:41 -0700)]
Merge pull request #93 from ebraminio/archpy3
Make hb_test_tools.py compatible with python 3
Behdad Esfahbod [Wed, 1 Apr 2015 18:05:59 +0000 (11:05 -0700)]
MSVC 2015 supports snprintf and not _snprintf
Behdad Esfahbod [Wed, 1 Apr 2015 18:04:33 +0000 (11:04 -0700)]
Move WinCE define to better place
Ebrahim Byagowi [Sun, 29 Mar 2015 22:57:14 +0000 (03:27 +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.
Behdad Esfahbod [Thu, 26 Mar 2015 18:13:53 +0000 (14:13 -0400)]
Fix VC++ /analyze warnings
out\debug\hb-buffer-deserialize-text.rl(47) : warning C6001: Using
uninitialized memory 'pos'.
Behdad Esfahbod [Sun, 22 Mar 2015 20:18:57 +0000 (16:18 -0400)]
Merge pull request #90 from khaledhosny/introspection-fixes
[bindings] Fix *_from_string functions
Khaled Hosny [Sun, 22 Mar 2015 18:29:10 +0000 (20:29 +0200)]
[bindings] Fix *_from_string functions
Without the element-type they will be getting garbage, at least with
Python.
Behdad Esfahbod [Fri, 20 Mar 2015 22:03:02 +0000 (18:03 -0400)]
0.9.40
Behdad Esfahbod [Fri, 20 Mar 2015 20:08:38 +0000 (16:08 -0400)]
Fix reverse_range() for empty range
Fixes coretext notdef loop consisting of all default_ignorable glyphs
https://code.google.com/p/chromium/issues/detail?id=464755
Behdad Esfahbod [Wed, 4 Mar 2015 23:47:25 +0000 (15:47 -0800)]
Fix previous commit
I misunderstood how which works.
Behdad Esfahbod [Wed, 4 Mar 2015 23:43:05 +0000 (15:43 -0800)]
Accept glibtoolize as libtoolize
Of course, we don't really run it, autoreconf does. We just
err if neither is available. glibtoolize is the name it is
shipped under on OS X. Reported by Adam.
Behdad Esfahbod [Wed, 4 Mar 2015 20:32:03 +0000 (12:32 -0800)]
0.9.39
Behdad Esfahbod [Wed, 4 Mar 2015 20:03:39 +0000 (12:03 -0800)]
Fix hb-uniscribe build
Behdad Esfahbod [Tue, 3 Mar 2015 00:06:55 +0000 (16:06 -0800)]
Fix reverse_range() to only reverse alt array if positions are used
In hb-coretext, when we were using scratch buffer for book-keeping,
a reverse_range() caused by the notdef-insertion loop could mess up
our log_clusters. Ouch!
Behdad Esfahbod [Thu, 26 Feb 2015 21:58:32 +0000 (13:58 -0800)]
Better error message if libtool is not installed
Fixes https://github.com/behdad/harfbuzz/pull/88
Behdad Esfahbod [Thu, 26 Feb 2015 21:55:34 +0000 (13:55 -0800)]
Clean up gtk-doc.make
Behdad Esfahbod [Thu, 26 Feb 2015 21:53:05 +0000 (13:53 -0800)]
Install git.mk in docs/
Behdad Esfahbod [Thu, 26 Feb 2015 21:52:50 +0000 (13:52 -0800)]
Update git.mk from upstream
Behdad Esfahbod [Sat, 21 Feb 2015 13:51:17 +0000 (16:51 +0300)]
Minor refactoring
Behdad Esfahbod [Sat, 21 Feb 2015 13:49:15 +0000 (16:49 +0300)]
Minor
Behdad Esfahbod [Sat, 21 Feb 2015 13:30:28 +0000 (16:30 +0300)]
Typo
Behdad Esfahbod [Sat, 21 Feb 2015 13:29:08 +0000 (16:29 +0300)]
Minor
Behdad Esfahbod [Sat, 21 Feb 2015 09:50:01 +0000 (12:50 +0300)]
[layout] Fix comparison of GlyphID and hb_codepoint_t
Before, the IntType::cmp functions providing this and was truncating
the hb_codepoint_t to 16bits before comparison. I have no idea how
this was never discovered, and I'm too lazy to try to reproduce this
with Pango (which uses non-16bit codepoint numbers for missing glyphs).
Behdad Esfahbod [Sat, 21 Feb 2015 09:41:08 +0000 (12:41 +0300)]
Remove unused (and wrong as of a few commits ago) cmp() function
Behdad Esfahbod [Sat, 21 Feb 2015 09:31:59 +0000 (12:31 +0300)]
Minor
Behdad Esfahbod [Sat, 21 Feb 2015 08:45:22 +0000 (11:45 +0300)]
Minor
Behdad Esfahbod [Thu, 19 Feb 2015 14:30:05 +0000 (17:30 +0300)]
[layout] If lookup has only one subtable, move the forward loop down to subtable
I was hoping to see a nice speedup, but it resulted in a very minor one.
Behdad Esfahbod [Thu, 19 Feb 2015 14:15:05 +0000 (17:15 +0300)]
[layout] Add apply_forward / apply_backward
Behdad Esfahbod [Thu, 19 Feb 2015 08:33:30 +0000 (11:33 +0300)]
[layout] Remove unneeded return value from apply()
Behdad Esfahbod [Thu, 19 Feb 2015 14:03:02 +0000 (17:03 +0300)]
Minor simpilfy BEInt
Behdad Esfahbod [Thu, 19 Feb 2015 13:57:12 +0000 (16:57 +0300)]
Optimize IntType comparison to avoid branches for 16bit numbers
Behdad Esfahbod [Thu, 19 Feb 2015 13:55:51 +0000 (16:55 +0300)]
Minor simplify IntType
Behdad Esfahbod [Thu, 19 Feb 2015 07:47:18 +0000 (10:47 +0300)]
[layout] Minor
Behdad Esfahbod [Thu, 19 Feb 2015 07:42:41 +0000 (10:42 +0300)]
[layout] Minor
Behdad Esfahbod [Thu, 19 Feb 2015 07:40:23 +0000 (10:40 +0300)]
[layout] Don't check glyph props against lookup flags when recursing
Shouldn't be needed. I have a hard time imagining this breaking any
legitimate use case.
Behdad Esfahbod [Thu, 19 Feb 2015 07:29:41 +0000 (10:29 +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...
Behdad Esfahbod [Wed, 18 Feb 2015 10:45:03 +0000 (13:45 +0300)]
Remove unused macro
Behdad Esfahbod [Wed, 18 Feb 2015 10:18:46 +0000 (13:18 +0300)]
[layout] Refactor Lookup::dispatch()
Behdad Esfahbod [Wed, 18 Feb 2015 10:09:54 +0000 (13:09 +0300)]
[layout] Refactor get_subtable()
Behdad Esfahbod [Tue, 17 Feb 2015 16:18:07 +0000 (19:18 +0300)]
Minor
Behdad Esfahbod [Tue, 17 Feb 2015 16:15:34 +0000 (19:15 +0300)]
[layout] Use dispatch() for add_coverage()
Behdad Esfahbod [Tue, 17 Feb 2015 15:14:17 +0000 (18:14 +0300)]
[layout] Add may_dispatch()
No functional change right now.
Behdad Esfahbod [Tue, 17 Feb 2015 14:27:44 +0000 (17:27 +0300)]
Make sanitize() a const method
This makes a lot of code safer. We only try modifying the object in one
place, after making sure it's safe to do so. So, do a const_cast<> in
that one place...
Behdad Esfahbod [Tue, 17 Feb 2015 13:05:30 +0000 (16:05 +0300)]
Minor
Behdad Esfahbod [Tue, 17 Feb 2015 13:04:07 +0000 (16:04 +0300)]
Remove unnecessary check in sanitize
Behdad Esfahbod [Thu, 29 Jan 2015 12:59:42 +0000 (13:59 +0100)]
[layout] Allocate iters in the context
Can be further optimized, but I think I didn't break anything.
Saves another 3% off Roboto shaping.
Behdad Esfahbod [Thu, 29 Jan 2015 12:48:48 +0000 (13:48 +0100)]
[layout] Move skippy_iter setup from constructor into init()
Behdad Esfahbod [Thu, 29 Jan 2015 12:40:39 +0000 (13:40 +0100)]
[lookup] Add skippy_iter.reset()
Towards reducing the cost of initializing skippy_iter()
Behdad Esfahbod [Thu, 29 Jan 2015 12:32:05 +0000 (13:32 +0100)]
[layout] Shuffle code around
Behdad Esfahbod [Thu, 29 Jan 2015 12:08:41 +0000 (13:08 +0100)]
[layout] Merge forward and backward iterators
Behdad Esfahbod [Thu, 29 Jan 2015 12:05:25 +0000 (13:05 +0100)]
[layout] Fix backward reject()
Has no functional effect since reject was never used with
match_glyph_data.
Behdad Esfahbod [Thu, 29 Jan 2015 10:38:01 +0000 (11:38 +0100)]
[layout] Remove some unnecessary checks in skippy
Behdad Esfahbod [Thu, 29 Jan 2015 10:08:43 +0000 (11:08 +0100)]
[lookup] Don't initialize skippy if coverage match fails
Currently:
- Initializing skippy is very expensive,
- Our lookup accelerator (using set-digests) can be very ineffecite,
As such, we end up many times initializing skippy but then failing
coverage check. Reordering fixes that.
When, later, we fix our accelerator to have truly small false-positive
rate (for example by using the frozen-sets), then we might want to
reorder these checks such that we wouldn't calculate coverage number
if skippy is going to fail.
This shows a 5% speedup with Roboto already.
Behdad Esfahbod [Thu, 29 Jan 2015 07:01:12 +0000 (23:01 -0800)]
[layout] Use setter method to set c->lookup_props
Behdad Esfahbod [Thu, 29 Jan 2015 06:53:54 +0000 (22:53 -0800)]
[layout] Remove unused wrapper method
Behdad Esfahbod [Thu, 29 Jan 2015 05:46:07 +0000 (21:46 -0800)]
Add hb_frozen_set_t
I experimented with replacing use of hb_set_digest_t with this new
hb_frozen_set_t, hoping to get a huge speedup for busy lookups
(like kern lookup in Roboto), but I only got 6% speendup in Roboto
and 4% in NotoNastaliqUrduDraft :(.
Behdad Esfahbod [Thu, 29 Jan 2015 04:55:42 +0000 (20:55 -0800)]
Hide internals of lookup accelerators
Behdad Esfahbod [Thu, 29 Jan 2015 04:29:48 +0000 (20:29 -0800)]
[util] Add convenience "make lib" target
Behdad Esfahbod [Wed, 25 Feb 2015 23:34:34 +0000 (15:34 -0800)]
Merge pull request #85 from KonstantinRitt/define_inline
Fix build with MSVC on CE
Konstantin Ritt [Fri, 13 Feb 2015 20:58:51 +0000 (00:58 +0400)]
Fix build with MSVC on CE
This code is C++ only. There isn't a single C++ compiler that fails to
understand the "inline" keyword, since it's required by C++98. Any
compiler older than C++98 is likely to choke on the template usage
further down, so this isn't necessary.
Moreover, the C++ standard says you cannot define macros.
[lib.macro.names] says "Nor shall such a translation unit define macros
for names lexically identical to keywords." -- technically, it's a
promise that the Standard Library headers won't do it, the wording means
that the entire translation unit won't do it, which implies no source
can do it.
MSVC complains about it:
fatal error C1189: #error : The C++ Standard Library forbids macroizing
keywords. Enable warning C4005 to find the forbidden macro.
Author: Thiago Macieira <thiago.macieira@intel.com>
Behdad Esfahbod [Wed, 28 Jan 2015 20:40:40 +0000 (12:40 -0800)]
[ft] Handle negative scales with vertical writing
Behdad Esfahbod [Wed, 28 Jan 2015 18:51:33 +0000 (10:51 -0800)]
[coretext] Don't generate notdef glyph for default-ignorables
As discovered on Chrome Mac:
https://code.google.com/p/chromium/issues/detail?id=452326
Behdad Esfahbod [Wed, 28 Jan 2015 18:43:32 +0000 (10:43 -0800)]
[coretext] Unbreak glyph positioning in presence of notdef runs
As discovered on Chrome Mac:
https://code.google.com/p/chromium/issues/detail?id=452326
This was originally broken in:
commit
5a0eed3b50629be4826e4e9428f2c3255195395d
Author: Behdad Esfahbod <behdad@behdad.org>
Date: Mon Aug 11 23:47:16 2014 -0400
[coretext] Implement vertical shaping
Behdad Esfahbod [Tue, 27 Jan 2015 20:26:04 +0000 (12:26 -0800)]
Minor optimization
Konstantin Ritt [Tue, 27 Jan 2015 07:23:07 +0000 (11:23 +0400)]
Do not leak hb_language_t on hb_language_item_t destruction
Konstantin Ritt [Tue, 27 Jan 2015 16:08:41 +0000 (20:08 +0400)]
Minor improvement to HB_SHAPER_DATA_DESTROY
Behdad Esfahbod [Mon, 26 Jan 2015 22:25:52 +0000 (14:25 -0800)]
[API] Add hb_buffer_add_latin1()
This is by no ways to promote non-Unicode encodings. This is an entry
point that takes Unicode codepoints that happen to all be the first
256 characters and hence fit in 8bit strings. This is useful eg in Chrome
where strings that can fit in 8bit are implemented that way, and this
avoids copying into UTF-8 or UTF-16.
Perhaps we should rename this to hb_buffer_add_codepoints8(). I'm also
curious if anyone would be really interested in hb_buffer_add_codepoints16().
Please discuss!
Behdad Esfahbod [Mon, 26 Jan 2015 22:08:36 +0000 (14:08 -0800)]
Fix hb_buffer_add_codepoints to actually NOT validate
Behdad Esfahbod [Sun, 25 Jan 2015 21:06:03 +0000 (13:06 -0800)]
Merge pull request #81 from KonstantinRitt/fixes/build/win8phone
winrt_buildfixes
Konstantin Ritt [Sun, 25 Jan 2015 05:50:51 +0000 (09:50 +0400)]
Move some code around
Just to keep Windows specific workarounds in a single place.
Konstantin Ritt [Sun, 25 Jan 2015 04:16:26 +0000 (08:16 +0400)]
Do not define MemoryBarrier on WinCE
There is a _HBMemoryBarrier() wrapper function that emulates
MemoryBarrier() behavior when it is not defined.
Konstantin Ritt [Sun, 25 Jan 2015 04:13:24 +0000 (08:13 +0400)]
Fix build on WinRT
There is no environment (like WinCE) and the basic version
of InitializeCriticalSection is unsupported.
https://codereview.qt-project.org/#/c/92496/
Behdad Esfahbod [Fri, 23 Jan 2015 20:45:35 +0000 (12:45 -0800)]
0.9.38
Behdad Esfahbod [Fri, 23 Jan 2015 20:44:24 +0000 (12:44 -0800)]
[ft] Handle negative x_scale / y_scale
Behdad Esfahbod [Thu, 22 Jan 2015 03:19:33 +0000 (19:19 -0800)]
[coretext] Fix positioning of notdef
Behdad Esfahbod [Thu, 22 Jan 2015 02:50:57 +0000 (18:50 -0800)]
[coretext] Fix scaling
Before we were not accounting for possible differences in x_scale and
y_scale, as well as the signs of those. All should be in good shape
now.
Behdad Esfahbod [Thu, 22 Jan 2015 00:42:09 +0000 (16:42 -0800)]
[coretext] Use vertical advance for notdef in vertical direction
Behdad Esfahbod [Thu, 22 Jan 2015 02:33:50 +0000 (18:33 -0800)]
Add convenience make target "make lib" in src/
Behdad Esfahbod [Wed, 21 Jan 2015 09:57:44 +0000 (01:57 -0800)]
Add README.python
Behdad Esfahbod [Wed, 21 Jan 2015 09:51:48 +0000 (01:51 -0800)]
[bindings] Add README.python
Behdad Esfahbod [Tue, 20 Jan 2015 20:30:45 +0000 (12:30 -0800)]
[util] Add --font-size to hb-shape
Also makes hb-view to use 8 bits of subpixel precision and shape at
requested size, instead of always shaping at upem and scaling results.
Behdad Esfahbod [Fri, 9 Jan 2015 22:22:01 +0000 (14:22 -0800)]
[util] Minor
Behdad Esfahbod [Tue, 20 Jan 2015 01:00:31 +0000 (17:00 -0800)]
When matching second glyph of kerning pairs, use bsearch
Roboto has glyphs (like 'F') that have 200 kerning pairs.
Add a handcoded bsearch instead of previous linear search.
This doesn't show much speedup though, apparently we spend the
bulk of the time somewhere before here.
Behdad Esfahbod [Mon, 19 Jan 2015 22:42:11 +0000 (14:42 -0800)]
[bindings] Minor
Behdad Esfahbod [Tue, 20 Jan 2015 00:15:00 +0000 (16:15 -0800)]
Merge pull request #77 from roozbehp/master
Change New Tai Lue shaping engine from SEA to default