From d499b1608102c96e7622c17d7cb6c511ebe70185 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Wed, 5 Dec 2018 09:33:58 +0100 Subject: [PATCH] =?utf8?q?Verwende=20UTF-8=20f=C3=BCr=20patgen.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Patgen kann zwar nur maximal 245 Zeichen-Entitäten verarbeiten, diese können jedoch beliebige Zeichenketten sein, solange keine Substrings vorkommen. Die UTF-8-Kodierung erfüllt diese Bedingung, daher kann man ohne Probleme auf latin9 komplett verzichten. --- MANIFEST | 1 - Makefile | 32 +++++------ daten/de-Latf.tr | 62 +++++++++++----------- daten/german.tr | 62 +++++++++++----------- skripte/MANIFEST | 3 +- skripte/apply-pattern.pl | 8 +-- skripte/diff-patgen-input.awk | 2 +- skripte/extract-tex.pl | 3 +- skripte/python/lang_s/de_Latf_quasihyph.py | 4 +- skripte/python/lang_s/long_s_quasihyph.py | 4 +- skripte/python/ligatures/LIESMICH.md | 12 ++--- .../python/ligatures/prepare-ligature-wordlist.py | 6 +-- 12 files changed, 89 insertions(+), 110 deletions(-) diff --git a/MANIFEST b/MANIFEST index f73e405..cbac31c 100644 --- a/MANIFEST +++ b/MANIFEST @@ -11,7 +11,6 @@ arzneiwirkstoffnamen-supplement # # Das Format ist kompatibel zu Werner Lembergs großer deutscher # Wortliste. -# Zeichensatz ist Latin-9 (ISO-8859-15). wortliste pre-1901 diff --git a/Makefile b/Makefile index 2888e7d..2b0aed7 100644 --- a/Makefile +++ b/Makefile @@ -148,8 +148,8 @@ SWISS = dehyphts-x$(MAJOR) LATF = de-Latf LONG_S = de-long-s -LC_ENVVARS = LC_COLLATE=de_DE.ISO8859-15 \ - LC_CTYPE=de_DE.ISO8859-15 +LC_ENVVARS = LC_COLLATE=de_DE.UTF-8 \ + LC_CTYPE=de_DE.UTF-8 CAT = cat CHDIR = cd @@ -157,7 +157,6 @@ COPY = cp DATE = $(shell date '+%Y-%m-%d') ECHO = echo GIT = git -ICONV = iconv -f iso-8859-15 -t utf-8 MKDIR = mkdir -p PERL = perl PWD = pwd @@ -229,8 +228,7 @@ $(TRAD)/$(TRAD)-$(DATE).pat: $(TRAD)/pattern.8 $(TRAD)/pattern.rules -e "s/@RIGHTHYPHENMIN@/$(RIGHTHYPHENMIN)/" > $@; \ $(CAT) $(TRAD)/pattern.rules >> $@; \ $(CAT) $(DATADIR)/$(TRAD).2 >> $@; \ - $(CAT) $(TRAD)/pattern.8 \ - | $(ICONV) >> $@; \ + $(CAT) $(TRAD)/pattern.8 >> $@; \ $(CAT) $(DATADIR)/$(TRAD).3 >> $@ @@ -249,8 +247,7 @@ $(REFO)/$(REFO)-$(DATE).pat: $(REFO)/pattern.8 $(REFO)/pattern.rules -e "s/@RIGHTHYPHENMIN@/$(RIGHTHYPHENMIN)/" > $@; \ $(CAT) $(REFO)/pattern.rules >> $@; \ $(CAT) $(DATADIR)/$(REFO).2 >> $@; \ - $(CAT) $(REFO)/pattern.8 \ - | $(ICONV) >> $@; \ + $(CAT) $(REFO)/pattern.8 >> $@; \ $(CAT) $(DATADIR)/$(REFO).3 >> $@ @@ -269,26 +266,25 @@ $(SWISS)/$(SWISS)-$(DATE).pat: $(SWISS)/pattern.8 $(SWISS)/pattern.rules -e "s/@RIGHTHYPHENMIN@/$(RIGHTHYPHENMIN)/" > $@; \ $(CAT) $(SWISS)/pattern.rules >> $@; \ $(CAT) $(DATADIR)/$(SWISS).2 >> $@; \ - $(CAT) $(SWISS)/pattern.8 \ - | $(ICONV) >> $@; \ + $(CAT) $(SWISS)/pattern.8 >> $@; \ $(CAT) $(DATADIR)/$(SWISS).3 >> $@ $(TRAD)/words.hyphenated.trad: $(SRCDIR)/$(WORDLIST) $(CAT) $< \ - | $(PERL) $(SCRIPTDIR)/extract-tex.pl -l -t -1 $(PERLMAJOR) \ + | $(PERL) $(SCRIPTDIR)/extract-tex.pl -t -1 $(PERLMAJOR) \ | $(SEDMAJOR) \ | $(SORT) > $@ $(REFO)/words.hyphenated.refo: $(SRCDIR)/$(WORDLIST) $(CAT) $< \ - | $(PERL) $(SCRIPTDIR)/extract-tex.pl -l -1 $(PERLMAJOR) \ + | $(PERL) $(SCRIPTDIR)/extract-tex.pl -1 $(PERLMAJOR) \ | $(SEDMAJOR) \ | $(SORT) > $@ $(SWISS)/words.hyphenated.swiss: $(SRCDIR)/$(WORDLIST) $(CAT) $< \ - | $(PERL) $(SCRIPTDIR)/extract-tex.pl -l -s -1 $(PERLMAJOR) \ + | $(PERL) $(SCRIPTDIR)/extract-tex.pl -s -1 $(PERLMAJOR) \ | $(SEDMAJOR) \ | $(SORT) > $@ @@ -336,7 +332,7 @@ $(LATF)/words-de-Latf.hyphenated: $(LATF)/words-de-Latf.txt $(LATF)/de-Latf.pat: $(LATF)/words-de-Latf.hyphenated $(CHDIR) $(LATF); \ $(SH) $(SCRIPTDIR)/make-full-pattern.sh $(> $@; + $(CAT) $(LATF)/pattern.8 >> $@; de-1901-Latf: $(LATF)/de-1901-Latf.pat @@ -346,7 +342,7 @@ $(LATF)/words-de-1901-Latf.hyphenated: $(LATF)/words-de-1901-Latf.txt $(LATF)/de-1901-Latf.pat: $(LATF)/words-de-1901-Latf.hyphenated $(CHDIR) $(LATF); \ $(SH) $(SCRIPTDIR)/make-full-pattern.sh $(> $@; + $(CAT) $(LATF)/pattern.8 >> $@; de-1996-Latf: $(LATF)/de-1996-Latf.pat @@ -356,7 +352,7 @@ $(LATF)/words-de-1996-Latf.hyphenated: $(LATF)/words-de-1996-Latf.txt $(LATF)/de-1996-Latf.pat: $(LATF)/words-de-1996-Latf.hyphenated $(CHDIR) $(LATF); \ $(SH) $(SCRIPTDIR)/make-full-pattern.sh $(> $@; + $(CAT) $(LATF)/pattern.8 >> $@; # long-s: Variante mit Quasi-Trennstellen nach Lang-S (auss-agen) @@ -371,7 +367,7 @@ $(LONG_S)/words-de-x-long-s.hyphenated: $(LATF)/words-de-Latf.txt $(LONG_S)/de-x-long-s.pat: $(LONG_S)/words-de-x-long-s.hyphenated $(CHDIR) $(LONG_S); \ $(SH) $(SCRIPTDIR)/make-full-pattern.sh $(> $@; + $(CAT) $(LONG_S)/pattern.8 >> $@; de-1901-x-long-s: $(LONG_S)/de-1901-x-long-s.pat @@ -382,7 +378,7 @@ $(LONG_S)/words-de-1901-x-long-s.hyphenated: $(LATF)/words-de-1901-Latf.txt $(LONG_S)/de-1901-x-long-s.pat: $(LONG_S)/words-de-1901-x-long-s.hyphenated $(CHDIR) $(LONG_S); \ $(SH) $(SCRIPTDIR)/make-full-pattern.sh $(> $@; + $(CAT) $(LONG_S)/pattern.8 >> $@; de-1996-x-long-s: $(LONG_S)/de-1996-x-long-s.pat @@ -393,6 +389,6 @@ $(LONG_S)/words-de-1996-x-long-s.hyphenated: $(LATF)/words-de-1996-Latf.txt $(LONG_S)/de-1996-x-long-s.pat: $(LONG_S)/words-de-1996-x-long-s.hyphenated $(CHDIR) $(LONG_S); \ $(SH) $(SCRIPTDIR)/make-full-pattern.sh $(> $@; + $(CAT) $(LONG_S)/pattern.8 >> $@; # EOF diff --git a/daten/de-Latf.tr b/daten/de-Latf.tr index 1972c27..02899f8 100644 --- a/daten/de-Latf.tr +++ b/daten/de-Latf.tr @@ -8,61 +8,61 @@ %% long-S (Binnen-S) and round-s (Schluss-S), where in texts typeset in %% Antiqua fonts only round-s is used. %% -%% The encoding of this file is ISO-8859-15 (latin-9). -%% -%% modified by Guenter Milde from german.tr by Werner Lemberg +%% modified by Günter Milde from german.tr by Werner Lemberg %% (c) Die deutsche Trennmustergruppe a A - ä Ä - â  - à À - á Á - ã à - å Å - æ Æ + ä Ä + â  + à À + á Á + ã à + å Å + æ Æ b B c C - ç Ç + ç Ç d D e E - é É - è È - ë Ë - ê Ê + é É + è È + ë Ë + ê Ê f F g G h H i I - í Í - ì Ì - î Î + í Í + ì Ì + î Î + ï Ï j J k K l L m M n N - ñ Ñ + ñ Ñ o O - ó Ó - ò Ò - ô Ô - ö Ö - ø Ø - ½ ¼ + ó Ó + ò Ò + ô Ô + ö Ö + ø Ø + œ Œ p P q Q r R s S - ¨ ¦ - ß + š Š + ß t T u U - ú Ú - ü Ü + ú Ú + ü Ü + û Û v V w W x X y Y - ÿ ¾ + ÿ Ÿ z Z - ¸ ´ + ž Ž diff --git a/daten/german.tr b/daten/german.tr index 4be4152..64d3323 100644 --- a/daten/german.tr +++ b/daten/german.tr @@ -3,62 +3,60 @@ %% defining the letters used for generating German hyphenation patterns %% with patgen. %% -%% The encoding of this file is ISO-8859-15 (latin-9). -%% %% created by Werner Lemberg a A - ä Ä - â  - à À - á Á - ã à - å Å - æ Æ + ä Ä + â  + à À + á Á + ã à + å Å + æ Æ b B c C - ç Ç + ç Ç d D e E - é É - è È - ë Ë - ê Ê + é É + è È + ë Ë + ê Ê f F g G h H i I - í Í - ì Ì - î Î - ï Ï + í Í + ì Ì + î Î + ï Ï j J k K l L m M n N - ñ Ñ + ñ Ñ o O - ó Ó - ò Ò - ô Ô - ö Ö - ø Ø - ½ ¼ + ó Ó + ò Ò + ô Ô + ö Ö + ø Ø + œ Œ p P q Q r R s S - ¨ ¦ - ß + š Š + ß t T u U - ú Ú - ü Ü - û Û + ú Ú + ü Ü + û Û v V w W x X y Y - ÿ ¾ + ÿ Ÿ z Z - ¸ ´ + ž Ž diff --git a/skripte/MANIFEST b/skripte/MANIFEST index dd9e06d..5efddb9 100644 --- a/skripte/MANIFEST +++ b/skripte/MANIFEST @@ -68,8 +68,7 @@ extract-tex.pl # -v Verhindere die Ausgabe von Versalformen, wo »ß« durch »ss« ersetzt # ist. # -# -l Konvertiere die Ausgabe von UTF-8 nach latin-9 (wie von »patgen« -# benötigt). +# -l Konvertiere die Ausgabe von UTF-8 nach latin-9. make-full-pattern.sh # -*- coding: utf-8 -*- diff --git a/skripte/apply-pattern.pl b/skripte/apply-pattern.pl index 725bf0b..268efdd 100644 --- a/skripte/apply-pattern.pl +++ b/skripte/apply-pattern.pl @@ -36,8 +36,7 @@ $prog =~ s@.*/@@; if ($#ARGV != 1) { die "Aufruf: $prog [-1] trennmuster german.tr < eingabe > ausgabe\n" . "\n" . - " `eingabe', `ausgabe' in UTF-8-Kodierung,\n" . - " `trennmuster', `german.tr' in ISO-8859-15-Kodierung\n" . + " Alle Daten müssen UTF-8-Kodierung verwenden.\n" . "\n" . " Mit Option `-1' bleiben Trennungen nach dem ersten und\n" . " vor dem letzten Buchstaben in der Ausgabe.\n"; @@ -58,9 +57,6 @@ my @eingabe; open TEMP, '>', $tempdatei || die "$prog: Kann temporäre Datei `$tempdatei' nicht öffnen: $!\n"; -binmode(STDIN, ":encoding(utf8)"); # Eingabe (wortliste) in UTF-8 -binmode(TEMP, ":encoding(iso-8859-15)"); # patgen erwartet Latin-9 - while () { s/[·=|<>-]//g; push(@eingabe, $_); @@ -108,8 +104,6 @@ while () { } close PATGEN; -binmode(STDOUT, ":encoding(utf8)"); # Ausgabe ist wieder UTF-8 - while (@eingabe) { my @vorlage = split(//, shift(@eingabe)); my @ergebnis = split(//, shift(@muster)); diff --git a/skripte/diff-patgen-input.awk b/skripte/diff-patgen-input.awk index b77ebf1..f924cd7 100644 --- a/skripte/diff-patgen-input.awk +++ b/skripte/diff-patgen-input.awk @@ -59,7 +59,7 @@ function output_word_class(clarr, clname) { } print(clname ": " i) # Sort output file on shell. - system("LC_COLLATE=de_DE.ISO8859-15 LC_CTYPE=de_DE.ISO8859-15 sort -f " fname ".unsort > " fname) + system("LC_COLLATE=de_DE.UTF-8 LC_CTYPE=de_DE.UTF-8 sort -f " fname ".unsort > " fname) system("rm -f " fname ".unsort") } diff --git a/skripte/extract-tex.pl b/skripte/extract-tex.pl index f7483ce..28a1c8f 100644 --- a/skripte/extract-tex.pl +++ b/skripte/extract-tex.pl @@ -69,8 +69,7 @@ # -v Verhindere die Ausgabe von Versalformen, wo »ß« durch »ss« ersetzt # ist. # -# -l (Kleinbuchstabe L) Konvertiere die Ausgabe von UTF-8 nach latin-9 (wie -# von »patgen« benötigt). +# -l (Kleinbuchstabe L) Konvertiere die Ausgabe von UTF-8 nach latin-9. use strict; use warnings; diff --git a/skripte/python/lang_s/de_Latf_quasihyph.py b/skripte/python/lang_s/de_Latf_quasihyph.py index 507982f..35ccec5 100644 --- a/skripte/python/lang_s/de_Latf_quasihyph.py +++ b/skripte/python/lang_s/de_Latf_quasihyph.py @@ -18,8 +18,8 @@ usage = u'%prog [Optionen]\n' + __doc__ parser = optparse.OptionParser(usage=usage) parser.add_option('-e', '--encoding', dest='encoding', help=u'Kodierung der Ausgabe, ' - u'Vorgabe "iso-8859-15"', - default='iso-8859-15') + u'Vorgabe "utf-8"', + default='utf-8') (options, args) = parser.parse_args() diff --git a/skripte/python/lang_s/long_s_quasihyph.py b/skripte/python/lang_s/long_s_quasihyph.py index 0099d8a..330eefb 100644 --- a/skripte/python/lang_s/long_s_quasihyph.py +++ b/skripte/python/lang_s/long_s_quasihyph.py @@ -18,8 +18,8 @@ usage = u'%prog [Optionen]\n' + __doc__ parser = optparse.OptionParser(usage=usage) parser.add_option('-e', '--encoding', dest='encoding', help=u'Kodierung der Ausgabe, ' - u'Vorgabe "iso-8859-15"', - default='iso-8859-15') + u'Vorgabe "utf-8"', + default='utf-8') (options, args) = parser.parse_args() diff --git a/skripte/python/ligatures/LIESMICH.md b/skripte/python/ligatures/LIESMICH.md index 5446c6b..b819cec 100644 --- a/skripte/python/ligatures/LIESMICH.md +++ b/skripte/python/ligatures/LIESMICH.md @@ -48,15 +48,11 @@ weitere Wortlisten für spezielle Zwecke, so wie „pre-1901“. Sie alle eignen sich als Eingabe für dieses Skript. Die Ausgabedatei des Skripts kann als Eingabedatei für Patgen verwendet werden. -Allerdings ist sie UTF-8-kodiert und muss daher vor der Verwendung in Patgen in -eine Ein-Byte-Kodierung umgewandelt werden: -* Die Ausgabedatei des Skripts nach ISO 8859‑15 umwandeln - -* Eine Kopie der ebenfalls in ISO 8859‑15 kodierten Datei daten/german.tr -erstellen und den Inhalt der ersten Zeile „ 2 2“ durch „ 1 1“ ersetzen (bei -der Ligaturunterdrückung gibt es – anders als bei der Silbentrennung – keinen -Mindestabstand von zwei Zeichen zum Wortanfang oder Wortende) +* Eine Kopie der Datei daten/german.tr erstellen und den Inhalt der ersten +Zeile „ 2 2“ durch „ 1 1“ ersetzen (bei der Ligaturunterdrückung gibt es – +anders als bei der Silbentrennung – keinen Mindestabstand von zwei Zeichen zum +Wortanfang oder Wortende) * Die beiden Dateien als Eingabe für „skripte/make-full-pattern.sh“ verwenden, um mittels Patgen die Muster zu erzeugen. diff --git a/skripte/python/ligatures/prepare-ligature-wordlist.py b/skripte/python/ligatures/prepare-ligature-wordlist.py index 1530f7e..53e015a 100644 --- a/skripte/python/ligatures/prepare-ligature-wordlist.py +++ b/skripte/python/ligatures/prepare-ligature-wordlist.py @@ -54,10 +54,8 @@ def make_patgen_input(): help=u"wordlist (UTF8 encoded) as " "simple word list with a dash that marks all positions where " "ligatures have to be suppressed. This file can be used as " - "input for patgen. Note however that it is UTF8 encoded, " - "therefor you have to convert it to a single-byte encoding " - "that patgen understands (e.g. ISO 8859-15) before using it " - "in patgen. Attention: Existing files will be overwritten.") + "input for patgen. Attention: Existing files will be " + "overwritten.") parser.add_argument( 'log', help=u"log (UTF8 encoded) of the operations. " -- 2.11.4.GIT