Behdad Esfahbod
6a4e7e1372
Add maxp table
...
Not used for anything right now. Will use to get num_glyphs in the future.
2011-05-11 10:31:33 -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
63d646fb29
[font] Do user-space conversion when chaining up to parent font
2011-05-11 00:15:37 -04:00
Behdad Esfahbod
b6f902a1a9
Minor
2011-05-11 00:04:15 -04:00
Behdad Esfahbod
abcfe9b59b
Remove hb_ot_layout_context_t, simplify code
2011-05-11 00:02:02 -04:00
Behdad Esfahbod
1ded6d8bbf
Make default font-funcs chain-up to the parent
2011-05-10 20:50:06 -04:00
Behdad Esfahbod
b9d975b931
[API] Pass down closure user_data to font funcs
2011-05-10 20:41:13 -04:00
Behdad Esfahbod
446df9cdb1
Whitespace
2011-05-10 20:14:44 -04:00
Behdad Esfahbod
686c2d165d
[API] Remove font_funcs func getter functions
2011-05-10 20:04:26 -04:00
Behdad Esfahbod
defc45be6d
[API] Add hb_font_create_sub_font() and hb_font_get_parent()
...
Not quite useful just yet.
2011-05-10 20:02:49 -04:00
Behdad Esfahbod
11bb8fe7b3
[font] Fix internal sign of x/y_scale
...
Should have been done as part of da97541988
2011-05-10 19:57:00 -04:00
Behdad Esfahbod
85e6218e33
[API] Remove broken-by-design hb_font_unset_funcs()
2011-05-10 19:40:44 -04:00
Behdad Esfahbod
74f1d896f2
Add hb_font_make/is_immutable()
2011-05-10 19:39:32 -04:00
Behdad Esfahbod
8c7a100a4d
Fix build without mutex
2011-05-10 19:21:07 -04:00
Behdad Esfahbod
19d3035c40
Remove duplicate atomic_int implementation
2011-05-10 19:18:12 -04:00
Behdad Esfahbod
45bfa99034
Fix set implementation to be truly threadsafe even with destroy() callbacks
...
The test/object test is passing again, instead of deadlocking.
2011-05-10 19:15:49 -04:00
Behdad Esfahbod
1c9f8717eb
[API] Simplify blob API, remove lock
2011-05-06 22:59:42 -04:00
Behdad Esfahbod
a0f337a1cc
Remove unused hb_blob_try_writable_inplace()
2011-05-06 19:20:52 -04:00
Behdad Esfahbod
08611d5194
Add note re deadlocks
2011-05-06 16:28:10 -04:00
Behdad Esfahbod
34fb5521a5
[API] Add hb_language_get_default()
...
It uses locale information to detect default language. It's used by
hb_shape() whenever language is not set on the buffer.
Not sure how to properly test it in the test suite. Tested by observing
that with DejaVu Sans we select the proper local glyph version for U+431
under Serbian locale. See http://www.pango.org/ScriptGallery
2011-05-06 00:05:08 -04:00
Behdad Esfahbod
c78f448558
[API] Add version macros and functions
...
Step version up to 0.5.0.
Also, fix to pass "make distcheck"
2011-05-05 21:31:04 -04:00
Behdad Esfahbod
3935af1c0d
[buffer] Remove wrong optimization
...
While the cluster fields of the glyph string are usually sorted, they
wouldn't be in special cases (for example for non-native direction).
Blindly using bsearch is plain wrong. If we want to reintroduce this
optimization we have to make sure we know the buffer clusters are
monotonic and in which direction. Not sure it's worth it though.
2011-05-05 16:09:45 -04:00
Behdad Esfahbod
46df682851
Make user_data access threadsafe
...
For now, by taking a global user_data mutex.
2011-05-05 15:33:19 -04:00
Behdad Esfahbod
218e67b9ee
Shrink code
2011-05-05 15:28:37 -04:00
Behdad Esfahbod
b8d6183ebc
Use threadsafe set implementation for hb_language lookups
...
Note that the static variable has to be a global static, as gcc
implements local statics differently and that would require linking
to libstdc++, which we don't want.
2011-05-05 15:14:04 -04:00
Behdad Esfahbod
d37486d87b
Add hb_threadsafe_set_t
2011-05-05 15:07:54 -04:00
Behdad Esfahbod
b45f32ee4e
Use hb_array_t for hb_language_t mapping
2011-05-05 15:00:43 -04:00
Behdad Esfahbod
21d2c92fdf
Move code around
2011-05-05 14:47:53 -04:00
Behdad Esfahbod
265ac614ea
Replace fixed-size lookup_maps array with hb_array_t
2011-05-05 14:38:16 -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
44b0a4d2fc
Replace fixed-size feature_infos array with hb_array_t
2011-05-05 13:42:19 -04:00
Behdad Esfahbod
b214ec3ac0
Minor
2011-05-05 13:24:07 -04:00
Behdad Esfahbod
811482bd65
Replace hb_map_t with hb_set_t which is more intuitive and flexible
2011-05-05 13:21:04 -04:00
Behdad Esfahbod
478a42536f
Make array/map implementation more generic
2011-05-05 12:39:51 -04:00
Behdad Esfahbod
b81bd42951
Make hb_mutex_*() macros take a pointer
...
More intuitive.
2011-05-05 00:21:16 -04:00
Behdad Esfahbod
a4b1900913
Add hb_static_mutex_t
2011-05-05 00:17:43 -04:00
Behdad Esfahbod
56eb5ad6f9
Move code around
...
Mutex (and Windows.h by extension) are fairly isolated now.
2011-05-04 19:27:37 -04:00
Behdad Esfahbod
d292885893
[ft] Fix font->face handling
...
Don't use _cached()
2011-05-03 01:03:53 -04:00
Behdad Esfahbod
2000179487
Move Win32 thread-safety stuff to hb-object-private.h
...
The Win32 definitions for LONG, ULONG, etc conflicts with
hb-open-type.h. Avoid that by making sure hb-object-private.h
and hb-open-type.h are not included in the same compilation unit.
2011-05-03 00:49:06 -04:00
Behdad Esfahbod
266b34418c
Refactor to keep hb-object-private.h and hb-open-type.h separate
...
Needed to be able to include <Windows.h> from hb-object-private.h.
2011-05-03 00:35:53 -04:00
Behdad Esfahbod
d4141a44b9
[blob] Implement sub_blob() in terms of create()
...
Fixes problem with uninitialized sub_blob->mutex among other things.
Reported by Bradley Grainger.
2011-05-03 00:19:18 -04:00
Behdad Esfahbod
fc52e9e44c
Implement win32 thread-safety stuff
...
Patch from Bradley Grainger.
2011-05-03 00:09:16 -04:00
Behdad Esfahbod
f55272ecde
Add hb_mutex_free() and use it
...
Based on patch by Bradley Grainger.
2011-05-02 20:57:28 -04:00
Behdad Esfahbod
8d5186484b
Cosmetic
2011-05-02 20:52:21 -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
cec6611c5c
Protect NULL in a couple places
2011-05-02 20:18:58 -04:00
Behdad Esfahbod
5a5030366e
Fix bug in array growth implementation
...
With this, test/object is now passing. Yay!
2011-05-02 19:54:29 -04:00
Behdad Esfahbod
16123e1070
Fix bug in map implementation
2011-05-02 19:54:17 -04:00
Behdad Esfahbod
1cd5969f25
[object] Fix bug in get_user_data() implementation
2011-05-02 19:53:39 -04:00
Behdad Esfahbod
4911062d5b
[API] Rename hb_blob_create_empty() to hb_blob_get_empty()
2011-05-02 19:36:39 -04:00
Behdad Esfahbod
1ab1d3e38c
[face] Return nil face if blob is inert
2011-05-02 19:35:53 -04:00
Behdad Esfahbod
e87867cb88
[buffer] Fail in _create() if we cannot pre-allocate the requested size
2011-05-02 19:35:05 -04:00
Behdad Esfahbod
c784c67a28
[unicode] Make _get_parent() return _nil object instead of NULL
2011-05-02 15:59:57 -04:00
Behdad Esfahbod
03034acb8a
[icu] Make sure we return script UNKNOWN instead of INVALID
2011-05-02 12:37:45 -04:00
Behdad Esfahbod
d02985ec5a
ISO 15924 fixes
...
Update to http://unicode.org/iso15924
Fixes some of the test failures in test-unicode with ICU. Still
one more to fix before the test passes.
2011-05-02 12:35:14 -04:00
Behdad Esfahbod
6af9cff5e1
[test/unicode] Use text fixture instead of static variables
2011-04-29 12:12:37 -04:00
Behdad Esfahbod
243673d601
[test/buffer] Add more extensive UTF-8 test data from glib
2011-04-28 19:37:51 -04:00
Behdad Esfahbod
c7ffe2ad5f
[API Remove hb_font_funcs_copy()
...
Will be adding font_funcs subclassing instead.
2011-04-28 16:03:29 -04:00
Behdad Esfahbod
30f34d08d4
[TODO] Remove finished items
2011-04-28 16:02:40 -04:00
Behdad Esfahbod
080a0eb7d8
Add _hb_unsigned_int_mul_overflows
2011-04-28 16:01:01 -04:00
Behdad Esfahbod
3264042873
[test/buffer] Test pre_allocate() and allocation_successful()
2011-04-28 14:24:16 -04:00
Behdad Esfahbod
123aa04f7b
Fix possible but improbable overflow in hb_array_t
2011-04-28 12:58:28 -04:00
Behdad Esfahbod
e0db4b868f
[buffer] More error handling
...
Should be all set now.
2011-04-28 12:56:49 -04:00
Behdad Esfahbod
5fa849b77d
[API] Add _set/get_user_data() for all objects
2011-04-27 21:46:01 -04:00
Behdad Esfahbod
852e08ec8f
Move code around
2011-04-27 21:45:51 -04:00
Behdad Esfahbod
29c67d3f70
Add initial implementation of user_data to objects
2011-04-27 21:27:40 -04:00
Behdad Esfahbod
47e71d9661
[object] Remove unnecessary use of macros
2011-04-27 16:41:08 -04:00
Behdad Esfahbod
8be1420f8f
[blob] Use HB_FUNC instead of __FUNCTION__
2011-04-27 16:16:43 -04:00
Behdad Esfahbod
ae008b90cf
[object] Add tracing support back in
2011-04-27 16:16:39 -04:00
Behdad Esfahbod
39a840ae65
[API] Add hb_direction_from/to_string()
...
And hb-view --direction argument.
2011-04-27 14:48:19 -04:00
Behdad Esfahbod
f1425a549f
Rename hb-view.c and test.c to .cc files
2011-04-27 12:15:06 -04:00
Behdad Esfahbod
65e0063eae
Make buffer size growth start from 32 instead of 8
2011-04-27 09:38:23 -04:00
Behdad Esfahbod
d4bee9f813
[API] Add hb_unicode_funcs_get_default()
2011-04-27 09:38:19 -04:00
Behdad Esfahbod
153142dac8
Replace simple macros with inline functions for better type safety
...
Now that we use C++ for all source code, lets benefit from it!
The hb_be_int16/32_get/put/eq() macros grow code size if replaced with
inline functions, so leave them as is.
2011-04-27 02:07:46 -04:00
Behdad Esfahbod
40a9b8154f
Add TODO item
2011-04-27 01:48:56 -04:00
Behdad Esfahbod
ebdc83467c
Don't return in void function
...
Would have been nice if gcc had warned...
2011-04-27 01:41:24 -04:00
Behdad Esfahbod
ec6f9c2fd0
Further simplify object handling
2011-04-21 18:35:58 -04:00
Behdad Esfahbod
fca368c468
Add hb_object_header_t which is the common part of all objects
...
Makes way for adding arbitrary user_data support.
2011-04-21 18:24:02 -04:00
Behdad Esfahbod
a9f24c8029
Move hb_reference_count_t to hb-private.h
2011-04-21 17:18:22 -04:00
Behdad Esfahbod
2409d5f8d7
Update Copyright headers
2011-04-21 17:14:28 -04:00
Behdad Esfahbod
08da7a3841
[hb-view] Accept numbers in feature tag name
...
Reported by Adam Twardoch.
2011-04-21 16:59:10 -04:00
Behdad Esfahbod
24229eb132
Remove obsolete comment
...
Talking to Ryan Lortie, he thinks my comment doesn't make sense.
So I'm making the getter const. Note that g_atomic_int_get()
casts that away itself, so we don't need to worry about that
(which kinda makes me uncomfortable actually).
2011-04-21 16:55:17 -04:00
Behdad Esfahbod
dcb7026f33
Add ASSERT_STATIC_EXPR macro
...
Unused right now.
2011-04-21 16:34:22 -04:00
Behdad Esfahbod
3e8bdbf941
Cleanup hb_refrence_count_t
2011-04-21 16:16:21 -04:00
Behdad Esfahbod
783a7d6969
[TODO] Remove finished items
2011-04-21 16:03:59 -04:00
Behdad Esfahbod
da97541988
[API] Allow negative font x_scale/y_scale
...
I was reconsidering whether y should grow down, since all three/four
times I've used this API I was tricked and got that wrong in my use.
So I was very inclined to make y grow down instead of up. However,
considering that the font space has y up and it would be very confusing
for callbacks to work against that, I decided that what I really want
is for the user to be able to set y_scale to a negative number to imply
that user-space y grows down.
Changing x_scale/y_scale from unsigned int to int allows that, and I've
made pango to use that instead of negating glyph y_offset later. hb-ft
however still has y group up. I *guess* that's how FreeType works?
I'm not sure, FreeType docs don't make this clear...
I'm happy with the resolution :-).
2011-04-21 15:15:02 -04:00
Behdad Esfahbod
4d559cddbb
[icu] Remove big script switch(), rely on reverse-lookup
2011-04-21 14:58:23 -04:00
Behdad Esfahbod
d18431b4cd
Move hb_reference_count_t from macros to inline methods
2011-04-20 18:59:10 -04:00
Behdad Esfahbod
c57d454acc
Rename all private sources and headers to C++ files
...
So we can liberally use the simple features of C++ that parts of the
codebase is already using.
2011-04-20 18:50:27 -04:00
Behdad Esfahbod
f19f4f9b09
Rename hb-blob.c to hb-blob.cc in preparation of more changes
2011-04-20 18:25:56 -04:00
Behdad Esfahbod
9417c1c0d2
[API] Make hb_face_reference_table() return empty blob instead of NULL
...
The idea here is that:
- Like pretty much all other API in harfbuzz, user does not have to
check for NULL.
- In any caller code, the case of missing table should be handled
exactly the same way that a too-short table is handled. Turning
a non-existent talbe into a table of size 0 makes the user code
safer.
2011-04-20 17:21:23 -04:00
Behdad Esfahbod
c035812feb
[API] Rename hb_face_get_table() to hb_face_reference_table()
...
That correctly reflects the reference ownership transfer happening.
2011-04-20 17:03:00 -04:00
Behdad Esfahbod
2d7b61a4b0
[TODO] Remove done items
2011-04-20 16:40:56 -04:00
Behdad Esfahbod
af02933739
[API] Remove hb_*_get_reference_count()
...
This was a bizzare piece of API that I inherited from cairo. It has
been wrong adding them to cairo in the first place. Remove them before
someone uses them!
2011-04-20 15:49:31 -04:00
Behdad Esfahbod
440a76b630
[OT] Fix script to ot-script-tag conversion
2011-04-20 14:20:00 -04:00
Behdad Esfahbod
a3036a3e97
Minor
2011-04-20 14:13:23 -04:00
Behdad Esfahbod
5668189c12
[API] font: move user_data before destroy()
...
This is the common convention for language binding tools.
2011-04-20 03:03:32 -04:00
Behdad Esfahbod
e5847f75fb
[API] blob: move user_data before destroy()
...
This is the common convention for language binding tools.
2011-04-20 02:59:28 -04:00
Behdad Esfahbod
f144a8ea84
[icu] Add two-way script conversion functions
...
Also optimizes the common-direction script lookup.
2011-04-20 02:54:42 -04:00
Behdad Esfahbod
0809aadd4b
[glib] Add two-way script conversion functions
...
Also optimizes the common-direction script lookup to be an array lookup.
2011-04-20 02:44:29 -04:00
Behdad Esfahbod
5c8c1b680c
Remove verbose comments
2011-04-20 02:29:22 -04:00
Behdad Esfahbod
fb194b8794
unicode: Cleanup implementation
2011-04-20 02:27:39 -04:00
Behdad Esfahbod
ecfb773829
Cosmetic
2011-04-20 01:34:51 -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
f85faee9b3
[API] Rename hb_buffer_add_glyph() to hb_buffer_add()
2011-04-19 00:38:01 -04:00
Behdad Esfahbod
aab0de50e2
[API] Add hb_buffer_allocation_successful()
...
Returns the error status of the buffer.
2011-04-19 00:32:19 -04:00
Ryan Lortie
02a534b23f
[API] Rename hb_buffer_ensure() to hb_buffer_pre_allocate()
...
The new name is self-documenting.
2011-04-19 00:05:43 -04:00
Ryan Lortie
70566befc5
[API} hb_buffer_get_glyph_{infos,positions}: Add length out parameter
...
Return the length, whenever we return an array. Makes it easier on the
language bindings.
2011-04-19 00:03:44 -04:00
Behdad Esfahbod
62879eebd9
[API] Use ISO 15924 tags for hb_script_t
...
This simplifies the code, reduces static data, and makes the design
more extensible to future additions of new scripts.
2011-04-18 23:40:21 -04:00
Behdad Esfahbod
c0af193c8e
Change buffer default properties to invalid
...
This includes HB_DIRECTION_INVALID and HB_SCRIPT_INVALID.
The INVALID will cause a "guess whatever from the text" in hb_shape().
While it's not ideal, it works better than the previous defaults at
least (HB_DIRECTION_LTR and HB_SCRIPT_COMMON).
2011-04-15 19:26:24 -04:00
Behdad Esfahbod
00bec2c969
Move enum types to hb-common.h
2011-04-15 19:16:54 -04:00
Behdad Esfahbod
b54cd07b26
Mark internal buffer variables private
2011-04-15 19:12:01 -04:00
Behdad Esfahbod
0e8d35c093
Add hb_script_from_string()
2011-04-15 19:08:43 -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
2fc56edff6
[API] Remove hb_buffer_clear()
...
One should use hb_buffer_reset() really.
2011-04-15 19:08:38 -04:00
Behdad Esfahbod
5814dfa3f5
Cosmetic
2011-04-15 14:41:04 -04:00
Behdad Esfahbod
3cbdf70e0a
Make hb_language_t typesafe
2011-04-15 12:33:14 -04:00
Behdad Esfahbod
c910bec863
Add hb_buffer_reset() and hb_buffer_set_length()
2011-04-13 15:49:06 -04:00
Behdad Esfahbod
69ea23cb5d
Minor
2011-04-13 15:02:40 -04:00
Behdad Esfahbod
8e4bb3cacc
Fold hb-language.[ch] into hb-common.[ch]
2011-04-11 17:55:58 -04:00
Behdad Esfahbod
316b7a1afb
Make hb_language_from_string("") return NULL language
2011-04-11 17:49:10 -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
4188096a77
Make HB_TAG_CHAR4 private
...
It's just sugar.
2011-04-11 14:58:28 -04:00
Behdad Esfahbod
7ff7401c92
Make hb_tag_from_string(NULL) return HB_TAG_NONE
2011-04-11 13:27:30 -04:00
Behdad Esfahbod
db5227c40e
Move macros around
2011-04-11 13:16:08 -04:00
Behdad Esfahbod
07233581c9
Rename HB_TAG_STR() to HB_TAG_CHAR4()
...
The problem with HB_TAG_STR() was that it expected a string of size 4
exactly, and unlike hb_tag_from_string() it doesn't pad the tag with
space characters. So, the new name is more appropriate.
2011-04-11 13:12:37 -04:00
Behdad Esfahbod
d77b76200e
Add few more paratheses to the HB_TAG macro
...
Never hurts.
2011-04-11 12:29:52 -04:00
Behdad Esfahbod
b13640de69
A few more ASSERTs
2011-04-11 12:29:31 -04:00
Behdad Esfahbod
ae9eeaff93
Remove warning message from public header file
...
Since we now assert thos in hb-private.h, the int types cannot be wrong.
(Except for when someone else includes hb-common.h in a very broken
configuration, but that's not our problem!)
Plus, we don't use inline in the public headers, so remove that too.
2011-04-11 12:09:13 -04:00
Behdad Esfahbod
6fd5364bdc
Assert int types
2011-04-11 11:47:14 -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
cab6f65bba
[hb-view] setlocale (LC_ALL, "")
...
For now we don't use anything from the locale, but we should default
to using $LANG, etc, if --language is not specified. Right?
2011-04-04 15:36:51 -04:00
Behdad Esfahbod
fb9ca1bfab
[hb-view] Rewrite --features parsing, with range support
...
The --features parsing handles errors now. More importantly, it
allos limiting individual features to specific byte ranges. The
format is Python-esque. Here is how it all works:
Syntax: Value: Start: End:
Setting value:
"kern" 1 0 ∞ # Turn feature on
"+kern" 1 0 ∞ # Turn feature off
"-kern" 0 0 ∞ # Turn feature off
"kern=0" 0 0 ∞ # Turn feature off
"kern=1" 1 0 ∞ # Turn feature on
"kern=2" 2 0 ∞ # Choose 2nd alternate
Setting index:
"kern[]" 1 0 ∞ # Turn feature on
"kern[:]" 1 0 ∞ # Turn feature on
"kern[5:]" 1 5 ∞ # Turn feature on, partial
"kern[:5]" 1 0 5 # Turn feature on, partial
"kern[3:5]" 1 3 5 # Turn feature on, range
"kern[3]" 1 3 3+1 # Turn feature on, single char
Mixing it all:
"kern[3:5]=0" 1 3 5 # Turn feature off for range
2011-04-04 14:50:09 -04:00
Behdad Esfahbod
ccc6745afa
[hb-view] Use cached hb-ft face creation
...
Avoids recreating the face the second time we call draw().
2011-04-04 14:49:50 -04:00
Behdad Esfahbod
1b4a2cc095
[hb-view] Add --debug
...
Frees all allocated memory before exiting. Useful for valgrind run.
2011-04-04 14:45:28 -04:00
Behdad Esfahbod
b2da26d1e3
[hb-view] Support --features
...
Accepts values like:
--features="-mkmk,aalt=2,calt=1,+cswh"
A minus sign means "=0", a plus sign means "=1". Default is "=1".
A minus sign overrides an explicit value.
2011-04-01 15:48:43 -04:00
Behdad Esfahbod
f48ff19b62
Sort options for clarity
2011-04-01 14:19:10 -04:00
Behdad Esfahbod
5d91c3d547
Add script to/from ISO 15924 tag support
...
Also adds --script support to hb-view.
If a script tag is not known to us, we pass the ISO 15924 tag around.
Right now, the OT layer ignores that, but we can fix it to blindly
convert that to an OT script tag.
2011-03-16 17:36:32 -03: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
b7b29684df
[hb-view] Handle write_to_png errors
2011-03-02 01:01:03 -05:00
Behdad Esfahbod
c2cb98c818
[hb-view] Link with -lm
2011-03-01 23:18:09 -05:00
Behdad Esfahbod
b5dd44e246
Fix possible overflow
2011-02-28 10:13:52 -08:00
Behdad Esfahbod
a4b781e93a
Default background color shall either be white or transparent
...
Definitely not black!
2011-02-23 12:47:56 -05:00
Behdad Esfahbod
5353bf439c
Add initial hb-view tool
...
Currently doesn't handle script or direction.
2011-02-22 18:06:19 -05:00
Bradley Grainger
82438c6ad5
Fix #pragma message for MSVC.
...
__LOC__ was renamed to _HB__LOC__ in cd7555 but the corresponding
change wasn't made in hb-private.h.
2011-02-15 18:37:29 -05:00
Behdad Esfahbod
ba9ab8d6d9
Fix language extension matching
2011-01-10 07:45:41 -05:00
Behdad Esfahbod
7bbe14bed8
Fix 'make distcheck'
2011-01-09 22:29:14 -05: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
1c3183027f
Remove unused realloc
...
We always allocate and grow str and pos together.
2011-01-06 14:44:14 -05:00
Behdad Esfahbod
756f794a1f
Remove Graphite backend
...
It was unmaintained and the code has to be replaced to use the new
grphite-ng code base.
2010-12-26 20:52:40 -05:00
Behdad Esfahbod
f3d9d98793
Docs
2010-12-22 01:39:29 -05:00
Behdad Esfahbod
d86a5b3c57
Bug 32274 - classic mongolian shaper
...
Add support for classic Mongolian script to the Arabic shaper.
Still work to be done around U+180E MONGOLIAN VOWEL SEPARATOR as it
should not be included in the final glyph stream the same way that
ZWNJ, etc should not appear in the final glyph stream.
But the joining part should be done.
There remains the question of how should the U+18A9 MONGOLIAN LETTER ALI
GALI DAGALGA be handled as it has General Category NSM but a letter
nonetheless. For now, our generic logic makes this a joining T instead
of joining D as other Mongolian letters are.
2010-12-21 18:36:25 -05:00
Behdad Esfahbod
b0e7378fa9
Reroute Mandaic shaping through the Arabic shaper
...
We added Mandaic joining data to the Arabic shaper a while ago, but
were not actually using the Arabic shaper for Mandaic. Fixed.
2010-12-21 14:19:32 -05:00
Behdad Esfahbod
88e7f37488
Annotate the Arabic joining table with block information
2010-12-21 14:18:24 -05:00
Behdad Esfahbod
1482a39e56
Rename remaining metrics uses to extents
2010-12-17 20:15:05 -05:00
Behdad Esfahbod
22c537657c
Rename TableDirectory to TableRecord as per OpenType 1.6
2010-12-14 23:51:29 -05:00
Behdad Esfahbod
33e8b86197
Update 'head' table to OpenType 1.6
2010-12-13 15:54:56 -05:00
Behdad Esfahbod
b768333514
Disallow ligature substitutions replacing one glyph
2010-12-13 14:22:35 -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
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
4f9e4a40bc
Fix failing checks
2010-11-22 11:30:32 -05:00
Behdad Esfahbod
9da26d6669
Remove email address from Copyright headers
2010-11-22 11:03:18 -05:00
Behdad Esfahbod
a45f000192
Clarify copyright notice
2010-11-18 13:59:10 -05:00
Behdad Esfahbod
0884a8d9cd
Move generated table to its own file
2010-11-17 16:58:21 -05:00
Behdad Esfahbod
14d784116b
Update Arabic joining table to include Mandaic
...
Mandaic was added to Unicode 6.0, but the joining data was not updated.
Draft ArabicShaping.txt from 6.1 includes the joining data for Mandaic.
Use that.
2010-11-17 16:52:58 -05:00
Behdad Esfahbod
43bf2f7f1e
Add OpenType script tags for Unicode 5.2 and Unicode 6.0 scripts
...
Based on tags proposed by Microsoft for inclusion in OpenType.
2010-11-17 14:49:40 -05:00
Behdad Esfahbod
afab01cf7c
Add Unicode 6.0 scripts
2010-11-17 14:35:34 -05:00
Behdad Esfahbod
f234b68d18
Change HB_SCRIPT_MEITEI_MAYEK to HB_SCRIPT_MEETEI_MAYEK
...
The new name matches the Unicode name. Reported by Jonathan Kew.
2010-11-17 14:25:44 -05:00
Behdad Esfahbod
300cb41417
Add XXX marks
2010-11-17 12:57:23 -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
a5ab682b9b
More "unreached code" warning fixes
...
Ugly :(.
2010-11-03 16:10:12 -04:00
Behdad Esfahbod
4e22c7e941
Add comment
2010-11-03 16:10:12 -04:00
Behdad Esfahbod
0342034d1c
Pedantic
2010-11-03 16:10:12 -04:00
Behdad Esfahbod
4a2d844c2f
Minor code shuffling
2010-11-03 15:28:56 -04: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
b8783c85ac
Fix unreachable-code warning
2010-11-03 11:51:43 -04:00
Behdad Esfahbod
c2709119c8
Move things around some more
2010-11-02 19:12:59 -04:00
Behdad Esfahbod
194d4566ec
Move buffer var allocation local
2010-11-02 19:12:59 -04:00
Behdad Esfahbod
1e7c1fcbc3
Move code around
2010-11-02 19:12:59 -04:00
Behdad Esfahbod
bf94b3ad22
Move some more code around
2010-11-02 19:12:59 -04:00
Behdad Esfahbod
6334658fe7
Simplify mark skipping logic
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
870e2d6eac
Remove unused function
2010-11-02 19:12:58 -04:00
Behdad Esfahbod
1115890b90
More cleanup
2010-11-02 19:12:58 -04:00
Behdad Esfahbod
dbf56b1d94
More lig-id cleanup
2010-11-02 19:12:58 -04:00
Behdad Esfahbod
f6a23a0b91
More removal of lig-id code from buffer
2010-11-02 19:12:58 -04:00
Behdad Esfahbod
dd2ffd282c
Minor renaming
2010-11-02 19:12:58 -04:00
Behdad Esfahbod
fe263272a2
Move setting lig_id/component out of buffer and to the gsub code
2010-11-02 19:12:58 -04:00
Behdad Esfahbod
2e2b2480c0
Always allocate new ligature id
...
No practical point in reusing ligature ids.
2010-11-02 19:12:58 -04:00
Behdad Esfahbod
bf07d5a29c
Set component=0 for ligature glyph
2010-11-02 19:12:58 -04:00
Behdad Esfahbod
37ab877149
Remove comment
2010-11-02 19:12:58 -04:00
Behdad Esfahbod
88474c6fda
Get rid of the OpenType-specific internal buffer representation
...
Add variant integers to buffer item types. More cleanup coming.
2010-11-02 19:12:58 -04:00
Behdad Esfahbod
6cb8c34930
Add hb_var_int_t
2010-11-02 19:12:57 -04:00
Behdad Esfahbod
f22802431a
Remove trailing comma
2010-11-02 19:12:57 -04:00
Behdad Esfahbod
13528d0c78
Supposedly implement vertical support in GPOS
...
Not tested at all.
2010-10-27 14:09:27 -04:00
Behdad Esfahbod
9624de5b49
Clarify cursive_chain (and change its sign)
2010-10-27 13:44:59 -04:00
Behdad Esfahbod
d6c9eadb88
Remove more pointless LONGTERMTODO items
2010-10-27 12:34:50 -04:00
Behdad Esfahbod
e204674fe3
Rename hb_ot_layout_get_lig_carets() to hb_ot_layout_get_ligature_carets()
2010-10-27 12:32:02 -04:00
Behdad Esfahbod
3357d145f8
Implement vertical support in get_lig_carets()
2010-10-27 12:30:46 -04:00
Behdad Esfahbod
8eeed7eddc
Remove LONGTERMTODO item that I'll never fix
2010-10-27 12:07:49 -04:00
Behdad Esfahbod
184a5279c6
Remove unused macro
2010-10-27 12:00:49 -04:00
Behdad Esfahbod
af5d02a269
Rewrite Cursive joining to act more like other pair lookups
...
Look forward for next character instead of joining to the last character.
2010-10-27 11:54:26 -04:00
Behdad Esfahbod
ea22c749c7
Fix Cursive positioning
...
Test case: "مرا" rendered using IranNastaliq.
2010-10-27 11:09:48 -04:00
Behdad Esfahbod
aefdb64689
Fix segfault with Arabic combining marks
2010-10-27 10:40:39 -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
ec6c0e54d3
Fix blob leak
2010-10-26 11:28:14 -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
961f9baa7b
Oops, actually set global mask
2010-10-13 17:17:00 -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
3506b2e78d
Return early if mask is 0
2010-10-13 15:38:52 -04:00
Behdad Esfahbod
5c1c8c9c50
Make sure feature values don't leak out of their mask
2010-10-13 15:36:38 -04:00
Behdad Esfahbod
852912fc2d
Fix applying default-value for features
...
Previously if a default global feature was overrided by a non-global
user feature, we were not setting any default mask for the feature,
essentially disabling the feature by default. Fix that.
2010-10-13 15:34:50 -04:00
Behdad Esfahbod
2989be4919
Set user masks after complex masks
2010-10-13 15:18:29 -04:00
Behdad Esfahbod
3111b8a0d5
Fix stupid bug, oops
2010-10-13 10:41:53 -04:00
Behdad Esfahbod
758f68b860
Fix Arabic shaper
...
It's tested now. It works!
2010-10-12 17:37:44 -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
66e487dfbf
Update Arabic shaping table to Unicode 6.0.0.
2010-10-12 13:51:19 -04:00
Behdad Esfahbod
f4792d99ee
Fix infinite loop!
...
Untested code is indeed buggy code.
Mozilla bug #603352 .
2010-10-12 12:32:18 -04:00
Behdad Esfahbod
993d1e786a
Fix missing negation in unreachable code!
...
Mozilla bug #603346
2010-10-12 11:17:30 -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
f5dd3be46b
Improve checks
2010-10-08 20:16:23 -04:00
Behdad Esfahbod
5a2b0b3878
Add hb-ot-map.cc
2010-10-08 20:14:57 -04:00
Behdad Esfahbod
ecc4550ed7
Fix feature overriding
2010-10-08 20:05:29 -04:00
Behdad Esfahbod
8f08c32750
Minor cleanup
2010-10-08 19:51:03 -04:00
Behdad Esfahbod
a806762a31
Add hb-ot-shape-private.hh
2010-10-08 19:21:46 -04:00
Behdad Esfahbod
4924affe0f
Add hb-ot-map-private.hh
2010-10-08 19:18:16 -04:00
Behdad Esfahbod
a7c5046d6b
Add private hb_segment_properties_t
2010-10-08 18:47:47 -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
34db6f031d
Add XXX note
2010-10-07 01:21:19 -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
3eb936f153
Add Arabic/Syriac/N'ko shaping logic
...
Not hooked up just yet.
2010-10-05 19:22:06 -04:00
Behdad Esfahbod
e81d7afe6e
Add hb_face_get_upem()
2010-10-04 18:18:48 -04:00
Behdad Esfahbod
bd361945a8
Add API comments
2010-10-04 17:22:57 -04:00
Behdad Esfahbod
645f6f265b
Add is_mutable() functions
...
Correspond to the make_mutable() ones.
2010-10-04 17:01:01 -04:00
Behdad Esfahbod
19c0eab8cf
Add getters for all setter APIs
...
One in particular is not a straight getter: hb_font_unset_funcs() is
special because of the specific needs of the lifecycle management of
the user_data object.
2010-10-04 16:45:21 -04:00
Behdad Esfahbod
f0feb084b0
Minor
2010-10-03 19:09:39 -04:00
Behdad Esfahbod
ac0c1663fa
Avoid div-by-zero, validate upem
2010-10-01 19:09:23 -04:00
Behdad Esfahbod
7f97d2cd90
Pedantic
2010-10-01 19:09:01 -04:00
Behdad Esfahbod
2841436926
Don't zero glyph advances in MarkToBase and similar lookups
...
See email thread "Should MarkToBase attachment zero the mark advance?"
started by Jonathan Kew on 23 August 2010 for details.
2010-10-01 18:32:45 -04:00
Behdad Esfahbod
36b3862009
One fewer cmp() implementation...
2010-09-29 12:10:24 -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
dca8aff246
Add comment re DejaVu Sans Mono having 'dflt' script
2010-09-28 16:25:45 -04:00
Behdad Esfahbod
9dc45401c0
Fix stupid bug in bsearch cmp function!
2010-09-28 16:23:28 -04:00
Behdad Esfahbod
f2a30bd605
Remove unimplemented method hb_font_get_funcs()
...
Got to add a suitable replacement.
2010-09-23 10:27:08 -04:00
Behdad Esfahbod
7b9a38a112
Add test.c using public API
2010-09-22 17:42:59 -04:00
Behdad Esfahbod
9ea7368fce
Fix hb_ot_layout leak
2010-09-22 17:38:44 -04:00
Behdad Esfahbod
8e577acae2
Fix blob refcounting with insane SFNT table directories
2010-09-22 17:37:02 -04:00
Behdad Esfahbod
5bd1e95236
Speedup Device table delta computation for common cases
2010-09-22 16:46:18 -04:00
Behdad Esfahbod
ed4acbde9c
Fix NULL dereference
...
Reported by Jonathan Kew. Face table handling needs to be redone
anyway, but fix this for now.
2010-08-16 14:36:27 -04:00
Behdad Esfahbod
258305c2a5
[GPOS] Fix div-by-zero
...
Patch by Jonathan Kew. Mozilla bug #465728 .
2010-08-13 14:10:02 -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
cc6d52279d
De-C++ where possible
...
Helps with avoiding many "extern C" declarations in source files.
2010-07-23 15:00:13 -04:00
Behdad Esfahbod
0dd200d28f
Header dep cleanup
2010-07-23 14:56:29 -04:00
Behdad Esfahbod
fb0d252462
dos2unix
2010-07-23 14:54:22 -04:00
Behdad Esfahbod
81408cd51c
Don't use "operator ="
...
Some compilers don't like operator = defined on members of union members
either. Reported by Ginn Chen for Sun Studio compilers.
2010-07-23 14:46:57 -04:00
Behdad Esfahbod
4f801bd658
Mozilla bug 580233 - check for zero-length record in hb sanitizer.
...
Patch / report by Jonathan Kew.
2010-07-21 16:37:01 -04:00
Behdad Esfahbod
17e9ff938b
Fix 64bit issues with debug prints
2010-07-15 11:21:34 -07:00
Behdad Esfahbod
fd56ae4963
Don't bother sorting, it's a safe font error if the array is not sorted
2010-07-08 00:53:40 -04:00
Behdad Esfahbod
cc8a4abea6
Use bsearch where applicable
2010-07-08 00:40:04 -04:00
Behdad Esfahbod
2f418f5709
Remove useless TODO
2010-07-07 22:07:40 -04:00
Behdad Esfahbod
da8edbb622
Fix header
2010-06-09 07:15:39 -04:00
Behdad Esfahbod
d05d13df02
Add a test for header preprocessor guards
2010-06-09 07:15:03 -04:00
Behdad Esfahbod
0f0cd9d361
Fix header tags
2010-06-09 06:32:56 -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