Well, I figured it out, it appears to be a bug issue with freetype. If you have a font with adobe-fontspecific encoding.... Then, when mkfontscale is called, it generates both a line for font 'foo.. (1) foo-iso10646-1 foo-adobe-fontspecific In that order, then mkfontdir simply copies that into fonts.dir, and it works in staroffice, etc. Buuut, SuSEconfig -module fonts calls fonts-config, a perl script, that calls mkfontscale, reads in the fonts.scale file, parses it, SORTS it, and writes it back out as... (2) foo-adobe-fontspecific foo-iso10646-1 And when mkfontsdir is called, the lines are in the same order in fonts.dir And nothing works in staroffice. KDE seems to be okay though, as it uses it's own built-in Freetype2 library. So apparently, the freetype X font server is choking If I go into fonts.dir, and change the lines for font 'foo' so they look like (1), and do a "xset fp rehash", then the fonts work again! My belief is that 1) There is no "adobe-fontspecific" encoding for linux 2) X Freetype server thus gives up when it encounters that line first, rather than look for another encoding. Since scanning stops at that line, it never sees the "10646" encoding for the same font 3) X does know how to handle 10646. So, how do I ensure that for a given font, iso10646/iso8859 always come before adobe-fontspecific? Well the mkfont(scale/dir) already do that properly. But whenever I install fonts, the SuSEconfig file would get called, and knacker it all up. So I edited fonts-config, and changed... ###################################################################### # write final result to fonts.scale: $file = "$dir/fonts.scale"; open (FONTS_SCALE, ">$file") || die "can't open file $file: $!"; if ($VERBOSITY >= $VERBOSITY_DEBUG) { print "writing $dir/$file ...\n"; } printf FONTS_SCALE "%d\n", scalar(keys %fonts_scale_entries); for my $xlfd (sort (keys %fonts_scale_entries)) { print FONTS_SCALE "$fonts_scale_entries{$xlfd} $xlfd\n"; } close (FONTS_SCALE); } To ###################################################################### # write final result to fonts.scale: $file = "$dir/fonts.scale"; open (FONTS_SCALE, ">$file") || die "can't open file $file: $!"; if ($VERBOSITY >= $VERBOSITY_DEBUG) { print "writing $dir/$file ...\n"; } printf FONTS_SCALE "%d\n", scalar(keys %fonts_scale_entries); for my $xlfd (sort {$b cmp $a} (keys %fonts_scale_entries)) { print FONTS_SCALE "$fonts_scale_entries{$xlfd} $xlfd\n"; } close (FONTS_SCALE); } I reversed the order of the sort, so that iso encodings will always come before adobe encodings, problem solved! So what's the easiest way to tell SuSE this? The Meek shall inherit the Earth, for the Brave are among the Stars!
On 09/16/2003 08:44 PM, Daniel Joyce wrote:
So what's the easiest way to tell SuSE this?
Feedback to http://www.suse.de/feedback . -- Joe Morris New Tribes Mission Email Address: Joe_Morris@ntm.org Web Address: http://www.mydestiny.net/~joe_morris Registered Linux user 231871 God said, I AM that I AM. I say, by the grace of God, I am what I am.
participants (2)
-
Daniel Joyce
-
Joe Morris (NTM)