Commit Graph

3888 Commits

Author SHA1 Message Date
Behdad Esfahbod
241eac9559 Hide internals of lookup accelerators 2015-02-25 15:43:25 -08:00
Behdad Esfahbod
e2d4e8480d [util] Add convenience "make lib" target 2015-02-25 15:43:24 -08:00
Behdad Esfahbod
faaae64bf2 Merge pull request #85 from KonstantinRitt/define_inline
Fix build with MSVC on CE
2015-02-25 15:34:34 -08:00
Collin Fair
9ee176ee97 Stop hb-shape docs leaking into hb-view 2015-02-14 09:59:44 -05:00
Collin Fair
952b8dbdf6 'All' of the above, not 'each' 2015-02-14 09:45:20 -05:00
Collin Fair
9e867b6446 Remove reference to --help-output-content in --help-output (as --help-output-format's options aren't available in hb-view) 2015-02-14 09:32:50 -05:00
Collin Fair
1d55ffeb66 Add serialization syntax documentation. Clarify naming and wording in --help-output/--help-format 2015-02-14 09:29:35 -05:00
Konstantin Ritt
9768e651be Fix build with MSVC on CE
This code is C++ only. There isn't a single C++ compiler that fails to
understand the "inline" keyword, since it's required by C++98. Any
compiler older than C++98 is likely to choke on the template usage
further down, so this isn't necessary.

Moreover, the C++ standard says you cannot define macros.
[lib.macro.names] says "Nor shall such a translation unit define macros
for names lexically identical to keywords." -- technically, it's a
promise that the Standard Library headers won't do it, the wording means
that the entire translation unit won't do it, which implies no source
can do it.

MSVC complains about it:
fatal error C1189: #error : The C++ Standard Library forbids macroizing
keywords. Enable warning C4005 to find the forbidden macro.

Author: Thiago Macieira <thiago.macieira@intel.com>
2015-02-14 00:58:51 +04:00
Behdad Esfahbod
7888a6b07a [ft] Handle negative scales with vertical writing 2015-01-28 12:40:40 -08:00
Behdad Esfahbod
982d94eaa2 [coretext] Don't generate notdef glyph for default-ignorables
As discovered on Chrome Mac:
https://code.google.com/p/chromium/issues/detail?id=452326
2015-01-28 10:51:33 -08:00
Behdad Esfahbod
6917a045fd [coretext] Unbreak glyph positioning in presence of notdef runs
As discovered on Chrome Mac:
https://code.google.com/p/chromium/issues/detail?id=452326

This was originally broken in:

	commit 5a0eed3b50
	Author: Behdad Esfahbod <behdad@behdad.org>
	Date:   Mon Aug 11 23:47:16 2014 -0400

	    [coretext] Implement vertical shaping
2015-01-28 10:50:54 -08:00
Behdad Esfahbod
1eff435023 Minor optimization 2015-01-27 12:26:04 -08:00
Konstantin Ritt
675956aca0 Do not leak hb_language_t on hb_language_item_t destruction 2015-01-27 10:06:56 -08:00
Konstantin Ritt
b306f9674a Minor improvement to HB_SHAPER_DATA_DESTROY 2015-01-27 10:02:34 -08:00
Behdad Esfahbod
61820bc4ca [API] Add hb_buffer_add_latin1()
This is by no ways to promote non-Unicode encodings.  This is an entry
point that takes Unicode codepoints that happen to all be the first
256 characters and hence fit in 8bit strings.  This is useful eg in Chrome
where strings that can fit in 8bit are implemented that way, and this
avoids copying into UTF-8 or UTF-16.

Perhaps we should rename this to hb_buffer_add_codepoints8().  I'm also
curious if anyone would be really interested in hb_buffer_add_codepoints16().

