diff --git a/NEWS b/NEWS index 4e7dbe0d9..363bcaf82 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,64 @@ +Overview of changes leading to 11.0.0 +Monday, March 24, 2025 +==================================== +- There are three new font-functions implementations (integrations) in this + release: + * `hb-coretext` has gained one, calling into the CoreText library, + * `hb-directwrite` has gained one, calling into the DirectWrite library. + * `hb-fontations` has gained one, calling into the Skrifa Rust library. + All three are mostly useful for performance and correctness testing, but some + clients might find them useful. + An API is added to use them from a single API by providing a backend name + string: + * `hb_font_set_funcs_using()` +- Several new APIs are added, to load a font-face using different + "face-loaders", and a single entry point to them all using a loader name + string: + * `hb_ft_face_create_from_file_or_fail()` and + `hb_ft_face_create_from_blob_or_fail()` + * `hb_coretext_face_create_from_file_or_fail()` and + `hb_coretext_face_create_from_blob_or_fail()` + * `hb_directwrite_face_create_from_file_or_fail()` and + `hb_directwrite_face_create_from_blob_or_fail()` + * `hb_face_create_from_file_or_fail_using()` +- All drawing and painting operations using the default, `hb-ot` functions have + become memory allocation-free. +- Several performance optimizations have been implemented. +- Application of the `trak` table during shaping has been improved. +- The `directwrite` shaper now supports font variations, and correctly applies + user features. +- The `hb-directwrite` API and shaper has graduated from experimental. +- Various bug fixes and other improvements. + +- New API: ++hb_malloc ++hb_calloc ++hb_realloc ++hb_free ++hb_face_list_loaders ++hb_face_create_or_fail_using ++hb_face_create_from_file_or_fail_using ++hb_font_list_funcs ++hb_font_set_funcs_using ++hb_coretext_face_create_from_blob_or_fail ++hb_directwrite_face_create_from_file_or_fail ++hb_directwrite_face_create_from_blob_or_fail ++hb_directwrite_font_create ++hb_directwrite_font_get_dw_font_face ++hb_directwrite_font_set_funcs ++hb_fontations_font_set_funcs ++hb_ft_face_create_from_blob_or_fail ++hb_paint_push_font_transform ++hb_paint_push_inverse_font_transform ++HB_BUFFER_CLUSTER_LEVEL_GRAPHEMES ++HB_BUFFER_CLUSTER_LEVEL_IS_MONOTONE ++HB_BUFFER_CLUSTER_LEVEL_IS_GRAPHEMES ++HB_BUFFER_CLUSTER_LEVEL_IS_CHARACTERS + +- Deprecated API: ++hb_directwrite_font_get_dw_font + + Overview of changes leading to 10.4.0 Saturday, March 1, 2025 ==================================== diff --git a/RELEASING.md b/RELEASING.md index e510022a2..a8a6705f2 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -17,7 +17,7 @@ - [ ] Based on severity of changes, decide whether it's a minor or micro release number bump. -- [ ] Search for 'XSince: REPLACEME' on the repository and replace it with the chosen version for the release, e.g. 'Since: 1.4.7'. +- [ ] Search for 'REPLACEME' on the repository and replace it with the chosen version for the release, e.g. 'Since: 1.4.7'. - [ ] Make sure you have correct date and new version at the top of NEWS file. diff --git a/docs/harfbuzz-docs.xml b/docs/harfbuzz-docs.xml index f7d24e9ad..46288de43 100644 --- a/docs/harfbuzz-docs.xml +++ b/docs/harfbuzz-docs.xml @@ -121,6 +121,7 @@ API Index Index of deprecated API + Index of new symbols in 11.0.0 Index of new symbols in 10.4.0 Index of new symbols in 10.3.0 Index of new symbols in 10.2.0 diff --git a/meson.build b/meson.build index 31fa1aaf1..91c94bf0a 100644 --- a/meson.build +++ b/meson.build @@ -1,6 +1,6 @@ project('harfbuzz', ['c', 'cpp'], meson_version: '>= 0.55.0', - version: '10.4.0', + version: '11.0.0', default_options: [ 'cpp_eh=none', # Just to support msvc, we are passing -fno-exceptions also anyway # 'cpp_rtti=false', # Do NOT enable, wraps inherit it and ICU needs RTTI diff --git a/src/hb-buffer.h b/src/hb-buffer.h index 14063ccd0..705b767b6 100644 --- a/src/hb-buffer.h +++ b/src/hb-buffer.h @@ -473,7 +473,7 @@ typedef enum { * Tests whether a cluster level groups cluster values into monotone order. * Requires that the level be valid. * - * XSince: REPLACEME + * Since: 11.0.0 */ #define HB_BUFFER_CLUSTER_LEVEL_IS_MONOTONE(level) \ ((bool) ((1u << (unsigned) (level)) & \ @@ -487,7 +487,7 @@ typedef enum { * Tests whether a cluster level groups cluster values by graphemes. Requires * that the level be valid. * - * XSince: REPLACEME + * Since: 11.0.0 */ #define HB_BUFFER_CLUSTER_LEVEL_IS_GRAPHEMES(level) \ ((bool) ((1u << (unsigned) (level)) & \ @@ -501,7 +501,7 @@ typedef enum { * Tests whether a cluster level does not group cluster values by graphemes. * Requires that the level be valid. * - * XSince: REPLACEME + * Since: 11.0.0 */ #define HB_BUFFER_CLUSTER_LEVEL_IS_CHARACTERS(level) \ ((bool) ((1u << (unsigned) (level)) & \ diff --git a/src/hb-common.cc b/src/hb-common.cc index cae073b61..16fd883d2 100644 --- a/src/hb-common.cc +++ b/src/hb-common.cc @@ -1226,7 +1226,7 @@ uint8_t * * Return value: A pointer to the allocated memory. * - * XSince: REPLACEME + * Since: 11.0.0 **/ void* hb_malloc(size_t size) { return hb_malloc_impl (size); } @@ -1240,7 +1240,7 @@ void* hb_malloc(size_t size) { return hb_malloc_impl (size); } * * Return value: A pointer to the allocated memory. * - * XSince: REPLACEME + * Since: 11.0.0 **/ void* hb_calloc(size_t nmemb, size_t size) { return hb_calloc_impl (nmemb, size); } @@ -1254,7 +1254,7 @@ void* hb_calloc(size_t nmemb, size_t size) { return hb_calloc_impl (nmemb, size) * * Return value: A pointer to the reallocated memory. * - * XSince: REPLACEME + * Since: 11.0.0 **/ void* hb_realloc(void *ptr, size_t size) { return hb_realloc_impl (ptr, size); } @@ -1265,7 +1265,7 @@ void* hb_realloc(void *ptr, size_t size) { return hb_realloc_impl (ptr, size); } * Frees the memory pointed to by @ptr, using the allocator set at * compile-time. Typically just free(). * - * XSince: REPLACEME + * Since: 11.0.0 **/ void hb_free(void *ptr) { hb_free_impl (ptr); } diff --git a/src/hb-coretext.cc b/src/hb-coretext.cc index 028052810..6c0525b3a 100644 --- a/src/hb-coretext.cc +++ b/src/hb-coretext.cc @@ -445,7 +445,7 @@ hb_coretext_face_create_from_file_or_fail (const char *file_name, * Return value: (transfer full): The new face object, or `NULL` if * no face is found at the specified index or the blob cannot be read. * - * XSince: REPLACEME + * Since: 11.0.0 */ hb_face_t * hb_coretext_face_create_from_blob_or_fail (hb_blob_t *blob, diff --git a/src/hb-directwrite-font.cc b/src/hb-directwrite-font.cc index 4e140b767..9752110e4 100644 --- a/src/hb-directwrite-font.cc +++ b/src/hb-directwrite-font.cc @@ -363,7 +363,7 @@ _hb_directwrite_get_font_funcs () * Note: Internally, this function creates a DirectWrite font. * * - * XSince: REPLACEME + * Since: 11.0.0 **/ void hb_directwrite_font_set_funcs (hb_font_t *font) diff --git a/src/hb-directwrite.cc b/src/hb-directwrite.cc index 4c2a8e1d6..9c4bab95d 100644 --- a/src/hb-directwrite.cc +++ b/src/hb-directwrite.cc @@ -239,7 +239,7 @@ hb_directwrite_face_create (IDWriteFontFace *dw_face) * Return value: (transfer full): The new face object, or `NULL` if * no face is found at the specified index or the file cannot be read. * - * XSince: REPLACEME + * Since: 11.0.0 */ hb_face_t * hb_directwrite_face_create_from_file_or_fail (const char *file_name, @@ -266,7 +266,7 @@ hb_directwrite_face_create_from_file_or_fail (const char *file_name, * Return value: (transfer full): The new face object, or `NULL` if * no face is found at the specified index or the blob cannot be read. * - * XSince: REPLACEME + * Since: 11.0.0 */ HB_EXTERN hb_face_t * hb_directwrite_face_create_from_blob_or_fail (hb_blob_t *blob, @@ -334,7 +334,7 @@ hb_directwrite_face_get_font_face (hb_face_t *face) * * Return value: #hb_font_t object corresponding to the given input * - * XSince: REPLACEME + * Since: 11.0.0 **/ hb_font_t * hb_directwrite_font_create (IDWriteFontFace *dw_face) @@ -389,7 +389,7 @@ hb_directwrite_font_create (IDWriteFontFace *dw_face) * * Return value: DirectWrite IDWriteFontFace object corresponding to the given input * -* XSince: REPLACEME +* Since: 11.0.0 **/ IDWriteFontFace * hb_directwrite_font_get_dw_font_face (hb_font_t *font) @@ -407,7 +407,7 @@ hb_directwrite_font_get_dw_font_face (hb_font_t *font) * Return value: Returns `NULL`. * * Since: 10.3.0 -* XDeprecated: REPLACEME: +* Deprecated: 11.0.0: **/ IDWriteFont * hb_directwrite_font_get_dw_font (hb_font_t *font) diff --git a/src/hb-draw.h b/src/hb-draw.h index a213a3594..de36901e2 100644 --- a/src/hb-draw.h +++ b/src/hb-draw.h @@ -41,7 +41,7 @@ HB_BEGIN_DECLS * @path_start_y: Y component of the start of current path * @current_x: X component of current point * @current_y: Y component of current point - * @slant_xy: (XSince: REPLACEME): Slanting factor for synthetic oblique + * @slant_xy: (Since: 11.0.0): Slanting factor for synthetic oblique * * Current drawing state. * diff --git a/src/hb-face.cc b/src/hb-face.cc index 6f593fdf4..9051247bc 100644 --- a/src/hb-face.cc +++ b/src/hb-face.cc @@ -395,7 +395,7 @@ static const char *get_default_loader_name () * Return value: (transfer full): The new face object, or `NULL` if * the file cannot be read or the loader fails to load the face. * - * XSince: REPLACEME + * Since: 11.0.0 **/ hb_face_t * hb_face_create_from_file_or_fail_using (const char *file_name, @@ -445,7 +445,7 @@ retry: * Return value: (transfer full): The new face object, or `NULL` if * the loader fails to load the face. * - * XSince: REPLACEME + * Since: 11.0.0 **/ hb_face_t * hb_face_create_or_fail_using (hb_blob_t *blob, @@ -522,7 +522,7 @@ void free_static_face_loader_list () * constant strings. The returned array is owned by HarfBuzz * and should not be modified or freed. * - * XSince: REPLACEME + * Since: 11.0.0 **/ const char ** hb_face_list_loaders () diff --git a/src/hb-font.cc b/src/hb-font.cc index f16e4402c..b73a87048 100644 --- a/src/hb-font.cc +++ b/src/hb-font.cc @@ -2355,7 +2355,7 @@ static const char *get_default_funcs_name () * * Return value: `true` if the font-functions was found and set, `false` otherwise * - * XSince: REPLACEME + * Since: 11.0.0 **/ hb_bool_t hb_font_set_funcs_using (hb_font_t *font, @@ -2433,7 +2433,7 @@ void free_static_font_funcs_list () * constant strings. The returned array is owned by HarfBuzz * and should not be modified or freed. * - * XSince: REPLACEME + * Since: 11.0.0 **/ const char ** hb_font_list_funcs () diff --git a/src/hb-fontations.h b/src/hb-fontations.h index 400800be4..6a3fce0b5 100644 --- a/src/hb-fontations.h +++ b/src/hb-fontations.h @@ -46,7 +46,7 @@ HB_BEGIN_DECLS * Configures the font-functions structure of the specified #hb_font_t font * object to use Fontations font functions. * - * XSince: REPLACEME + * Since: 11.0.0 **/ HB_EXTERN void hb_fontations_font_set_funcs (hb_font_t *font); diff --git a/src/hb-ft.cc b/src/hb-ft.cc index b04b7b30f..756ba8a54 100644 --- a/src/hb-ft.cc +++ b/src/hb-ft.cc @@ -1449,7 +1449,7 @@ hb_ft_font_changed (hb_font_t *font) * variation-axis settings on the @font. * This call is fast if nothing has changed on @font. * - * Note that as of version REPLACEME, calling this function is not necessary, + * Note that as of version 11.0.0, calling this function is not necessary, * as HarfBuzz will automatically detect changes to the font and update * the underlying FT_Face as needed. * @@ -1645,7 +1645,7 @@ _destroy_blob (void *p) * Return value: (transfer full): The new face object, or `NULL` if * loading fails (eg. blob does not contain valid font data). * - * XSince: REPLACEME + * Since: 11.0.0 */ hb_face_t * hb_ft_face_create_from_blob_or_fail (hb_blob_t *blob, diff --git a/src/hb-paint.cc b/src/hb-paint.cc index 3ff8dfd56..755b18169 100644 --- a/src/hb-paint.cc +++ b/src/hb-paint.cc @@ -473,7 +473,7 @@ hb_paint_push_transform (hb_paint_funcs_t *funcs, void *paint_data, * Push the transform reflecting the font's scale and slant * settings onto the paint functions. * - * XSince: REPLACEME + * Since: 11.0.0 */ void hb_paint_push_font_transform (hb_paint_funcs_t *funcs, void *paint_data, @@ -491,7 +491,7 @@ hb_paint_push_font_transform (hb_paint_funcs_t *funcs, void *paint_data, * Push the inverse of the transform reflecting the font's * scale and slant settings onto the paint functions. * - * XSince: REPLACEME + * Since: 11.0.0 */ void hb_paint_push_inverse_font_transform (hb_paint_funcs_t *funcs, void *paint_data, diff --git a/src/hb-version.h b/src/hb-version.h index 2ffbf990c..59601fe10 100644 --- a/src/hb-version.h +++ b/src/hb-version.h @@ -41,13 +41,13 @@ HB_BEGIN_DECLS * * The major component of the library version available at compile-time. */ -#define HB_VERSION_MAJOR 10 +#define HB_VERSION_MAJOR 11 /** * HB_VERSION_MINOR: * * The minor component of the library version available at compile-time. */ -#define HB_VERSION_MINOR 4 +#define HB_VERSION_MINOR 0 /** * HB_VERSION_MICRO: * @@ -60,7 +60,7 @@ HB_BEGIN_DECLS * * A string literal containing the library version available at compile-time. */ -#define HB_VERSION_STRING "10.4.0" +#define HB_VERSION_STRING "11.0.0" /** * HB_VERSION_ATLEAST: