Behdad Esfahbod
49c5ec5144
Minor refactoring
2012-07-23 20:14:13 -04:00
Behdad Esfahbod
c3e6fdc379
[Indic] Improve check on ligatures
...
Only skip actual ligatures, not marks in-between ligature components.
2012-07-23 20:11:42 -04:00
Behdad Esfahbod
d1af9e82e5
[GSUB/GPOS] Const correctness
2012-07-23 19:55:35 -04:00
Behdad Esfahbod
8932858123
Minor
2012-07-19 21:02:38 -04:00
Behdad Esfahbod
e72b360ac6
Refactor / finish would_apply() operation
...
Untested.
2012-07-19 14:44:46 -04:00
Behdad Esfahbod
60da763dfa
[GSUB/GDEF] Guess glyph classes after substitution only if no GDEF
...
Brings down Khmer failures with Daun Penh font from 36% to 20%.
2012-07-16 16:14:40 -04:00
Behdad Esfahbod
6d08c7f1b3
Revert "Towards templatizing common Lookup types"
...
This reverts commit 727135f3a9
.
This is work-in-progress. Didn't mean to push it out just yet.
2012-07-11 18:01:27 -04:00
Behdad Esfahbod
727135f3a9
Towards templatizing common Lookup types
2012-07-11 18:00:28 -04:00
Behdad Esfahbod
b12e2549cb
Minor
2012-06-09 03:05:20 -04:00
Behdad Esfahbod
f19e0b0099
Match input before backtrack
...
Makes more sense, optimization-wise.
2012-06-09 02:26:57 -04:00
Behdad Esfahbod
ce47613889
Micro-optimize
...
I know...
2012-06-09 01:43:15 -04:00
Behdad Esfahbod
7b84c536c1
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.
2012-06-08 22:04:23 -04:00
Behdad Esfahbod
e085fcf7ca
Remove unused buffer->replace_glyphs_be16
2012-06-08 21:45:00 -04:00
Behdad Esfahbod
3ec77d6ae0
Don't use replace_glyphs_be for MultipleSubst
2012-06-08 21:44:06 -04:00
Behdad Esfahbod
4b7192125f
Minor
2012-06-08 21:41:46 -04:00
Behdad Esfahbod
68b76121f8
Fix regressions introduced by sed. Ouch!
...
Introduced in 99c2695759
.
Broken mark-mark and mark-ligature stuff.
2012-06-08 10:47:00 -04:00
Behdad Esfahbod
2a3d911fe0
Fix alignment-requirement missmatch
...
Detected by clang and lots of cmdline options.
2012-06-07 17:31:46 -04:00
Behdad Esfahbod
ed2f1363a3
Fix substitution glyph class propagation
...
The old code was doing nothing.
Still got to find an example font+string that makes this matter, but
need this for fixing synthetic GDEF anyway.
2012-05-22 22:12:22 -04:00
Behdad Esfahbod
99c2695759
Add accessort to buffer for current info, current pos, and prev info
2012-05-13 15:45:18 +02:00
Behdad Esfahbod
6736f3c5b0
Minor
2012-05-13 15:21:06 +02:00
Behdad Esfahbod
5df809b655
[GSUB/GPOS] Remove context_length
...
The spec doesn't say contextual matching should be done this way,
and AOTS doesn't do it either. It was inherited from old HarfBuzz.
Remove it.
2012-05-13 15:17:51 +02:00
Behdad Esfahbod
28b9d502bb
Minor
2012-05-13 15:04:00 +02:00
Behdad Esfahbod
5f131d3226
[GSUB/GPOS/Indic] Apply GSUB/GPOS within syllables only
...
This does not apply to the context matchings.
This regresses tests right now. And we are not sure whether this is
the right thing to do for GPOS. But we'll figure out.
2012-05-11 17:29:40 +02:00
Behdad Esfahbod
8fd83aaf6e
[GSUB/GPOS] Fix wrong buffer access in backward skippy mask matching
2012-05-11 17:18:37 +02:00
Behdad Esfahbod
203d71069c
[GSUB/GPOS] Check all glyph masks when matching input
2012-05-11 16:01:44 +02:00
Behdad Esfahbod
cee7187447
[Indic] Move syllable tracking from Indic to generic layer
...
This is to incorporate it into GSUB/GPOS processing.
2012-05-11 11:41:39 +02:00
Behdad Esfahbod
55fe2cf79b
Make APPLY debug output print current index and codepoint
...
Yay!
2012-05-11 03:56:33 +02:00
Behdad Esfahbod
98619ce4fa
Minor
2012-05-11 02:34:06 +02:00
Behdad Esfahbod
acea183e98
Add return annotation for APPLY
2012-05-11 02:33:11 +02:00
Behdad Esfahbod
0ab8c86217
Annotate SANITIZE return values
...
More to come, for APPLY, CLOSURE, etc.
2012-05-11 02:11:52 +02:00
Behdad Esfahbod
6f45538017
More massaging trace messaging
2012-05-10 23:24:43 +02:00
Behdad Esfahbod
208109703c
Better trace message support infrastructure
...
We have varargs in the trace interface now. To be used soon...
2012-05-10 23:06:58 +02:00
Behdad Esfahbod
a9844d41c6
Combine lig_id and lig_comp into one byte, to free up one for Indic
2012-05-09 17:53:13 +02:00
Behdad Esfahbod
5caece67ab
Make closure() return void
2012-04-23 23:03:12 -04:00
Behdad Esfahbod
5b93e8d94f
Update copyright headers
2012-04-23 22:26:27 -04:00
Behdad Esfahbod
6a9be5bd35
Rename hb_glyph_map_t to hb_set_t
2012-04-23 22:23:17 -04:00
Behdad Esfahbod
31081f7390
Implement closure() for Context and ChainContext lookups
2012-04-23 16:54:58 -04:00
Behdad Esfahbod
3e32cd9570
Minor
2012-04-23 13:22:50 -04:00
Behdad Esfahbod
650ac00da3
Minor refactoring
2012-04-23 13:17:09 -04:00
Behdad Esfahbod
f94b0aa646
Add "closure" operation stubs to GSUB
...
Filling in.
2012-04-23 13:04:38 -04:00
Behdad Esfahbod
41ae674f68
Don't create hb_apply_context_t per glyph!
...
I couldn't measure significant performance gains out of this; maybe
about 5% (with one million Malayalam strings). Still, not bad.
But reminds me that optimizing this codebase without profiling first
is simply not going to work. Oh well...
2012-04-11 17:13:50 -04:00
Behdad Esfahbod
03408ce73d
Fix more possible buffer overruns
...
I have this function, but can't clean up it to my satisfaction.
2012-01-18 21:28:34 -05:00
Behdad Esfahbod
7d479900cd
Refactor the two remaining uses of _hb_ot_layout_skip_mark()
2012-01-18 21:19:32 -05:00
Behdad Esfahbod
506ffeb8e7
Further mark skippy fixes from Jonathan Kew
...
We should be in good shape now.
2012-01-18 16:07:53 -05:00
Behdad Esfahbod
a4a48fe6d4
Fix mark skipping regression
...
Ouch!
2012-01-17 18:08:41 -05:00
Behdad Esfahbod
4ab9731154
Refactor mark skipping
2012-01-16 22:20:31 -05:00
Behdad Esfahbod
370f03e9c6
Minor
2012-01-16 17:06:59 -05:00
Behdad Esfahbod
4d3aeb8cb2
[GSUB/GPOS] Fix mark skip indexing issues
...
Mozilla bug 701637 and 714067 combined.
Patch from Jonathan Kew.
2012-01-16 16:43:26 -05:00
Behdad Esfahbod
7a750ac33e
Rename table files from eg maxp-private.hh to maxp-table.hh
2011-08-17 14:19:59 +02:00
Behdad Esfahbod
c605bbbb6d
Remove C++ guards from source files
...
Where causing issues for people with MSVC.
2011-08-04 20:00:53 -04:00
Behdad Esfahbod
cc06c243d8
Streamline debugging infrastructure even more
2011-07-25 20:34:17 -04:00
Behdad Esfahbod
651e8dd79e
Start cleaning up buffer var allocation
...
I've messed up a lot of stuff recently, different parts of the
shaping process are stumbling on eachother's toes because
manually tracking what's in which buffer var is hard. I'm
going to add some internal API to track those such that mistakes
are discovered as soon as they are introduced.
2011-07-25 14:54:08 -04:00
Behdad Esfahbod
18c42850c9
Shrink space used for ligature ids
...
This frees 16bits in the glyph_info struct during the ot_layout process.
We can use the freed space in the shapers now.
2011-07-25 00:43:39 -04:00
Behdad Esfahbod
d8787493c9
Minor
2011-07-25 00:36:01 -04:00
Behdad Esfahbod
468e9cb25c
Move buffer methods into the object
2011-07-22 14:49:14 -04:00
Behdad Esfahbod
744970af4d
[API] Add support for vertical text
...
Design not final yet, and in fact I'm going to change it immediately,
but this is an standalone change for itself.
2011-05-17 17:12:34 -04:00
Behdad Esfahbod
abcfe9b59b
Remove hb_ot_layout_context_t, simplify code
2011-05-11 00:02:02 -04:00
Behdad Esfahbod
2409d5f8d7
Update Copyright headers
2011-04-21 17:14:28 -04:00
Behdad Esfahbod
cc1a8a938b
Fix ChanContext backtrack matching with GPOS
...
Reported on mailing list by Keith Stribley and Khaled Hosny.
2011-01-06 14:58:52 -05:00
Behdad Esfahbod
7eb875118d
Mozilla Bug 618592 - freeze on typekit
...
Fix apply_lookup() for zero-input broken fonts.
2010-12-13 14:13:35 -05:00
Behdad Esfahbod
300cb41417
Add XXX marks
2010-11-17 12:57:23 -05:00
Behdad Esfahbod
11e3ec444a
Fix a few more "unreachable code" warnings
2010-11-03 15:11:04 -04:00
Behdad Esfahbod
2304856340
Remove another couple lines of dead code
2010-11-03 12:47:27 -04:00
Behdad Esfahbod
c2709119c8
Move things around some more
2010-11-02 19:12:59 -04:00
Behdad Esfahbod
8c69e65abe
Rename lookup_flags to lookup_props since it's more than just flags
2010-11-02 19:12:59 -04:00
Behdad Esfahbod
98370e89d1
WIP removing external synthesized GDEF support and implementing it internally
2010-11-02 19:12:58 -04:00
Behdad Esfahbod
8eeed7eddc
Remove LONGTERMTODO item that I'll never fix
2010-10-27 12:07:49 -04:00
Behdad Esfahbod
acdba3f90b
Prefer C linkage
2010-07-23 15:39:27 -04:00
Behdad Esfahbod
f7acd8df51
Do alternate glyph selection!
...
Kinda hand-wavy right now. Not tested.
2010-05-20 17:26:35 +01:00
Behdad Esfahbod
36b73c80df
Shortening buffer accessors: rename buffer->in_pos to buffer->i
2010-05-14 22:10:39 -04:00
Behdad Esfahbod
29427c5c51
Shortening buffer accessors: rename buffer->out_length to buffer->out_len
2010-05-14 22:08:22 -04:00
Behdad Esfahbod
6960350be9
Shortening buffer accessors: rename buffer->in_length to buffer->len
2010-05-14 22:07:46 -04:00
Behdad Esfahbod
9d5e26df08
Shortening buffer accessors: rename buffer->out_string to buffer->out_info
2010-05-14 22:03:11 -04:00
Behdad Esfahbod
7e7007a1c9
Shortening buffer accessors: rename buffer->in_string to buffer->info
2010-05-14 22:02:37 -04:00
Behdad Esfahbod
8e6b6bb293
Merge buffer->out_pos and buffer->out_length
2010-05-14 21:58:22 -04:00
Behdad Esfahbod
22f668eb9a
Remove the unused BUFFER macro
2010-05-14 21:41:04 -04:00
Behdad Esfahbod
7e53ebe478
Remove the IN_CURGLYPH() macro
2010-05-14 21:38:46 -04:00
Behdad Esfahbod
d784da1923
Remove the IN_CURINFO() macro
2010-05-14 21:37:18 -04:00
Behdad Esfahbod
281f59b4fb
Remove IN_INFO() and IN_NEXTGLYPH() macros
2010-05-14 21:34:22 -04:00
Behdad Esfahbod
6e489cdf76
Remove the IN_GLYPH() macro
2010-05-14 21:07:35 -04:00
Behdad Esfahbod
27da6dd89a
Remove OUT_GLYPH() and OUT_INFO() macros
2010-05-14 20:17:50 -04:00
Behdad Esfahbod
cc6ae7ff91
Fix lookahead matching. Oops!
2010-05-14 20:09:48 -04:00
Behdad Esfahbod
d7cfb3b2d1
s/\<context\>/c/g
2010-05-13 14:18:49 -04:00
Behdad Esfahbod
1d5e780136
Add a few other buffer methods
2010-05-12 23:43:00 -04:00
Behdad Esfahbod
22da7fd94d
Rename a few files to be C++ sources
...
In anticipation for buffer revamp coming.
2010-05-12 18:23:21 -04:00
Behdad Esfahbod
458ecbb60b
Fix tracing order
2010-05-10 21:11:35 -04:00
Behdad Esfahbod
dacebcadae
Simplify unions
2010-05-10 19:45:41 -04:00
Behdad Esfahbod
0eb9fc6e37
Change DEFINE_SIZE_VAR to DEFINE_SIZE_ARRAY
2010-05-10 19:01:17 -04:00
Behdad Esfahbod
596e471aa5
Cleanup DEFINE_SIZE_VAR2
2010-05-10 18:48:29 -04:00
Behdad Esfahbod
b961518b96
Simplify array access
2010-05-10 18:20:54 -04:00
Behdad Esfahbod
ed07422c33
Further cleanup of sizeof
2010-05-10 18:08:46 -04:00
Behdad Esfahbod
40cbefe858
Remove unnecessary casts
2010-05-10 17:47:22 -04:00
Behdad Esfahbod
bea34c7cbb
Further cleanup of DEFINE_SIZE
2010-05-10 17:28:16 -04:00
Behdad Esfahbod
b3651231bf
Remove ASSERT_SIZE in favor of the safer DEFINE_SIZE_STATIC
2010-05-10 16:59:57 -04:00
Behdad Esfahbod
569da92bc6
Cleanup ASSERT_SIZE_VAR
2010-05-10 16:46:36 -04:00
Behdad Esfahbod
e45d3f86f9
Start cleaning up get_size()
...
So we know when the size is static and when dynamic.
2010-05-06 19:33:31 -04:00
Behdad Esfahbod
b157617644
Remove the last of SANITIZE macros: SANITIZE_SELF
2010-05-06 14:48:27 -04:00
Behdad Esfahbod
4f252fedc7
Remove SANITIZE macro
2010-05-06 13:30:23 -04:00
Behdad Esfahbod
41a93d2c1f
Remove SANITIZE_WITH_BASE
2010-05-06 12:55:14 -04:00
Behdad Esfahbod
f5fab0c718
Remove SANITIZE_MEM
2010-05-06 10:26:52 -04:00
Behdad Esfahbod
1cd1e117d0
Remove SANITIZE_ARRAY
2010-05-05 20:15:14 -04:00
Behdad Esfahbod
583d7f9586
Cosmetic
2010-05-05 01:49:22 -04:00
Behdad Esfahbod
705e215268
Minor
2010-05-05 01:40:25 -04:00
Behdad Esfahbod
4169710911
Simplify chaining
2010-05-05 01:37:58 -04:00
Behdad Esfahbod
1911b9d21b
Remove APPLY_ARG_DEF and APPLY_ARG
2010-05-05 01:32:04 -04:00
Behdad Esfahbod
6c42cddfe5
Port apply to use hb_trace_t
2010-05-05 01:30:48 -04:00
Behdad Esfahbod
969c9705ae
Move context_length into apply_context
2010-05-05 01:23:44 -04:00
Behdad Esfahbod
94a23aaeca
Move buffer into apply_context
2010-05-05 01:13:09 -04:00
Behdad Esfahbod
63493f956d
Move layout_context into apply_context
2010-05-05 01:01:05 -04:00
Behdad Esfahbod
fff9aa263d
Minor
2010-05-05 00:32:21 -04:00
Behdad Esfahbod
39840474af
Remove SANITIZE_ARG_DEF and SANITIZE_ARG
2010-05-05 00:23:19 -04:00
Behdad Esfahbod
bb029af943
Remove SANITIZE_THIS
2010-05-04 15:28:52 -04:00
Behdad Esfahbod
4d4cce9626
Remove SANITIZE_THIS2
2010-05-04 14:57:55 -04:00
Behdad Esfahbod
26bfcb64e4
Cosmetic
2010-05-04 14:49:45 -04:00
Behdad Esfahbod
be74284673
Remove SANITIZE_THIS3
2010-05-04 14:47:05 -04:00
Behdad Esfahbod
64d3fc8d0d
Cosmetic: Rename HB_LIKELY/HB_UNLIKELY to likely/unlikely
2010-05-03 22:51:19 -04:00
Behdad Esfahbod
33d13fdda9
Rename HB_GNUC_UNUSED -> HB_UNUSED
2010-04-29 13:56:44 -04:00
Behdad Esfahbod
7d3a126334
Define HB_FUNC for portability to non-gcc
2010-04-29 13:54:01 -04:00
Behdad Esfahbod
6617eada95
Rename apply_context -> context
2010-04-29 02:25:30 -04:00
Behdad Esfahbod
b4c7fab762
Rename
2010-04-29 02:24:25 -04:00
Behdad Esfahbod
1376fb7bf9
[apply] Use a context object to reduce number of parameters passed around
2010-04-29 02:19:21 -04:00
Behdad Esfahbod
173fde7087
Further simplify tracing
2010-04-29 01:47:30 -04:00
Behdad Esfahbod
bc20045743
Simplify trace code
2010-04-29 01:40:26 -04:00
Behdad Esfahbod
807c5b03a2
[sanitize] Make debug code always available to the compiler
...
Such that we don't break debug build all the time.
2010-04-28 23:28:07 -04:00
Behdad Esfahbod
74e313c016
[gsubgpos] Make debug code always available to the compiler
...
Such that we don't break debug build all the time.
2010-04-28 15:15:09 -04:00
Behdad Esfahbod
a92f0fda7f
Fix debug build
2010-04-28 13:09:40 -04:00
Behdad Esfahbod
efb324a46f
Remove GET_FOR_DATA macros
...
The major-version check is now handled by sanitize. If major
doesn't match, we reject and fall back to the Null object.
2010-04-23 16:28:27 -04:00
Behdad Esfahbod
d632ec4000
Cosmetic
2010-04-22 18:42:05 -04:00
Behdad Esfahbod
a3263aa773
Convert the last set of cast macros to templates
2010-04-22 18:42:01 -04:00
Behdad Esfahbod
3b2c2df41b
Cleanup Extension sanitize()
2010-04-22 16:51:42 -04:00
Behdad Esfahbod
1856184b93
Fail sanitize on major version mismatch
...
We handle major-version differences via get_for_data(), so sanitize
should never see a major version mismatch.
2010-04-22 14:21:17 -04:00
Behdad Esfahbod
9fc8684fd8
Cleanup ContextFormat3 sanitize
2010-04-22 13:37:58 -04:00
Behdad Esfahbod
81f2af40f9
Simplify Extension offset now that our int types have no alignment
2010-04-22 00:58:49 -04:00
Behdad Esfahbod
c755cb3e3a
Change header comment
2010-04-22 00:11:43 -04:00
Behdad Esfahbod
0dfcc13a46
Rename ConstCharP to CharP (overloaded now)
2010-04-21 23:41:26 -04:00
Behdad Esfahbod
2cb08458f6
Rename const_array() to array() (overloaded)
2010-04-21 22:37:31 -04:00
Behdad Esfahbod
e961c86c57
Convert NEXT() and ARRAY_AFTER() macros to templates
2010-04-21 15:56:11 -04:00
Behdad Esfahbod
198facdc55
Use templates for const char * casts
2010-04-21 13:35:36 -04:00
Behdad Esfahbod
1922ffe701
Const correctness
2010-04-21 04:52:11 -04:00
Behdad Esfahbod
0e206de986
Fix warnings
2010-04-21 01:48:41 -04:00
Behdad Esfahbod
d5943407a4
Fix debug build
2010-04-21 01:42:11 -04:00
Behdad Esfahbod
4b8487d83e
Fix the mystery bug!
...
A couple bugs joined forces to exhibit the mystery behavior of
crashes / infinite loops on OS X / wrong kerning / invalid memory
access. Pooh!
The bugs were involved:
- Wrong pointer math with ValueRecord in PairPosFormat1
- Fallout from avoiding flex arrays, code not correctly updated
to remove sizeof() usage.
We strictly never use sizeof() directly now. And the PairPos code
is cleaned up. Should fix them all. Bugs are:
Bug 605655 - Pango 1.26.2 introduces kerning bug
Bug 611229 - Pango reads from uninitialized memory
Bug 593240 - (pangoosx) Crash / infinite loop with Mac OS X
We were also doing wrong math converting Device adjustments to
hb_position_t. Fallout from FreeType days. Should shift 16, not
6. Fixed that too.
There's still another bug: we don't sanitize Device records
referenced from value records. Fixing that also.
2010-04-21 01:41:29 -04:00
Behdad Esfahbod
d0351314cd
Include stdio.h if debugging
2009-11-05 16:16:06 -05:00
Behdad Esfahbod
e21899bc35
Fix array query API
...
The array query APIs now all do:
- Return the total number of items
- Take a start_offset, such that individual items can be fetched
- The _count IN/OUT variable always has number of items written
into the array upon return of the function
2009-11-04 16:36:14 -05:00
Behdad Esfahbod
d3480ba37f
Don't use zero-sized arrays
...
It's not part of the standard and MSVC doesn't like it. It makes the code
a lot less elegant than it used to be, but I think it should work now.
2009-11-03 10:47:29 -05:00
Behdad Esfahbod
52e9a71d57
[HB] Add comment
2009-11-02 14:40:48 -05:00
Behdad Esfahbod
f9c0a2dad0
[HB] Fix apply_lookup() loop
...
Part of Bug 595539 - Regressions in rendering certain Thai sequences with
OpenType font
2009-11-02 14:40:48 -05:00
Behdad Esfahbod
c0ab43c058
[HB] Fix bug in chain_context_lookup() invocations
...
Part of Bug 595539 - Regressions in rendering certain Thai sequences with
OpenType font
2009-11-02 14:40:48 -05:00
Behdad Esfahbod
3e2401f6c5
[HB] Rename DEBUG to TRACE where appropriate
2009-11-02 14:40:48 -05:00
Behdad Esfahbod
0535b50f43
[HB] Add GSUB/GPOS tracing
2009-11-02 14:40:48 -05:00
Behdad Esfahbod
20b035dad4
[HB] Put C++ inline's back
...
Apparetly in C++, inline means a totally different thing.
2009-11-02 14:40:36 -05:00
Behdad Esfahbod
284899ccbe
[HB] Add a NEXT() macro
2009-11-02 14:40:35 -05:00
Behdad Esfahbod
bff3c0fde5
[HB] Remove clumsy macros and improve API
2009-11-02 14:40:34 -05:00
Behdad Esfahbod
71a8344a5e
[HB] Remove a few 'inline's, though the compiler mostly ignores them
2009-11-02 14:40:32 -05:00
Behdad Esfahbod
b28815c1f6
[HB] Add sanitize debugging facilities
2009-11-02 14:40:30 -05:00
Behdad Esfahbod
a328d66e6a
[HB] Minor cleanup
2009-11-02 14:40:29 -05:00
Behdad Esfahbod
e49a84c9e3
[HB] GDEF sanitize()
2009-11-02 14:40:29 -05:00
Behdad Esfahbod
18939487d0
[HB] Fix Extension sanitize()
2009-11-02 14:40:29 -05:00
Behdad Esfahbod
2b5a59c277
[HB] More cast cleanup
2009-11-02 14:40:28 -05:00
Behdad Esfahbod
196598bbcc
[Hb] Use reinterpret casts instead of direct casts to char *
2009-11-02 14:40:28 -05:00
Behdad Esfahbod
cd3827ee56
[HB] More sanitize()
2009-11-02 14:40:28 -05:00
Behdad Esfahbod
70de50c11e
[HB] Start sanitize()
2009-11-02 14:40:27 -05:00
Behdad Esfahbod
23c86aa000
[HB] Use face_t directly instead of ot_layout_t
2009-11-02 14:40:27 -05:00
Behdad Esfahbod
5f5b24f99f
[OT] Rename C++ header files from *.h to *.hh
2009-11-02 14:40:27 -05:00