UTF-8-Daten vor Ausgabe an Template auf Form C normalisieren
authorMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 10 Oct 2011 13:12:29 +0000 (15:12 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 10 Oct 2011 13:12:29 +0000 (15:12 +0200)
Wenn UTF-8-Daten als Form D vorliegen, so steigt LaTeX aus, weil es
diese Form nicht kennt.

SL/Template/LaTeX.pm

index c66399f..c7d51e0 100644 (file)
@@ -5,6 +5,7 @@ use parent qw(SL::Template::Simple);
 use strict;
 
 use Cwd;
+use Unicode::Normalize qw();
 
 sub new {
   my $type = shift;
@@ -353,8 +354,13 @@ sub parse {
     return 0;
   }
 
-  binmode OUT, ":utf8" if $::locale->is_utf8;
-  print(OUT $new_contents);
+  if ($::locale->is_utf8) {
+    binmode OUT, ":utf8";
+    print OUT Unicode::Normalize::normalize('C', $new_contents);
+
+  } else {
+    print OUT $new_contents;
+  }
 
   if ($form->{"format"} =~ /postscript/i) {
     return $self->convert_to_postscript();