[Trennmuster] Patgen-Nachfolger
Werner LEMBERG
wl at gnu.org
So Nov 25 12:37:09 CET 2018
> Ich habe diese jetzt hier veröffentlicht:
> https://github.com/gregorio-project/hyphen-la/blob/master/patterns/generation/patgen_translate_classical
> (Die letzten drei Zeilen enthalten Kombinationsakzente.)
>
> Die Datei ist UTF-8-codiert, nicht wie »german.tr« ISO-8859.
Pfft.
> Mich hat selbst gewundert, dass das funktioniert, denn alle
> Nicht-ASCII-Zeichen werden natürlich durch Zwei-Byte-Sequenzen
> repräsentiert. Die erzeugten Muster sind aber einwandfrei.
Ich bin baff.
> Falls du's probieren willst, steht im Git-Repositorium im gleichen
> Verzeichnis wie die Translate-Datei das Skript
> »generate-patgen-input.sh« zur Verfügung, das aus meiner Wortliste
> (bisher ca. 600 Einträge) mit Hilfe von drei Lua-Skripten eine Liste
> getrennter Wörter mit ca. 35000 Einträgen erzeugt.
Ich hab's probiert: Die Eingabe- und Translationsdatei brav von UTF-8
nach 8bit kodiert (wobei ich die Nicht-ASCII-Zeichen auf beliebige
Werte im Bereich 0x80-0xFF abgebildet habe), dann dreimal »patgen«
laufen lassen, danach die erzeugte Trennmusterdatei wieder nach UTF-8
konvertiert (siehe angehängte Perl-Skripte), und es kommt tatsächlich
exakt das gleiche heraus!
Es ist mir ein völliges Rätsel, wieso das funktioniert – und ich
glaube, es wäre wichtig zu verstehen, warum das so ist. Kannst Du auf
der TeXLive-Liste nachfragen und das »Problem« mit einem
Minimalbeispiel demonstrieren?
Werner
-------------- nächster Teil --------------
#! /usr/bin/perl -w
#
# la-to-8bit.pl
use strict;
use warnings;
use utf8; # String-Literals direkt als UTF-8.
use feature 'unicode_strings';
binmode(STDIN, ":encoding(utf8)");
binmode(STDOUT, ":bytes");
while (<>) {
tr
[āĀăĂ
æÆǣǢ
ēĒĕĔ
īĪĭĬ
ōŌŏŎ
œŒ
ūŪŭŬ
̄̆͞]
[\x{80}\x{81}\x{82}\x{83}
\x{90}\x{91}\x{92}\x{93}
\x{A0}\x{A1}\x{A2}\x{A3}
\x{B0}\x{B1}\x{B2}\x{B3}
\x{C0}\x{C1}\x{C2}\x{C3}
\x{D0}\x{D1}
\x{E0}\x{E1}\x{E2}\x{E3}
\x{F0}\x{F1}\x{F2}];
print;
}
-------------- nächster Teil --------------
#! /usr/bin/perl -w
#
# 8bit-to-la.pl
use strict;
use warnings;
use utf8; # String-Literals direkt als UTF-8.
use feature 'unicode_strings';
binmode(STDIN, ":bytes");
binmode(STDOUT, ":encoding(utf8)");
while (<>) {
tr
[\x{80}\x{81}\x{82}\x{83}
\x{90}\x{91}\x{92}\x{93}
\x{A0}\x{A1}\x{A2}\x{A3}
\x{B0}\x{B1}\x{B2}\x{B3}
\x{C0}\x{C1}\x{C2}\x{C3}
\x{D0}\x{D1}
\x{E0}\x{E1}\x{E2}\x{E3}
\x{F0}\x{F1}\x{F2}]
[āĀăĂ
æÆǣǢ
ēĒĕĔ
īĪĭĬ
ōŌŏŎ
œŒ
ūŪŭŬ
̄̆͞];
print;
}
Mehr Informationen über die Mailingliste Trennmuster