Please discuss!
2015-01-26 14:25:52 -08:00
Behdad Esfahbod
78c6e86c04 Fix hb_buffer_add_codepoints to actually NOT validate 2015-01-26 14:08:36 -08:00
Behdad Esfahbod
70c25ee215 Merge pull request #81 from KonstantinRitt/fixes/build/win8phone
winrt_buildfixes
2015-01-25 13:06:03 -08:00
Konstantin Ritt
f3537b620b Move some code around
Just to keep Windows specific workarounds in a single place.
2015-01-25 09:50:51 +04:00
Konstantin Ritt
afb62d88d7 Do not define MemoryBarrier on WinCE
There is a _HBMemoryBarrier() wrapper function that emulates
MemoryBarrier() behavior when it is not defined.
2015-01-25 08:16:26 +04:00
Konstantin Ritt
7db326a15b Fix build on WinRT
There is no environment (like WinCE) and the basic version
of InitializeCriticalSection is unsupported.

https://codereview.qt-project.org/#/c/92496/
2015-01-25 08:13:24 +04:00
Behdad Esfahbod
28f5e0b2f4 0.9.38 2015-01-23 12:45:35 -08:00
Behdad Esfahbod
a319d0777b [ft] Handle negative x_scale / y_scale 2015-01-23 12:44:24 -08:00
Behdad Esfahbod
b0b38bb892 [coretext] Fix positioning of notdef 2015-01-21 19:19:33 -08:00
Behdad Esfahbod
70622e5089 [coretext] Fix scaling
Before we were not accounting for possible differences in x_scale and
y_scale, as well as the signs of those.  All should be in good shape
now.
2015-01-21 18:51:42 -08:00
Behdad Esfahbod
221ba02b08 [coretext] Use vertical advance for notdef in vertical direction 2015-01-21 18:51:42 -08:00
Behdad Esfahbod
7988da24c5 Add convenience make target "make lib" in src/ 2015-01-21 18:33:50 -08:00
Behdad Esfahbod
31d48dd919 Add README.python 2015-01-21 01:57:44 -08:00
Behdad Esfahbod
ca1c2813dd [bindings] Add README.python 2015-01-21 01:52:54 -08:00
Behdad Esfahbod
cd4eb96abb [util] Add --font-size to hb-shape
Also makes hb-view to use 8 bits of subpixel precision and shape at
requested size, instead of always shaping at upem and scaling results.
2015-01-20 12:45:13 -08:00
Behdad Esfahbod
5789ca69d7 [util] Minor 2015-01-20 12:45:13 -08:00
Behdad Esfahbod
67dfa8c7c2 When matching second glyph of kerning pairs, use bsearch
Roboto has glyphs (like 'F') that have 200 kerning pairs.
Add a handcoded bsearch instead of previous linear search.

This doesn't show much speedup though, apparently we spend the
bulk of the time somewhere before here.
2015-01-19 17:00:31 -08:00
Behdad Esfahbod
e9f5c65be0 [bindings] Minor 2015-01-19 16:15:32 -08:00
Behdad Esfahbod
3704628d1f Merge pull request #77 from roozbehp/master
Change New Tai Lue shaping engine from SEA to default
2015-01-19 16:15:00 -08:00
Roozbeh Pournader
5eb939ddfe Change New Tai Lue shaping engine from SEA to default
This is to reflect the UTC decision to change the encoding model of
New Tai Lue from logical to visual to be similar to Thai, Lao, and
Tai Viet: http://www.unicode.org/L2/L2014/14250.htm#141-C26

The visual encoding is already the current practice of encoding New
Tai Lue on the web anyway:
http://www.unicode.org/L2/L2014/14195-newtailue.txt

