|
d5338ba1
|
2019-11-22T16:22:27
|
|
[ft] Add locking FT_Face API
Now that we mutex our internal FT_Face, share it with clients.
New API:
- hb_ft_font_lock_face()
- hb_ft_font_unlock_face()
|
|
e4a101ed
|
2019-11-19T20:04:00
|
|
[ft] Fix for HB_NO_VAR build
|
|
bb41b74f
|
2019-09-18T00:55:24
|
|
Don't rely on undefined left shift of negative value behavior
Fixes this -fno-sanitize-recover=undefined check,
hb-ft.cc:869:27: runtime error: left shift of negative value -16384
#0 0x7ff8f47da843 in hb_ft_font_set_funcs /home/ebrahim/Desktop/harfbuzz/src/hb-ft.cc:869:27
#1 0x55f20a66c7d6 in font_options_t::get_font() const /home/ebrahim/Desktop/harfbuzz/util/options.cc:731:3
#2 0x55f20a668c1f in shape_consumer_t<output_buffer_t>::init(hb_buffer_t*, font_options_t const*) /home/ebrahim/Desktop/harfbuzz/util/./shape-consumer.hh:47:42
#3 0x55f20a668441 in main_font_text_t<shape_consumer_t<output_buffer_t>, 2147483647, 0>::main(int, char**) /home/ebrahim/Desktop/harfbuzz/util/./main-font-text.hh:75:14
#4 0x55f20a667f91 in main /home/ebrahim/Desktop/harfbuzz/util/hb-shape.cc:180:21
#5 0x7ff8f3df7ee2 in __libc_start_main (/usr/lib/libc.so.6+0x26ee2)
#6 0x55f20a6427ad in _start (/home/ebrahim/Desktop/harfbuzz/util/.libs/lt-hb-shape+0xd7ad)
|
|
0954c8f7
|
2019-09-01T17:09:08
|
|
[ft] Prefer symbol cmap subtable if found (#1948)
Similar to commit d304d60e4d49df14ed85d6646680085f27bafbf2 for ot-font.
|
|
a0b4ac4d
|
2019-08-24T17:57:14
|
|
Turn 8 spaces to tab across the project
According to the current code style of the project
|
|
9fea6b4d
|
2019-07-05T18:46:41
|
|
[amalgam] Use it in cmake port and fix conflicts (#1812)
|
|
aa3450ca
|
2019-06-17T22:41:49
|
|
[config] Don't compile disabled features
This makes it possible to include all .cc files into build, even if not
building CoreText, Uniscribe, etc.
This was mostly to help custom builders. But also means that we can
include all files in our own build system. Not sure if we should.
Definitely simplifies things, but slightly only.
|
|
bfb5569d
|
2019-06-17T14:06:04
|
|
Disable non-OpenType kerning with hb-ft in HB_TINY
|
|
896416bd
|
2019-06-17T13:39:49
|
|
Partially revert "[ft/ot] Remove implementation of deprecated kerning funcs"
This reverts commit 47030b1855f04c0d75899ffb6f5021fea3c19b90.
Reverts only the hb-ft part, to reinstate non-OpenType kerning with
FreeType.
Fixes https://github.com/harfbuzz/harfbuzz/issues/1682
|
|
41248cce
|
2019-05-07T20:54:31
|
|
Remove MIN/MAX in favor of hb_min/hb_max
|
|
54ece299
|
2019-04-16T16:45:53
|
|
Use type aliasing for meta-functions, ie. those returning a type
|
|
b986c6a3
|
2019-03-29T20:17:46
|
|
[C++11] Remove IntType::set() in favor of operator=
|
|
447323b8
|
2019-01-22T12:45:40
|
|
Better fix for -Wcast-align errors
|
|
81ec543d
|
2019-01-22T12:43:12
|
|
More -Wcast-error fixes
|
|
8d05bf7d
|
2019-01-22T12:34:05
|
|
Fix cast-align error
If compiler doesn't inline StructAtOffset, this was an error since we
only disable cast-align at call-site. So, move the cast out.
../src/hb-machinery.hh: In instantiation of 'const Type& StructAtOffset(const void*, unsigned int) [with Type = unsigned int]':
../src/hb-font.cc:146:85: required from here
../src/hb-machinery.hh:63:12: error: cast from 'const char*' to 'const unsigned int*' increases required alignment of target type [-Werror=cast-align]
{ return * reinterpret_cast<const Type*> ((const char *) P + offset); }
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/hb-machinery.hh: In instantiation of 'Type& StructAtOffset(void*, unsigned int) [with Type = unsigned int]':
../src/hb-font.cc:147:79: required from here
../src/hb-machinery.hh:66:12: error: cast from 'char*' to 'unsigned int*' increases required alignment of target type [-Werror=cast-align]
{ return * reinterpret_cast<Type*> ((char *) P + offset); }
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
b900f780
|
2019-01-18T10:08:23
|
|
[pragma] More cast-align whitelist
|
|
e4120085
|
2018-12-17T21:31:01
|
|
Remove redundant void from C++ sources (#1486)
|
|
b2ebaa9a
|
2018-12-16T22:38:10
|
|
Remove redundant 'inline' from methods (#1483)
|
|
f99abcc3
|
2018-11-24T00:22:21
|
|
Add template-function convenience macros
|
|
b89c7fd3
|
2018-11-21T12:32:48
|
|
Allow defining HB_USE_ATEXIT to 0
That's better use of that value than requiring extra macro HB_NO_ATEXIT
|
|
7ec694dd
|
2018-11-07T13:19:36
|
|
Use non-GRID-fitted values for metrics (#1363)
* Use non-GRID-fitted values for metrics
See freetype/src/base/ftobjs.c:ft_recompute_scaled_metrics() and
the usage of GRID_FIT_METRICS inside.
Fixes https://github.com/behdad/harfbuzz/issues/1262
* Update hb-ft.cc
|
|
5570c87f
|
2018-11-03T14:51:38
|
|
Port objects to use header.writable instead of immutable
Saves 4 or 8 bytes per object on 64bit archs.
|
|
04981ee0
|
2018-10-27T04:40:43
|
|
[docs] More
|
|
07386ea4
|
2018-10-22T21:18:27
|
|
Remove const and references when binding Null()
Fixes https://github.com/harfbuzz/harfbuzz/issues/1299
Removes anomaly I was seeing in cpal table trying to use implicit Null(NameID).
|
|
be2f148d
|
2018-10-09T16:24:50
|
|
[ft] Use mutex to lock access to FT_Face
Makes our FT-backed hb_font_t safe to use from multiple threads. Still,
the underlying FT_Face should NOT be used from other threads by client
or other libraries.
Maybe I add a lock()/unlock() public API ala PangoFT2 and cairo-ft.
Maybe not.
|
|
d18c3c58
|
2018-10-09T16:07:55
|
|
[ft] Remove (probably) stale comment
|
|
ec84460e
|
2018-10-09T15:07:04
|
|
[ot/ft] Implement get_nominal_glyphs() callback
Some more measurable speedup. The recent commits' speedups are as follows:
Testing with Roboto, ****when disabling kern and liga****:
Before:
FT --features=-kern,-liga
user↦ 0m0.521s
OT --features=-liga,-kern
user↦ 0m0.568s
After:
FT --features=-liga,-kern
user↦ 0m0.428s
OT --features=-liga,-kern
user↦ 0m0.470s
So, 17% speedup.
Note that FT callbacks are faster than OT these days since we added an advance
cache to FT. I don't think the difference is enough to justify adding a cache
to OT.
When not disabling kern, the thing is three times slower, so the speedups
are three times less impressive... Still, 5% not bad for a codebase that I
otherwise thought is optimized out.
Note that, because of this and other optimiztions in our main shaper,
disabling kern and liga, the OT shaper is now *faster* than the fallback
shaper. So, that's my recommendation to clients that need the absolute
fastest...
|
|
bee93e26
|
2018-10-09T08:01:49
|
|
Add const to get_*_advances API
Ouch!
|
|
47030b18
|
2018-10-09T00:30:45
|
|
[ft/ot] Remove implementation of deprecated kerning funcs
|
|
8a31e406
|
2018-09-30T05:27:39
|
|
[font] Make *_advance() fallback to *_advances
And remove redundant implementations.
|
|
7f30629c
|
2018-09-26T16:40:23
|
|
[ft] Make TSan happy
|
|
383060cc
|
2018-09-11T14:41:19
|
|
[ft] Invalidate advance cache if font size changed
|
|
54998bef
|
2018-09-11T14:35:26
|
|
[ft] Cache advances
I decided to always use the cache, instead of my previous sketch direction
that was to only allocate and use cache if fast advances are not available.
The cache is a mere 1kb, so just use it...
TODO: Invalidate cache on font size change.
Fixes https://github.com/harfbuzz/harfbuzz/issues/651
Fixes https://github.com/harfbuzz/harfbuzz/pull/1082
|
|
047a84c5
|
2018-09-11T14:05:16
|
|
[ft] Towards caching slow get_h_advance results
Related to https://github.com/harfbuzz/harfbuzz/pull/1082
|
|
237f2153
|
2018-09-11T13:05:47
|
|
[ft] Add advances() callback
|
|
0f520ada
|
2018-09-11T12:02:34
|
|
Revert "Remove unused hb_cache_t"
This reverts commit 473b17af4d421f4ce7ac18c769731bb2aa4088f8.
Updates to recent changes.
|
|
c77ae408
|
2018-08-25T22:36:36
|
|
Rename hb-*private.hh to hb-*.hh
Sorry for the noise, downstream custom builders. Please adjust.
|
|
7112c641
|
2018-08-14T13:50:24
|
|
Guard free_static function definitions with macro
Add HB_USE_ATEXIT macros around free_static function definitions to
avoid unused function compiler warnings/errors.
|
|
7bd508a0
|
2018-08-12T17:19:55
|
|
[lazy] Rename free()
|
|
69010909
|
2018-08-12T16:57:06
|
|
[lazy] Make hb_lazy_loader_t<> more usable
|
|
53442be1
|
2018-08-12T16:20:11
|
|
[lazy] Use for ft_library
|
|
7a8d4803
|
2018-08-12T16:00:13
|
|
[lazy] Add .free()
|
|
c7ca30a5
|
2018-08-12T13:46:53
|
|
[ot/ft] Port font_funcs statis to lazy-loader
|
|
1f738094
|
2018-08-09T00:22:37
|
|
[atomic] Add hb_atomic_ptr_t<> and port all uses
Found and fixed a couple bugs.
Found a couple multithreading issues. Marked them with "XXX-MT-bug".
|
|
42c183f8
|
2018-07-27T14:55:29
|
|
Minor
|
|
2e25d8f4
|
2018-07-27T13:58:27
|
|
Fix unlikely leaks
|
|
be458eb0
|
2018-07-10T14:41:04
|
|
Include more basic internal headers from hb-private.hh
|
|
b8e406f0
|
2018-06-10T17:22:38
|
|
More fixes for SunStudio 12.6 build
Followup to https://github.com/harfbuzz/harfbuzz/pull/1053
|
|
24b8b9b2
|
2018-04-23T19:03:57
|
|
Resolve clang's used-but-marked-unused warnings
|
|
f24b0b97
|
2018-04-12T13:40:45
|
|
Update the links and revive the dead ones
|
|
70d36543
|
2018-03-30T05:00:28
|
|
Make atexit callbacks threadsafe (#930)
|
|
90218fa9
|
2018-01-31T20:44:45
|
|
Fix typos.
|
|
0473d95e
|
2018-01-08T10:07:46
|
|
[ft] Use FT_Done_MM_Var() if available
|
|
cb43bdbc
|
2018-01-05T13:06:25
|
|
[ft] If there's no variations set, don't set them on hb-font
|
|
0fd89dc6
|
2017-12-04T18:58:41
|
|
[hb-ft] Fix build when Multiple Master font support is disabled in freetype
FT_Set_Var_Blend_Coordinates() is not available when "Multiple Master
font interface" is disabled in freetype's modules.cfg
|
|
93f7c165
|
2017-11-14T10:59:54
|
|
Revert "[glib/ucdn/icu/ft/ot] Make returned funcs inert"
This reverts commit 5daf3bd4494cce6b4fb074533be9e99c4d9e0edd.
If other atexit callbacks try to destruct the objects we destruct
in atexit callbacks, bad things will happen.
I'll come up with some other way to catch premature destruction
of HB-owned objects.
Fixes https://github.com/behdad/harfbuzz/issues/618
|
|
40ec3bbb
|
2017-11-03T16:57:30
|
|
Consolidate debug stuff into hb-debug.hh
Part of fixing https://github.com/behdad/harfbuzz/pull/605
|
|
5daf3bd4
|
2017-10-27T16:34:01
|
|
[glib/ucdn/icu/ft/ot] Make returned funcs inert
Such that client cannot accidentally destroy them, even though that
will be a bug in their code...
|
|
473b17af
|
2017-10-15T14:10:34
|
|
Remove unused hb_cache_t
|
|
dbdbfe3d
|
2017-10-15T12:11:08
|
|
Use nullptr instead of NULL
|
|
4e478131
|
2017-10-12T10:33:16
|
|
[ft] Add hb_ft_font_changed()
When the font size or variations settings on underlying FT_Face change,
one can call hb_ft_font_changed() and continue using hb_font created using
hb_ft_font_create().
Fixes https://github.com/behdad/harfbuzz/issues/559
New API:
hb_ft_font_changed()
|
|
e1b6d923
|
2017-10-11T15:51:31
|
|
Remove cast of functions to (hb_destroy_func_t)
Fixes https://github.com/behdad/harfbuzz/issues/474
|
|
ac8c4e56
|
2017-08-09T22:05:08
|
|
[ft] Fix theoretical leak
|
|
68af14d5
|
2017-08-09T17:09:21
|
|
Protect against div-by-zero in CBDT extent code
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1452#c5
CC https://github.com/behdad/harfbuzz/issues/139
|
|
7647a05a
|
2017-01-22T17:47:49
|
|
Minor
|
|
825e4040
|
2017-01-22T16:41:45
|
|
[hb-ft] Remove use of variable-length array
Hopefully also fixes build failure on msvc.
|
|
47ee34e8
|
2017-01-21T18:10:08
|
|
[var] Hook up variations to FreeType face
hb-view correctly renders variations with ft font-funcs now.
hb-ot-font needs HVAR implementation.
|
|
b8376b10
|
2017-01-20T18:19:28
|
|
Minor
|
|
42c81425
|
2016-09-13T23:49:46
|
|
[GX] Fix build with older FreeType
|
|
72873cf5
|
2016-09-13T18:40:07
|
|
Call hb_font_set_var_coords_normalized() from FT_Face coords
|
|
33317310
|
2016-08-08T17:24:04
|
|
Fix sign of shift operators
This one:
map->mask = (1 << (next_bit + bits_needed)) - (1 << next_bit);
before the fix, the shift was done as an int, causing overflow
if it ever got to 1 << 31. Sprinkle 'u's around.
Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=634805
|
|
34f9aa58
|
2016-07-20T02:35:54
|
|
Implement symbol cmap in ft and ot fonts
Fixes https://github.com/behdad/harfbuzz/issues/236
Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=627953
|
|
6bf9db4f
|
2016-07-11T13:38:23
|
|
[ft] Fix unsafe cast of FT_Done_Face in hb_ft_{face,font}_create_referenced (#289)
Prior to this change the function `FT_Error FT_Done_Face(FT_Face *)` was
called through a pointer with the signature `void (void *)` resulting in
undefined behaviour.
|
|
8b5bc141
|
2016-02-24T19:05:23
|
|
Add get_nominal_glyph() and get_variation_glyph() instead of get_glyph()
New API:
- hb_font_get_nominal_glyph_func_t
- hb_font_get_variation_glyph_func_t
- hb_font_funcs_set_nominal_glyph_func()
- hb_font_funcs_set_variation_glyph_func()
- hb_font_get_nominal_glyph()
- hb_font_get_variation_glyph()
Deprecated API:
- hb_font_get_glyph_func_t
- hb_font_funcs_set_glyph_func()
Clients that implement their own font-funcs are encouraged to replace
their get_glyph() implementation with a get_nominal_glyph() and
get_variation_glyph() pair. The variation version can assume that
variation_selector argument is not zero.
|
|
31fa3892
|
2015-12-10T16:38:29
|
|
[ft] Use ftface->size->metrics for font extent info
|
|
6f2e6de1
|
2015-10-26T16:23:22
|
|
Get font ascender and descender metrics from OS/2 table.
|
|
c743ec58
|
2015-11-05T17:33:57
|
|
[ft] Fix extents with negative scales
Fixes https://github.com/behdad/harfbuzz/issues/162
|
|
44f82750
|
2015-11-04T20:40:05
|
|
[ft] Remove font funcs that do nothing
|
|
7918c261
|
2015-11-04T20:37:49
|
|
[ft] Port ft font funcs to allocated object
|
|
ca97ea7a
|
2015-10-15T20:20:22
|
|
[ft] Revert change-of-behavior of hb_ft_font_create() introduced in 1.0.5
The default FreeType load flags where changed from FT_LOAD_NO_HINTING
to FT_LOAD_DEFAULT in 2a9627c5641cd000e2adff0e42a0dc687b53ec70.
This is crashing HarfBuzz-enabled FreeType as I suppose it causes
infinite recursion between HB and FT autohinter...
Revert the behavior change.
Fixes https://github.com/behdad/harfbuzz/issues/143
|
|
edeb3dab
|
2015-10-08T12:47:15
|
|
[ft] Add version for new API
|
|
2a9627c5
|
2015-10-07T17:33:20
|
|
[ft] API: Add hb_font_[sg]et_load_flags() API
This changes the default load_flags of fonts created using
hb_ft_font_create() from NO_HINTING to DEFAULT. Hope that doesn't
break too much client code.
Code calling hb_ft_font_set_funcs() is unaffected.
|
|
b8811429
|
2015-09-03T15:53:22
|
|
Fix Since tags
Fixes https://github.com/behdad/harfbuzz/issues/103
|
|
01c3a885
|
2015-06-01T13:22:01
|
|
Fix "Since:" tags
Based on data from http://upstream-tracker.org/versions/harfbuzz.html
Resolves #103
|
|
9df099b4
|
2015-05-18T18:37:06
|
|
[ft] Don't set *glyph in get_glyph() if glyph not found
|
|
7888a6b0
|
2015-01-28T12:40:40
|
|
[ft] Handle negative scales with vertical writing
|
|
a319d077
|
2015-01-23T12:44:24
|
|
[ft] Handle negative x_scale / y_scale
|
|
fb85d618
|
2015-01-04T19:31:10
|
|
Add #ifdef HB_USE_ATEXIT to fix -Wunused-function warnings
|
|
f34aaba8
|
2014-12-28T18:56:15
|
|
[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.
|
|
350f3a02
|
2014-12-28T17:44:26
|
|
[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
45fd9424c723f115ca98995b8f8a25185a6fc71d, which make face destroy access
font tables.
Now, I fixed that issue in 395b35903e052aecc97d0807e4f813c64c0d2b0b 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
|
|
9a3b7488
|
2014-12-28T17:27:39
|
|
Remove redundant check for FT_Face_GetCharVariantIndex
We require FreeType >= 2.8.3. This symbol was introduced earlier
than that.
|
|
affacf2f
|
2014-12-28T16:20:31
|
|
[ft] Open blob in READONLY mode
HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE is deprecated and fairly
useless now.
|
|
8afaf096
|
2014-10-02T16:40:41
|
|
[ft] Add NO_HINTING in a couple other places
|
|
38fb30d7
|
2014-08-06T13:34:49
|
|
Use atexit() only if it's safe to call from shared library
Apparently they are not (advertised as?) safe on BSD systems.
We ignore the case of static libraries.
Whitelisted on glibc, Android, and MSVC / mingw.
https://bugs.freedesktop.org/show_bug.cgi?id=82246
|
|
83408cf8
|
2013-11-06T14:46:04
|
|
Fix llvm warnings on Mac
Patch from Scott Fleischman. Warnings were:
harfbuzz/src/hb-font-private.hh:121:42: Implicit conversion loses
integer precision: 'long long' to 'hb_position_t' (aka 'int')
harfbuzz/src/hb-font-private.hh:126:42: Implicit conversion loses
integer precision: 'long long' to 'hb_position_t' (aka 'int')
harfbuzz/src/hb-font-private.hh:400:85: Implicit conversion loses
integer precision: 'long long' to 'hb_position_t' (aka 'int')
harfbuzz/src/hb-ot-layout-common-private.hh:1115:37: Implicit conversion
loses integer precision: 'long long' to 'int'
harfbuzz/src/hb-ft.cc:421:97: Implicit conversion loses integer
precision: 'unsigned long long' to 'int'
harfbuzz/src/hb-ft.cc:422:97: Implicit conversion loses integer
precision: 'unsigned long long' to 'int'
|
|
755b44cc
|
2013-10-18T11:17:42
|
|
[ft] Round metrics instead of truncate
Lohit-Punjabi has a upem of 769! We were losing one unit in our
code, and FreeType is losing another one... Test with U+0A06.
Has an advance of 854 in the font. We were producing 852.
Now we do 853, which is what FreeType is telling us.
|
|
ace5c7eb
|
2013-09-13T20:34:42
|
|
[introspection] hb-ft annotations
|
|
e509d35c
|
2013-07-11T14:56:45
|
|
[ft] hb_ft_get_glyph_from_name fails for the name of glyph id 0
Based on patch from Jonathan Kew, as reported on the mailing list.
|
|
79d1007a
|
2013-06-13T19:01:07
|
|
If variation selector is not consumed by cmap, pass it on to GSUB
This changes the semantics of get_glyph() callback and expect that
callbacks return false if the requested variant is not available, and
then we will call them back with variation_selector=0 and will retain
the glyph for the selector in the glyph stream.
Apparently most Mongolian fonts implement the Mongolian Variation
Selectors using GSUB, not cmap.
https://bugs.freedesktop.org/show_bug.cgi?id=65258
Note that this doesn't fix the Mongolian shaping yet, because the way
that's implemented is that the, say, 'init' feature ligates the letter
and the variation-selector. However, since currently the variation
selector doesn't have the 'init' mask on, it will not be matched...
|
|
190e19e6
|
2013-03-09T20:30:22
|
|
[ft] Remove TODO items that I'm not going to fix
|