Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions .github/generate-sbom.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ def generate(version: str) -> dict:
"bom-ref": f"{purl}#thirdparty/raqm",
"type": "library",
"name": "raqm",
"version": "0.10.5",
"version": "0.11.0",
"description": "Complex text layout library "
"(vendored in src/thirdparty/raqm/)",
"licenses": [{"license": {"id": "MIT"}}],
Expand All @@ -175,15 +175,15 @@ def generate(version: str) -> dict:
"pedigree": {
"ancestors": [
{
"bom-ref": "pkg:github/HOST-Oman/libraqm@0.10.5#upstream",
"bom-ref": "pkg:github/HOST-Oman/libraqm@0.11.0#upstream",
"type": "library",
"name": "raqm",
"version": "0.10.5",
"purl": "pkg:github/HOST-Oman/libraqm@0.10.5",
"version": "0.11.0",
"purl": "pkg:github/HOST-Oman/libraqm@0.11.0",
"externalReferences": [
{
"type": "distribution",
"url": "https://github.com/HOST-Oman/libraqm/releases/tag/v0.10.5",
"url": "https://github.com/HOST-Oman/libraqm/releases/tag/v0.11.0",
}
],
}
Expand All @@ -195,10 +195,10 @@ def generate(version: str) -> dict:
"text": {
# raqm-version.h.in → raqm-version.h:
# template @RAQM_VERSION_*@ placeholders replaced
# with literal 0.10.5 values; filename changed to
# drop the .in suffix; minor indentation fix.
# with literal 0.11.0 values; filename changed to
# drop the .in suffix.
"content": upstream_diff_b64(
"https://raw.githubusercontent.com/HOST-Oman/libraqm/v0.10.5/src/raqm-version.h.in",
"https://raw.githubusercontent.com/HOST-Oman/libraqm/v0.11.0/src/raqm-version.h.in",
b"src/raqm-version.h.in",
thirdparty / "raqm" / "raqm-version.h",
b"src/raqm-version.h",
Expand All @@ -216,7 +216,7 @@ def generate(version: str) -> dict:
# building without a system FriBiDi Pillow's own
# fribidi-shim is used instead.
"content": upstream_diff_b64(
"https://raw.githubusercontent.com/HOST-Oman/libraqm/v0.10.5/src/raqm.c",
"https://raw.githubusercontent.com/HOST-Oman/libraqm/v0.11.0/src/raqm.c",
b"src/raqm.c",
thirdparty / "raqm" / "raqm.c",
b"src/raqm.c",
Expand All @@ -227,7 +227,7 @@ def generate(version: str) -> dict:
},
],
"notes": (
"Vendored from upstream HOST-Oman/libraqm v0.10.5 with two "
"Vendored from upstream HOST-Oman/libraqm v0.11.0 with two "
"Pillow-specific modifications: (1) raqm-version.h.in was "
"pre-processed into raqm-version.h with version placeholders "
"replaced by literal values; (2) raqm.c wraps the <fribidi.h> "
Expand Down
2 changes: 1 addition & 1 deletion depends/install_raqm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# install raqm


archive=libraqm-0.10.5
archive=libraqm-0.11.0

./download-and-extract.sh $archive https://raw.githubusercontent.com/python-pillow/pillow-depends/main/$archive.tar.gz

Expand Down
1 change: 1 addition & 0 deletions src/thirdparty/fribidi-shim/fribidi.c
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ int load_fribidi(void) {
LOAD_FUNCTION(fribidi_unicode_to_charset);
LOAD_FUNCTION(fribidi_charset_to_unicode);
LOAD_FUNCTION(fribidi_get_bidi_types);
LOAD_FUNCTION(fribidi_get_par_direction);
LOAD_FUNCTION(fribidi_get_par_embedding_levels);

#ifndef _WIN32
Expand Down
3 changes: 3 additions & 0 deletions src/thirdparty/fribidi-shim/fribidi.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ FRIBIDI_FUNC(FriBidiStrIndex, fribidi_charset_to_unicode,
FRIBIDI_FUNC(void, fribidi_get_bidi_types,
const FriBidiChar *, const FriBidiStrIndex, FriBidiCharType *);

FRIBIDI_FUNC(FriBidiParType, fribidi_get_par_direction,
const FriBidiCharType *, const FriBidiStrIndex);

FRIBIDI_FUNC(FriBidiLevel, fribidi_get_par_embedding_levels,
const FriBidiCharType *, const FriBidiStrIndex, FriBidiParType *,
FriBidiLevel *);
Expand Down
2 changes: 1 addition & 1 deletion src/thirdparty/raqm/COPYING
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
The MIT License (MIT)

Copyright © 2015 Information Technology Authority (ITA) <foss@ita.gov.om>
Copyright © 2016-2025 Khaled Hosny <khaled@aliftype.com>
Copyright © 2016-2026 Khaled Hosny <khaled@aliftype.com>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
18 changes: 18 additions & 0 deletions src/thirdparty/raqm/NEWS
Original file line number Diff line number Diff line change
@@ -1,3 +1,21 @@
Overview of changes leading to 0.11.0
Thursday, July 23, 2026
====================================

Update grapheme cluster boundary detection to Unicode 17, conforming to
Unicode UAX #29 and verified against the Unicode conformance test.

Reject input that spans multiple paragraphs; raqm_layout() now fails when
the text contains a paragraph separator.

Fix out-of-bounds read in the UTF-8 and UTF-16 decoders.

Build, CI and documentation updates.

New API:
* raqm_get_par_detected_direction
* raqm_allowed_grapheme_boundary

Overview of changes leading to 0.10.5
Saturday, April 11, 2026
====================================
Expand Down
7 changes: 0 additions & 7 deletions src/thirdparty/raqm/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,6 @@ Projects using Raqm
5. [mplcairo](https://github.com/anntzer/mplcairo)
6. [CEGUI](https://github.com/cegui/cegui)

The following projects have patches to support complex text layout using Raqm:

2. SDL_ttf: https://bugzilla.libsdl.org/show_bug.cgi?id=3211
3. Pygame: https://bitbucket.org/pygame/pygame/pull-requests/52
4. Blender: https://developer.blender.org/D1809



[1]: https://github.com/fribidi/fribidi
[2]: https://github.com/Tehreer/SheenBidi
Expand Down
Loading
Loading