From: Kornel Benko Date: Tue, 10 Nov 2015 18:42:43 +0000 (+0100) Subject: Cmake export tests: Try to use language dependent inputencoding. X-Git-Tag: 2.2.0alpha1~33 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=6dd98a8245a8420880314d25829397ec034ea373;p=features.git Cmake export tests: Try to use language dependent inputencoding. This enables some more pdf5_texF und dvi3_texF tests to succeed. --- diff --git a/development/autotests/export.cmake b/development/autotests/export.cmake index e42317937a..20cd0c70d2 100755 --- a/development/autotests/export.cmake +++ b/development/autotests/export.cmake @@ -28,6 +28,7 @@ # set(Perl_Script "${TOP_SRC_DIR}/development/autotests/useSystemFonts.pl") +set(LanguageFile "${TOP_SRC_DIR}/lib/languages") set(GetTempDir "${TOP_SRC_DIR}/development/autotests/getTempDir.pl") set(_ft ${fonttype}) execute_process(COMMAND ${PERL_EXECUTABLE} "${GetTempDir}" "${WORKDIR}" OUTPUT_VARIABLE TempDir) @@ -38,7 +39,7 @@ if(format MATCHES "dvi3|pdf4|pdf5") set(LYX_SOURCE "${TempDir}/${file}_${format}_${_ft}.lyx") message(STATUS "Using source \"${LYX_ROOT}/${file}.lyx\"") message(STATUS "Using dest \"${LYX_SOURCE}\"") - execute_process(COMMAND ${PERL_EXECUTABLE} "${Perl_Script}" "${LYX_ROOT}/${file}.lyx" "${LYX_SOURCE}" ${format} ${_ft} + execute_process(COMMAND ${PERL_EXECUTABLE} "${Perl_Script}" "${LYX_ROOT}/${file}.lyx" "${LYX_SOURCE}" ${format} ${_ft} ${LanguageFile} RESULT_VARIABLE _err) string(COMPARE EQUAL ${_err} 0 _erg) if(NOT _erg) diff --git a/development/autotests/useSystemFonts.pl b/development/autotests/useSystemFonts.pl index 01b8b05dd1..1a34435354 100644 --- a/development/autotests/useSystemFonts.pl +++ b/development/autotests/useSystemFonts.pl @@ -59,10 +59,13 @@ sub copyJobPending($$); sub addNewJob($$$$$); sub addFileCopyJob($$$$); sub getNewNameOf($$); +sub getlangs($$); +sub getLangEntry(); # convert lyx file to be compilable with xetex -my ($source, $dest, $format, $fontT, $rest) = @ARGV; +my ($source, $dest, $format, $fontT, $languageFile, $rest) = @ARGV; +my %encodings = (); # Encoding with TeX fonts, depending on language tag diestack("Too many arguments") if (defined($rest)); diestack("Sourcefilename not defined") if (! defined($source)); @@ -79,6 +82,8 @@ if ($source =~ /\/([a-z][a-z](_[A-Z][A-Z])?)[\/_]/) { $lang = $1; } +if (defined($languageFile)) { +} my $inputEncoding = undef; if ($fontT eq "systemF") { if ($lang =~ /^(ru|uk|sk)$/) { @@ -121,6 +126,10 @@ if ($fontT eq "systemF") { } else { # use tex font here + my %encoding = (); + if (defined($languageFile)) { + &getlangs($languageFile, \%encoding); + } if ($format =~ /^(pdf4)$/) { # xelatex # set input encoding to 'ascii' always $inputEncoding = { @@ -130,10 +139,12 @@ else { } 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", - #}; + if (defined($encoding{$lang})) { + $inputEncoding = { + "search" => 'auto|default', # this will be substituted from '\inputencoding'-line + "out" => $encoding{$lang}, + }; + } } } @@ -396,3 +407,49 @@ sub getNewNameOf($$) } return($resultf); } + +sub getlangs($$) +{ + my ($languagefile, $rencoding) = @_; + + if (open(FI, $languagefile)) { + while (my $l = ) { + if ($l =~ /^Language/) { + my ($lng, $enc) = &getLangEntry(); + if (defined($lng)) { + my @tag = split('_', $lng); + if ($tag[0] eq lc($tag[1])) { + $lng = $tag[0]; + } + if (! defined($rencoding->{$lng})) { + $rencoding->{$lng} = $enc; + } + } + } + } + close(FI); + } +} + +sub getLangEntry() +{ + my ($lng, $enc) = (undef, undef); + while (my $l = ) { + chomp($l); + if ($l =~ /^\s*Encoding\s+([^ ]+)\s*$/) { + $enc = $1; + } + elsif ($l =~ /^\s*LangCode\s+([^ ]+)\s*$/) { + $lng = $1; + } + elsif ($l =~ /^\s*End\s*$/) { + last; + } + } + if (defined($lng) && defined($enc)) { + return($lng, $enc); + } + else { + return(undef, undef); + } +}