texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: Copy image files in subdirectories directly in EP


From: Patrice Dumas
Subject: branch master updated: Copy image files in subdirectories directly in EPUB images
Date: Wed, 03 Aug 2022 16:37:31 -0400

This is an automated email from the git hooks/post-receive script.

pertusus pushed a commit to branch master
in repository texinfo.

The following commit(s) were added to refs/heads/master by this push:
     new 1c43140fcc Copy image files in subdirectories directly in EPUB images
1c43140fcc is described below

commit 1c43140fcc6dd242cea96885c0c029fb7e31a64e
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Wed Aug 3 22:37:19 2022 +0200

    Copy image files in subdirectories directly in EPUB images
    
    * tp/Texinfo/Convert/NodeNameNormalization.pm
    (transliterate_protect_file_name, _unicode_to_file_name):
    new function transliterate_protect_file_name() that can be
    used to transliterates non ascii letters and protect characters that
    should not appear on file names.  New function _unicode_to_file_name()
    for common code of transliterate_protect_file_name and
    _unicode_to_protected.
    
    * tp/ext/epub3.pm (epub_convert_image_command): normalize image file
    name using transliterate_protect_file_name(), prepend a counter to
    be sure that the file names are unique and copy directly in
    EPUB/images/ even if there is a subdirectory in @image.  Do the
    formatting directly in epub_convert_image_command() to be able to
    set the url to the copied image file name.
    Report by Kurt Hornik and idea partly by Gavin.
---
 ChangeLog                                          |  21 ++++
 tp/Texinfo/Convert/NodeNameNormalization.pm        |  71 ++++++++++--
 tp/Texinfo/Convert/Utils.pm                        |   2 +-
 tp/Texinfo/ParserNonXS.pm                          |   2 +-
 tp/ext/epub3.pm                                    | 128 +++++++++++++++------
 .../EPUB/images/1-an_image.png"                    | Bin
 .../EPUB/os\303\251_utf8.opf"                      |   2 +-
 .../EPUB/xhtml/os\303\251_utf8.xhtml"              |   4 +-
 .../formatting_epub_package/EPUB/formatting.opf    |  37 +++++-
 .../EPUB/images/{f--ile.e--xt => 10-f--ile.e--xt}  |   0
 .../EPUB/images/{f--ile.png => 14-f--ile.png}      |   0
 .../EPUB/images/15-f--ile.png}                     |   0
 .../EPUB/images/16-f--ile.e--xt}                   |   0
 .../EPUB/images/{f--ile.e--xt => 17-f--ile.png}    |   0
 .../EPUB/images/{f--ile.e--xt => 18-f--ile.png}    |   0
 .../EPUB/images/{f--ile.e--xt => 19-f--ile.e--xt}  |   0
 .../EPUB/images/{f--ile.e--xt => 21-f--ile.e--xt}  |   0
 .../EPUB/images/{f--ile.e--xt => 25-f--ile.png}    |   0
 .../EPUB/images/{f--ile.e--xt => 26-f--ile.png}    |   0
 .../EPUB/images/{f--ile.e--xt => 27-f--ile.e--xt}  |   0
 .../EPUB/images/{f--ile.e--xt => 28-f--ile.png}    |   0
 .../EPUB/images/{f--ile.e--xt => 29-f--ile.png}    |   0
 .../EPUB/images/{f--ile.e--xt => 3-f--ile.png}     |   0
 .../EPUB/images/{f--ile.e--xt => 30-f--ile.e--xt}  |   0
 .../EPUB/images/{f--ile.e--xt => 32-f--ile.e--xt}  |   0
 .../EPUB/images/{f--ile.e--xt => 36-f--ile.png}    |   0
 .../EPUB/images/{f--ile.e--xt => 37-f--ile.png}    |   0
 .../EPUB/images/{f--ile.e--xt => 38-f--ile.e--xt}  |   0
 .../EPUB/images/{f--ile.e--xt => 39-f--ile.png}    |   0
 .../EPUB/images/{f--ile.e--xt => 4-f--ile.png}     |   0
 .../EPUB/images/{f--ile.e--xt => 40-f--ile.png}    |   0
 .../EPUB/images/{f--ile.e--xt => 41-f--ile.e--xt}  |   0
 .../EPUB/images/{f--ile.e--xt => 43-f--ile.e--xt}  |   0
 .../EPUB/images/{f--ile.e--xt => 47-f--ile.png}    |   0
 .../EPUB/images/{f--ile.e--xt => 48-f--ile.png}    |   0
 .../EPUB/images/{f--ile.e--xt => 49-f--ile.e--xt}  |   0
 .../EPUB/images/{f--ile.e--xt => 5-f--ile.e--xt}   |   0
 .../EPUB/images/{f--ile.e--xt => 50-f--ile.png}    |   0
 .../EPUB/images/{f--ile.e--xt => 51-f--ile.png}    |   0
 .../EPUB/images/{f--ile.e--xt => 52-f--ile.e--xt}  |   0
 .../EPUB/images/{f--ile.e--xt => 54-f--ile.e--xt}  |   0
 .../EPUB/images/{f--ile.e--xt => 6-f--ile.png}     |   0
 .../EPUB/images/{f--ile.e--xt => 7-f--ile.png}     |   0
 .../EPUB/images/{f--ile.e--xt => 8-f--ile.e--xt}   |   0
 .../EPUB/xhtml/formatting.xhtml                    | 110 +++++++++---------
 .../formatting_epub_package/EPUB/formatting.opf    |  37 +++++-
 .../EPUB/images/10-f--ile.e--xt}                   |   0
 .../EPUB/images/14-f--ile.png}                     |   0
 .../EPUB/images/15-f--ile.png}                     |   0
 .../EPUB/images/16-f--ile.e--xt}                   |   0
 .../EPUB/images/17-f--ile.png}                     |   0
 .../EPUB/images/18-f--ile.png}                     |   0
 .../EPUB/images/19-f--ile.e--xt}                   |   0
 .../EPUB/images/21-f--ile.e--xt}                   |   0
 .../EPUB/images/25-f--ile.png}                     |   0
 .../EPUB/images/26-f--ile.png}                     |   0
 .../EPUB/images/27-f--ile.e--xt}                   |   0
 .../EPUB/images/28-f--ile.png}                     |   0
 .../EPUB/images/29-f--ile.png}                     |   0
 .../EPUB/images/3-f--ile.png}                      |   0
 .../EPUB/images/30-f--ile.e--xt}                   |   0
 .../EPUB/images/32-f--ile.e--xt}                   |   0
 .../EPUB/images/36-f--ile.png}                     |   0
 .../EPUB/images/37-f--ile.png}                     |   0
 .../EPUB/images/38-f--ile.e--xt}                   |   0
 .../EPUB/images/39-f--ile.png}                     |   0
 .../EPUB/images/4-f--ile.png}                      |   0
 .../EPUB/images/40-f--ile.png}                     |   0
 .../EPUB/images/41-f--ile.e--xt}                   |   0
 .../EPUB/images/43-f--ile.e--xt}                   |   0
 .../EPUB/images/47-f--ile.png}                     |   0
 .../EPUB/images/48-f--ile.png}                     |   0
 .../EPUB/images/49-f--ile.e--xt}                   |   0
 .../EPUB/images/5-f--ile.e--xt}                    |   0
 .../EPUB/images/50-f--ile.png}                     |   0
 .../EPUB/images/51-f--ile.png}                     |   0
 .../EPUB/images/52-f--ile.e--xt}                   |   0
 .../EPUB/images/54-f--ile.e--xt}                   |   0
 .../EPUB/images/6-f--ile.png}                      |   0
 .../EPUB/images/7-f--ile.png}                      |   0
 .../EPUB/images/8-f--ile.e--xt}                    |   0
 .../EPUB/xhtml/chapter.xhtml                       |  66 +++++------
 .../EPUB/xhtml/formatting.xhtml                    |  44 +++----
 83 files changed, 357 insertions(+), 167 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 136facc428..d3b7475687 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2022-08-03  Patrice Dumas  <pertusus@free.fr>
