diff options
-rwxr-xr-x | perl-install/standalone/drakfont | 91 |
1 files changed, 37 insertions, 54 deletions
diff --git a/perl-install/standalone/drakfont b/perl-install/standalone/drakfont index bf0fa6c1f..8b73687b8 100755 --- a/perl-install/standalone/drakfont +++ b/perl-install/standalone/drakfont @@ -2,7 +2,7 @@ # # Copyright (C) 2001-2002 by MandrakeSoft # DUPONT Sebastien -# dchaumette@mandrakesoft.com +# Damien Chaumette <dchaumette@mandrakesoft.com> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -192,15 +192,8 @@ sub list_fontpath() { } sub chk_empty_xfs_path() { - my @temp3; foreach my $tmp_path (@installed_fonts_path) { - @temp3 = (); - foreach my $temp2 (all($tmp_path)) { - if (!($temp2 =~ /^fonts/ || $temp2 =~ /^type/)) { - push @temp3, $temp2; - } - } - if (!(@temp3)) { + if (!(any { if_(!(/^fonts/ || /^type/), $_) } all($tmp_path))) { system("chkfontpath -r $tmp_path ") or print "PERL::system command failed during chkfontpath\n"; } @@ -230,14 +223,12 @@ sub search_windows_font() { my @list_fonts_winnt = all("$win_dir/winnt/fonts"); my $nb_dir = @list_fonts_win + @list_fonts_winnt; foreach ([ \@list_fonts_win, "windows" ], - [ \@list_fonts_winnt, "winnt" ]) - { + [ \@list_fonts_winnt, "winnt" ]) { foreach my $i (@{ $_->[0] }) { if ($interactive) { if ($nb_dir) { progress($pbar, 0.25 / $nb_dir, N("parse all fonts")); - } - else { + } else { display_error(N("no fonts found")); return 0; } @@ -297,18 +288,11 @@ sub search_dir_font_uninstall { my ($fn) = @_; my @font_list_tmp; if (-d $fn) { - foreach my $i (all($fn)) { - push @font_list_tmp, $i if is_a_font($i); - } - } - else { + @font_list_tmp = map { if_(is_a_font($_), $_) } all($fn); + } else { push @font_list_tmp, $fn if is_a_font($fn); } - foreach my $i (@installed_fonts_full_path) { - foreach my $j (@font_list_tmp) { - push @font_list, $i if $i =~ /$j/; - } - } + @font_list = uniq(@font_list, @installed_fonts_full_path); print "Fonts to uninstal: " . $_ . "\n" foreach @font_list; } @@ -332,8 +316,24 @@ sub dir_created() { -e $drakfont_dir . "/tmp/tmp" or mkdir_p($drakfont_dir . "/tmp/tmp"); } + +sub convert_fonts { + my ($fonts, $converter, $font_type, $o_generate_pfb) = @_; + $o_generate_pfb = $o_generate_pfb ? "-b" : ""; + foreach my $fontname (@$fonts) { + system("cd $drakfont_dir/tmp/tmp && $converter $o_generate_pfb $fontname"); + $interactive and progress($pbar2, 0.50 / @$fontname, N("%s fonts conversion", $font_type)); + } +} + +sub convert_ttf_fonts { + my ($fonts, $o_generate_pfb) = @_; + convert_fonts($fonts, $o_generate_pfb, "TTF", $ttf2pt1); +} + + + sub put_font_dir() { - my @tmpl; -e "/usr/share/ghostscript" or do { $gs = 0; print "ghostscript is not installed on your system...\n" }; if (@font_list) { dir_created(); @@ -344,12 +344,12 @@ sub put_font_dir() { $interactive and progress($pbar1, 0.01, N("done")); $interactive and progress($pbar2, 0.10, N("True Type fonts installation")); glob("$drakfont_dir/tmp/tmp/*.TTF") - and system('cd ' . $drakfont_dir . '/tmp/tmp ; for foo in *.TTF; do mv $foo `basename $foo .TTF`.ttf; done'); + and system('cd ' . $drakfont_dir . '/tmp/tmp ; for foo in *.TTF; do mv $foo `basename $foo .TTF`.ttf; done'); system('cd ' . $drakfont_dir . '/tmp/tmp && cp *.ttf ../../ttf'); $interactive and progress($pbar2, 0.20, N("please wait during ttmkfdir...")); my $ttfdir = $drakfont_dir . "/ttf"; - # mkttfdir only knows about iso-8859-1, using ttmkfdir -u instead -- pablo + # mkttfdir only knows about iso-8859-1, using ttmkfdir -u instead -- pablo #`$mkttfdir $ttfdir`; system("cd $ttfdir && $fccache && $ttmkfdir -u > fonts.dir"); $interactive and progress($pbar2, 0.10, N("True Type install done")); @@ -357,15 +357,12 @@ sub put_font_dir() { if ($so && $gs) { my @glob_drak = glob("$drakfont_dir/tmp/tmp/*.ttf"); - foreach my $fontname (@glob_drak) { - system("cd $drakfont_dir/tmp/tmp && $ttf2pt1 -b $fontname"); - $interactive and progress($pbar2, 0.50 / @glob_drak, N("Fonts conversion")); - } + convert_ttf_fonts(\@glob_drak, 1); system("cd $drakfont_dir/tmp/tmp && mv *.gsf *.pfb *.pfm *.afm ../Type1"); system("cd $drakfont_dir/tmp/Type1 && $type1inst"); $interactive and progress($pbar2, 0.10, N("type1inst building")); -e "$drakfont_dir/tmp/Type1/Fontmap" - and system("cd $drakfont_dir/tmp/Type1 && cat Fontmap >> `rpm -ql ghostscript | grep Fontmap.GS` "); + and system("cd $drakfont_dir/tmp/Type1 && cat Fontmap >> `rpm -ql ghostscript | grep Fontmap.GS` "); system("cd $drakfont_dir/tmp/Type1 && mv *.pfm *.gsf *.afm *.pfb ../../Type1 "); my $type1dir = $drakfont_dir . "/Type1"; system("cd $type1dir && $fccache && $type1inst"); @@ -374,10 +371,7 @@ sub put_font_dir() { } if (!$so && $gs) { - foreach my $fontname (@tmpl = glob("$/drakfont_dir/tmp/tmp/*.ttf")) { - system("cd $/drakfont_dir/tmp/tmp && $ttf2pt1 -b $fontname"); - $interactive and progress($pbar2, 0.50 / @tmpl, N("Fonts conversion")); - } + convert_ttf_fonts([ glob("$/drakfont_dir/tmp/tmp/*.ttf") ], 1); system("cd $drakfont_dir/tmp/tmp && mv *.gsf *.pfb *.pfm ../Type1"); system("cd $drakfont_dir/tmp/Type1 && $type1inst"); $interactive and progress($pbar2, 0.1, N("type1inst building")); @@ -390,16 +384,8 @@ sub put_font_dir() { } if ($so && !$gs) { - foreach my $fontname (@tmpl = glob("$drakfont_dir/tmp/tmp/*.ttf")) - { - system("cd $drakfont_dir/tmp/tmp && $ttf2pt1 $fontname"); - $interactive and progress($pbar2, 0.25 / @tmpl, N("ttf fonts conversion")); - } - foreach my $fontname (@tmpl = glob("$drakfont_dir/tmp/tmp/*.pfm")) - { - system("cd $drakfont_dir/tmp/tmp && $pfm2afm $fontname"); - $interactive and progress($pbar2, 0.25 / @tmpl, N("pfm fonts conversion")); - } + convert_ttf_fonts([ glob("$drakfont_dir/tmp/tmp/*.ttf") ]); + convert_fonts([ glob("$drakfont_dir/tmp/tmp/*.pfm") ], $pfm2afm, "PFM"); system("cd $drakfont_dir/tmp/tmp && mv *.afm ../Type1"); system("cd $drakfont_dir/tmp/Type1 && mv *.afm ../../Type1 "); my $type1dir = $drakfont_dir . "/Type1"; @@ -448,17 +434,15 @@ sub remove_fonts() { local $_ = $i; if (/.pfb$/ || /.gsf$/ || /.pfm$/ || /.pfa$/) { system("mv $_ $drakfont_dir/remove "); - } - else { + } else { if (/.ttf$/) { rm_rf($_); # rebuild of the fonts.dir and fc-cache files system("cd `dirname $_` && $fccache && $ttmkfdir -u > fonts.dir"); - } - else { rm_rf($i) } + } else { rm_rf($i) } } - $i =~ s/\/\w*\.\w*//gi; - grep { $i } @list_dir or push @list_dir, $i; + $i =~ s!/\w*\.\w*!!gi; + grep { $i } @list_dir or push @list_dir, $i; $interactive and progress($pbar1, 1 / @font_list, N("Suppress Fonts Files")); } $interactive and progress($pbar1, 0.01, N("done")); @@ -466,8 +450,7 @@ sub remove_fonts() { foreach my $i (@list_dir) { if (listlength all($i) < 3) { system("chkfontpath -r $i") or print "PERL::system command failed during chkfontpath\n"; - } - else { + } else { system("cd $i && type1inst") or print "PERL::system command failed during cd or type1inst\n"; } $interactive and progress($pbar2, 1 / @list_dir, N("Suppress Fonts Files")); @@ -783,7 +766,7 @@ sub list_to_remove() { #my @files_path = grep(!/fonts/, all($current_path)); garbage ? gtkflush(); my ($tree, @tux) = $left_list->get_selection->get_selected_rows(); #- get tree & paths - push @uninstall, $tree->get($tree->get_iter($_), 0) foreach @tux; + push @uninstall, map { $tree->get($tree->get_iter($_), 0) } @tux; #push @uninstall, $current_path . "/" . $files_path[$_] foreach @number_to_remove; garbage ? $$central_widget->destroy(); show_list_to_remove(); |