X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=development%2Fautotests%2FuseSystemFonts.pl;h=01b8b05dd109156ae335ca984df081622c4f529e;hb=c4ae71ceb2cfbc3e8fb52cfbc8396a6309af5dbc;hp=990736e046fb5baa9c04a3f35121213e54af2547;hpb=e27ba681ac444315a20e55b83c15367ffaa163a5;p=lyx.git diff --git a/development/autotests/useSystemFonts.pl b/development/autotests/useSystemFonts.pl index 990736e046..01b8b05dd1 100644 --- a/development/autotests/useSystemFonts.pl +++ b/development/autotests/useSystemFonts.pl @@ -47,55 +47,106 @@ use File::Copy "cp"; use File::Temp qw/ :POSIX /; use lyxStatus; +# Prototypes +sub printCopiedDocuments($); +sub interpretedCopy($$$$); +sub copyFoundSubdocuments($); +sub copyJob($$); +sub isrelativeFix($$$); +sub isrelative($$$); +sub createTemporaryFileName($$); +sub copyJobPending($$); +sub addNewJob($$$$$); +sub addFileCopyJob($$$$); +sub getNewNameOf($$); + # convert lyx file to be compilable with xetex -my ($source, $dest, $format, $rest) = @ARGV; +my ($source, $dest, $format, $fontT, $rest) = @ARGV; -&diestack("Too many arguments") if (defined($rest)); -&diestack("Sourcefilename not defined") if (! defined($source)); -&diestack("Destfilename not defined") if (! defined($dest)); -&diestack("Format (e.g. pdf4) not defined") if (! defined($format)); +diestack("Too many arguments") if (defined($rest)); +diestack("Sourcefilename not defined") if (! defined($source)); +diestack("Destfilename not defined") if (! defined($dest)); +diestack("Format (e.g. pdf4) not defined") if (! defined($format)); +diestack("Font type (e.g. texF) not defined") if (! defined($fontT)); $source = File::Spec->rel2abs($source); $dest = File::Spec->rel2abs($dest); my %font = (); - -if ($source =~ /\/(he|el|ru|uk)\//) { - $font{roman} = "FreeSans"; - $font{sans} = "FreeSans"; - $font{typewriter} = "FreeSans"; -} -elsif ($source =~ /\/fa\//) { - $font{roman} = "FreeFarsi"; - $font{sans} = "FreeFarsi"; - $font{typewriter} = "FreeFarsi Monospace"; +my $lang = "main"; +if ($source =~ /\/([a-z][a-z](_[A-Z][A-Z])?)[\/_]/) { + $lang = $1; } -elsif ($source =~ /\/zh_CN\//) { - $font{roman} = "WenQuanYi Micro Hei"; - $font{sans} = "WenQuanYi Micro Hei"; - $font{typewriter} = "WenQuanYi Micro Hei"; + +my $inputEncoding = undef; +if ($fontT eq "systemF") { + if ($lang =~ /^(ru|uk|sk)$/) { + $font{roman} = "DejaVu Serif"; + $font{sans} = "DejaVu Sans"; + $font{typewriter} = "DejaVu Sans Mono"; + } + elsif ($lang =~ /^(he|el|main)$/) { + $font{roman} = "FreeSans"; + $font{sans} = "FreeSans"; + $font{typewriter} = "FreeSans"; + } + elsif ($lang eq "fa") { + $font{roman} = "FreeFarsi"; + $font{sans} = "FreeFarsi"; + $font{typewriter} = "FreeFarsi Monospace"; + } + elsif ($lang eq "zh_CN") { + $font{roman} = "WenQuanYi Micro Hei"; + $font{sans} = "WenQuanYi Micro Hei"; + $font{typewriter} = "WenQuanYi Micro Hei"; + } + elsif ($lang eq "ko" ) { + $font{roman} = "NanumGothic"; # NanumMyeongjo, NanumGothic Eco, NanumGothicCoding + $font{sans} = "NanumGothic"; + $font{typewriter} = "NanumGothic"; + } + elsif ($lang eq "ar" ) { + # available in 'fonts-sil-scheherazade' package + $font{roman} = "Scheherazade"; + $font{sans} = "Scheherazade"; + $font{typewriter} = "Scheherazade"; + } + else { + # default system fonts + $font{roman} = "FreeSans"; + $font{sans} = "FreeSans"; + $font{typewriter} = "FreeSans"; + } } else { - # Nothing to do? + # use tex font here + if ($format =~ /^(pdf4)$/) { # xelatex + # set input encoding to 'ascii' always + $inputEncoding = { + "search" => '.*', # this will be substituted from '\inputencoding'-line + "out" => "ascii", + }; + } + elsif ($format =~ /^(dvi3|pdf5)$/) { # (dvi)?lualatex + # when to set input encoding to 'ascii'? + #$inputEncoding = { + # "search" => 'auto|default', # this will be substituted from '\inputencoding'-line + # "out" => "ascii", + #}; + } } my $sourcedir = dirname($source); my $destdir = dirname($dest); if (! -d $destdir) { - &diestack("could not make dir \"$destdir\"") if (! mkdir $destdir); + diestack("could not make dir \"$destdir\"") if (! mkdir $destdir); } my $destdirOfSubdocuments; { my ($name, $pat, $suffix) = fileparse($source, qr/\.[^.]*/); - my $ext = $format; - if ($source =~ /\/([a-z][a-z](_[A-Z][A-Z])?)\//) { - $ext .= "_$1"; - } - else { - $ext .= "_main"; - } + my $ext = $format . "_$lang"; $destdirOfSubdocuments = "$destdir/tmp_$ext" . "_$name"; # Global var, something TODO here } @@ -109,11 +160,11 @@ my %type2hash = ( "copy_only" => "copyonly", "interpret" => "interpret"); -&addNewJob($source, $dest, "interpret", {}, \%IncludedFiles); +addNewJob($source, $dest, "interpret", {}, \%IncludedFiles); -©FoundSubdocuments(\%IncludedFiles); +copyFoundSubdocuments(\%IncludedFiles); -#&printCopiedDocuments(\%IncludedFiles); +#printCopiedDocuments(\%IncludedFiles); exit(0); ########################################################### @@ -137,14 +188,14 @@ sub interpretedCopy($$$$) my $sourcedir = dirname($source); my $res = 0; - &diestack("could not read \"$source\"") if (!open(FI, $source)); - &diestack("could not write \"$dest\"") if (! open(FO, '>', $dest)); + diestack("could not read \"$source\"") if (!open(FI, $source)); + diestack("could not write \"$dest\"") if (! open(FO, '>', $dest)); - &initLyxStack(\%font); + initLyxStack(\%font, $fontT, $inputEncoding); while (my $l = ) { chomp($l); - my $rStatus = &checkLyxLine($l); + my $rStatus = checkLyxLine($l); if ($rStatus->{found}) { my $rF = $rStatus->{result}; if ($rStatus->{"filetype"} eq "replace_only") { @@ -157,18 +208,18 @@ sub interpretedCopy($$$$) my $separator = $rStatus->{"separator"}; my $foundrelative = 0; for my $f (@{$filelist}) { - my @isrel = &isrelative($f, + my @isrel = isrelative($f, $sourcedir, $rStatus->{ext}); if ($isrel[0]) { $foundrelative = 1; my $ext = $isrel[1]; if ($rStatus->{"filetype"} eq "prefix_only") { - $f = &getNewNameOf("$sourcedir/$f", $rFiles); + $f = getNewNameOf("$sourcedir/$f", $rFiles); } else { my ($newname, $res1); - ($newname, $res1) = &addFileCopyJob("$sourcedir/$f$ext", + ($newname, $res1) = addFileCopyJob("$sourcedir/$f$ext", "$destdirOfSubdocuments", $rStatus->{"filetype"}, $rFiles); @@ -192,7 +243,7 @@ sub interpretedCopy($$$$) close(FI); close(FO); - &closeLyxStack(); + closeLyxStack(); return($res); } @@ -205,12 +256,12 @@ sub copyFoundSubdocuments($) my %copylist = (); for my $filename (keys %{$rFiles}) { - next if (! ©JobPending($filename, $rFiles)); + next if (! copyJobPending($filename, $rFiles)); $copylist{$filename} = 1; } for my $f (keys %copylist) { # Second loop needed, because here $rFiles may change - my ($res1, @destfiles) = ©Job($f, $rFiles); + my ($res1, @destfiles) = copyJob($f, $rFiles); $res += $res1; for my $destfile (@destfiles) { print "res1 = $res1 for \"$f\" to be copied to $destfile\n"; @@ -233,10 +284,10 @@ sub copyJob($$) my $dest = $rFiles->{$source}->{$k}; push(@dest, $dest); if ($k eq "copyonly") { - &diestack("Could not copy \"$source\" to \"$dest\"") if (! cp($source, $dest)); + diestack("Could not copy \"$source\" to \"$dest\"") if (! cp($source, $dest)); } else { - &interpretedCopy($source, $dest, $destdirOfSubdocuments, $rFiles); + interpretedCopy($source, $dest, $destdirOfSubdocuments, $rFiles); } $res += 1; } @@ -260,7 +311,7 @@ sub isrelative($$$) if (ref($ext) eq "ARRAY") { for my $ext2 (@{$ext}) { - my @res = &isrelativeFix($f, $sourcedir, $ext2); + my @res = isrelativeFix($f, $sourcedir, $ext2); if ($res[0]) { return(@res); } @@ -268,7 +319,7 @@ sub isrelative($$$) return(0,0); } else { - return(&isrelativeFix($f, $sourcedir, $ext)); + return(isrelativeFix($f, $sourcedir, $ext)); } } @@ -301,7 +352,7 @@ sub copyJobPending($$) return 0; } -sub addNewJob($$$) +sub addNewJob($$$$$) { my ($source, $newname, $hashname, $rJob, $rFiles) = @_; @@ -318,11 +369,11 @@ sub addFileCopyJob($$$$) my $hashname = $type2hash{$filetype}; if (! defined($hashname)) { - &diestack("unknown filetype \"$filetype\""); + diestack("unknown filetype \"$filetype\""); } if (!defined($rJob->{$hashname})) { - &addNewJob($source, - &createTemporaryFileName($source, $destdirOfSubdocuments), + addNewJob($source, + createTemporaryFileName($source, $destdirOfSubdocuments), "$hashname", $rJob, $rFiles); $res = 1; }