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

Reply via email to