src/hb-ft.cc


Log

Author Commit Date CI Message
Behdad Esfahbod 23461b75 2022-08-19T09:48:12 [hb-ft] Only apply FT_Face's transform if we created FT_Face Fixes https://github.com/harfbuzz/harfbuzz/issues/3788 https://github.com/harfbuzz/harfbuzz/issues/3790
Behdad Esfahbod d7adc55e 2022-08-03T13:22:51 [ot-font] Allow 24bit glyphs in advance cache
Behdad Esfahbod ec90d1e1 2022-08-03T13:00:48 [cache] Add a non-threadsafe version Use in hb-ft, since already mutex'ed.
Behdad Esfahbod e387b3ac 2022-08-02T09:46:23 [ft] Try harder
Khaled Hosny 40a34689 2022-08-02T16:09:27 hb-ft: cast to float to help windows sqrtf
Behdad Esfahbod ba9b2053 2022-08-01T12:42:05 [ft] Try working around fonts with transform set Fixes https://github.com/harfbuzz/harfbuzz/issues/3772
Behdad Esfahbod 1ac21246 2022-07-25T08:40:02 [hb-ft] Fix bitmap font rendering with hb_ft_font_changed() Fixes https://github.com/harfbuzz/harfbuzz/issues/3754 Fixes https://github.com/harfbuzz/harfbuzz/issues/3755
Behdad Esfahbod 61d0c547 2022-07-23T13:25:54 [ft] Pass design, not normalized, coords to freetype Needed for avar2 to work.
Behdad Esfahbod cb5ca6be 2022-07-22T05:48:27 [ft] Actually call check_changed() from _changed() Ouch! Fixes https://github.com/harfbuzz/harfbuzz/issues/3746
Behdad Esfahbod fd535a24 2022-07-22T05:48:12 [ft] Remove check_changed from get_glyph_shape() Leftover.
Behdad Esfahbod 4f22397f 2022-07-18T11:03:54 [ft] A couple of introspection fixes
Behdad Esfahbod 6ed57de1 2022-07-15T15:09:28 [ft] Fix negative font sizes for bitmaps
Behdad Esfahbod 307ee9ba 2022-07-15T14:48:29 [ft] Fix bitmap-only vertical metrics
Behdad Esfahbod 87d338eb 2022-07-15T14:19:17 [ft] Fix test
Khaled Hosny e294200d 2022-07-15T21:36:50 [ft] Check for FT_Get_Transform at build time
Behdad Esfahbod 901236f7 2022-07-15T12:55:31 [ft] Implement loading (color) bitmap fonts Fixes https://github.com/harfbuzz/harfbuzz/issues/489 Something about the vertical metrics is still off, not matching hb-ot. I cannot figure out what.
Behdad Esfahbod 3ac11056 2022-07-15T12:48:11 [ft] Fix scale when font-sizes are negative
Khaled Hosny 98e90cc6 2022-06-30T08:43:57 [docs] Reduce warnings Use markdown syntax for inline code blocks instead of %true, %false, and %NULL.
Khaled Hosny 8537d681 2022-06-27T20:51:16 4.4.0
Behdad Esfahbod 8c27c51c 2022-06-19T10:47:38 [arabic-pua] Rename symbols
Behdad Esfahbod 76989629 2022-06-19T10:41:45 [arabic-fallback] Disable PUA shaping under HB_NO_OT_SHAPER_ARABIC_FALLBACK
Behdad Esfahbod 55350377 2022-06-19T10:13:31 [cmap/ft] Only map 0xF000 range if font_page is NONE
Khaled Hosny 189e8c32 2022-06-18T13:28:54 [ft] Remap legacy Arabic PUA codepoints Similar to what ot font finctions does, to support Support legacy pre-OpenType Windows 3.1-era fonts.
Behdad Esfahbod d6dbc0d1 2022-06-05T00:58:53 [gi/ft] Silence warnings gi doesn't understand that FT_Face is a pointer, and not bare struct. So it skips these APIs anyway. Mark skip to silense the warning. ../src/hb-ft.cc:242: Warning: HarfBuzz: hb_ft_font_get_face: return value: Invalid non-constant return of bare structure or union; register as boxed type or (skip) ../src/hb-ft.cc:264: Warning: HarfBuzz: hb_ft_font_lock_face: return value: Invalid non-constant return of bare structure or union; register as boxed type or (skip)
Behdad Esfahbod fc4d42ff 2022-06-01T05:19:23 [ft] Add API to notify that hb_font_t changed New API: - hb_ft_hb_font_changed() Mostly reverts 56e0ff9ea129aa91dfcc746cd61f8cbbc427dba7 Related https://github.com/harfbuzz/harfbuzz/issues/2270 Fixes https://github.com/harfbuzz/harfbuzz/issues/3619
Behdad Esfahbod 80c49933 2022-05-23T19:02:27 [hb-ft] Adjust serial signature
Behdad Esfahbod 56e0ff9e 2022-05-20T12:30:46 [ft] If hb_font changed, update FT_Face Fixes https://github.com/harfbuzz/harfbuzz/issues/2270 Rather untested.
Behdad Esfahbod 8629df18 2022-05-20T12:06:22 [ft] Discard advance cache if font changed Uses newly added font serial API. Part of https://github.com/harfbuzz/harfbuzz/issues/2270 But doesn't set new coords on the FT_Face. That's a lot more work :(.
Behdad Esfahbod 05e82aa1 2022-05-20T12:17:31 [ft] Add missing lock to kerning function
Behdad Esfahbod 55804e8d 2022-05-20T11:40:44 [hb-ft] Minor rearrange of struct members To make clear what members the lock protects.
Behdad Esfahbod 6d0e67de 2022-03-21T21:07:11 [ot-font] Only use vmtx side-bearing if table exists Part of fixing https://github.com/harfbuzz/harfbuzz/issues/537
Behdad Esfahbod 59067db9 2022-02-07T17:55:01 [font/draw] Slant drawings Need to update hb_font_set_synthetic_slant() docs now that we do this.
Behdad Esfahbod 6d5b998f 2022-02-04T18:44:38 [ft/draw] Implement hb-draw for hb-ft
Behdad Esfahbod 002a1f70 2021-12-08T10:45:30 [ft] Disable vertical funcs if HB_NO_VERTICAL
Behdad Esfahbod ed116320 2021-09-14T07:09:54 Call atexit() via hb_atexit() Part of https://github.com/harfbuzz/harfbuzz/issues/3197
Behdad Esfahbod 2337f0d0 2021-07-08T10:58:50 Internally use hb_malloc/.../hb_free instead of malloc/.../free Redefining those stock names as macros was conflicting with gcc 10 headers. Fixes https://github.com/harfbuzz/harfbuzz/issues/3044
Behdad Esfahbod 12a283d5 2021-02-22T12:50:41 m[ft] No need to use atomic ops for cached_x_scale We have added a mutex since, so no need for atomicity.
Khaled Hosny 9936490c 2020-12-31T00:19:29 [docs] Invalid use of "optional" annotation It is valid only for out and inout parameters. Fixes https://github.com/harfbuzz/harfbuzz/issues/1787
Khaled Hosny a31a51cd 2020-12-30T23:48:25 [docs] Complete hb-ft docs a bit
Khaled Hosny c7b2e64c 2020-12-27T00:53:23 [docs] make it clear that FT_Face must have size Fixes https://github.com/harfbuzz/harfbuzz/issues/2590
Khaled Hosny 22468c8a 2020-12-24T22:38:06 [docs] Give destroy callbacks have (optional) annotation
Behdad Esfahbod 26b9670d 2020-06-28T14:52:15 [ft] Better handle allocation failures Fixes https://github.com/harfbuzz/harfbuzz/issues/2513
Sebastian Rasmussen 2267da4e 2020-06-28T11:18:16 [ft] Do not deference ft_font if it is nullptr (#2502)
Sebastian Rasmussen dbf9896e 2020-06-28T10:57:34 [ft] Handle nullptr when destroying freetype font (#2494)
Behdad Esfahbod a11db0b9 2020-04-23T15:32:43 Merge branch 'master' into usermanual-integration
Ebrahim Byagowi f9bc3733 2020-04-17T22:37:48 2.6.5
n8willis b57b9042 2020-04-15T18:46:31 Add detail to hb_ft_font_create inline comments Providing lengthier explanation for how the destroy function works on the hb_font_t but that destroying the FT_Face (and not destroying it too early) remains the client's responsibility.
n8willis 1bca2be2 2020-04-15T18:30:47 Rewrite hb_ft_font_set_funcs inline explanation
n8willis 80c01d76 2020-04-15T18:08:55 Update hb-ft.cc
n8willis 9b91669c 2020-04-13T16:40:15 Update hb-ft.cc
Behdad Esfahbod 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()
Behdad Esfahbod e4a101ed 2019-11-19T20:04:00 [ft] Fix for HB_NO_VAR build
Ebrahim Byagowi 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)
Khaled Hosny 0954c8f7 2019-09-01T17:09:08 [ft] Prefer symbol cmap subtable if found (#1948) Similar to commit d304d60e4d49df14ed85d6646680085f27bafbf2 for ot-font.
Ebrahim Byagowi a0b4ac4d 2019-08-24T17:57:14 Turn 8 spaces to tab across the project According to the current code style of the project
Ebrahim Byagowi 9fea6b4d 2019-07-05T18:46:41 [amalgam] Use it in cmake port and fix conflicts (#1812)
Behdad Esfahbod 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.
Behdad Esfahbod bfb5569d 2019-06-17T14:06:04 Disable non-OpenType kerning with hb-ft in HB_TINY
Behdad Esfahbod 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
Nathan Willis 9126a5ff 2019-05-20T17:37:56 [Docs] Add gtk-doc comments to hb-ft.
Behdad Esfahbod 41248cce 2019-05-07T20:54:31 Remove MIN/MAX in favor of hb_min/hb_max
Behdad Esfahbod 54ece299 2019-04-16T16:45:53 Use type aliasing for meta-functions, ie. those returning a type
Behdad Esfahbod b986c6a3 2019-03-29T20:17:46 [C++11] Remove IntType::set() in favor of operator=
Behdad Esfahbod 447323b8 2019-01-22T12:45:40 Better fix for -Wcast-align errors
Behdad Esfahbod 81ec543d 2019-01-22T12:43:12 More -Wcast-error fixes
Behdad Esfahbod 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); } ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Behdad Esfahbod b900f780 2019-01-18T10:08:23 [pragma] More cast-align whitelist
Ebrahim Byagowi e4120085 2018-12-17T21:31:01 Remove redundant void from C++ sources (#1486)
Ebrahim Byagowi b2ebaa9a 2018-12-16T22:38:10 Remove redundant 'inline' from methods (#1483)
Behdad Esfahbod f99abcc3 2018-11-24T00:22:21 Add template-function convenience macros
Behdad Esfahbod 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
HinTak 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
Behdad Esfahbod 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.
Behdad Esfahbod 04981ee0 2018-10-27T04:40:43 [docs] More
Behdad Esfahbod 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).
Behdad Esfahbod 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.
Behdad Esfahbod d18c3c58 2018-10-09T16:07:55 [ft] Remove (probably) stale comment
Behdad Esfahbod 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...
Behdad Esfahbod bee93e26 2018-10-09T08:01:49 Add const to get_*_advances API Ouch!
Behdad Esfahbod 47030b18 2018-10-09T00:30:45 [ft/ot] Remove implementation of deprecated kerning funcs
Behdad Esfahbod 8a31e406 2018-09-30T05:27:39 [font] Make *_advance() fallback to *_advances And remove redundant implementations.
Behdad Esfahbod 7f30629c 2018-09-26T16:40:23 [ft] Make TSan happy
Behdad Esfahbod 383060cc 2018-09-11T14:41:19 [ft] Invalidate advance cache if font size changed
Behdad Esfahbod 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
Behdad Esfahbod 047a84c5 2018-09-11T14:05:16 [ft] Towards caching slow get_h_advance results Related to https://github.com/harfbuzz/harfbuzz/pull/1082
Behdad Esfahbod 237f2153 2018-09-11T13:05:47 [ft] Add advances() callback
Behdad Esfahbod 0f520ada 2018-09-11T12:02:34 Revert "Remove unused hb_cache_t" This reverts commit 473b17af4d421f4ce7ac18c769731bb2aa4088f8. Updates to recent changes.
Behdad Esfahbod c77ae408 2018-08-25T22:36:36 Rename hb-*private.hh to hb-*.hh Sorry for the noise, downstream custom builders. Please adjust.
Emil A Eklund 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.
Behdad Esfahbod 7bd508a0 2018-08-12T17:19:55 [lazy] Rename free()
Behdad Esfahbod 69010909 2018-08-12T16:57:06 [lazy] Make hb_lazy_loader_t<> more usable
Behdad Esfahbod 53442be1 2018-08-12T16:20:11 [lazy] Use for ft_library
Behdad Esfahbod 7a8d4803 2018-08-12T16:00:13 [lazy] Add .free()
Behdad Esfahbod c7ca30a5 2018-08-12T13:46:53 [ot/ft] Port font_funcs statis to lazy-loader
Behdad Esfahbod 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".
Behdad Esfahbod 42c183f8 2018-07-27T14:55:29 Minor
prrace 2e25d8f4 2018-07-27T13:58:27 Fix unlikely leaks
Behdad Esfahbod be458eb0 2018-07-10T14:41:04 Include more basic internal headers from hb-private.hh
Behdad Esfahbod b8e406f0 2018-06-10T17:22:38 More fixes for SunStudio 12.6 build Followup to https://github.com/harfbuzz/harfbuzz/pull/1053
Ebrahim Byagowi 24b8b9b2 2018-04-23T19:03:57 Resolve clang's used-but-marked-unused warnings