commit 6dd98a8245a8420880314d25829397ec034ea373
Author: Kornel Benko <[email protected]>
Date:   Tue Nov 10 19:42:43 2015 +0100

    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 e423179..20cd0c7 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 01b8b05..1a34435 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 = <FI>) {
+      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 = <FI>) {
+    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);
+  }
+}

Reply via email to