+
+       Copy image files in subdirectories directly in EPUB images
+
+       * tp/Texinfo/Convert/NodeNameNormalization.pm
+       (transliterate_protect_file_name, _unicode_to_file_name):
+       new function transliterate_protect_file_name() that can be
+       used to transliterates non ascii letters and protect characters that
+       should not appear on file names.  New function _unicode_to_file_name()
+       for common code of transliterate_protect_file_name and
+       _unicode_to_protected.
+
+       * tp/ext/epub3.pm (epub_convert_image_command): normalize image file
+       name using transliterate_protect_file_name(), prepend a counter to
+       be sure that the file names are unique and copy directly in
+       EPUB/images/ even if there is a subdirectory in @image.  Do the
+       formatting directly in epub_convert_image_command() to be able to
+       set the url to the copied image file name.
+       Report by Kurt Hornik and idea partly by Gavin.
+
+
 2022-08-03  Patrice Dumas  <pertusus@free.fr>
 
        * tp/ext/epub3.pm: remove spurious space. Indirect report
diff --git a/tp/Texinfo/Convert/NodeNameNormalization.pm 
b/tp/Texinfo/Convert/NodeNameNormalization.pm
index e641700988..e45252d3de 100644
--- a/tp/Texinfo/Convert/NodeNameNormalization.pm
+++ b/tp/Texinfo/Convert/NodeNameNormalization.pm
@@ -99,12 +99,36 @@ sub transliterate_texinfo($;$)
   return $result;
 }
 
+sub transliterate_protect_file_name($;$)
+{
+  my $input_text = shift;
+  my $no_unidecode = shift;
+  my $result = Unicode::Normalize::NFC($input_text);
+  $result = _unicode_to_file_name(
+                _unicode_to_transliterate($result, $no_unidecode));
+  return $result;
+}
+
 sub convert($)
 {
   my $root = shift;
   my $result = _convert($root);
 }
 
+sub _protect_unicode_char($)
+{
+  my $char = shift;
+  if (exists($Texinfo::Convert::Unicode::unicode_simple_character_map{$char})) 
{
+    return '_' . 
lc($Texinfo::Convert::Unicode::unicode_simple_character_map{$char});
+  } else {
+    if (ord($char) <= hex(0xFFFF)) {
+      return '_' . lc(sprintf("%04x",ord($char)));
+    } else {
+      return '__' . lc(sprintf("%06x",ord($char)));
+    }
+  }
+}
+
 sub _unicode_to_protected($)
 {
   my $text = shift;
@@ -115,16 +139,7 @@ sub _unicode_to_protected($)
     } elsif ($text =~ s/^ //o) {
       $result .= '-';
     } elsif ($text =~ s/^(.)//o) {
-      my $char = $1;
-      if 
(exists($Texinfo::Convert::Unicode::unicode_simple_character_map{$char})) {
-        $result .= '_' . 
lc($Texinfo::Convert::Unicode::unicode_simple_character_map{$char});
-      } else {
-        if (ord($char) <= hex(0xFFFF)) {
-          $result .= '_' . lc(sprintf("%04x",ord($char)));
-        } else {
-          $result .= '__' . lc(sprintf("%06x",ord($char)));
-        }
-      }
+      $result .= _protect_unicode_char($1);
     } else {
       warn "Bug: unknown character _unicode_to_protected (likely in infinite 
loop)\n";
       print STDERR "Text: !!$text!!\n";
@@ -134,6 +149,26 @@ sub _unicode_to_protected($)
   return $result;
 }
 
