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

FontLoader - swapping between name and source does not behave correctly

    XMLWordPrintable

Details

    Description

      In the attached .qml, the 3rd state "source" attempts to change the FontLoader to use a url located font. Click anywhere to advance through the states.

      • The first method, expected to read the source and change the name based on the loaded font, fails. (QML FontLoader: Cannot load font: "")
      • The second method, setting the font name, succeeds - but when switching back to using name it fails. (QML FontLoader: Cannot load font: ""). It will succeed every time after this first failure.
      • The third method, setting name: undefined, fails the first time (the font shows for a short moment) but succeeds every time after that.

      There seems to be some weak behaviour in FontLoader determining what should be displayed.

      //
      import QtQuick 2.0
      
      Item {
          id: fontloaderelementtest
          height: 640; width: 360
          property string testtext: ""
          property int statenum: 1
          property int currentfont: 0
          property variant availablefonts
          Component.onCompleted: { availablefonts = Qt.fontFamilies(); }
      
          Rectangle { anchors.fill: textitem; color: "lightsteelblue"; radius: 5 }
          FontLoader { id: fontloaderelement; name: availablefonts[currentfont]
              onStatusChanged: {
                  console.log("State: ",statenum,"\nStatus: ",status,"\nFontname: ",name,"\nFontsource: ",source,"\nUsing font: ",availablefonts[currentfont]);
                  switch(status) {
                  case FontLoader.Null: loaderstatus.text = "Null"; break;
                  case FontLoader.Ready: loaderstatus.text = "Ready"; break;
                  case FontLoader.Loading: loaderstatus.text = "Loading"; break;
                  case FontLoader.Error: loaderstatus.text = "Error"; break;
                  default: loaderstatus.text = "No idea"; break;
                  }
              }
          }
      
          Text { id: textitem; text: fontloaderelement.name; font: fontloaderelement.name
              horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; height: 100; width: 250; anchors.centerIn: parent;
          }
      
          Text { id: loaderstatus; text: ""; font: fontloaderelement.name
              horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; height: 50; width: parent.width; anchors.top: textitem.bottom;
          }
      
          MouseArea { anchors.fill: parent; onClicked: { advance(); } }
          states: [
              // Use the first available font
              State { name: "start"; when: statenum == 1 },
              // Use the second available font
              State { name: "changefont"; when: statenum == 2
                  PropertyChanges { target: fontloaderelementtest; currentfont: 1 }
              },
              // Use a locally stored font
              State { name: "source"; when: statenum == 3
                  PropertyChanges { target: fontloaderelement; source: "NeonLights.ttf" }                         // 1. Don't change name property
                  //PropertyChanges { target: fontloaderelement; source: "NeonLights.ttf"; name: "Neon Lights" }  // 2. Changed within state, should reset
                  //PropertyChanges { target: fontloaderelement; name: undefined; source: "NeonLights.ttf" }      // 3. Unset name
              }
          ]
      
          function advance() {
              statenum = statenum == states.length ? 1 : statenum+1;
          }
      }
      

      Attachments

        1. fontloadersourcebug.tgz
          63 kB
          Damian Jansen (closed Nokia identity)
        2. qtbug20268.zip
          164 kB
          Mitch Curtis

        Issue Links

          Activity

            People

              esabraha Eskil Abrahamsen Blomfeldt
              dajansen Damian Jansen (closed Nokia identity) (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: