Commit Graph

5655 Commits

Author SHA1 Message Date
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 5dd4609f4d [TODO] Add new item 2011-04-15 19:16:34 -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 7f5bdc8054 [TODO] Remove done items 2011-04-15 18:34:55 -04:00
Behdad Esfahbod 5814dfa3f5 Cosmetic 2011-04-15 14:41:04 -04:00
Behdad Esfahbod cfbfeb88a6 [TODO] Remove done items 2011-04-15 12:40:40 -04:00
Behdad Esfahbod 3cbdf70e0a Make hb_language_t typesafe 2011-04-15 12:33:14 -04:00
Behdad Esfahbod 2f2f448af3 [test] Add more TODO items 2011-04-15 11:45: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 7dea908cd5 [test] Add todo items 2011-04-13 01:35:58 -04:00
Behdad Esfahbod 07cbaac07d [TODO] Add item re script iso15924 functions 2011-04-13 01:11:19 -04:00
Behdad Esfahbod d0f53fdbea [test] Test hb-buffer.h 2011-04-13 01:09:53 -04:00
Behdad Esfahbod 72d89404c2 [TODO] Add item re hb_buffer_reset() 2011-04-13 01:07:42 -04:00
Behdad Esfahbod 5015c12dfb [TODO] Add item re hb_buffer_resize() 2011-04-13 01:06:02 -04:00
Behdad Esfahbod 9329ec9207 [TODO] Add API item 2011-04-13 00:06:23 -04:00
Behdad Esfahbod 4744379efc Minor 2011-04-11 19:47:33 -04:00
Behdad Esfahbod 9385caa8a6 [test] Actually hook up hb_script_t tests
I really shall find a way to automate the test enumeration.  Otherwise
it's too easy to add a test and wrongly hook it up.  Did it twice today.
2011-04-11 19:43:51 -04:00
Behdad Esfahbod 8e4bb3cacc Fold hb-language.[ch] into hb-common.[ch] 2011-04-11 17:55:58 -04:00
Behdad Esfahbod 09125576ca [test] Test hb_language_t 2011-04-11 17:49:33 -04:00
Behdad Esfahbod 316b7a1afb Make hb_language_from_string("") return NULL language 2011-04-11 17:49:10 -04:00
Behdad Esfahbod db60c96f20 [teset] Test hb_script_t 2011-04-11 16:17:02 -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 02f6e62d6c Build fix 2011-04-11 13:27:21 -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 9faa980067 Add an in-tree test suite
Uses the glib testing framework.  Wrote unit tests for hb-common.h
types.
2011-04-11 12:46:49 -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 bbdeff5964 Add test directory 2011-04-07 16:05:07 -04:00
Behdad Esfahbod 4accc92afc Update TODO items 2011-04-07 15:53:26 -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