mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-02-24 15:50:33 +03:00
raqm: fix FriBiDi<1 support
This commit is contained in:
parent
b4a57d6fc5
commit
9c178435fb
|
@ -1397,10 +1397,10 @@ setup_module(PyObject *m) {
|
||||||
PyDict_SetItemString(d, "raqm_version", v);
|
PyDict_SetItemString(d, "raqm_version", v);
|
||||||
|
|
||||||
#ifdef FRIBIDI_MAJOR_VERSION
|
#ifdef FRIBIDI_MAJOR_VERSION
|
||||||
a = strchr(fribidi_version_info, '1');
|
a = strchr(fribidi_version_info, ')');
|
||||||
b = strchr(fribidi_version_info, '\n');
|
b = strchr(fribidi_version_info, '\n');
|
||||||
if (a && b) {
|
if (a && b) {
|
||||||
v = PyUnicode_FromStringAndSize(a, b - a);
|
v = PyUnicode_FromStringAndSize(a + 2, b - a - 2);
|
||||||
} else {
|
} else {
|
||||||
v = Py_None;
|
v = Py_None;
|
||||||
}
|
}
|
||||||
|
|
23
src/thirdparty/fribidi-shim/fribidi.c
vendored
23
src/thirdparty/fribidi-shim/fribidi.c
vendored
|
@ -11,7 +11,7 @@
|
||||||
#include "fribidi.h"
|
#include "fribidi.h"
|
||||||
|
|
||||||
|
|
||||||
/* ..._ex adds bracket_types param, ignore and call legacy function */
|
/* FriBiDi>=1.0.0 adds bracket_types param, ignore and call legacy function */
|
||||||
FriBidiLevel fribidi_get_par_embedding_levels_ex_compat(
|
FriBidiLevel fribidi_get_par_embedding_levels_ex_compat(
|
||||||
const FriBidiCharType *bidi_types,
|
const FriBidiCharType *bidi_types,
|
||||||
const FriBidiBracketType *bracket_types,
|
const FriBidiBracketType *bracket_types,
|
||||||
|
@ -23,6 +23,14 @@ FriBidiLevel fribidi_get_par_embedding_levels_ex_compat(
|
||||||
bidi_types, len, pbase_dir, embedding_levels);
|
bidi_types, len, pbase_dir, embedding_levels);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* FriBiDi>=1.0.0 gets bracket types here, ignore */
|
||||||
|
void fribidi_get_bracket_types_compat(
|
||||||
|
const FriBidiChar *str,
|
||||||
|
const FriBidiStrIndex len,
|
||||||
|
const FriBidiCharType *types,
|
||||||
|
FriBidiBracketType *btypes)
|
||||||
|
{ /* no-op*/ }
|
||||||
|
|
||||||
|
|
||||||
int load_fribidi(void) {
|
int load_fribidi(void) {
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
@ -58,19 +66,20 @@ int load_fribidi(void) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* load ..._ex first to preserve error variable */
|
/* load FriBiDi>=1.0.0 functions first, use error to detect version */
|
||||||
LOAD_FUNCTION(fribidi_get_par_embedding_levels_ex);
|
LOAD_FUNCTION(fribidi_get_par_embedding_levels_ex);
|
||||||
|
LOAD_FUNCTION(fribidi_get_bracket_types);
|
||||||
if (error) {
|
if (error) {
|
||||||
/* using FriBiDi 0.x, emulate ..._ex function */
|
/* using FriBiDi<1.0.0, ignore new parameters */
|
||||||
fribidi_get_par_embedding_levels_ex = &fribidi_get_par_embedding_levels_ex_compat;
|
|
||||||
error = 0;
|
error = 0;
|
||||||
|
fribidi_get_par_embedding_levels_ex = &fribidi_get_par_embedding_levels_ex_compat;
|
||||||
|
fribidi_get_bracket_types = &fribidi_get_bracket_types_compat;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOAD_FUNCTION(fribidi_get_bidi_types);
|
|
||||||
LOAD_FUNCTION(fribidi_get_bracket_types);
|
|
||||||
LOAD_FUNCTION(fribidi_get_par_embedding_levels);
|
|
||||||
LOAD_FUNCTION(fribidi_unicode_to_charset);
|
LOAD_FUNCTION(fribidi_unicode_to_charset);
|
||||||
LOAD_FUNCTION(fribidi_charset_to_unicode);
|
LOAD_FUNCTION(fribidi_charset_to_unicode);
|
||||||
|
LOAD_FUNCTION(fribidi_get_bidi_types);
|
||||||
|
LOAD_FUNCTION(fribidi_get_par_embedding_levels);
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
fribidi_version_info = *(const char**)dlsym(p_fribidi, "fribidi_version_info");
|
fribidi_version_info = *(const char**)dlsym(p_fribidi, "fribidi_version_info");
|
||||||
|
|
32
src/thirdparty/fribidi-shim/fribidi.h
vendored
32
src/thirdparty/fribidi-shim/fribidi.h
vendored
|
@ -72,27 +72,29 @@ typedef uint32_t FriBidiParType;
|
||||||
typedef ret (*t_##name) (__VA_ARGS__); \
|
typedef ret (*t_##name) (__VA_ARGS__); \
|
||||||
FRIBIDI_ENTRY t_##name name;
|
FRIBIDI_ENTRY t_##name name;
|
||||||
|
|
||||||
FRIBIDI_FUNC(void, fribidi_get_bidi_types,
|
|
||||||
const FriBidiChar *, const FriBidiStrIndex, FriBidiCharType *);
|
|
||||||
|
|
||||||
FRIBIDI_FUNC(void, fribidi_get_bracket_types,
|
|
||||||
const FriBidiChar *, const FriBidiStrIndex, const FriBidiCharType *,
|
|
||||||
FriBidiBracketType *);
|
|
||||||
|
|
||||||
FRIBIDI_FUNC(FriBidiLevel, fribidi_get_par_embedding_levels_ex,
|
|
||||||
const FriBidiCharType *, const FriBidiBracketType *, const FriBidiStrIndex,
|
|
||||||
FriBidiParType *, FriBidiLevel *);
|
|
||||||
|
|
||||||
FRIBIDI_FUNC(FriBidiLevel, fribidi_get_par_embedding_levels,
|
|
||||||
const FriBidiCharType *, const FriBidiStrIndex, FriBidiParType *,
|
|
||||||
FriBidiLevel *);
|
|
||||||
|
|
||||||
FRIBIDI_FUNC(FriBidiStrIndex, fribidi_unicode_to_charset,
|
FRIBIDI_FUNC(FriBidiStrIndex, fribidi_unicode_to_charset,
|
||||||
FriBidiCharSet, const FriBidiChar *, FriBidiStrIndex, char *);
|
FriBidiCharSet, const FriBidiChar *, FriBidiStrIndex, char *);
|
||||||
|
|
||||||
FRIBIDI_FUNC(FriBidiStrIndex, fribidi_charset_to_unicode,
|
FRIBIDI_FUNC(FriBidiStrIndex, fribidi_charset_to_unicode,
|
||||||
FriBidiCharSet, const char *, FriBidiStrIndex, FriBidiChar *);
|
FriBidiCharSet, const char *, FriBidiStrIndex, FriBidiChar *);
|
||||||
|
|
||||||
|
FRIBIDI_FUNC(void, fribidi_get_bidi_types,
|
||||||
|
const FriBidiChar *, const FriBidiStrIndex, FriBidiCharType *);
|
||||||
|
|
||||||
|
FRIBIDI_FUNC(FriBidiLevel, fribidi_get_par_embedding_levels,
|
||||||
|
const FriBidiCharType *, const FriBidiStrIndex, FriBidiParType *,
|
||||||
|
FriBidiLevel *);
|
||||||
|
|
||||||
|
/* FriBiDi>=1.0.0 */
|
||||||
|
FRIBIDI_FUNC(FriBidiLevel, fribidi_get_par_embedding_levels_ex,
|
||||||
|
const FriBidiCharType *, const FriBidiBracketType *, const FriBidiStrIndex,
|
||||||
|
FriBidiParType *, FriBidiLevel *);
|
||||||
|
|
||||||
|
/* FriBiDi>=1.0.0 */
|
||||||
|
FRIBIDI_FUNC(void, fribidi_get_bracket_types,
|
||||||
|
const FriBidiChar *, const FriBidiStrIndex, const FriBidiCharType *,
|
||||||
|
FriBidiBracketType *);
|
||||||
|
|
||||||
#undef FRIBIDI_FUNC
|
#undef FRIBIDI_FUNC
|
||||||
|
|
||||||
/* constant, not a function */
|
/* constant, not a function */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user