[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