kiss-stj

My KISS Linux repo for software I use on my computers.
git clone https://git.stjo.hn/kiss-stj
Log | Files | Refs | README | LICENSE

no-fribidi.patch (7352B)


      1 diff --git a/meson.build b/meson.build
      2 index acead2d..2e51d8a 100644
      3 --- a/meson.build
      4 +++ b/meson.build
      5 @@ -226,7 +226,6 @@ endif
      6  pango_deps = []
      7  
      8  glib_req_version = '>= 2.62'
      9 -fribidi_req_version = '>= 1.0.6'
     10  libthai_req_version = '>= 0.1.9'
     11  harfbuzz_req_version = '>= 2.6.0'
     12  fontconfig_req_version = '>= 2.13.0'
     13 @@ -246,10 +245,6 @@ gio_dep = dependency('gio-2.0', version: glib_req_version,
     14                           fallback: ['glib', 'libgio_dep'])
     15  pango_deps += [glib_dep, gobject_dep, gio_dep]
     16  
     17 -fribidi_dep = dependency('fribidi', version: fribidi_req_version,
     18 -                         fallback: ['fribidi', 'libfribidi_dep'],
     19 -                         default_options: ['docs=false'])
     20 -pango_deps += fribidi_dep
     21  
     22  thai_dep = dependency('libthai', version: libthai_req_version, required: get_option('libthai'))
     23  if thai_dep.found()
     24 diff --git a/pango/pango-bidi-type.c b/pango/pango-bidi-type.c
     25 index 40123a6..328e617 100644
     26 --- a/pango/pango-bidi-type.c
     27 +++ b/pango/pango-bidi-type.c
     28 @@ -23,13 +23,21 @@
     29  
     30  #include <string.h>
     31  
     32 -#include <fribidi.h>
     33  
     34  #undef PANGO_DISABLE_DEPRECATED
     35  
     36  #include "pango-bidi-type.h"
     37  #include "pango-utils.h"
     38  
     39 +typedef uint32_t FriBidiChar;
     40 +typedef uint32_t FriBidiCharType;
     41 +typedef uint32_t FriBidiBracketType;
     42 +typedef int FriBidiStrIndex;
     43 +typedef int FriBidiParType;
     44 +typedef signed char FriBidiLevel;
     45 +
     46 +#define FRIBIDI_PAR_LTR (0x00000010L | 0x00000100L)
     47 +
     48  /**
     49   * pango_bidi_type_for_unichar:
     50   * @ch: a Unicode character
     51 @@ -48,41 +56,7 @@
     52  PangoBidiType
     53  pango_bidi_type_for_unichar (gunichar ch)
     54  {
     55 -  FriBidiCharType fribidi_ch_type;
     56 -
     57 -  G_STATIC_ASSERT (sizeof (FriBidiChar) == sizeof (gunichar));
     58 -
     59 -  fribidi_ch_type = fribidi_get_bidi_type (ch);
     60 -
     61 -  switch (fribidi_ch_type)
     62 -    {
     63 -    case FRIBIDI_TYPE_LTR:  return PANGO_BIDI_TYPE_L;
     64 -    case FRIBIDI_TYPE_LRE:  return PANGO_BIDI_TYPE_LRE;
     65 -    case FRIBIDI_TYPE_LRO:  return PANGO_BIDI_TYPE_LRO;
     66 -    case FRIBIDI_TYPE_RTL:  return PANGO_BIDI_TYPE_R;
     67 -    case FRIBIDI_TYPE_AL:   return PANGO_BIDI_TYPE_AL;
     68 -    case FRIBIDI_TYPE_RLE:  return PANGO_BIDI_TYPE_RLE;
     69 -    case FRIBIDI_TYPE_RLO:  return PANGO_BIDI_TYPE_RLO;
     70 -    case FRIBIDI_TYPE_PDF:  return PANGO_BIDI_TYPE_PDF;
     71 -    case FRIBIDI_TYPE_EN:   return PANGO_BIDI_TYPE_EN;
     72 -    case FRIBIDI_TYPE_ES:   return PANGO_BIDI_TYPE_ES;
     73 -    case FRIBIDI_TYPE_ET:   return PANGO_BIDI_TYPE_ET;
     74 -    case FRIBIDI_TYPE_AN:   return PANGO_BIDI_TYPE_AN;
     75 -    case FRIBIDI_TYPE_CS:   return PANGO_BIDI_TYPE_CS;
     76 -    case FRIBIDI_TYPE_NSM:  return PANGO_BIDI_TYPE_NSM;
     77 -    case FRIBIDI_TYPE_BN:   return PANGO_BIDI_TYPE_BN;
     78 -    case FRIBIDI_TYPE_BS:   return PANGO_BIDI_TYPE_B;
     79 -    case FRIBIDI_TYPE_SS:   return PANGO_BIDI_TYPE_S;
     80 -    case FRIBIDI_TYPE_WS:   return PANGO_BIDI_TYPE_WS;
     81 -    case FRIBIDI_TYPE_ON:   return PANGO_BIDI_TYPE_ON;
     82 -    case FRIBIDI_TYPE_LRI:  return PANGO_BIDI_TYPE_LRI;
     83 -    case FRIBIDI_TYPE_RLI:  return PANGO_BIDI_TYPE_RLI;
     84 -    case FRIBIDI_TYPE_FSI:  return PANGO_BIDI_TYPE_FSI;
     85 -    case FRIBIDI_TYPE_PDI:  return PANGO_BIDI_TYPE_PDI;
     86 -    case _FRIBIDI_TYPE_SENTINEL:
     87 -    default:
     88 -      return PANGO_BIDI_TYPE_ON;
     89 -    }
     90 +  return PANGO_BIDI_TYPE_L;
     91  }
     92  
     93  /* Some bidi-related functions */
     94 @@ -117,36 +91,12 @@ pango_log2vis_get_embedding_levels (const gchar    *text,
     95    glong n_chars, i;
     96    guint8 *embedding_levels_list;
     97    const gchar *p;
     98 -  FriBidiParType fribidi_base_dir;
     99    FriBidiCharType *bidi_types;
    100    FriBidiBracketType *bracket_types;
    101 -  FriBidiLevel max_level;
    102 -  FriBidiCharType ored_types = 0;
    103 -  FriBidiCharType anded_strongs = FRIBIDI_TYPE_RLE;
    104  
    105    G_STATIC_ASSERT (sizeof (FriBidiLevel) == sizeof (guint8));
    106    G_STATIC_ASSERT (sizeof (FriBidiChar) == sizeof (gunichar));
    107  
    108 -  switch (*pbase_dir)
    109 -    {
    110 -    case PANGO_DIRECTION_LTR:
    111 -    case PANGO_DIRECTION_TTB_RTL:
    112 -      fribidi_base_dir = FRIBIDI_PAR_LTR;
    113 -      break;
    114 -    case PANGO_DIRECTION_RTL:
    115 -    case PANGO_DIRECTION_TTB_LTR:
    116 -      fribidi_base_dir = FRIBIDI_PAR_RTL;
    117 -      break;
    118 -    case PANGO_DIRECTION_WEAK_RTL:
    119 -      fribidi_base_dir = FRIBIDI_PAR_WRTL;
    120 -      break;
    121 -    case PANGO_DIRECTION_WEAK_LTR:
    122 -    case PANGO_DIRECTION_NEUTRAL:
    123 -    default:
    124 -      fribidi_base_dir = FRIBIDI_PAR_WLTR;
    125 -      break;
    126 -    }
    127 -
    128    if (length < 0)
    129      length = strlen (text);
    130  
    131 @@ -158,20 +108,11 @@ pango_log2vis_get_embedding_levels (const gchar    *text,
    132  
    133    for (i = 0, p = text; p < text + length; p = g_utf8_next_char(p), i++)
    134      {
    135 -      gunichar ch = g_utf8_get_char (p);
    136 -      FriBidiCharType char_type = fribidi_get_bidi_type (ch);
    137 -
    138        if (i == n_chars)
    139          break;
    140  
    141 -      bidi_types[i] = char_type;
    142 -      ored_types |= char_type;
    143 -      if (FRIBIDI_IS_STRONG (char_type))
    144 -        anded_strongs &= char_type;
    145 -      if (G_UNLIKELY(bidi_types[i] == FRIBIDI_TYPE_ON))
    146 -        bracket_types[i] = fribidi_get_bracket (ch);
    147 -      else
    148 -        bracket_types[i] = FRIBIDI_NO_BRACKET;
    149 +      bidi_types[i] = FRIBIDI_PAR_LTR;
    150 +      bracket_types[i] = 0;
    151      }
    152  
    153      /* Short-circuit (malloc-expensive) FriBidi call for unidirectional
    154 @@ -188,56 +129,11 @@ pango_log2vis_get_embedding_levels (const gchar    *text,
    155       * o base_dir doesn't have an RTL taste.
    156       * o there are letters, and base_dir is weak.
    157       */
    158 -    if (!FRIBIDI_IS_ISOLATE (ored_types) &&
    159 -	!FRIBIDI_IS_RTL (ored_types) &&
    160 -	!FRIBIDI_IS_ARABIC (ored_types) &&
    161 -	(!FRIBIDI_IS_RTL (fribidi_base_dir) ||
    162 -	  (FRIBIDI_IS_WEAK (fribidi_base_dir) &&
    163 -	   FRIBIDI_IS_LETTER (ored_types))
    164 -	))
    165 -      {
    166 -        /* all LTR */
    167 -	fribidi_base_dir = FRIBIDI_PAR_LTR;
    168  	memset (embedding_levels_list, 0, n_chars);
    169 -	goto resolved;
    170 -      }
    171 -    /* The case that all resolved levels will be RTL is much more complex.
    172 -     * No isolates, no numbers, all strongs are RTL, and one of
    173 -     * the following:
    174 -     *
    175 -     * o base_dir has an RTL taste (may be weak).
    176 -     * o there are letters, and base_dir is weak.
    177 -     */
    178 -    else if (!FRIBIDI_IS_ISOLATE (ored_types) &&
    179 -	     !FRIBIDI_IS_NUMBER (ored_types) &&
    180 -	     FRIBIDI_IS_RTL (anded_strongs) &&
    181 -	     (FRIBIDI_IS_RTL (fribidi_base_dir) ||
    182 -	       (FRIBIDI_IS_WEAK (fribidi_base_dir) &&
    183 -		FRIBIDI_IS_LETTER (ored_types))
    184 -	     ))
    185 -      {
    186 -        /* all RTL */
    187 -	fribidi_base_dir = FRIBIDI_PAR_RTL;
    188 -	memset (embedding_levels_list, 1, n_chars);
    189 -	goto resolved;
    190 -      }
    191 -
    192 -
    193 -  max_level = fribidi_get_par_embedding_levels_ex (bidi_types, bracket_types, n_chars,
    194 -						   &fribidi_base_dir,
    195 -						   (FriBidiLevel*)embedding_levels_list);
    196 -
    197 -  if (G_UNLIKELY(max_level == 0))
    198 -    {
    199 -      /* fribidi_get_par_embedding_levels() failed. */
    200 -      memset (embedding_levels_list, 0, length);
    201 -    }
    202 -
    203 -resolved:
    204    g_free (bidi_types);
    205    g_free (bracket_types);
    206  
    207 -  *pbase_dir = (fribidi_base_dir == FRIBIDI_PAR_LTR) ?  PANGO_DIRECTION_LTR : PANGO_DIRECTION_RTL;
    208 +  *pbase_dir = PANGO_DIRECTION_LTR;
    209  
    210    return embedding_levels_list;
    211  }
    212 @@ -261,17 +157,6 @@ resolved:
    213  PangoDirection
    214  pango_unichar_direction (gunichar ch)
    215  {
    216 -  FriBidiCharType fribidi_ch_type;
    217 -
    218 -  G_STATIC_ASSERT (sizeof (FriBidiChar) == sizeof (gunichar));
    219 -
    220 -  fribidi_ch_type = fribidi_get_bidi_type (ch);
    221 -
    222 -  if (!FRIBIDI_IS_STRONG (fribidi_ch_type))
    223 -    return PANGO_DIRECTION_NEUTRAL;
    224 -  else if (FRIBIDI_IS_RTL (fribidi_ch_type))
    225 -    return PANGO_DIRECTION_RTL;
    226 -  else
    227      return PANGO_DIRECTION_LTR;
    228  }
    229