Cmake export tests: Try to use language dependent inputencoding.

This enables some more pdf5_texF und dvi3_texF tests to succeed.
This commit is contained in:
Kornel Benko 2015-11-10 19:42:43 +01:00
parent c4ae71ceb2
commit 6dd98a8245
2 changed files with 64 additions and 6 deletions

View File

@ -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)

View File

@ -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);
}
}