Commit Graph

1879 Commits

Author SHA1 Message Date
Behdad Esfahbod
3a81b1db89 Minor, fix leak from my previous refactorings 2011-07-25 16:30:32 -04:00
Behdad Esfahbod
f4a579bc42 Add internal API for buffer var allocation 2011-07-25 16:26:05 -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
c86f932015 Move code around 2011-07-25 00:44:50 -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
c311d85208 Keep Unicode props updated as we go so we avoid a scan later 2011-07-23 23:43:54 -04:00
Behdad Esfahbod
5389ff4dbc Implement the Unicode Canonical Composition algorithm
Fallback normalization is complete and working now!
2011-07-22 20:22:49 -04:00
Behdad Esfahbod
dcdc51cdc0 Handle singleton decompositions 2011-07-22 17:14:46 -04:00
Behdad Esfahbod
34c22f8168 Implement Unicode Canonical Reordering Algorithm 2011-07-22 17:04:20 -04:00
Behdad Esfahbod
4ff0d2d9df Decomposition works now! 2011-07-22 16:15:32 -04:00
Behdad Esfahbod
468e9cb25c Move buffer methods into the object 2011-07-22 14:49:14 -04:00
Behdad Esfahbod
45412523dc More normalization kick 2011-07-22 11:07:05 -04:00
Behdad Esfahbod
63c0ef4a07 Fix decompose() implementations to work with non-starter non-composables
Add tests.
2011-07-21 20:58:42 -04:00
Behdad Esfahbod
5d90a342e3 Document normalization design 2011-07-21 15:25:01 -04:00
Behdad Esfahbod
02cdf743c2 Add prefer_decomposed() complex-shaper callback
This allows the Indic shaper to request decomposed characters.  This will
handle split matra for free.  Other shapers prefer precomposed
characters.
2011-07-21 12:23:12 -04:00
Behdad Esfahbod
d6b9c6d200 More kicking 2011-07-21 12:16:45 -04:00
Behdad Esfahbod
192445aef2 Remove intermittent_glyph()
Lets not worry about performance for now...
2011-07-21 12:13:04 -04:00
Behdad Esfahbod
d63adfc7d0 No need to handle variation-selectors seperately, they are GC=Mn 2011-07-21 11:48:57 -04:00
Behdad Esfahbod
aa7264123a Only form clusters if we are reversing
This produces more accurate cluster mappings.  Cluster mappings are
minimal now.  Combining marks get their own cluster value most of
the time.
2011-07-21 11:34:59 -04:00
Behdad Esfahbod
5c6f5982d7 Towards normalization 2011-07-21 11:31:08 -04:00
Behdad Esfahbod
ad903e66b1 s/COMBINING_MARK/SPACING_MARK/ here too. Oops! 2011-07-21 10:17:22 -04:00
Behdad Esfahbod
cf7f43ec33 Remove stale comment 2011-07-21 01:12:26 -04:00
Behdad Esfahbod
54d1a0d2b2 Form clusters before ensuring native direciton
This is essential as ensure_native_direction uses cluster info that
is set by form_clusters().
2011-07-21 01:11:09 -04:00
Behdad Esfahbod
9111b21ef9 Add _hb_buffer_output_glyph() and _hb_buffer_skip_glyph() 2011-07-21 00:59:15 -04:00
Behdad Esfahbod
655586fe5e Towards normalization 2011-07-21 00:52:42 -04:00
Behdad Esfahbod
49741c8633 Include variation-selectors in cluster calculation 2011-07-21 00:35:37 -04:00
Behdad Esfahbod
dd89d958c1 Fix cluster calculation for non-LTR text 2011-07-21 00:28:57 -04:00
Behdad Esfahbod
4a68684654 When forming clusters, participate all mark types 2011-07-21 00:14:01 -04:00
Behdad Esfahbod
5157e12a55 Rename HB_UNICODE_GENERAL_CATEGORY_COMBINING_MARK to HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK
Spacing_Mark is the current Unicode long-name for this property value.
The previous name was wrongly carried from glib.
2011-07-21 00:12:33 -04:00
Behdad Esfahbod
7b08b0a7f2 Minor 2011-07-20 23:59:07 -04:00
Behdad Esfahbod
498e1a9be6 [icu] Implement compose()/decompose() 2011-07-20 23:19:49 -04:00
Behdad Esfahbod
ffd4a436f7 Add tests for compose()/decompose()
Adjust glib fallback implementation.

The tests are not hooked up for ICU yet.
2011-07-20 22:31:23 -04:00
Behdad Esfahbod
fca0923b04 Minor 2011-07-20 22:16:13 -04:00
Behdad Esfahbod
26b6024962 [glib] Use g_unicode_script_to/from_iso15924() if available 2011-07-20 22:16:01 -04:00
Behdad Esfahbod
22fdc66712 [glib] Add compose() and decompose() implementations with fallback 2011-07-20 21:51:37 -04:00
Behdad Esfahbod
a54a5505a3 Minor 2011-07-20 16:42:10 -04:00
Behdad Esfahbod
23db8d5c92 [test] Work around glib <= 2.30 API 2011-07-12 12:02:26 -04:00
Behdad Esfahbod
22989c5ffc Distribute hb-ot-shape-complex-indic-machine.rl 2011-07-12 11:54:58 -04:00
Behdad Esfahbod
f6fd3780e1 Let shapers decide when to apply ccmp and locl
Instead of always applying those two features before the complex shaper,
let the complex shaper decide whether they should be applied first.

Also add stub for Indic's final_reordering().
2011-07-08 00:22:40 -04:00
Behdad Esfahbod
c4641723fb [API] Add compose() and decompose() unicode funcs, rename other ones
Add compose() and decompose() unicode funcs.  These implement
pair-wise canonical composition/decomposition.

The glib/icu implementations are lacking for now.  We are adding
API for this to glib, but I cannot find any useful API in ICU.
May end of implementing these in-house.

Changed all unicode_funcs callback names to remove the "_get" part.
Eg, hb_unicode_get_script_func_t is now hb_unicode_script_func_t,
and hb_unicode_get_script() is hb_unicode_script() now.
2011-07-08 00:09:31 -04:00
Behdad Esfahbod
d05dded167 More code generation through preprocessor 2011-07-07 23:43:47 -04:00
Behdad Esfahbod
891c4755ba Humm, undo some shuffling
In preparation for adding more advanced unicode funcs.
2011-07-07 23:27:27 -04:00
Behdad Esfahbod
4b6317c4f4 More code shuffling 2011-07-07 23:14:42 -04:00
Behdad Esfahbod
3361c9a323 Minor 2011-07-07 22:35:17 -04:00
Behdad Esfahbod
76f76812ac Shuffle code around, remove shape_plan from complex shapers 2011-07-07 22:25:25 -04:00
Behdad Esfahbod
e88bff9b4d Minor, use function typedefs 2011-07-07 22:03:02 -04:00
Behdad Esfahbod
359dcaa0d3 Update copyright headers 2011-07-07 21:55:05 -04:00
Behdad Esfahbod
d8d0c480c8 Refactor some code common to GSUB and GPOS 2011-07-07 21:22:08 -04:00
Behdad Esfahbod
b70c96dbe4 Enable applying GSUB/GPOS features in multiple segments
Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=644184
among others.

Shapers now can request segmented feature application by calling
add_gsub_pause() or add_gpos_pause().  They can also provide a
callback to be called at the pause.  Currently the Arabic shaper
uses pauses to enforce certain feature application.  The Indic
shaper can use the same facility to pause and do reordering in the
callback.
2011-07-07 21:12:15 -04:00