Behdad Esfahbod [Sat, 9 Jun 2012 06:53:57 +0000 (02:53 -0400)]
Add fast-path for GPOS too
Shaves another 3% for DejaVu Sans long Latin strings.
Behdad Esfahbod [Sat, 9 Jun 2012 06:48:16 +0000 (02:48 -0400)]
Add fast-path to GSUB to check coverage
Shaves a good 10% off DejaVu Sans with simple Latin text for me.
Now, DejaVu is very ChainContext-intensive, but it's also a very
popular font!
Behdad Esfahbod [Sat, 9 Jun 2012 06:26:57 +0000 (02:26 -0400)]
Match input before backtrack
Makes more sense, optimization-wise.
Behdad Esfahbod [Sat, 9 Jun 2012 06:02:46 +0000 (02:02 -0400)]
Add set add_coverage() to Coverage()
Behdad Esfahbod [Sat, 9 Jun 2012 05:39:11 +0000 (01:39 -0400)]
Minor
Behdad Esfahbod [Sat, 9 Jun 2012 05:21:02 +0000 (01:21 -0400)]
Minor
Behdad Esfahbod [Sat, 9 Jun 2012 05:18:58 +0000 (01:18 -0400)]
Fix cache implementation
Behdad Esfahbod [Sat, 9 Jun 2012 05:10:26 +0000 (01:10 -0400)]
Micro-optimize
I know...
Behdad Esfahbod [Sat, 9 Jun 2012 04:56:41 +0000 (00:56 -0400)]
Minor
Behdad Esfahbod [Sat, 9 Jun 2012 04:50:40 +0000 (00:50 -0400)]
Use linear search for small counts
I see about 8% speedup with long strings with DejaVu Sans.
Behdad Esfahbod [Sat, 9 Jun 2012 04:26:32 +0000 (00:26 -0400)]
Minor
Behdad Esfahbod [Sat, 9 Jun 2012 04:24:38 +0000 (00:24 -0400)]
Minor. Hide _hb_ot_layout_get_glyph_property()
Behdad Esfahbod [Sat, 9 Jun 2012 04:23:24 +0000 (00:23 -0400)]
Minor
Behdad Esfahbod [Sat, 9 Jun 2012 02:04:23 +0000 (22:04 -0400)]
In MarkBase attachment, only attach to first of a MultipleSubst sequence
This is apparently what Uniscribe does. Test case is:
SEEN FATHA TEH ALEF
with Arabic Typesetting. Originally reported by Khaled Hosny.
Behdad Esfahbod [Sat, 9 Jun 2012 01:47:23 +0000 (21:47 -0400)]
Set lig_comp for MultipleSubst components
To be used for correct mark attachment to first component of a
MultipleSubst output. That's what Uniscribe does.
Behdad Esfahbod [Sat, 9 Jun 2012 01:45:00 +0000 (21:45 -0400)]
Remove unused buffer->replace_glyphs_be16
Behdad Esfahbod [Sat, 9 Jun 2012 01:44:06 +0000 (21:44 -0400)]
Don't use replace_glyphs_be for MultipleSubst
Behdad Esfahbod [Sat, 9 Jun 2012 01:41:46 +0000 (21:41 -0400)]
Minor
Behdad Esfahbod [Sat, 9 Jun 2012 01:32:43 +0000 (21:32 -0400)]
Add test for static initializers and other C++ stuff
Behdad Esfahbod [Sat, 9 Jun 2012 01:29:18 +0000 (21:29 -0400)]
Minor
Behdad Esfahbod [Sat, 9 Jun 2012 01:01:45 +0000 (21:01 -0400)]
Remove done TODO items
Behdad Esfahbod [Sat, 9 Jun 2012 01:01:20 +0000 (21:01 -0400)]
Merge clusters during normalization
Behdad Esfahbod [Sat, 9 Jun 2012 00:56:05 +0000 (20:56 -0400)]
Minor
Behdad Esfahbod [Sat, 9 Jun 2012 00:55:21 +0000 (20:55 -0400)]
Use merge_clusters instead of open-coding
Behdad Esfahbod [Sat, 9 Jun 2012 00:40:02 +0000 (20:40 -0400)]
Use merge_clusters when forming Unicode clusters
Behdad Esfahbod [Sat, 9 Jun 2012 00:35:18 +0000 (20:35 -0400)]
Minor
Behdad Esfahbod [Sat, 9 Jun 2012 00:33:27 +0000 (20:33 -0400)]
Extend into main buffer if extension hit end of out-buffer merging clusters
Behdad Esfahbod [Sat, 9 Jun 2012 00:31:32 +0000 (20:31 -0400)]
Extend end when merging clusters in out-buffer
Behdad Esfahbod [Sat, 9 Jun 2012 00:30:03 +0000 (20:30 -0400)]
Extend clusters backward in out-buffer
Behdad Esfahbod [Sat, 9 Jun 2012 00:27:53 +0000 (20:27 -0400)]
Extend clusters backwards, into the out-buffer too
Behdad Esfahbod [Sat, 9 Jun 2012 00:21:02 +0000 (20:21 -0400)]
Clear output buffer before calling GSUB pause functions
Behdad Esfahbod [Sat, 9 Jun 2012 00:17:10 +0000 (20:17 -0400)]
When merging clusters, extend the end
Behdad Esfahbod [Sat, 9 Jun 2012 00:13:56 +0000 (20:13 -0400)]
Merge clusters when ligating
Behdad Esfahbod [Fri, 8 Jun 2012 23:29:44 +0000 (19:29 -0400)]
Minor, use next_glyph()
Behdad Esfahbod [Fri, 8 Jun 2012 23:23:43 +0000 (19:23 -0400)]
Minor
Behdad Esfahbod [Fri, 8 Jun 2012 18:18:30 +0000 (14:18 -0400)]
Increase Uniscribe MAX_ITEMS
Behdad Esfahbod [Fri, 8 Jun 2012 18:08:32 +0000 (14:08 -0400)]
Fix Uniscribe charset matching
Previously was failing to match fonts that didn't support CHARSET_ANSI.
There still remains a problem with the Uniscribe backend, in that if a
font with the same family name is installed, and is newer, the native
one is preferred over the font we provide. Fixing it requires rewriting
the name table with a unique family name...
Behdad Esfahbod [Fri, 8 Jun 2012 15:48:29 +0000 (11:48 -0400)]
Remove unused code
Behdad Esfahbod [Fri, 8 Jun 2012 14:53:35 +0000 (10:53 -0400)]
Remove zero-width chars in the fallback shaper too
Behdad Esfahbod [Fri, 8 Jun 2012 14:43:49 +0000 (10:43 -0400)]
Fix regressions introduced by sed. Ouch!
Introduced in
99c2695759a6af855d565f4994bbdf220570bb48.
Broken mark-mark and mark-ligature stuff.
Behdad Esfahbod [Fri, 8 Jun 2012 14:23:03 +0000 (10:23 -0400)]
Whitespace
Behdad Esfahbod [Fri, 8 Jun 2012 14:22:06 +0000 (10:22 -0400)]
Fix Uniscribe clusters with direction-overriden Arabic
Behdad Esfahbod [Fri, 8 Jun 2012 14:10:29 +0000 (10:10 -0400)]
Really fix override-direction in Uniscribe
Behdad Esfahbod [Fri, 8 Jun 2012 13:59:43 +0000 (09:59 -0400)]
Unbreak Uniscribe
Oops. hb_tag_t and OPENTYPE_TAG have different endianness. Perhaps
something to add API for in hb-uniscribe.h
Behdad Esfahbod [Fri, 8 Jun 2012 13:26:17 +0000 (09:26 -0400)]
Override direction in Uniscribe backend
Matches OT backend now.
Behdad Esfahbod [Fri, 8 Jun 2012 13:20:53 +0000 (09:20 -0400)]
Make Uniscribe backend respect selected script
Behdad Esfahbod [Thu, 7 Jun 2012 21:42:48 +0000 (17:42 -0400)]
Add note re _NullPool
Behdad Esfahbod [Thu, 7 Jun 2012 21:31:46 +0000 (17:31 -0400)]
Fix alignment-requirement missmatch
Detected by clang and lots of cmdline options.
Behdad Esfahbod [Thu, 7 Jun 2012 19:48:18 +0000 (15:48 -0400)]
Fix clang warning with NO_MT path
Behdad Esfahbod [Thu, 7 Jun 2012 19:44:12 +0000 (15:44 -0400)]
Fix warnings produced by clang analyzer
Behdad Esfahbod [Thu, 7 Jun 2012 17:32:57 +0000 (13:32 -0400)]
Fix warnings
Behdad Esfahbod [Wed, 6 Jun 2012 15:29:25 +0000 (11:29 -0400)]
Minor
Behdad Esfahbod [Wed, 6 Jun 2012 15:27:17 +0000 (11:27 -0400)]
Fix ASSERT_POD on clang
As reported by bashi. Not tested.
Behdad Esfahbod [Wed, 6 Jun 2012 07:42:36 +0000 (03:42 -0400)]
Enabled ICU again
Behdad Esfahbod [Wed, 6 Jun 2012 07:30:09 +0000 (03:30 -0400)]
Add ASSERT_POD for most objects
Behdad Esfahbod [Wed, 6 Jun 2012 07:07:01 +0000 (03:07 -0400)]
Add macros to check that types are POD
Behdad Esfahbod [Wed, 6 Jun 2012 01:14:04 +0000 (21:14 -0400)]
Don't link to libstdc++
New try.
Behdad Esfahbod [Wed, 6 Jun 2012 00:49:51 +0000 (20:49 -0400)]
Remove unused hb_static_mutex_t
Behdad Esfahbod [Wed, 6 Jun 2012 00:39:07 +0000 (20:39 -0400)]
Disable Intel atomic ops on mingw32
Apparently the configure test is not enough...
Behdad Esfahbod [Wed, 6 Jun 2012 00:35:40 +0000 (20:35 -0400)]
Cleanup TRUE/FALSE vs true/false
Behdad Esfahbod [Wed, 6 Jun 2012 00:31:49 +0000 (20:31 -0400)]
Fix inert buffer set_length() with zero
Oops!
Behdad Esfahbod [Wed, 6 Jun 2012 00:16:56 +0000 (20:16 -0400)]
Add configure tests for Intel atomic intrinsics
Behdad Esfahbod [Tue, 5 Jun 2012 23:55:46 +0000 (19:55 -0400)]
Shuffle
Behdad Esfahbod [Tue, 5 Jun 2012 23:23:29 +0000 (19:23 -0400)]
Remove last static initializer
We're free! Lazy or immediate...
Behdad Esfahbod [Tue, 5 Jun 2012 23:17:02 +0000 (19:17 -0400)]
Make hb-view err if all shapers failed
Behdad Esfahbod [Tue, 5 Jun 2012 22:30:19 +0000 (18:30 -0400)]
Make hb-ft static-initializer free
Behdad Esfahbod [Tue, 5 Jun 2012 22:14:03 +0000 (18:14 -0400)]
Undo default unicode-funcs to avoid static initializer again
Behdad Esfahbod [Tue, 5 Jun 2012 22:00:45 +0000 (18:00 -0400)]
Implement lock-free hb_language_t
Another static-initialization down. One more to go.
Behdad Esfahbod [Tue, 5 Jun 2012 21:27:20 +0000 (17:27 -0400)]
Add atomic-pointer functions
Gonig to use these for lock-free linked-lists, to be used for
hb_language_t among other things.
Behdad Esfahbod [Tue, 5 Jun 2012 20:34:49 +0000 (16:34 -0400)]
Add gcc intrinsics implementations for atomic and mutex
Behdad Esfahbod [Tue, 5 Jun 2012 20:06:28 +0000 (16:06 -0400)]
Add gcc implementation for atomic ops
Behdad Esfahbod [Tue, 5 Jun 2012 19:37:19 +0000 (15:37 -0400)]
Add a mutex to object header
Removes one more static-initialization. A few more to go.
Behdad Esfahbod [Tue, 5 Jun 2012 19:17:44 +0000 (15:17 -0400)]
Remove static initializers from indic
Behdad Esfahbod [Tue, 5 Jun 2012 16:31:51 +0000 (12:31 -0400)]
Better hide nil objects and make them const
Behdad Esfahbod [Tue, 5 Jun 2012 18:17:32 +0000 (14:17 -0400)]
Remove constructor from hb_prealloced_array_t
This was causing all object types to be non-POD and have static
initializers. We don't need that!
Now, most nil objects just moved from .bss to .data. Fixing for that
coming soon.
Behdad Esfahbod [Tue, 5 Jun 2012 17:30:11 +0000 (13:30 -0400)]
Check for atexit()
Behdad Esfahbod [Tue, 5 Jun 2012 17:04:20 +0000 (13:04 -0400)]
Fix warnings
Behdad Esfahbod [Mon, 4 Jun 2012 14:21:22 +0000 (10:21 -0400)]
s/script-punjabi/script-gurmukhi/
Behdad Esfahbod [Mon, 4 Jun 2012 12:56:00 +0000 (08:56 -0400)]
Add --verbose to hb-shape
Just turns all --show-* options on.
Behdad Esfahbod [Mon, 4 Jun 2012 12:28:19 +0000 (08:28 -0400)]
Remove comma at the end of enum
As reported by Jonathan Kew on the list.
Behdad Esfahbod [Sun, 3 Jun 2012 19:54:19 +0000 (15:54 -0400)]
Remove const from ref_count.ref_count
According to Tom Hacohen this was breaking build with some compilers.
In file included from hb-buffer-private.hh:35:0,
from hb-ot-map-private.hh:32,
from hb-ot-shape-private.hh:32,
from hb-ot-shape.cc:29:
hb-object-private.hh: In constructor '_hb_object_header_t::_hb_object_header_t()':
hb-object-private.hh:97:8: error: uninitialized const member in 'struct hb_reference_count_t'
hb-object-private.hh:51:25: note: 'hb_reference_count_t::ref_count' should be initialized
In file included from hb-ot-shape.cc:33:0:
hb-set-private.hh: In constructor '_hb_set_t::_hb_set_t()':
hb-set-private.hh:37:8: note: synthesized method '_hb_object_header_t::_hb_object_header_t()' first required here
hb-ot-shape.cc: In function 'void hb_ot_shape_glyphs_closure(hb_font_t*, hb_buffer_t*, const hb_feature_t*, unsigned int, hb_set_t*)':
hb-ot-shape.cc:521:12: note: synthesized method '_hb_set_t::_hb_set_t()' first required here
Behdad Esfahbod [Sun, 3 Jun 2012 19:52:51 +0000 (15:52 -0400)]
Minor
Behdad Esfahbod [Sat, 2 Jun 2012 16:21:19 +0000 (12:21 -0400)]
[util] Minor
Behdad Esfahbod [Sat, 2 Jun 2012 16:13:08 +0000 (12:13 -0400)]
[util] Make hb-shape continue shaping other lines if shapers failed
Behdad Esfahbod [Fri, 1 Jun 2012 17:46:26 +0000 (13:46 -0400)]
Remove tab character like other "zero-width" characters
Uniscribe does that, this make comparing results to Uniscribe
easier.
Behdad Esfahbod [Fri, 1 Jun 2012 17:45:25 +0000 (13:45 -0400)]
Remove unused variable
Behdad Esfahbod [Mon, 28 May 2012 14:46:47 +0000 (10:46 -0400)]
Remove hb_atomic_int_set/get()
We never use them in fact...
I'm just adjusting these as I better understand the requirements of
the code and the guarantees of each operation.
Behdad Esfahbod [Mon, 28 May 2012 02:39:48 +0000 (22:39 -0400)]
Minor Malayalam test case
From https://bugs.freedesktop.org/show_bug.cgi?id=45166
Behdad Esfahbod [Mon, 28 May 2012 02:07:04 +0000 (22:07 -0400)]
Add Myanmar test case
Behdad Esfahbod [Sun, 27 May 2012 15:29:21 +0000 (11:29 -0400)]
Add hb_font_get_glyph_name() and hb_font_get_glyph_from_name()
Behdad Esfahbod [Sun, 27 May 2012 14:45:57 +0000 (10:45 -0400)]
Warn if no Unicode functions implementation is found
Behdad Esfahbod [Sun, 27 May 2012 14:20:47 +0000 (10:20 -0400)]
Cleanup atomic ops on OS X
Behdad Esfahbod [Sun, 27 May 2012 14:11:13 +0000 (10:11 -0400)]
Don't use atomic ops in hb_cache_t
We don't care about linearizability, so unprotected int read/write
are enough, no need for expensive memory barriers. It's a cache,
that's all.
Behdad Esfahbod [Sun, 27 May 2012 14:09:18 +0000 (10:09 -0400)]
Minor
Behdad Esfahbod [Sun, 27 May 2012 14:01:13 +0000 (10:01 -0400)]
Fix Windows atomic get/set
According to:
http://msdn.microsoft.com/en-us/library/65tt87y8.aspx
MemoryBarrier() is the right macro to protect these, not _ReadBarrier()
and/or _WriteBarrier().
Behdad Esfahbod [Fri, 25 May 2012 18:30:24 +0000 (14:30 -0400)]
[util] Add hidden --shaper that is equivalent of --shapers
Behdad Esfahbod [Fri, 25 May 2012 18:17:54 +0000 (14:17 -0400)]
Add set iterator
Behdad Esfahbod [Fri, 25 May 2012 17:48:00 +0000 (13:48 -0400)]
Add set symmetric difference
Behdad Esfahbod [Thu, 24 May 2012 19:00:01 +0000 (15:00 -0400)]
Minor
Behdad Esfahbod [Thu, 24 May 2012 14:46:39 +0000 (10:46 -0400)]
Fix hb_atomic_int_set() implementation for HB_NO_MT
As pointed out by Jonathan Kew.