From: António R. T. <ar...@gm...> - 2018-12-16 10:14:01
|
Hi all I found no evidence of fontconfig not being working properly in my system. so I've made a small test instead of setting font family to null string I've set it to a bogus name. f.setFamily( "BOUGUSTRASHFAMILY" ); // no family name, forcing Qt to find an appropriate font by itself and in x01c example as there are four plots i edited the source to add the plfont(1); before plot 1, plfont(2); before plot 2, plfont(3); before plot 3, plfont(4); before plot 4, I also get erase the esc text sequence that put title always in Roman. The results are what one would expected. cheers On Sun, Dec 16, 2018 at 7:40 AM António Rodrigues Tomé <ar...@gm...> wrote: > Hi Alan thanks for this detailed explanation. The inclusion of helvetica > was only a test to make sure it was indeed a font load problem it was not > intended to be a definitive solution. One of the first things I checked was > that fontconfig was installed. I will dig deeper into this before report > to opensuse at very least I will have to find a more suitable, and clean > example where fontconfig fails. A plplot example is not the most > appropriated situation to report. > Cheers > > On Sun, 16 Dec 2018, 06:11 Alan W. Irwin <Ala...@gm... > wrote: > >> On 2018-12-16 00:07-0000 António Rodrigues Tomé wrote: >> >> > Hi all >> > after trying a long time playing with cmake options trying to see if I >> > could get my qt5 plplot loading suitable f fonts I came to conclude >> that my >> > distribution in a way acts differently from Alan's. >> > I get very nice results if in the file plqt.cpp line 182 >> > where is >> > f.setFamily(""); // no family name, forcing Qt to find an appropriate >> > font by itself >> > >> > I replaced by >> > f.setFamily("Helvetica"); // no family name, forcing Qt to find an >> > appropriate font by itself >> > >> > it seems in my system qt does not find an appropriate font by itsel. I >> > attach the very nice results obtained only by performed this small >> change. >> >> Hi António: >> >> The problem with this workaround is Helevetica is a Sans-Serif font so >> this approach means you have >> excluded serif and monospace possibilities for the PLplot qt device >> driver user. >> >> Furthermore, how fonts are chosen by Qt is documented in < >> http://doc.qt.io/qt-5/qfont.html#details>. >> >> There is a lot of information there, but the relevant points for this >> discussion are >> >> --------------------------- >> enum QFont::StyleHint >> >> Style hints are used by the font matching algorithm to find an >> appropriate default family if a selected font family is not available. >> Constant Value Description >> QFont::AnyStyle 5 leaves the font matching algorithm to choose the >> family. This is the default. >> QFont::SansSerif Helvetica the font matcher prefer sans >> serif fonts. >> QFont::Helvetica 0 is a synonym for SansSerif. >> QFont::Serif Times the font matcher prefers serif fonts. >> QFont::Times 1 is a synonym for Serif. >> QFont::TypeWriter Courier the font matcher prefers fixed pitch >> fonts. >> QFont::Courier 2 a synonym for TypeWriter. >> QFont::OldEnglish 3 the font matcher prefers decorative fonts. >> QFont::Decorative OldEnglish is a synonym for OldEnglish. >> QFont::Monospace 7 the font matcher prefers fonts that map >> to the CSS generic font-family 'monospace'. >> QFont::Fantasy 8 the font matcher prefers fonts that map to the >> CSS generic font-family 'fantasy'. >> QFont::Cursive 6 the font matcher prefers fonts that map to the >> CSS generic font-family 'cursive'. >> QFont::System 4 the font matcher prefers system fonts. >> --------------------------- >> >> --------------------------- >> The font matching algorithm works as follows: >> >> 1. The specified font family is searched for. >> 2. If not found, the styleHint() is used to select a replacement family. >> 3. Each replacement font family is searched for. >> 4. If none of these are found or there was no styleHint(), "helvetica" >> will be searched for. >> 5. If "helvetica" isn't found Qt will try the lastResortFamily(). >> 6. If the lastResortFamily() isn't found Qt will try the lastResortFont() >> which will always return a name of some kind. >> --------------------------- >> >> Here is more context for the code we are discussing from >> bindings/qt-gui/plqt.cpp. >> >> switch ( fontFamily ) >> { >> case 1: >> f.setStyleHint( QFont::Serif ); >> break; >> case 2: >> f.setStyleHint( QFont::TypeWriter ); >> break; >> case 0: case 3: case 4: default: >> f.setStyleHint( QFont::SansSerif ); >> break; >> } >> f.setFamily( "" ); // no family name, forcing Qt to find an >> appropriate font by itself >> >> So by this code setting the Family to an empty string we force Step 1 >> above to fail and fall back to one of the QFont::Serif, >> QFont::TypeWriter, or QFont::SansSerif depending on what the user has >> requested for the (generic) font family. And this font finding all >> works fine (as you would expect from the above documentation) for >> Debian Buster with Qt-5.11.2, for the much older Qt5 version I used >> for Debian Oldstable last year, and for many different versions of Qt4 >> before that. >> >> I strongly suspect what is going on is you don't have fontconfig >> installed, in which >> case the search algorithm above would drop through to step 6 consistent >> with your >> observation that the unmodified PLplot code has an extremely >> limited font selection. >> >> But if you confirm you do have fontconfig installed, then you have a >> strong basis for a bug report to opensuse since setStyleHint appears >> not to be working on that platform. >> >> Alan >> __________________________ >> Alan W. Irwin >> >> Programming affiliations with the FreeEOS equation-of-state >> implementation for stellar interiors (freeeos.sf.net); the Time >> Ephemerides project (timeephem.sf.net); PLplot scientific plotting >> software package (plplot.sf.net); the libLASi project >> (unifont.org/lasi); the Loads of Linux Links project (loll.sf.net); >> and the Linux Brochure Project (lbproject.sf.net). >> __________________________ >> >> Linux-powered Science >> __________________________ >> > -- António Rodrigues Tomé Universidade da Beira Interior Instituto D. Luís (lab associado) email address: ar...@gm... ar...@ub... http://www.researcherid.com/rid/A-5681-2013 |