Fixes behdad/harfbuzz#66.
2015-01-18 14:39:18 -08:00
Behdad Esfahbod
1aaa7d6799 [indic] Fix out-of-bounds access 2015-01-17 20:16:56 -08:00
Behdad Esfahbod
238d6a38f2 [bindings] Update sample.py 2015-01-07 10:51:44 -08:00
Behdad Esfahbod
2cd5323531 [bindings] Use hb_glib_blob_create() in sample
hb_blob_create() is considered C-only API.
2015-01-06 19:16:38 -08:00
Behdad Esfahbod
0ef179e2dc [glib] Add hb_glib_blob_create() that takes GBytes 2015-01-06 16:58:33 -08:00
Behdad Esfahbod
b91904a40d [bindings] Replace deprecated allow-none with optional and nullable 2015-01-06 15:43:14 -08:00
Behdad Esfahbod
81a31f3eff [bindings] Make sample Python 2/3 compatible 2015-01-06 15:37:31 -08:00
Behdad Esfahbod
b632e7997d Fix up gobject-introspection a bit
Minimal shaping works now!
2015-01-06 14:05:26 -08:00
Behdad Esfahbod
3d1a666a86 Remove hardcoded ICU include paths.
ICU exports them using LOCAL_EXPORT_C_INCLUDE_DIRS.

https://android-review.googlesource.com/#/c/121311/
2015-01-05 14:43:13 -08:00
Behdad Esfahbod
8cb41cb950 Merge pull request #76 from cpeterso/cpeterso/Wunused-function
Add #ifdef HB_USE_ATEXIT to fix -Wunused-function warnings
2015-01-04 20:32:18 -08:00
Chris Peterson
fb85d618f5 Add #ifdef HB_USE_ATEXIT to fix -Wunused-function warnings 2015-01-04 19:31:10 -08:00
Behdad Esfahbod
365c03fc2b Merge pull request #75 from cpeterso/cpeterso/Wunused-value
Fix hb_atomic_ptr_cmpexch -Wunused-value warnings
2015-01-03 21:55:30 -08:00
Chris Peterson
d1897a98d8 Fix hb_atomic_ptr_cmpexch -Wunused-value warnings 2015-01-03 19:46:19 -08:00
Behdad Esfahbod
c36c4a9924 Add missing va_end()
Fixes https://github.com/behdad/harfbuzz/pull/74
2015-01-02 14:09:23 -08:00
Behdad Esfahbod
f34aaba868 [ft] Don't set font ppem
For discussion see:

  http://lists.freedesktop.org/archives/harfbuzz/2012-April/001905.html

Over time we have had added NO_HINTING all over the place in hb-ft.  Finish it off.
Not setting ppem on hb-font disables get_contour_point() calls which is good anyway.

See comments in the commit.
2014-12-28 18:56:15 -08:00
Behdad Esfahbod
350f3a02ce [ft] Add hb_ft_face_create_referenced() and hb_ft_font_create_referenced()
When I originally wrote hb-ft, FreeType objects did not support reference
counting.  As such, hb_ft_face_create() and hb_ft_font_create() had a
"destroy" callback and client was responsible for making sure FT_Face is
kept around as long as the hb-font/face are alive.

However, since this was not clearly documented, some clienets didn't
correctly did that.  In particular, some clients assumed that it's safe
to destroy FT_Face and then hb_face_t.  This, indeed, used to work, until
45fd9424c7, which make face destroy access
font tables.

Now, I fixed that issue in 395b35903e since
the access was not needed, but the problem remains that not all clients
handle this correctly.  See:

  https://bugs.freedesktop.org/show_bug.cgi?id=86300

Fortunately, FT_Reference_Face() was added to FreeType in 2010, and so we
can use it now.  Originally I wanted to change hb_ft_face_create() and
hb_ft_font_create() to reference the face if destroy==NULL was passed in.
That would improve pretty much all clients, with little undesired effects.
Except that FreeType itself, when compiled with HarfBuzz support, calls
hb_ft_font_create() with destroy==NULL and saves the resulting hb-font on
the ft-face (why does it not free it immediately?).  Making hb-face
reference ft-face causes a cycling reference there.  At least, that's my
current understanding.

At any rate, a cleaner approach, even if it means all clients will need a
change, is to introduce brand new API.  Which this commit does.

Some comments added to hb-ft.h, hoping to make future clients make better
choices.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=75299
2014-12-28 17:59:28 -08:00
Behdad Esfahbod
9a3b74884b Remove redundant check for FT_Face_GetCharVariantIndex
We require FreeType >= 2.8.3.  This symbol was introduced earlier
than that.
2014-12-28 17:27:39 -08:00