Updated raqm to 0.10.5 (#9557)

This commit is contained in:
Andrew Murray 2026-04-12 15:13:32 +10:00 committed by GitHub
parent 4b911c889b
commit 3a3dab8bb0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 47 additions and 28 deletions

View File

@ -2,7 +2,7 @@
# install raqm # install raqm
archive=libraqm-0.10.3 archive=libraqm-0.10.5
./download-and-extract.sh $archive https://raw.githubusercontent.com/python-pillow/pillow-depends/main/$archive.tar.gz ./download-and-extract.sh $archive https://raw.githubusercontent.com/python-pillow/pillow-depends/main/$archive.tar.gz

View File

@ -1,3 +1,21 @@
Overview of changes leading to 0.10.5
Saturday, April 11, 2026
====================================
Check for NULL return from malloc in couple of places.
Overview of changes leading to 0.10.4
Thursday, February 5, 2026
====================================
Add build option to skip tests.
Add dependency override for use as a subproject.
Fix tests when b_ndebug=true.
Build, CI and documentation updates.
Overview of changes leading to 0.10.3 Overview of changes leading to 0.10.3
Tuesday, August 5, 2025 Tuesday, August 5, 2025
==================================== ====================================

View File

@ -33,9 +33,9 @@
#define RAQM_VERSION_MAJOR 0 #define RAQM_VERSION_MAJOR 0
#define RAQM_VERSION_MINOR 10 #define RAQM_VERSION_MINOR 10
#define RAQM_VERSION_MICRO 3 #define RAQM_VERSION_MICRO 5
#define RAQM_VERSION_STRING "0.10.3" #define RAQM_VERSION_STRING "0.10.5"
#define RAQM_VERSION_ATLEAST(major,minor,micro) \ #define RAQM_VERSION_ATLEAST(major,minor,micro) \
((major)*10000+(minor)*100+(micro) <= \ ((major)*10000+(minor)*100+(micro) <= \

View File

@ -54,7 +54,7 @@
* @short_description: A library for complex text layout * @short_description: A library for complex text layout
* @include: raqm.h * @include: raqm.h
* *
* Raqm is a light weight text layout library with strong emphasis on * Raqm is a lightweight text layout library with strong emphasis on
* supporting languages and writing systems that require complex text layout. * supporting languages and writing systems that require complex text layout.
* *
* The main object in Raqm API is #raqm_t, it stores all the states of the * The main object in Raqm API is #raqm_t, it stores all the states of the
@ -338,6 +338,8 @@ _raqm_alloc_run (raqm_t *rq)
else else
{ {
run = malloc (sizeof (raqm_run_t)); run = malloc (sizeof (raqm_run_t));
if (!run)
return NULL;
run->font = NULL; run->font = NULL;
run->buffer = NULL; run->buffer = NULL;
} }
@ -515,7 +517,7 @@ raqm_clear_contents (raqm_t *rq)
* @len: the length of @text. * @len: the length of @text.
* *
* Adds @text to @rq to be used for layout. It must be a valid UTF-32 text, any * Adds @text to @rq to be used for layout. It must be a valid UTF-32 text, any
* invalid character will be replaced with U+FFFD. The text should typically * invalid characters will be replaced with U+FFFD. The text should typically
* represent a full paragraph, since doing the layout of chunks of text * represent a full paragraph, since doing the layout of chunks of text
* separately can give improper output. * separately can give improper output.
* *
@ -765,13 +767,13 @@ raqm_set_par_direction (raqm_t *rq,
* raqm_set_language: * raqm_set_language:
* @rq: a #raqm_t. * @rq: a #raqm_t.
* @lang: a BCP47 language code. * @lang: a BCP47 language code.
* @start: index of first character that should use @face. * @start: index of the first character that should use @face.
* @len: number of characters using @face. * @len: number of characters using @face.
* *
* Sets a [BCP47 language * Sets a [BCP47 language
* code](https://www.w3.org/International/articles/language-tags/) to be used * code](https://www.w3.org/International/articles/language-tags/) to be used
* for @len-number of characters staring at @start. The @start and @len are * for @len-number of characters starting at @start. The @start and @len are
* input string array indices (i.e. counting bytes in UTF-8 and scaler values * input string array indices (i.e. counting bytes in UTF-8 and scalar values
* in UTF-32). * in UTF-32).
* *
* This method can be used repeatedly to set different languages for different * This method can be used repeatedly to set different languages for different
@ -951,7 +953,7 @@ raqm_set_freetype_face (raqm_t *rq,
* raqm_set_freetype_face_range: * raqm_set_freetype_face_range:
* @rq: a #raqm_t. * @rq: a #raqm_t.
* @face: an #FT_Face. * @face: an #FT_Face.
* @start: index of first character that should use @face from the input string. * @start: index of the first character that should use @face from the input string.
* @len: number of elements using @face. * @len: number of elements using @face.
* *
* Sets an #FT_Face to be used for @len-number of characters staring at @start. * Sets an #FT_Face to be used for @len-number of characters staring at @start.
@ -962,7 +964,7 @@ raqm_set_freetype_face (raqm_t *rq,
* *
* This method can be used repeatedly to set different faces for different * This method can be used repeatedly to set different faces for different
* parts of the text. It is the responsibility of the client to make sure that * parts of the text. It is the responsibility of the client to make sure that
* face ranges cover the whole text, and is properly aligned. * face ranges cover the whole text, and are properly aligned.
* *
* See also raqm_set_freetype_face(). * See also raqm_set_freetype_face().
* *
@ -1023,9 +1025,6 @@ _raqm_set_freetype_load_flags (raqm_t *rq,
* Sets the load flags passed to FreeType when loading glyphs, should be the * Sets the load flags passed to FreeType when loading glyphs, should be the
* same flags used by the client when rendering FreeType glyphs. * same flags used by the client when rendering FreeType glyphs.
* *
* This requires version of HarfBuzz that has hb_ft_font_set_load_flags(), for
* older version the flags will be ignored.
*
* Return value: * Return value:
* `true` if no errors happened, `false` otherwise. * `true` if no errors happened, `false` otherwise.
* *
@ -1042,22 +1041,19 @@ raqm_set_freetype_load_flags (raqm_t *rq,
* raqm_set_freetype_load_flags_range: * raqm_set_freetype_load_flags_range:
* @rq: a #raqm_t. * @rq: a #raqm_t.
* @flags: FreeType load flags. * @flags: FreeType load flags.
* @start: index of first character that should use @flags. * @start: index of the first character that should use @flags.
* @len: number of characters using @flags. * @len: number of characters using @flags.
* *
* Sets the load flags passed to FreeType when loading glyphs for @len-number * Sets the load flags passed to FreeType when loading glyphs for @len-number
* of characters staring at @start. Flags should be the same as used by the * of characters staring at @start. Flags should be the same as used by the
* client when rendering corresponding FreeType glyphs. The @start and @len * client when rendering corresponding FreeType glyphs. The @start and @len
* are input string array indices (i.e. counting bytes in UTF-8 and scaler * are input string array indices (i.e. counting bytes in UTF-8 and scalar
* values in UTF-32). * values in UTF-32).
* *
* This method can be used repeatedly to set different flags for different * This method can be used repeatedly to set different flags for different
* parts of the text. It is the responsibility of the client to make sure that * parts of the text. It is the responsibility of the client to make sure that
* flag ranges cover the whole text. * flag ranges cover the whole text.
* *
* This requires version of HarfBuzz that has hb_ft_font_set_load_flags(), for
* older version the flags will be ignored.
*
* See also raqm_set_freetype_load_flags(). * See also raqm_set_freetype_load_flags().
* *
* Return value: * Return value:
@ -1143,7 +1139,7 @@ _raqm_set_spacing (raqm_t *rq,
* raqm_set_letter_spacing_range: * raqm_set_letter_spacing_range:
* @rq: a #raqm_t. * @rq: a #raqm_t.
* @spacing: amount of spacing in Freetype Font Units (26.6 format). * @spacing: amount of spacing in Freetype Font Units (26.6 format).
* @start: index of first character that should use @spacing. * @start: index of the first character that should use @spacing.
* @len: number of characters using @spacing. * @len: number of characters using @spacing.
* *
* Set the letter spacing or tracking for a given range, the value * Set the letter spacing or tracking for a given range, the value
@ -1200,12 +1196,12 @@ raqm_set_letter_spacing_range(raqm_t *rq,
* raqm_set_word_spacing_range: * raqm_set_word_spacing_range:
* @rq: a #raqm_t. * @rq: a #raqm_t.
* @spacing: amount of spacing in Freetype Font Units (26.6 format). * @spacing: amount of spacing in Freetype Font Units (26.6 format).
* @start: index of first character that should use @spacing. * @start: index of the first character that should use @spacing.
* @len: number of characters using @spacing. * @len: number of characters using @spacing.
* *
* Set the word spacing for a given range. Word spacing will only be applied to * Set the word spacing for a given range. Word spacing will only be applied to
* 'word separator' characters, such as 'space', 'no break space' and * 'word separator' characters, such as 'space', 'no break space' and
* Ethiopic word separator'. * 'Ethiopic word separator'.
* The value will be added onto the advance and offset for RTL, and the advance * The value will be added onto the advance and offset for RTL, and the advance
* for other directions. * for other directions.
* *
@ -1239,7 +1235,7 @@ raqm_set_word_spacing_range(raqm_t *rq,
* @rq: a #raqm_t. * @rq: a #raqm_t.
* @gid: glyph id to use for invisible glyphs. * @gid: glyph id to use for invisible glyphs.
* *
* Sets the glyph id to be used for invisible glyhphs. * Sets the glyph id to be used for invisible glyphs.
* *
* If @gid is negative, invisible glyphs will be suppressed from the output. * If @gid is negative, invisible glyphs will be suppressed from the output.
* *
@ -1629,6 +1625,11 @@ _raqm_reorder_runs (const FriBidiCharType *types,
} }
runs = malloc (sizeof (_raqm_bidi_run) * count); runs = malloc (sizeof (_raqm_bidi_run) * count);
if (!runs)
{
*run_count = 0;
return NULL;
}
while (run_start < len) while (run_start < len)
{ {
@ -2747,10 +2748,10 @@ raqm_version_string (void)
* @minor: Library minor version component. * @minor: Library minor version component.
* @micro: Library micro version component. * @micro: Library micro version component.
* *
* Checks if library version is less than or equal the specified version. * Checks if library version is less than or equal to the specified version.
* *
* Return value: * Return value:
* `true` if library version is less than or equal the specified version, * `true` if library version is less than or equal to the specified version,
* `false` otherwise. * `false` otherwise.
* *
* Since: 0.7 * Since: 0.7
@ -2769,10 +2770,10 @@ raqm_version_atleast (unsigned int major,
* @minor: Library minor version component. * @minor: Library minor version component.
* @micro: Library micro version component. * @micro: Library micro version component.
* *
* Checks if library version is less than or equal the specified version. * Checks if library version is less than or equal to the specified version.
* *
* Return value: * Return value:
* `true` if library version is less than or equal the specified version, * `true` if library version is less than or equal to the specified version,
* `false` otherwise. * `false` otherwise.
* *
* Since: 0.7 * Since: 0.7

View File

@ -48,7 +48,7 @@ extern "C" {
/** /**
* raqm_t: * raqm_t:
* *
* This is the main object holding all state of the currently processed text as * This is the main object holding all the states of the currently processed text as
* well as its output. * well as its output.
* *
* Since: 0.1 * Since: 0.1
@ -81,7 +81,7 @@ typedef enum
* @y_advance: the glyph advance width in vertical text. * @y_advance: the glyph advance width in vertical text.
* @x_offset: the horizontal movement of the glyph from the current point. * @x_offset: the horizontal movement of the glyph from the current point.
* @y_offset: the vertical movement of the glyph from the current point. * @y_offset: the vertical movement of the glyph from the current point.
* @cluster: the index of original character in input text. * @cluster: the index of the original character in the input text.
* @ftface: the @FT_Face of the glyph. * @ftface: the @FT_Face of the glyph.
* *
* The structure that holds information about output glyphs, returned from * The structure that holds information about output glyphs, returned from