+sub _unicode_to_file_name($)
+{
+  my $text = shift;
+  my $result = '';
+  while ($text ne '') {
+    if ($text =~ s/^([A-Za-z0-9_\.\-]+)//o) {
+      $result .= $1;
+    } elsif ($text =~ s/^ //o) {
+      $result .= '-';
+    } elsif ($text =~ s/^(.)//o) {
+      $result .= _protect_unicode_char($1);
+    } else {
+      warn "Bug: unknown character _unicode_to_file_name (likely in infinite 
loop)\n";
+      print STDERR "Text: !!$text!!\n";
+      sleep 1;
+    }
+  }
+  return $result;
+}
+
 sub _unicode_to_transliterate($;$)
 {
   my $text = shift;
@@ -378,11 +413,11 @@ Texinfo to other formats.  There is no promise of API 
stability.
 
 =head1 DESCRIPTION
 
-Texinfo::Convert::NodeNameNormalization allows to normalize node names,
+C<Texinfo::Convert::NodeNameNormalization> allows to normalize node names,
 with C<normalize_node> following the specification described in the 
 Texinfo manual for HTML Xref.  This is usefull each time one want a 
 unique identifier for Texinfo content that is only composed of letter,
-digits, C<-> and C<_>.  In C<Texinfo::Parser> C<normalize_node> is used 
+digits, C<-> and C<_>.  In L<Texinfo::Parser>, C<normalize_node> is used 
 for node, floats and anchor names normalization, but also float 
 types C<@acronym> and C<@abbr> first argument.
 
@@ -390,6 +425,9 @@ It is also possible to transliterate non ascii letters, 
instead of mangling
 them, with C<transliterate_texinfo>, losing the uniqueness feature of 
 normalized node names.
 
+Another method, C<transliterate_protect_file_name> transliterates non ascii
+letters and protect characters that should not appear on file names.
+
 =head1 METHODS
 
 =over
@@ -412,6 +450,15 @@ transliterated as ascii, but otherwise similar with 
C<normalize_node>
 output.  If the optional I<$no_unidecode> argument is set, C<Text::Unidecode>
 is not used for characters whose transliteration is not built-in.
 
+=item $file_name = transliterate_protect_file_name($string, $no_unidecode)
+X<C<transliterate_protect_file_name>>
+
+The string I<$string> is returned with non ascii letters transliterated as
+ascii, and ascii characters non safe in file names are protected as in
+node normalization.  If the optional I<$no_unidecode> argument is set,
+C<Text::Unidecode> is not used for characters whose transliteration is not
+built-in.
+
 =back
 
 =head1 AUTHOR
diff --git a/tp/Texinfo/Convert/Utils.pm b/tp/Texinfo/Convert/Utils.pm
index 0441320fe6..ac034dca9d 100644
--- a/tp/Texinfo/Convert/Utils.pm
+++ b/tp/Texinfo/Convert/Utils.pm
@@ -378,7 +378,7 @@ Texinfo to other formats.  There is no promise of API 
stability.
 
 miscellaneous methods that may be useful for backends converting texinfo
 trees.  This module contains the methods that can be used in converters
-that do not inherit Texinfo::Convert::Converter.
+that do not inherit L<Texinfo::Convert::Converter>.
 
 =head1 METHODS
 
diff --git a/tp/Texinfo/ParserNonXS.pm b/tp/Texinfo/ParserNonXS.pm
index b5ec4b1206..db26f21fb1 100644
--- a/tp/Texinfo/ParserNonXS.pm
+++ b/tp/Texinfo/ParserNonXS.pm
@@ -6186,7 +6186,7 @@ Texinfo to other formats.  There is no promise of API 
stability.
 
 =head1 DESCRIPTION
 
-Texinfo::Parser will parse Texinfo text into a Perl tree.  In one pass
+C<Texinfo::Parser> will parse Texinfo text into a Perl tree.  In one pass
 it expands user-defined @-commands, conditionals (C<@ifset>, C<@ifinfo>...)
 and C<@value> and constructs the tree.  Some extra information is gathered
 while doing the tree: for example, the block command associated with C<@end>,
diff --git a/tp/ext/epub3.pm b/tp/ext/epub3.pm
index 1b4ca6f390..0278a9030f 100644
--- a/tp/ext/epub3.pm
+++ b/tp/ext/epub3.pm
@@ -162,10 +162,11 @@ my $epub_document_dir_name = 'EPUB';
 
 my %epub_images;
 
+# the image number, to make sure that there is no name clash when
+# putting all the images in the same directory.
+my $epub_file_nr;
+
 # collect and copy images
-# FIXME if the file is given by a path, the path will be included in the
-# destination too, but the directory path will not be created, so it
-# will fail.
 sub epub_convert_image_command($$$$)
 {
   my $self = shift;
@@ -173,51 +174,105 @@ sub epub_convert_image_command($$$$)
   my $command = shift;
   my $args = shift;
 
-  my $result = &{$self->default_command_conversion($cmdname)}($self,
-                                                 $cmdname, $command, $args);
+  if (defined($args->[0]->{'monospacetext'})
+      and $args->[0]->{'monospacetext'} ne '') {
+    my $basefile = $args->[0]->{'monospacetext'};
+    return $basefile if ($self->in_string());
 
-  my ($image_file, $image_basefile, $image_extension, $image_path,
-      $image_path_encoding)
-        = $self->html_image_file_location_name($cmdname, $command, $args);
-  if (defined($image_file)) {
+    my ($image_file, $image_basefile, $image_extension, $image_path,
+        $image_path_encoding)
+      = $self->html_image_file_location_name($cmdname, $command, $args);
     if (not defined($image_path)) {
-      $self->document_error($self,
-            sprintf(__("\@image file `%s' can not be copied"),
-                   $image_basefile));
-    } else {
-      my $images_destination_dir
+      # FIXME using an internal function.  Also not clear if it is correct to
+      # use it, as it is not used for other messages
+      $self->_noticed_line_warn(sprintf(
+              __("\@image file `%s' (for HTML) not found, using `%s'"),
+                 $image_basefile, $image_file), $command->{'source_info'});
+    }
+
+    my ($volume, $directories, $image_basefile_name)
+      = File::Spec->splitpath($image_basefile);
+    my $protected_image_basefile_name
+      = 
Texinfo::Convert::NodeNameNormalization::transliterate_protect_file_name(
+                                                         $image_basefile_name);
+    my $protected_image_extension
+      = 
Texinfo::Convert::NodeNameNormalization::transliterate_protect_file_name(
+                                                         $image_extension);
+    # -5 for the extension and -10 for $epub_file_nr
+    my $cropped_image_basefile_name
+     = substr($protected_image_basefile_name, 0,
+              $self->get_conf('BASEFILENAME_LENGTH') - 15);
+    my $destination_basefile_name = 
$epub_file_nr.'-'.$cropped_image_basefile_name
+                                    . $protected_image_extension;
+    $epub_file_nr += 1;
+    if (defined($image_file)) {
+      if (not defined($image_path)) {
+        $self->document_error($self,
+              sprintf(__("\@image file `%s' can not be copied"),
+                     $image_basefile));
+      } else {
+        my $images_destination_dir
                = File::Spec->catdir($epub_destination_directory,
                                     $epub_document_dir_name, 
$epub_images_dir_name);
-      my ($encoded_images_destination_dir, $images_destination_dir_encoding)
-        = $self->encoded_output_file_name($images_destination_dir);
-      if (! -d $encoded_images_destination_dir) {
-        if (!mkdir($encoded_images_destination_dir, oct(755))) {
-          $self->document_error($self, sprintf(__(
+        my ($encoded_images_destination_dir, $images_destination_dir_encoding)
+          = $self->encoded_output_file_name($images_destination_dir);
+        my $error_creating_dir;
+        if (! -d $encoded_images_destination_dir) {
+          if (!mkdir($encoded_images_destination_dir, oct(755))) {
+            $self->document_error($self, sprintf(__(
                              "could not create images directory `%s': %s"),
                                          $images_destination_dir, $!));
-          return $result;
-        }
-      }
-      my $image_destination_path_name
-         = File::Spec->catfile($images_destination_dir, $image_file);
-      my ($encoded_image_dest_path_name, $image_dest_path_encoding)
-        = $self->encoded_output_file_name($image_destination_path_name);
-      my $copy_succeeded = copy($image_path, $encoded_image_dest_path_name);
-      if (not $copy_succeeded) {
-        my $image_path_text;
-        if (defined($image_path_encoding)) {
-          $image_path_text = decode($image_path_encoding, $image_path);
-        } else {
-          $image_path_text = $image_path;
+            $error_creating_dir = 1;
+          }
         }
-        $self->document_error($self, sprintf(__(
+        if (not $error_creating_dir) {
+          my $image_destination_path_name
+             = File::Spec->catfile($images_destination_dir,
+                                   $destination_basefile_name);
+          my ($encoded_image_dest_path_name, $image_dest_path_encoding)
+            = $self->encoded_output_file_name($image_destination_path_name);
+          my $copy_succeeded = copy($image_path, 
$encoded_image_dest_path_name);
+          if (not $copy_succeeded) {
+            my $image_path_text;
+            if (defined($image_path_encoding)) {
+              $image_path_text = decode($image_path_encoding, $image_path);
+            } else {
+              $image_path_text = $image_path;
+            }
+            $self->document_error($self, sprintf(__(
                      "could not copy `%s' to `%s': %s"),
                         $image_path_text, $image_destination_path_name, $!));
+          }
+          $epub_images{$destination_basefile_name} = $image_extension;
+        }
       }
-      $epub_images{$image_file} = $image_extension;
     }
+    # Now format.  Following code is similar to the default formatting
+    # code.
+    my $destination_file_name;
+    # should always be set
+    if (defined($self->get_conf('IMAGE_LINK_PREFIX'))) {
+      $destination_file_name = $self->get_conf('IMAGE_LINK_PREFIX')
+                                   . $destination_basefile_name;
+    } else {
+      $destination_file_name = $destination_basefile_name;
+    }
+    my $alt_string;
+    if (defined($args->[3]) and defined($args->[3]->{'string'})) {
+      $alt_string = $args->[3]->{'string'};
+    }
+    if (!defined($alt_string) or ($alt_string eq '')) {
+      $alt_string
+       = &{$self->formatting_function('format_protect_text')}($self, 
$basefile);
+    }
+    my $image_src
+     = &{$self->formatting_function('format_protect_text')}($self,
+                                                    $destination_file_name);
+    return $self->close_html_lone_element(
+      $self->html_attribute_class('img', [$cmdname])
+        . " src=\"$image_src\" alt=\"$alt_string\"");
   }
-  return $result;
+  return '';
 }
 
 my @epub_output_filenames;
@@ -251,6 +306,7 @@ sub epub_setup($)
   @epub_output_filenames = ();
   %epub_images = ();
   $nav_filename = $default_nav_filename;
+  $epub_file_nr = 1;
   
   $epub_info_js_dir_name = undef;
   if ($self->get_conf('INFO_JS_DIR')) {
diff --git 
"a/tp/tests/formatting/res_parser/non_ascii_test_epub/os\303\251_utf8_epub_package/EPUB/images/an_\303\257mage.png"
 
"b/tp/tests/formatting/res_parser/non_ascii_test_epub/os\303\251_utf8_epub_package/EPUB/images/1-an_image.png"
similarity index 100%
rename from 
"tp/tests/formatting/res_parser/non_ascii_test_epub/os\303\251_utf8_epub_package/EPUB/images/an_\303\257mage.png"
rename to 
"tp/tests/formatting/res_parser/non_ascii_test_epub/os\303\251_utf8_epub_package/EPUB/images/1-an_image.png"
diff --git 
"a/tp/tests/formatting/res_parser/non_ascii_test_epub/os\303\251_utf8_epub_package/EPUB/os\303\251_utf8.opf"
 
"b/tp/tests/formatting/res_parser/non_ascii_test_epub/os\303\251_utf8_epub_package/EPUB/os\303\251_utf8.opf"
index 09ab9fda02..c2704580c2 100644
--- 
"a/tp/tests/formatting/res_parser/non_ascii_test_epub/os\303\251_utf8_epub_package/EPUB/os\303\251_utf8.opf"
+++ 
"b/tp/tests/formatting/res_parser/non_ascii_test_epub/os\303\251_utf8_epub_package/EPUB/os\303\251_utf8.opf"
@@ -8,7 +8,7 @@
       <item id="nav" properties="nav" media-type="application/xhtml+xml" 
href="xhtml/nav_toc.xhtml"/>
       <item id="unit1" media-type="application/xhtml+xml" 
href="xhtml/osé_utf8.xhtml"/>
       <item id="unit2" media-type="application/xhtml+xml" 
href="xhtml/osé_utf8.xhtml"/>
-      <item id="image1" media-type=" image/png" href="images/an_ïmage.png"/>
+      <item id="image1" media-type="image/png" href="images/1-an_image.png"/>
    </manifest>
    <spine>
       <itemref idref="unit1"/>
diff --git 
"a/tp/tests/formatting/res_parser/non_ascii_test_epub/os\303\251_utf8_epub_package/EPUB/xhtml/os\303\251_utf8.xhtml"
 
"b/tp/tests/formatting/res_parser/non_ascii_test_epub/os\303\251_utf8_epub_package/EPUB/xhtml/os\303\251_utf8.xhtml"
index 7561be605c..8b2881d37a 100644
--- 
"a/tp/tests/formatting/res_parser/non_ascii_test_epub/os\303\251_utf8_epub_package/EPUB/xhtml/os\303\251_utf8.xhtml"
+++ 
"b/tp/tests/formatting/res_parser/non_ascii_test_epub/os\303\251_utf8_epub_package/EPUB/xhtml/os\303\251_utf8.xhtml"
@@ -32,9 +32,9 @@ span.program-in-footer {font-size: smaller}
 </p>
 <p>In included téxt.
 </p>
-<img class="image" src="../images/an_ïmage.png" alt="öld"/>
+<img class="image" src="../images/1-an_image.png" alt="öld"/>
 
-<img class="image" src="../images/dîrectory/imàge.êxt" alt="âlt"/>
+<img class="image" src="../images/2-image.ext" alt="âlt"/>
 
 
 <pre class="verbatim">In included téxt.
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/formatting.opf
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/formatting.opf
index 7de81a39ba..22b3de947d 100644
--- 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/formatting.opf
+++ 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/formatting.opf
@@ -16,8 +16,41 @@
       <item id="unit5" media-type="application/xhtml+xml" 
href="xhtml/formatting.xhtml"/>
       <item id="unit6" media-type="application/xhtml+xml" 
href="xhtml/formatting.xhtml"/>
       <item id="unit7" media-type="application/xhtml+xml" 
href="xhtml/formatting.xhtml"/>
-      <item id="image1" media-type="e--xt/image" href="images/f--ile.e--xt"/>
-      <item id="image2" media-type=" image/png" href="images/f--ile.png"/>
+      <item id="image1" media-type="e--xt/image" 
href="images/10-f--ile.e--xt"/>
+      <item id="image2" media-type="image/png" href="images/14-f--ile.png"/>
+      <item id="image3" media-type="image/png" href="images/15-f--ile.png"/>
+      <item id="image4" media-type="e--xt/image" 
href="images/16-f--ile.e--xt"/>
+      <item id="image5" media-type="image/png" href="images/17-f--ile.png"/>
+      <item id="image6" media-type="image/png" href="images/18-f--ile.png"/>
+      <item id="image7" media-type="e--xt/image" 
href="images/19-f--ile.e--xt"/>
+      <item id="image8" media-type="e--xt/image" 
href="images/21-f--ile.e--xt"/>
+      <item id="image9" media-type="image/png" href="images/25-f--ile.png"/>
+      <item id="image10" media-type="image/png" href="images/26-f--ile.png"/>
+      <item id="image11" media-type="e--xt/image" 
href="images/27-f--ile.e--xt"/>
+      <item id="image12" media-type="image/png" href="images/28-f--ile.png"/>
+      <item id="image13" media-type="image/png" href="images/29-f--ile.png"/>
+      <item id="image14" media-type="image/png" href="images/3-f--ile.png"/>
+      <item id="image15" media-type="e--xt/image" 
href="images/30-f--ile.e--xt"/>
+      <item id="image16" media-type="e--xt/image" 
href="images/32-f--ile.e--xt"/>
+      <item id="image17" media-type="image/png" href="images/36-f--ile.png"/>
+      <item id="image18" media-type="image/png" href="images/37-f--ile.png"/>
+      <item id="image19" media-type="e--xt/image" 
href="images/38-f--ile.e--xt"/>
+      <item id="image20" media-type="image/png" href="images/39-f--ile.png"/>
+      <item id="image21" media-type="image/png" href="images/4-f--ile.png"/>
+      <item id="image22" media-type="image/png" href="images/40-f--ile.png"/>
+      <item id="image23" media-type="e--xt/image" 
href="images/41-f--ile.e--xt"/>
+      <item id="image24" media-type="e--xt/image" 
href="images/43-f--ile.e--xt"/>
+      <item id="image25" media-type="image/png" href="images/47-f--ile.png"/>
+      <item id="image26" media-type="image/png" href="images/48-f--ile.png"/>
+      <item id="image27" media-type="e--xt/image" 
href="images/49-f--ile.e--xt"/>
+      <item id="image28" media-type="e--xt/image" 
href="images/5-f--ile.e--xt"/>
+      <item id="image29" media-type="image/png" href="images/50-f--ile.png"/>
+      <item id="image30" media-type="image/png" href="images/51-f--ile.png"/>
+      <item id="image31" media-type="e--xt/image" 
href="images/52-f--ile.e--xt"/>
+      <item id="image32" media-type="e--xt/image" 
href="images/54-f--ile.e--xt"/>
+      <item id="image33" media-type="image/png" href="images/6-f--ile.png"/>
+      <item id="image34" media-type="image/png" href="images/7-f--ile.png"/>
+      <item id="image35" media-type="e--xt/image" 
href="images/8-f--ile.e--xt"/>
    </manifest>
    <spine>
       <itemref idref="unit1"/>
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/10-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/10-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.png
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/14-f--ile.png
similarity index 100%
rename from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.png
rename to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/14-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/15-f--ile.png
similarity index 100%
rename from 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/f--ile.e--xt
rename to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/15-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/f--ile.png
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/16-f--ile.e--xt
similarity index 100%
rename from 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/f--ile.png
rename to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/16-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/17-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/17-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/18-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/18-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/19-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/19-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/21-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/21-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/25-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/25-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/26-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/26-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/27-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/27-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/28-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/28-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/29-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/29-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/3-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/3-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/30-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/30-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/32-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/32-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/36-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/36-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/37-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/37-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/38-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/38-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/39-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/39-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/4-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/4-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/40-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/40-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/41-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/41-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/43-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/43-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/47-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/47-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/48-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/48-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/49-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/49-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/5-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/5-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/50-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/50-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/51-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/51-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/52-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/52-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/54-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/54-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/6-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/6-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/7-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/7-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/8-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/8-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/xhtml/formatting.xhtml
 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/xhtml/formatting.xhtml
index ece936c6d0..a76c775a3a 100644
--- 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/xhtml/formatting.xhtml
+++ 
b/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/xhtml/formatting.xhtml
@@ -1832,19 +1832,19 @@ html ''
 <code class="code">@image{,,2--xt}</code> 
 <code class="code">@image{,,,3--xt}</code> 
 </p>
-<p><code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/f-ile.jpg" alt="a&#8211;lt"/>
-<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/f-ile.jpg" alt="altjk _&quot; %@"/>
+<p><code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/1-f-ilejpg" alt="a&#8211;lt"/>
+<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/2-f-ilejpg" alt="altjk _&quot; %@"/>
 </p>
-<p><code class="code">@image{f--ile}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/f--ile.png" alt="alt"/>
-<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="f--ile"/>
-<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="alt"/>
-<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" src="../images/f--ile@..file ext e--xt}" 
alt="alt"/>
+<p><code class="code">@image{f--ile}</code> <img class="image" 
src="../images/3-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/4-f--ile.png" alt="alt"/>
+<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/5-f--ile.e--xt" alt="f--ile"/>
+<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/6-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/7-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/8-f--ile.e--xt" alt="alt"/>
+<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" 
src="../images/9-f--ile_0040..file-ext-e--xt_007d" alt="alt"/>
 </p>
-<p><code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/f--ile.e--xt" alt="jk 
_&quot; %@ in b &quot;"/>
-<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/filejk _&quot; %@.jpg" 
alt="altjk _&quot; %@"/>
+<p><code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/10-f--ile.e--xt" 
alt="jk _&quot; %@ in b &quot;"/>
+<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/11-filejk-__0022-_0025_0040jpg" 
alt="altjk _&quot; %@"/>
 </p>
 
 <strong class="author">author</strong><br/>
@@ -2910,19 +2910,19 @@ html ''
 <code class="code">@image{,,2--xt}</code> 
 <code class="code">@image{,,,3--xt}</code> 
 </p>
-<p><code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/f-ile.jpg" alt="a&#8211;lt"/>
-<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/f-ile.jpg" alt="altjk _&quot; %@"/>
+<p><code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/12-f-ilejpg" alt="a&#8211;lt"/>
+<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/13-f-ilejpg" alt="altjk _&quot; %@"/>
 </p>
-<p><code class="code">@image{f--ile}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/f--ile.png" alt="alt"/>
-<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="f--ile"/>
-<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="alt"/>
-<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" src="../images/f--ile@..file ext e--xt}" 
alt="alt"/>
+<p><code class="code">@image{f--ile}</code> <img class="image" 
src="../images/14-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/15-f--ile.png" alt="alt"/>
+<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/16-f--ile.e--xt" alt="f--ile"/>
+<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/17-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/18-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/19-f--ile.e--xt" alt="alt"/>
+<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" 
src="../images/20-f--ile_0040..file-ext-e--xt_007d" alt="alt"/>
 </p>
-<p><code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/f--ile.e--xt" alt="jk 
_&quot; %@ in b &quot;"/>
-<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/filejk _&quot; %@.jpg" 
alt="altjk _&quot; %@"/>
+<p><code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/21-f--ile.e--xt" 
alt="jk _&quot; %@ in b &quot;"/>
+<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/22-filejk-__0022-_0025_0040jpg" 
alt="altjk _&quot; %@"/>
 </p>
 
 
@@ -4006,19 +4006,19 @@ html ''
 <code class="code">@image{,,2--xt}</code> 
 <code class="code">@image{,,,3--xt}</code> 
 </p>
-<p><code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/f-ile.jpg" alt="a&#8211;lt"/>
-<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/f-ile.jpg" alt="altjk _&quot; %@"/>
+<p><code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/23-f-ilejpg" alt="a&#8211;lt"/>
+<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/24-f-ilejpg" alt="altjk _&quot; %@"/>
 </p>
-<p><code class="code">@image{f--ile}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/f--ile.png" alt="alt"/>
-<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="f--ile"/>
-<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="alt"/>
-<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" src="../images/f--ile@..file ext e--xt}" 
alt="alt"/>
+<p><code class="code">@image{f--ile}</code> <img class="image" 
src="../images/25-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/26-f--ile.png" alt="alt"/>
+<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/27-f--ile.e--xt" alt="f--ile"/>
+<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/28-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/29-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/30-f--ile.e--xt" alt="alt"/>
+<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" 
src="../images/31-f--ile_0040..file-ext-e--xt_007d" alt="alt"/>
 </p>
-<p><code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/f--ile.e--xt" alt="jk 
_&quot; %@ in b &quot;"/>
-<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/filejk _&quot; %@.jpg" 
alt="altjk _&quot; %@"/>
+<p><code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/32-f--ile.e--xt" 
alt="jk _&quot; %@ in b &quot;"/>
+<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/33-filejk-__0022-_0025_0040jpg" 
alt="altjk _&quot; %@"/>
 </p>
 
 
@@ -5082,19 +5082,19 @@ html ''
 <code class="code">@image{,,2--xt}</code> 
 <code class="code">@image{,,,3--xt}</code> 
 </p>
-<p><code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/f-ile.jpg" alt="a&#8211;lt"/>
-<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/f-ile.jpg" alt="altjk _&quot; %@"/>
+<p><code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/34-f-ilejpg" alt="a&#8211;lt"/>
+<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/35-f-ilejpg" alt="altjk _&quot; %@"/>
 </p>
-<p><code class="code">@image{f--ile}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/f--ile.png" alt="alt"/>
-<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="f--ile"/>
-<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="alt"/>
-<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" src="../images/f--ile@..file ext e--xt}" 
alt="alt"/>
+<p><code class="code">@image{f--ile}</code> <img class="image" 
src="../images/36-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/37-f--ile.png" alt="alt"/>
+<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/38-f--ile.e--xt" alt="f--ile"/>
+<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/39-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/40-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/41-f--ile.e--xt" alt="alt"/>
+<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" 
src="../images/42-f--ile_0040..file-ext-e--xt_007d" alt="alt"/>
 </p>
-<p><code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/f--ile.e--xt" alt="jk 
_&quot; %@ in b &quot;"/>
-<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/filejk _&quot; %@.jpg" 
alt="altjk _&quot; %@"/>
+<p><code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/43-f--ile.e--xt" 
alt="jk _&quot; %@ in b &quot;"/>
+<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/44-filejk-__0022-_0025_0040jpg" 
alt="altjk _&quot; %@"/>
 </p>
 
 
@@ -6300,19 +6300,19 @@ Invalid use of @':
 <code class="code">@image{,,2--xt}</code> 
 <code class="code">@image{,,,3--xt}</code> 
 
-<code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/f-ile.jpg" alt="a&#8211;lt"/>
-<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/f-ile.jpg" alt="altjk _&quot; %@"/>
+<code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/45-f-ilejpg" alt="a&#8211;lt"/>
+<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/46-f-ilejpg" alt="altjk _&quot; %@"/>
 
-<code class="code">@image{f--ile}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/f--ile.png" alt="alt"/>
-<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="f--ile"/>
-<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="alt"/>
-<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" src="../images/f--ile@..file ext e--xt}" 
alt="alt"/>
+<code class="code">@image{f--ile}</code> <img class="image" 
src="../images/47-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/48-f--ile.png" alt="alt"/>
+<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/49-f--ile.e--xt" alt="f--ile"/>
+<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/50-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/51-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/52-f--ile.e--xt" alt="alt"/>
+<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" 
src="../images/53-f--ile_0040..file-ext-e--xt_007d" alt="alt"/>
 
-<code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/f--ile.e--xt" alt="jk 
_&quot; %@ in b &quot;"/>
-<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/filejk _&quot; %@.jpg" 
alt="altjk _&quot; %@"/>
+<code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/54-f--ile.e--xt" 
alt="jk _&quot; %@ in b &quot;"/>
+<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/55-filejk-__0022-_0025_0040jpg" 
alt="altjk _&quot; %@"/>
 
 
 
diff --git 
a/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/formatting.opf
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/formatting.opf
index 8a5874d78e..59769648d4 100644
--- 
a/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/formatting.opf
+++ 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/formatting.opf
@@ -17,8 +17,41 @@
       <item id="unit6" media-type="application/xhtml+xml" 
href="xhtml/subsubsection-three_002d_002d_002dfour_002d_002d_002d_002d_0027_0027.xhtml"
 properties="scripted"/>
       <item id="unit7" media-type="application/xhtml+xml" 
href="xhtml/chapter2.xhtml" properties="scripted"/>
       <item id="jsweblabels" media-type="application/xhtml+xml" 
href="xhtml/js_licenses.xhtml"/>
-      <item id="image1" media-type="e--xt/image" href="images/f--ile.e--xt"/>
-      <item id="image2" media-type=" image/png" href="images/f--ile.png"/>
+      <item id="image1" media-type="e--xt/image" 
href="images/10-f--ile.e--xt"/>
+      <item id="image2" media-type="image/png" href="images/14-f--ile.png"/>
+      <item id="image3" media-type="image/png" href="images/15-f--ile.png"/>
+      <item id="image4" media-type="e--xt/image" 
href="images/16-f--ile.e--xt"/>
+      <item id="image5" media-type="image/png" href="images/17-f--ile.png"/>
+      <item id="image6" media-type="image/png" href="images/18-f--ile.png"/>
+      <item id="image7" media-type="e--xt/image" 
href="images/19-f--ile.e--xt"/>
+      <item id="image8" media-type="e--xt/image" 
href="images/21-f--ile.e--xt"/>
+      <item id="image9" media-type="image/png" href="images/25-f--ile.png"/>
+      <item id="image10" media-type="image/png" href="images/26-f--ile.png"/>
+      <item id="image11" media-type="e--xt/image" 
href="images/27-f--ile.e--xt"/>
+      <item id="image12" media-type="image/png" href="images/28-f--ile.png"/>
+      <item id="image13" media-type="image/png" href="images/29-f--ile.png"/>
+      <item id="image14" media-type="image/png" href="images/3-f--ile.png"/>
+      <item id="image15" media-type="e--xt/image" 
href="images/30-f--ile.e--xt"/>
+      <item id="image16" media-type="e--xt/image" 
href="images/32-f--ile.e--xt"/>
+      <item id="image17" media-type="image/png" href="images/36-f--ile.png"/>
+      <item id="image18" media-type="image/png" href="images/37-f--ile.png"/>
+      <item id="image19" media-type="e--xt/image" 
href="images/38-f--ile.e--xt"/>
+      <item id="image20" media-type="image/png" href="images/39-f--ile.png"/>
+      <item id="image21" media-type="image/png" href="images/4-f--ile.png"/>
+      <item id="image22" media-type="image/png" href="images/40-f--ile.png"/>
+      <item id="image23" media-type="e--xt/image" 
href="images/41-f--ile.e--xt"/>
+      <item id="image24" media-type="e--xt/image" 
href="images/43-f--ile.e--xt"/>
+      <item id="image25" media-type="image/png" href="images/47-f--ile.png"/>
+      <item id="image26" media-type="image/png" href="images/48-f--ile.png"/>
+      <item id="image27" media-type="e--xt/image" 
href="images/49-f--ile.e--xt"/>
+      <item id="image28" media-type="e--xt/image" 
href="images/5-f--ile.e--xt"/>
+      <item id="image29" media-type="image/png" href="images/50-f--ile.png"/>
+      <item id="image30" media-type="image/png" href="images/51-f--ile.png"/>
+      <item id="image31" media-type="e--xt/image" 
href="images/52-f--ile.e--xt"/>
+      <item id="image32" media-type="e--xt/image" 
href="images/54-f--ile.e--xt"/>
+      <item id="image33" media-type="image/png" href="images/6-f--ile.png"/>
+      <item id="image34" media-type="image/png" href="images/7-f--ile.png"/>
+      <item id="image35" media-type="e--xt/image" 
href="images/8-f--ile.e--xt"/>
       <item id="infojs1" media-type="text/css" href="js/info.css"/>
       <item id="infojs2" media-type="text/javascript" href="js/info.js"/>
       <item id="infojs3" media-type="text/javascript" href="js/modernizr.js"/>
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/10-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/10-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/14-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/14-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/15-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/15-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/16-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/16-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/17-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/17-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/18-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/18-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/19-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/19-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/21-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/21-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/25-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/25-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/26-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/26-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/27-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/27-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/28-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/28-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/29-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/29-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/3-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/3-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/30-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/30-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/32-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/32-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/36-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/36-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/37-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/37-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/38-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/38-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/39-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/39-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/4-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/4-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/40-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/40-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/41-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/41-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/43-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/43-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/47-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/47-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/48-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/48-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/49-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/49-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/5-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/5-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/50-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/50-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/51-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/51-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/52-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/52-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/54-f--ile.e--xt
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/54-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/6-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/6-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/7-f--ile.png
similarity index 100%
copy from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
copy to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/7-f--ile.png
diff --git 
a/tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/8-f--ile.e--xt
similarity index 100%
rename from 
tp/tests/layout/res_parser/formatting_epub/formatting_epub_package/EPUB/images/f--ile.e--xt
rename to 
tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/images/8-f--ile.e--xt
diff --git 
a/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/xhtml/chapter.xhtml
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/xhtml/chapter.xhtml
index db28fff067..87a1ad89d0 100644
--- 
a/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/xhtml/chapter.xhtml
+++ 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/xhtml/chapter.xhtml
@@ -1839,19 +1839,19 @@ html ''
 <code class="code">@image{,,2--xt}</code> 
 <code class="code">@image{,,,3--xt}</code> 
 </p>
-<p><code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/f-ile.jpg" alt="a&#8211;lt"/>
-<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/f-ile.jpg" alt="altjk _&quot; %@"/>
+<p><code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/23-f-ilejpg" alt="a&#8211;lt"/>
+<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/24-f-ilejpg" alt="altjk _&quot; %@"/>
 </p>
-<p><code class="code">@image{f--ile}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/f--ile.png" alt="alt"/>
-<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="f--ile"/>
-<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="alt"/>
-<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" src="../images/f--ile@..file ext e--xt}" 
alt="alt"/>
+<p><code class="code">@image{f--ile}</code> <img class="image" 
src="../images/25-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/26-f--ile.png" alt="alt"/>
+<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/27-f--ile.e--xt" alt="f--ile"/>
+<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/28-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/29-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/30-f--ile.e--xt" alt="alt"/>
+<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" 
src="../images/31-f--ile_0040..file-ext-e--xt_007d" alt="alt"/>
 </p>
-<p><code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/f--ile.e--xt" alt="jk 
_&quot; %@ in b &quot;"/>
-<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/filejk _&quot; %@.jpg" 
alt="altjk _&quot; %@"/>
+<p><code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/32-f--ile.e--xt" 
alt="jk _&quot; %@ in b &quot;"/>
+<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/33-filejk-__0022-_0025_0040jpg" 
alt="altjk _&quot; %@"/>
 </p>
 
 
@@ -2915,19 +2915,19 @@ html ''
 <code class="code">@image{,,2--xt}</code> 
 <code class="code">@image{,,,3--xt}</code> 
 </p>
-<p><code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/f-ile.jpg" alt="a&#8211;lt"/>
-<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/f-ile.jpg" alt="altjk _&quot; %@"/>
+<p><code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/34-f-ilejpg" alt="a&#8211;lt"/>
+<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/35-f-ilejpg" alt="altjk _&quot; %@"/>
 </p>
-<p><code class="code">@image{f--ile}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/f--ile.png" alt="alt"/>
-<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="f--ile"/>
-<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="alt"/>
-<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" src="../images/f--ile@..file ext e--xt}" 
alt="alt"/>
+<p><code class="code">@image{f--ile}</code> <img class="image" 
src="../images/36-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/37-f--ile.png" alt="alt"/>
+<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/38-f--ile.e--xt" alt="f--ile"/>
+<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/39-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/40-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/41-f--ile.e--xt" alt="alt"/>
+<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" 
src="../images/42-f--ile_0040..file-ext-e--xt_007d" alt="alt"/>
 </p>
-<p><code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/f--ile.e--xt" alt="jk 
_&quot; %@ in b &quot;"/>
-<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/filejk _&quot; %@.jpg" 
alt="altjk _&quot; %@"/>
+<p><code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/43-f--ile.e--xt" 
alt="jk _&quot; %@ in b &quot;"/>
+<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/44-filejk-__0022-_0025_0040jpg" 
alt="altjk _&quot; %@"/>
 </p>
 
 
@@ -4133,19 +4133,19 @@ Invalid use of @':
 <code class="code">@image{,,2--xt}</code> 
 <code class="code">@image{,,,3--xt}</code> 
 
-<code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/f-ile.jpg" alt="a&#8211;lt"/>
-<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/f-ile.jpg" alt="altjk _&quot; %@"/>
+<code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/45-f-ilejpg" alt="a&#8211;lt"/>
+<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/46-f-ilejpg" alt="altjk _&quot; %@"/>
 
-<code class="code">@image{f--ile}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/f--ile.png" alt="alt"/>
-<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="f--ile"/>
-<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="alt"/>
-<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" src="../images/f--ile@..file ext e--xt}" 
alt="alt"/>
+<code class="code">@image{f--ile}</code> <img class="image" 
src="../images/47-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/48-f--ile.png" alt="alt"/>
+<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/49-f--ile.e--xt" alt="f--ile"/>
+<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/50-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/51-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/52-f--ile.e--xt" alt="alt"/>
+<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" 
src="../images/53-f--ile_0040..file-ext-e--xt_007d" alt="alt"/>
 
-<code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/f--ile.e--xt" alt="jk 
_&quot; %@ in b &quot;"/>
-<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/filejk _&quot; %@.jpg" 
alt="altjk _&quot; %@"/>
+<code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/54-f--ile.e--xt" 
alt="jk _&quot; %@ in b &quot;"/>
+<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/55-filejk-__0022-_0025_0040jpg" 
alt="altjk _&quot; %@"/>
 
 
 
diff --git 
a/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/xhtml/formatting.xhtml
 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/xhtml/formatting.xhtml
index e86b901964..b5b4a463bb 100644
--- 
a/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/xhtml/formatting.xhtml
+++ 
b/tp/tests/layout/res_parser/formatting_epub_nodes/formatting_epub_package/EPUB/xhtml/formatting.xhtml
@@ -1829,19 +1829,19 @@ html ''
 <code class="code">@image{,,2--xt}</code> 
 <code class="code">@image{,,,3--xt}</code> 
 </p>
-<p><code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/f-ile.jpg" alt="a&#8211;lt"/>
-<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/f-ile.jpg" alt="altjk _&quot; %@"/>
+<p><code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/1-f-ilejpg" alt="a&#8211;lt"/>
+<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/2-f-ilejpg" alt="altjk _&quot; %@"/>
 </p>
-<p><code class="code">@image{f--ile}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/f--ile.png" alt="alt"/>
-<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="f--ile"/>
-<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="alt"/>
-<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" src="../images/f--ile@..file ext e--xt}" 
alt="alt"/>
+<p><code class="code">@image{f--ile}</code> <img class="image" 
src="../images/3-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/4-f--ile.png" alt="alt"/>
+<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/5-f--ile.e--xt" alt="f--ile"/>
+<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/6-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/7-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/8-f--ile.e--xt" alt="alt"/>
+<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" 
src="../images/9-f--ile_0040..file-ext-e--xt_007d" alt="alt"/>
 </p>
-<p><code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/f--ile.e--xt" alt="jk 
_&quot; %@ in b &quot;"/>
-<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/filejk _&quot; %@.jpg" 
alt="altjk _&quot; %@"/>
+<p><code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/10-f--ile.e--xt" 
alt="jk _&quot; %@ in b &quot;"/>
+<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/11-filejk-__0022-_0025_0040jpg" 
alt="altjk _&quot; %@"/>
 </p>
 
 <strong class="author">author</strong><br/>
@@ -2907,19 +2907,19 @@ html ''
 <code class="code">@image{,,2--xt}</code> 
 <code class="code">@image{,,,3--xt}</code> 
 </p>
-<p><code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/f-ile.jpg" alt="a&#8211;lt"/>
-<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/f-ile.jpg" alt="altjk _&quot; %@"/>
+<p><code class="code">@image{f-ile,aze,,a--lt}</code> <img class="image" 
src="../images/12-f-ilejpg" alt="a&#8211;lt"/>
+<code class="code">@image{f-ile,,,alt@verb{:jk _&quot; %}}</code> <img 
class="image" src="../images/13-f-ilejpg" alt="altjk _&quot; %@"/>
 </p>
-<p><code class="code">@image{f--ile}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/f--ile.png" alt="alt"/>
-<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="f--ile"/>
-<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/f--ile.png" alt="f--ile"/>
-<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/f--ile.e--xt" alt="alt"/>
-<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" src="../images/f--ile@..file ext e--xt}" 
alt="alt"/>
+<p><code class="code">@image{f--ile}</code> <img class="image" 
src="../images/14-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,,alt}</code> <img class="image" 
src="../images/15-f--ile.png" alt="alt"/>
+<code class="code">@image{f--ile,,,,.e-d-xt}</code> <img class="image" 
src="../images/16-f--ile.e--xt" alt="f--ile"/>
+<code class="code">@image{f--ile,l--i}</code> <img class="image" 
src="../images/17-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,,l--e}</code> <img class="image" 
src="../images/18-f--ile.png" alt="f--ile"/>
+<code class="code">@image{f--ile,aze,az,alt,.e--xt}</code> <img class="image" 
src="../images/19-f--ile.e--xt" alt="alt"/>
+<code class="code">@image{@file{f--ile}@@@.,aze,az,alt,@file{.file ext} 
e--xt@}</code> <img class="image" 
src="../images/20-f--ile_0040..file-ext-e--xt_007d" alt="alt"/>
 </p>
-<p><code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/f--ile.e--xt" alt="jk 
_&quot; %@ in b &quot;"/>
-<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/filejk _&quot; %@.jpg" 
alt="altjk _&quot; %@"/>
+<p><code class="code">@image{f--ile,aze,az,@verb{:jk _&quot; %@:} @b{in b 
&quot;},e--xt}</code> <img class="image" src="../images/21-f--ile.e--xt" 
alt="jk _&quot; %@ in b &quot;"/>
+<code class="code">@image{file@verb{:jk _&quot; %@:},,,alt@verb{:jk _&quot; 
%@:}}</code> <img class="image" src="../images/22-filejk-__0022-_0025_0040jpg" 
alt="altjk _&quot; %@"/>
 </p>
 
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]