Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-13130

Arabic font rendering error causes a dead-lock.

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: P1: Critical P1: Critical
    • 4.7.2
    • 4.7.0
    • GUI: Font handling
    • None
    • 4cff91c66207b870e12365421e63cd978e162e64

      Qt enters an endless loop when Align Justify is used (some parts of the text are Bold Italic)
      Loop is executed in: qtextengine.cpp in line1952:

      // distribute in priority order
      if (maxJustify >= HB_Arabic_Normal) {
      while (need >= minKashida) {
      for (int type = maxJustify; need >= minKashida && type >= HB_Arabic_Normal; --type) {
      for (int i = 0; need >= minKashida && i < nPoints; ++i) {
      if (justificationPoints[i].type == type && justificationPoints[i].kashidaWidth <= need) {
      justificationPoints[i].glyph.justifications->nKashidas++;
      // ############
      justificationPoints[i].glyph.justifications->space_18d6 += justificationPoints[i].kashidaWidth.value();
      need -= justificationPoints[i].kashidaWidth;
      // qDebug("adding kashida type %d with width %x, neednow %x", type, justificationPoints[i].kashidaWidth, need.value());
      }

      This has been reproduced on Windows. Follow these steps to reproduce the problem:

      1) Run the QTextEdit demo.
      2) Remove its content and set its font to Arial 12.
      3) Select the keyboard input method Arabic Morocco from the language bar
      4) Type some Arabic text.
      5) Select some of the text, spanning two lines. Do not select all text.
      6) Hit the Italic button
      7) Hit the Justify button and the application will hang.

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            esabraha Eskil Abrahamsen Blomfeldt
            naevdal Sigrid Fjell Nævdal (Inactive)
            Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes