Before I get anymore strawman arguments, here's the definitive experiment:
$ ls -U1 /usr/share/fonts/vista/ | grep erda
Verdanai.ttf
Verdana.ttf
Verdanaz.ttf
Verdanab.ttf
$ ls -U1 /xp/wtf/
Verdana.ttf
Verdanab.ttf
Verdanai.ttf
Verdanaz.ttf
Notice that the directory order is different, bold comes before bold
italic in wtf. I actually had to copy the files to a non-ext3
partition (NTFS actually) to get the order to change. Why? Because
with ext3 htree you have *no* control over the order in which the
directory is "laid out", because it's not a linear list anymore.
So, guess what happens if I do:
$ export OSFONTDIR=/xp/wtf/
$ mtxrun --script fonts --reload
$ mtxrun --script fonts --list | grep erda
verdana Verdana
/xp/wtf/Verdana.ttf
verdana bold Verdana Bold
/xp/wtf/Verdanab.ttf
verdana bold italic Verdana Bold Italic
/xp/wtf/Verdanaz.ttf
verdana italic Verdana Italic
/xp/wtf/Verdanai.ttf
$ context taco.tex | grep Verdana
)
and the correct bold font is loaded in the PDF.
If you still think somehow that this is a problem with Verdana, look
carefully at this list of DejaVu fonts. Some get the bold, and for
some it's missing. It's haphazard depending on the disk order:
$ mtxrun --script fonts --list | grep eja
dejavu lgc sans DejaVu LGC Sans
/usr/share/fonts/dejavu/DejaVuLGCSans.ttf
dejavu lgc sans bold oblique DejaVu LGC Sans Bold Oblique
/usr/share/fonts/dejavu/DejaVuLGCSans-BoldOblique.ttf
dejavu lgc sans condensed DejaVu LGC Sans Condensed
/usr/share/fonts/dejavu/DejaVuLGCSansCondensed.ttf
dejavu lgc sans condensed bold oblique DejaVu LGC Sans Condensed Bold
Oblique /usr/share/fonts/dejavu/DejaVuLGCSansCondensed-BoldOblique.ttf
dejavu lgc sans condensed oblique DejaVu LGC Sans Condensed
Oblique /usr/share/fonts/dejavu/DejaVuLGCSansCondensed-Oblique.ttf
dejavu lgc sans extralight DejaVu LGC Sans ExtraLight
/usr/share/fonts/dejavu/DejaVuLGCSans-ExtraLight.ttf
dejavu lgc sans mono DejaVu LGC Sans Mono
/usr/share/fonts/dejavu/DejaVuLGCSansMono.ttf
dejavu lgc sans mono bold DejaVu LGC Sans Mono Bold
/usr/share/fonts/dejavu/DejaVuLGCSansMono-Bold.ttf
dejavu lgc sans mono bold oblique DejaVu LGC Sans Mono Bold
Oblique /usr/share/fonts/dejavu/DejaVuLGCSansMono-BoldOblique.ttf
dejavu lgc sans mono oblique DejaVu LGC Sans Mono Oblique
/usr/share/fonts/dejavu/DejaVuLGCSansMono-Oblique.ttf
dejavu lgc sans oblique DejaVu LGC Sans Oblique
/usr/share/fonts/dejavu/DejaVuLGCSans-Oblique.ttf
dejavu lgc serif DejaVu LGC Serif
/usr/share/fonts/dejavu/DejaVuLGCSerif.ttf
dejavu lgc serif bold italic DejaVu LGC Serif Bold Italic
/usr/share/fonts/dejavu/DejaVuLGCSerif-BoldItalic.ttf
dejavu lgc serif condensed DejaVu LGC Serif Condensed
/usr/share/fonts/dejavu/DejaVuLGCSerifCondensed.ttf
dejavu lgc serif condensed bold DejaVu LGC Serif Condensed
Bold /usr/share/fonts/dejavu/DejaVuLGCSerifCondensed-Bold.ttf
dejavu lgc serif condensed bold italic DejaVu LGC Serif Condensed
Bold Italic /usr/share/fonts/dejavu/DejaVuLGCSerifCondensed-BoldItalic.ttf
dejavu lgc serif italic DejaVu LGC Serif Italic
/usr/share/fonts/dejavu/DejaVuLGCSerif-Italic.ttf
dejavu lgc serif italic condensed DejaVu LGC Serif Italic
Condensed
/usr/share/fonts/dejavu/DejaVuLGCSerifCondensed-Italic.ttf
dejavu sans DejaVu Sans
/usr/share/fonts/dejavu/DejaVuSans.ttf
dejavu sans bold DejaVu Sans Bold
/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf
dejavu sans bold oblique DejaVu Sans Bold Oblique
/usr/share/fonts/dejavu/DejaVuSans-BoldOblique.ttf
dejavu sans condensed DejaVu Sans Condensed
/usr/share/fonts/dejavu/DejaVuSansCondensed.ttf
dejavu sans condensed bold DejaVu Sans Condensed Bold
/usr/share/fonts/dejavu/DejaVuSansCondensed-Bold.ttf
dejavu sans condensed bold oblique DejaVu Sans Condensed Bold
Oblique /usr/share/fonts/dejavu/DejaVuSansCondensed-BoldOblique.ttf
dejavu sans condensed oblique DejaVu Sans Condensed Oblique
/usr/share/fonts/dejavu/DejaVuSansCondensed-Oblique.ttf
dejavu sans extralight DejaVu Sans ExtraLight
/usr/share/fonts/dejavu/DejaVuSans-ExtraLight.ttf
dejavu sans mono DejaVu Sans Mono
/usr/share/fonts/dejavu/DejaVuSansMono.ttf
dejavu sans mono bold DejaVu Sans Mono Bold
/usr/share/fonts/dejavu/DejaVuSansMono-Bold.ttf
dejavu sans mono bold oblique DejaVu Sans Mono Bold Oblique
/usr/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf
dejavu sans mono oblique DejaVu Sans Mono Oblique
/usr/share/fonts/dejavu/DejaVuSansMono-Oblique.ttf
dejavu sans oblique DejaVu Sans Oblique
/usr/share/fonts/dejavu/DejaVuSans-Oblique.ttf
dejavu serif DejaVu Serif
/usr/share/fonts/dejavu/DejaVuSerif.ttf
dejavu serif bold DejaVu Serif Bold
/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf
dejavu serif bold italic DejaVu Serif Bold Italic
/usr/share/fonts/dejavu/DejaVuSerif-BoldItalic.ttf
dejavu serif condensed DejaVu Serif Condensed
/usr/share/fonts/dejavu/DejaVuSerifCondensed.ttf
dejavu serif condensed bold DejaVu Serif Condensed Bold
/usr/share/fonts/dejavu/DejaVuSerifCondensed-Bold.ttf
dejavu serif condensed bold italic DejaVu Serif Condensed Bold
Italic /usr/share/fonts/dejavu/DejaVuSerifCondensed-BoldItalic.ttf
dejavu serif italic DejaVu Serif Italic
/usr/share/fonts/dejavu/DejaVuSerif-Italic.ttf
dejavu serif italic condensed DejaVu Serif Italic Condensed
/usr/share/fonts/dejavu/DejaVuSerifCondensed-Italic.ttf
Now the easiest way for you to stop depending on the disk order of
directory entries is to sort the list you get from globbing. This will
work for bold vs bold italic, but it will probably break at some other
name sequence. The only reliable way is avoid clobbering existing
entries in the hash in the same --reload run. But this won't work for
incremental updates, since you can't tell whether you should drop an
old hash entry or not. So if you want to use hashing, you really need
a naming scheme that avoids creating conflicts.
XeTeX solves this problem by using *only* the ID 16 and ID 17 OpenType
values to create a unique name for system fonts. I actually filed a
bug about lack of support for the common ID 1/2 names, but Johnathan
WONTFIXED it because he really wants the font names to be unambiguous,
and using ID 1 and ID 2 values in addition to ID 16/17 doesn't
guarantee that. Your situation is worse, because you want to support
all sort of legacy fonts in that single hashtable.
Anyway, I've wasted enough of my time on this matter. If you sill
don't grok it, forget about it.
BTW, the Lua 5.1 "reference" manual is a joke. How do you printf a
boolean? What's the syntax for their definitely non-standard regexps.
No answers in that "reference".
On Wed, Aug 13, 2008 at 4:46 PM, Wolfgang Schuster
On Wed, Aug 13, 2008 at 1:47 PM, Vasile Gaburici
wrote: On Wed, Aug 13, 2008 at 2:20 PM, Hans Hagen
wrote: Vasile Gaburici wrote:
As for the missing bold, it seems there's a bug in the naming scheme: Ii the bold italic file gets read from the disk before the bold, then you don't get the right entries. It so happens that most of the fonts in that dir had bold before bold italic, e.g.
fontnames | identifying ttf font /usr/share/fonts/vista/Verdanai.ttf fontnames | identifying ttf font /usr/share/fonts/vista/Verdana.ttf fontnames | identifying ttf font /usr/share/fonts/vista/Verdanaz.ttf fontnames | identifying ttf font /usr/share/fonts/vista/Verdanab.ttf
fontnames | identifying otf font /usr/share/fonts/vista/C-series/Calibri Bold Italic.otf fontnames | identifying otf font /usr/share/fonts/vista/C-series/Calibri.otf fontnames | identifying otf font /usr/share/fonts/vista/C-series/Calibri Italic.otf fontnames | identifying otf font /usr/share/fonts/vista/C-series/Calibri Bold.otf
So, I've added some extra code (patch attached) to print the names it adds to the hash. As you can see there is a clash: both bold italic and bold want to "own" bold...
how do you define the font; don't use spaces!
??? If your're complaining that Calibri has spaces in the file name, it's a non-issue here. Verdana has the same "bold not listed" problem, even though there are no spaces in the file name...
Where do you got the vista fonts, i know them only in TrueType format and more verbose names.
Wolfgang