Behdad Esfahbod
d1deaa2f5b
Replace zerowidth invisible chars with a zero-advance space glyph
...
Like Uniscribe does.
2012-05-09 15:04:13 +02:00
Behdad Esfahbod
1827dc208c
Add hb_ot_shape_glyphs_closure()
...
Experimental API for now.
2012-04-24 16:56:37 -04:00
Behdad Esfahbod
a4385f0b0a
Improve clustering
2012-04-23 22:20:14 -04:00
Behdad Esfahbod
a5f1834f57
Apply 'liga' for vertical writing mode too
...
Apparently that's what Kazuraki uses to form vertical ligatures,
which suggests that it's what Adobe does.
2012-04-16 15:55:13 -04:00
Behdad Esfahbod
683b503f30
Minor
2012-04-14 20:47:14 -04:00
Behdad Esfahbod
b9f199c8e3
Move code around
2012-04-14 20:25:37 -04:00
Behdad Esfahbod
d4adade217
Add assert
2012-04-14 19:23:17 -04:00
Behdad Esfahbod
6bd9b479b8
Hide backend-specific shape functions
...
Also remove shaper_options argument to hb_shape_full(). That was
unused and for "future". Let it go.
More shaper API coming in preparation for plan/planned API.
2012-04-12 14:53:53 -04:00
Behdad Esfahbod
0e3361464b
Fix bug with not setting Unicode props of the first character
...
Fixes Mongolian shaping issue:
https://bugs.freedesktop.org/show_bug.cgi?id=45695
2012-04-12 10:06:52 -04:00
Behdad Esfahbod
acd88e659f
In Arabic fallback shaping, check that the font has glyph for new char
2012-04-10 18:02:20 -04:00
Behdad Esfahbod
7752aa73e7
Minor
2012-04-10 17:22:14 -04:00
Behdad Esfahbod
11138ccff7
Add normalize mode
...
In preparation for Hangul shaper.
2012-04-05 17:25:19 -04:00
Behdad Esfahbod
6769f21d57
More moving code around
2012-04-05 16:46:46 -04:00
Behdad Esfahbod
0501573ded
Fix const correctness in the API
2011-08-10 16:25:56 +02:00
Behdad Esfahbod
02aeca985b
[API] Changes to main shape API
...
hb_shape() now accepts a shaper_options and a shaper_list argument.
Both can be set to NULL to emulate previous API. And in most situations
they are expected to be set to NULL.
hb_shape() also returns a boolean for now. If shaper_list is NULL, the
return value can be ignored.
shaper_options is ignored for now, but otherwise it should be a
NULL-terminated list of strings.
shaper_list is a NULL-terminated list of strings. Currently recognized
strings are "ot" for native OpenType Layout implementation, "uniscribe"
for the Uniscribe backend, and "fallback" for the non-complex backend
(that will be implemented shortly). The fallback backend never fails.
The env var HB_SHAPER_LIST is also parsed and honored. It's a
colon-separated list of shaper names. The fallback shaper is invoked if
none of the env-listed shapers succeed.
New API hb_buffer_guess_properties() added.
2011-08-04 22:38:09 -04: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
2118fdb9f5
Fix fallback shaping
...
Broke it a few commits ago.
2011-08-02 14:06:51 -04:00
Behdad Esfahbod
9f9bcceca6
Register buffer vars in Indic shaper
2011-07-28 17:07:50 -04:00
Behdad Esfahbod
b65c06025d
Formalize buffer var allocations
2011-07-28 16:49:29 -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
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
5d90a342e3
Document normalization design
2011-07-21 15:25:01 -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
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
4a68684654
When forming clusters, participate all mark types
2011-07-21 00:14:01 -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
891c4755ba
Humm, undo some shuffling
...
In preparation for adding more advanced unicode funcs.
2011-07-07 23:27:27 -04:00
Behdad Esfahbod
76f76812ac
Shuffle code around, remove shape_plan from complex shapers
2011-07-07 22:25:25 -04:00
Behdad Esfahbod
359dcaa0d3
Update copyright headers
2011-07-07 21:55:05 -04:00
Behdad Esfahbod
b9452bfc16
Fix compiler warnings with -pedantic
2011-06-14 14:47:07 -04:00
Behdad Esfahbod
63b177e45c
Minor
2011-06-07 15:51:40 -04:00
Behdad Esfahbod
89a2bc9ba6
[Vertical] Apply vertical features
...
We apply all of vert, vrt2, vkrn, valt, and vpal.
2011-05-31 15:18:13 -04:00
Behdad Esfahbod
90645fb24b
[OT] Separate map_builder from the actual map
...
Respectively, separate planner from the actual plan.
2011-05-27 18:13:31 -04:00
Behdad Esfahbod
376dafa6ed
Hide internal symbols
2011-05-27 03:40:04 -04:00
Behdad Esfahbod
7403e055cd
[Vertical] fix vertical gpos
...
Wow, it took me a few days to find the right fix!
We now set the advance for attached marks to zero, but we
do this in the _finish() state of gpos, so it shouldn't
regress with fonts like DejaVuSansMono that explicitly
decrease the mark advance width to set it to zero.
2011-05-25 10:52:15 -04:00
Behdad Esfahbod
60fbb36096
[Vertical] GPOS is always done with horizontal origin
2011-05-19 18:46:15 -04:00
Behdad Esfahbod
8b38faeede
More vertical
...
Starting to get there, but not without yet another round of changes.
I think I know wheere to go now.
2011-05-19 13:08:00 -04:00
Behdad Esfahbod
7e2c85de30
[API] Vertical support, take 2
...
I like this API *much* better. Implementation still incomplete, but
horizontal works.
2011-05-17 17:55:03 -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
0fd8c2f1be
[API] Make get_glyph() callback return a boolean
...
We need to know whether the glyph exists, so we can fallback to
composing / decomposing. Assuming that glyph==0 means "doesn't exist"
wouldn't work for applications like Pango that want to use different
"doesn't exist" glyph codes for different characters. An explicit
return value fixes that.
2011-05-12 15:14:13 -04:00
Behdad Esfahbod
e06d4eda7b
Use constructor/destructor for hb_ot_shape_plan_t
2011-05-11 22:18:31 -04:00
Behdad Esfahbod
6a7ac79e26
Plug leaks
2011-05-11 14:19:18 -04:00
Behdad Esfahbod
a513dbcf73
[API] Change signature of get_contour_point and get_kerning ffuncs
...
get_contour_point now takes glyph id before point_index.
get_kerning now takes a vector to fill-in.
2011-05-11 00:38:22 -04:00
Behdad Esfahbod
6843569d2c
Replace fixed-size feature_maps array with hb_array_t
2011-05-05 14:30:51 -04:00
Behdad Esfahbod
72657e4ce7
[API] Make hb_font_create() take a face and reference it
2011-05-02 20:47:23 -04:00
Behdad Esfahbod
2409d5f8d7
Update Copyright headers
2011-04-21 17:14:28 -04:00
Behdad Esfahbod
fb194b8794
unicode: Cleanup implementation
2011-04-20 02:27:39 -04:00
Ryan Lortie
2fd0c577e3
[API] unicode: rework virtual functions for subclassing
...
Unicode data providers can now be subclassed, including support for
chain-up. The interface should now be nicely bindable, as well.
Also fix glib unicode funcs that where broken after hb_script_t
changes. Nicely caught by the test-unicode.c added in this commit.
2011-04-20 00:19:20 -04:00
Behdad Esfahbod
8f0d7e0c3f
Remove hb_buffer_clear_positions(), add hb_ot_layout_position_start()
2011-04-15 19:08:43 -04:00
Behdad Esfahbod
5814dfa3f5
Cosmetic
2011-04-15 14:41:04 -04:00
Behdad Esfahbod
99b74760a4
Rename hb_category_t to hb_unicode_general_category_t
2011-04-11 15:47:40 -04:00
Behdad Esfahbod
a71b9c8579
Disable 'cswh' by default except for Arabic shaper
...
That better matches OpenType spec. Note that we enable it for all
Arabic-shaper scripts. Ie. we enable it by default for Syriac too,
but the SyriacOT spec does not require it. I think this is a more
useful compromise than special-casing for Arabic script alone.
2011-04-06 14:04:56 -04:00
Behdad Esfahbod
3286fc0e9a
Let hb_shape() guess script and direction...
...
- Rename HB_SCRIPT_INVALID_CODE to HB_SCRIPT_INVALID
- Add HB_DIRECTION_INVALID
- Make hb_script_get_horizontal_direction() public
- Make hb_shape() guess script from buffer text (first non-common
non-inherit script) if buffer script is set to HB_SCRIPT_INVALID (this
is NOT the default.)
- Make hb_shape() guess direction from buffer script if buffer direction
is set to HB_DIRECTION_INVALID (this is NOT the default.)
- Make hb-view.c set INVALID script and direction on the buffer.
The above changes are meant to make hb-view fairly useful for uni-script
uni-direction text. The guessing behavior however is NOT the default of
hb_shape() and must be asked for explicitly. This is intended, because
the guess is not a suitable substitute to full-fledged bidi and script
segmentation. It's just a testing tool.
2011-03-16 14:53:32 -03:00
Behdad Esfahbod
bbbbe80ec9
Rename original_direction to target_direction
2010-12-07 16:22:02 -05:00
Behdad Esfahbod
ee8aaf976a
Fix arabic shaping of LTR text
...
We should ensure-direction before doing any complex work. The only
exception is mirroring that needs to see the original / final direction,
not the native. Handle that.
2010-12-07 16:20:42 -05:00
Behdad Esfahbod
3a852ae7fe
Save general category and combining class in the buffer for reuse
2010-11-03 16:37:24 -04:00
Behdad Esfahbod
1e7c1fcbc3
Move code around
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
dd2ffd282c
Minor renaming
2010-11-02 19:12:58 -04:00
Behdad Esfahbod
248e3c2ba4
Oops, remove extra mask setting that broke complex shaping
2010-10-27 01:23:14 -04:00
Behdad Esfahbod
502f4cba3e
Divide get_metrics into get_advance and get_extents
...
Graphite module not updated.
Bump version to 0.3.
2010-10-27 01:13:56 -04:00
Behdad Esfahbod
bd7378b2ef
Massage mask setting a bit more
...
Still finding the exact correct way the masks should be set.
2010-10-13 18:33:16 -04:00
Behdad Esfahbod
39dede9fff
Make sure boolean features always use value=1
...
Previously boolean features turned on the entire feature mask. This is
wrong if feature is Alternate and user has provided values bigger than one.
Though, I don't think other engines support such corner cases.
2010-10-13 15:54:06 -04:00
Behdad Esfahbod
2989be4919
Set user masks after complex masks
2010-10-13 15:18:29 -04:00
Behdad Esfahbod
13403bc67a
Hookup Arabic shaper!
...
Not tested yet.
2010-10-12 17:23:54 -04:00
Behdad Esfahbod
57ac0ecb78
Merge clearing masks and setting global masks
2010-10-12 17:07:02 -04:00
Behdad Esfahbod
fc96596b7c
Form clusters before setting masks
2010-10-12 17:00:40 -04:00
Behdad Esfahbod
1e80782244
Clear masks before setting them up, not after!
2010-10-12 17:00:07 -04:00
Behdad Esfahbod
fd3d32d31c
Add hb_ot_shape_execute()
...
Not public yet.
2010-10-12 16:57:47 -04:00
Behdad Esfahbod
49baa1f69e
Add hb_ot_complex_shaper_t stuff and start hooking Arabic shaper up
2010-10-12 16:50:36 -04:00
Behdad Esfahbod
605ed468f3
Add hb_ot_shape_plan_t
...
This is the object that a separate plan/execute shaping API will use in
between the two stages.
2010-10-12 16:19:38 -04:00
Behdad Esfahbod
895fb5d364
Refactor, in a different direction
2010-10-12 16:00:21 -04:00
Behdad Esfahbod
d2ba016ca1
More refactoring
2010-10-12 15:35:45 -04:00
Behdad Esfahbod
52601275d5
More separation
2010-10-08 20:38:46 -04:00
Behdad Esfahbod
6b7e675862
Minor
2010-10-08 20:30:04 -04:00
Behdad Esfahbod
aa9c450bb2
Enable 'rtlm' mirroring
2010-10-08 20:27:38 -04:00
Behdad Esfahbod
36925f695d
Rename hb_mask_allocator_t to hb_ot_map_t
...
hb_ot_plan_t may be a better name, donno.
2010-10-08 20:21:09 -04:00
Behdad Esfahbod
4924affe0f
Add hb-ot-map-private.hh
2010-10-08 19:18:16 -04:00
Behdad Esfahbod
b897c607d9
Flip the OT bit-allocation vs gsub/gpos inside-out
...
We now build our entire attack plan before jumping in.
2010-10-08 18:41:57 -04:00
Behdad Esfahbod
e89b7d2a61
Logically separate feature collection
2010-10-08 12:29:59 -04:00
Behdad Esfahbod
5b88908f12
Minor
2010-10-08 12:23:01 -04:00
Behdad Esfahbod
5360ce0c5c
Move some more code around
2010-10-07 21:21:11 -04:00
Behdad Esfahbod
d9c7260788
Minor
2010-10-07 21:19:54 -04:00
Behdad Esfahbod
efe0d682e8
Simplify compiling lookups
2010-10-07 21:12:46 -04:00
Behdad Esfahbod
476c94218b
Rename
2010-10-07 17:47:33 -04:00
Behdad Esfahbod
98aa3f6544
Call hb_ot_shape_setup_lookups_complex()
2010-10-06 00:23:36 -04:00
Behdad Esfahbod
f1d07885dc
Rename setup_lookups()
2010-10-06 00:21:37 -04:00
Behdad Esfahbod
affc5abac7
Move table_tag to hb_ot_shape_context_t
2010-10-06 00:18:16 -04:00
Behdad Esfahbod
967240dd8b
Add internal hb_ot_shape_context_t
2010-10-05 23:00:05 -04:00
Behdad Esfahbod
4e573715ae
Improve cmp function parameter namings and casts
...
No semantic change.
2010-09-28 16:28:57 -04:00
Behdad Esfahbod
2422c4b96d
Add TODO
2010-08-13 14:00:34 -04:00
Behdad Esfahbod
27f0b092a1
Logically separate feature allocation from application
2010-07-23 17:35:54 -04:00
Behdad Esfahbod
6cf63132dc
Minor
2010-07-23 17:32:26 -04:00
Behdad Esfahbod
4e4ef24e46
Towards separating bit allocation from shaping
2010-07-23 17:22:11 -04:00
Behdad Esfahbod
acdba3f90b
Prefer C linkage
2010-07-23 15:39:27 -04:00
Behdad Esfahbod
f2a1b411b1
Followup fix for variation-selectors
...
Patch from Jonathan Kew
2010-06-03 11:37:51 -04:00
Behdad Esfahbod
a224b4d502
Fix skipping variation-selectors
2010-06-02 22:31:41 -04:00
Behdad Esfahbod
81a77b115d
Make feature sorting stable
2010-06-01 23:03:54 -04:00
Behdad Esfahbod
fdc322a820
Minor
2010-05-28 20:55:52 -04:00
Behdad Esfahbod
f062ec6bb2
Further simplify mask allocator
2010-05-28 20:54:43 -04:00
Behdad Esfahbod
8af45fda47
Fix global feature handling
2010-05-28 20:41:20 -04:00
Behdad Esfahbod
e04685ee7b
Simplify mask allocation
2010-05-28 20:37:06 -04:00
Behdad Esfahbod
0e235d0fc9
Towards a mask allocator
2010-05-28 20:27:30 -04:00
Behdad Esfahbod
81c5e8724b
Allow disabling default features
...
Patch from Jonathan Kew
2010-05-28 18:31:16 -04:00
Behdad Esfahbod
15c7379c16
Revert "Merge remote branch 'martin/master'"
...
This reverts commit 80af2812fb
, reversing
changes made to c442672ec2
.
2010-05-26 10:48:10 -04:00
Behdad Esfahbod
80af2812fb
Merge remote branch 'martin/master'
2010-05-24 18:14:24 +01:00
Behdad Esfahbod
bf36a1074a
Move all callback functions in a vtable structs
2010-05-24 17:46:21 +01:00
Martin Hosken
72631c9d06
Merge branch 'master' of git://git.freedesktop.org/~behdad/harfbuzz-ng
2010-05-22 09:38:02 +01:00
Martin Hosken
1432ab15c1
Add graphical output to hbtestfont
2010-05-22 00:56:40 +01:00
Behdad Esfahbod
bbc7a99d01
Move mirroring around a bit
2010-05-21 18:25:08 +01:00
Behdad Esfahbod
bd0987386b
Add a few more standard features
2010-05-21 18:06:35 +01:00
Behdad Esfahbod
75f3469ca6
Add note
2010-05-21 17:59:04 +01:00
Behdad Esfahbod
1094a294f6
Add rtlm
2010-05-21 17:58:20 +01:00
Behdad Esfahbod
074ea78749
Add ltra, ltrm, and rtla features
2010-05-21 17:53:10 +01:00
Behdad Esfahbod
1ce7b87c4d
Cleanup bitmask allocation
2010-05-21 17:31:45 +01:00
Behdad Esfahbod
9722b8f005
Simple renames
2010-05-21 14:37:47 +01:00
Behdad Esfahbod
ca663bb23c
Move main shaper code into hb_ot_shape()
2010-05-21 14:34:23 +01:00
Behdad Esfahbod
4a9a5c0b06
Don't allocate bits for features not available
2010-05-21 13:33:46 +01:00
Behdad Esfahbod
e53d77142a
Speed up feature mask setting
...
Patch from Jonathan Kew.
2010-05-21 13:32:38 +01:00
Behdad Esfahbod
ee1b322100
Fix feature mask setting
2010-05-21 12:55:57 +01:00
Behdad Esfahbod
6774463883
Apply user features to ranges!
2010-05-20 15:41:20 +01:00
Behdad Esfahbod
6b1b957f6d
Add lookup_map
2010-05-20 15:14:44 +01:00
Behdad Esfahbod
60010a0c4d
Update always-apply mask from 0xFFFF to 1
...
We plan to use the first bit to be always on.
2010-05-20 14:05:02 +01:00
Behdad Esfahbod
7f411dbfd9
Apply user features
...
No ranges yet
2010-05-20 13:40:18 +01: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