On Fri, Jul 06, 2007 at 12:48:10AM +0200, Enrico Forestieri wrote: > On Wed, Jul 04, 2007 at 04:31:55PM +0200, Jean-Marc Lasgouttes wrote: > > > With Qt4.2, we can also use QFontDatabase::addApplicationFont > > http://doc.trolltech.com/4.2/qfontdatabase.html#addApplicationFont > > I tried this option (see attached patch). It works on Win2k and solves > the problem of having fonts with the same name as the bakoma ones in > the system font directory, but fails on Vista, where addApplicationFont > always returns -1. > > However, pointing addApplicationFont to the the fonts of the installed > LyX 1.4.4, it succeeds. So, this seems to be the same bug afflicting > AddFontResource. Having spent some (too much) time on this problem, > I think I can say there is no way to solve it on Vista, the only > workaround being installing the bakoma fonts in the Windows font > directory.
Being Windows ... well ... Windows (no need to say more), I think I should not be surprised. This one I think should be added to the old wives' tales about it. Please, have a look at what I obtain with the above patch applied: $ ./src/lyx-qt4.exe -dbg font Setting debug level to font Debugging `font' (Font handling) Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/cmex10.ttf FAIL Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/cmmi10.ttf FAIL Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/cmr10.ttf FAIL Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/cmsy10.ttf FAIL Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/eufm10.ttf FAIL Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/msam10.ttf FAIL Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/msbm10.ttf FAIL Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/wasy10.ttf FAIL Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/esint10.ttf FAIL $ chmod a+x /usr/local/src/lyx/lyx-devel/lib/fonts/*.ttf $ ./src/lyx-qt4.exe -dbg font Setting debug level to font Debugging `font' (Font handling) Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/cmex10.ttf OK Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/cmmi10.ttf OK Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/cmr10.ttf OK Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/cmsy10.ttf OK Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/eufm10.ttf OK Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/msam10.ttf OK Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/msbm10.ttf OK Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/wasy10.ttf OK Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/esint10.ttf FAIL $ chmod a-x /usr/local/src/lyx/lyx-devel/lib/fonts/*.ttf $ ./src/lyx-qt4.exe -dbg font Setting debug level to font Debugging `font' (Font handling) Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/cmex10.ttf FAIL Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/cmmi10.ttf FAIL Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/cmr10.ttf FAIL Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/cmsy10.ttf FAIL Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/eufm10.ttf FAIL Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/msam10.ttf FAIL Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/msbm10.ttf FAIL Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/wasy10.ttf FAIL Adding font /usr/local/src/lyx/lyx-devel/lib/fonts/esint10.ttf FAIL I can't believe it! The font files must have the executable flag set, otherwise they are not found. But why, my god, why? However, there must be more to it, as when I look at the fonts installed with LyX 1.4.4 I don't see the executable flag set: $ ls -lG /usr/local/share/lyx/fonts/eufm10.ttf -rw-r-----+ 1 root 23744 Jul 12 2006 /usr/local/share/lyx/fonts/eufm10.ttf but notice that '+' there, meaning that the file has an ACL attached: $ getfacl /usr/local/share/lyx/fonts/eufm10.ttf # file: /usr/local/share/lyx/fonts/eufm10.ttf # owner: root # group: users user::rw- group::r-- group:SYSTEM:rwx group:administrators:rwx mask:rwx other:--- These ACLs were set up by the cygwin installation tool, which surely knows more than me about Windows, but even when I copy them using $ getfacl source_file | setfacl -f - target_file the files are not found. Most probably, in this case all the path components should have a proper ACL. Windows really drives me mad. However, I will stick with the executable flag set, which seems working. And for the sake of my sanity, I will not try to find a logical explanation. This is Windows, after all... -- Enrico