From 6811a9c65addf34619a986f689e1598503fa9fc3 Mon Sep 17 00:00:00 2001 From: pcg Date: Mon, 15 Mar 2004 01:27:46 +0000 Subject: [PATCH] *** empty log message *** --- src/defaultfont.C | 2 +- src/encoding.C | 31 ++- src/encoding.h | 17 +- src/gentables | 29 ++- .../{jis0208_1983_0.h => jis0208_1990_0.h} | 242 +++++++++--------- 5 files changed, 175 insertions(+), 146 deletions(-) rename src/table/{jis0208_1983_0.h => jis0208_1990_0.h} (96%) diff --git a/src/defaultfont.C b/src/defaultfont.C index 43610a53..34f9bff4 100644 --- a/src/defaultfont.C +++ b/src/defaultfont.C @@ -63,7 +63,7 @@ const struct rxvt_fallback_font { { CS_UNICODE, "xft:Kochi Gothic:antialias=false" }, # endif { CS_JIS0201_1976_0, "-*-mincho-*-r-*--*-*-*-*-c-*-jisx0201*-0" }, - { CS_JIS0208_1983_0, "-*-mincho-*-r-*--*-*-*-*-c-*-jisx0208*-0" }, + { CS_JIS0208_1990_0, "-*-mincho-*-r-*--*-*-*-*-c-*-jisx0208*-0" }, { CS_JIS0212_1990_0, "-*-mincho-*-r-*--*-*-*-*-c-*-jisx0212*-0" }, #endif diff --git a/src/encoding.C b/src/encoding.C index 67361ffc..59de1ff0 100644 --- a/src/encoding.C +++ b/src/encoding.C @@ -46,9 +46,11 @@ const struct n2cs { { "VISCII*", CS_VISCII }, { "JISX0201*", CS_JIS0201_1976_0 }, - { "JISX0208*", CS_JIS0208_1983_0 }, // also wrongly matches -1990-0 (check Encode::JP) + { "JISX0208*", CS_JIS0208_1990_0 }, // also wrongly matches -1987-0? (check Encode::JP) { "JISX0212*", CS_JIS0212_1990_0 }, - { "JISX0221*", CS_UNICODE }, + { "JISX021320001", CS_JIS0213_1 }, + { "JISX021320002", CS_JIS0213_2 }, + { "JISX0221*", CS_UNICODE }, // _very_ close { "KSC5601*", CS_KSC5601_1987_0 }, { "KSX1001*", CS_KSC5601_1987_0 }, @@ -115,12 +117,12 @@ codeset_from_name (const char *name) } struct rxvt_codeset_conv_unknown : rxvt_codeset_conv { - uint32_t to_unicode (uint32_t enc) const { return NOCHAR; } - uint32_t from_unicode (uint32_t unicode) const { return NOCHAR; } + unicode_t to_unicode (uint32_t enc) const { return NOCHAR; } + uint32_t from_unicode (unicode_t unicode) const { return NOCHAR; } } rxvt_codeset_conv_unknown; struct rxvt_codeset_conv_us_ascii : rxvt_codeset_conv { - uint32_t from_unicode (uint32_t unicode) const { return unicode <= 127 ? unicode : NOCHAR; } + uint32_t from_unicode (unicode_t unicode) const { return unicode <= 127 ? unicode : NOCHAR; } } rxvt_codeset_conv_us_ascii; struct rxvt_codeset_conv_unicode : rxvt_codeset_conv { @@ -128,8 +130,8 @@ struct rxvt_codeset_conv_unicode : rxvt_codeset_conv { } rxvt_codeset_conv_unicode; struct rxvt_codeset_conv_unicode_16 : rxvt_codeset_conv { - uint32_t to_unicode (uint32_t enc) const { return enc; } - uint32_t from_unicode (uint32_t unicode) const { return unicode <= 65535 ? unicode : NOCHAR; } + unicode_t to_unicode (uint32_t enc) const { return enc; } + uint32_t from_unicode (unicode_t unicode) const { return unicode <= 65535 ? unicode : NOCHAR; } } rxvt_codeset_conv_unicode_16; #define ENCODING_DEFAULT @@ -185,7 +187,7 @@ struct rxvt_codeset_conv_unicode_16 : rxvt_codeset_conv { //#define ENCODING_JP #include "table/jis0201_1976_0.h" -#include "table/jis0208_1983_0.h" +#include "table/jis0208_1990_0.h" #include "table/jis0212_1990_0.h" //#define ENCODING_JP_EXT @@ -219,7 +221,7 @@ const rxvt_codeset_conv *rxvt_codeset[NUM_CODESETS] = { &rxvt_codeset_conv_koi8_u, &rxvt_codeset_conv_jis0201_1976_0, - &rxvt_codeset_conv_jis0208_1983_0, + &rxvt_codeset_conv_jis0208_1990_0, &rxvt_codeset_conv_jis0212_1990_0, &rxvt_codeset_conv_jis0213_1, @@ -253,8 +255,8 @@ const rxvt_codeset_conv *rxvt_codeset[NUM_CODESETS] = { #include "table/compose.h" -uint32_t -rxvt_compose (uint32_t c1, uint32_t c2) +unicode_t +rxvt_compose (unicode_t c1, unicode_t c2) { int l = 0; int r = sizeof (rxvt_compose_table) / sizeof (rxvt_compose_entry) - 1; @@ -275,3 +277,10 @@ rxvt_compose (uint32_t c1, uint32_t c2) return NOCHAR; } + +#include "table/category.h" + +bool unicode::is_space (unicode_t c) +{ + return IS_SPACE (c); +} diff --git a/src/encoding.h b/src/encoding.h index 17de921a..2f94315b 100644 --- a/src/encoding.h +++ b/src/encoding.h @@ -3,6 +3,8 @@ #include +typedef uint32_t unicode_t; + // order must match the table in encoding.C(!) enum codeset { CS_UNKNOWN = 0, @@ -27,9 +29,8 @@ enum codeset { CS_KOI8_R, CS_KOI8_U, CS_JIS0201_1976_0, - CS_JIS0208_1983_0, + CS_JIS0208_1990_0, CS_JIS0212_1990_0, - CS_JIS0213_1, CS_JIS0213_2, @@ -67,16 +68,22 @@ enum { }; struct rxvt_codeset_conv { - virtual uint32_t from_unicode (uint32_t unicode) const { return unicode; } - virtual uint32_t to_unicode (uint32_t enc) const { return enc; } + virtual uint32_t from_unicode (unicode_t unicode) const { return unicode; } +#if ENCODING_TO_UNICODE + virtual unicode_t to_unicode (uint32_t enc) const { return enc; } +#endif }; extern const rxvt_codeset_conv *rxvt_codeset[NUM_CODESETS]; -extern uint32_t rxvt_compose (uint32_t c1, uint32_t c2); +extern unicode_t rxvt_compose (unicode_t c1, unicode_t c2); #define FROM_UNICODE(cs,code) rxvt_codeset[cs]->from_unicode (code) #define TO_UNICODE(cs,code) rxvt_codeset[cs]->to_unicode (code) +struct unicode { // namespace für arme + static bool is_space (unicode_t c); +}; + #endif diff --git a/src/gentables b/src/gentables index d45489d4..39255422 100755 --- a/src/gentables +++ b/src/gentables @@ -1,6 +1,6 @@ #!/opt/bin/perl -# the generated tables mostly have NOT been chcked so far! +# the generated tables mostly have NOT been checked so far! use v5.8.2; use utf8; @@ -8,6 +8,8 @@ use Encode; my $gen; +$TO_UNICODE = 0; # also generate to_unicode tables + sub linear { my ($a, $l, $h, $b) = @_; for ($l .. $h) { @@ -215,11 +217,12 @@ while () { } } - my ($tab1, $fun1) = gen \@enc1, "$base\_f", "unicode"; - my ($tab2, $fun2) = gen \@enc2, "$base\_t", "enc"; + my ($tab1, $fun1); + my ($tab2, $fun2); + + ($tab1, $fun1) = gen \@enc1, "$base\_f", "unicode"; + ($tab2, $fun2) = gen \@enc2, "$base\_t", "enc" if $TO_UNICODE; - #$tab1 =~ s/^/ /gm; - #$tab2 =~ s/^/ /gm; $fun1 =~ s/^/ /gm; $fun2 =~ s/^/ /gm; @@ -234,10 +237,20 @@ while () { $tab1$tab2 struct rxvt_codeset_conv_$base : rxvt_codeset_conv { - uint32_t from_unicode (uint32_t unicode) const { + uint32_t from_unicode (unicode_t unicode) const { $fun1 } - uint32_t to_unicode (uint32_t enc) const { +EOF + +if ($TO_UNICODE) { + print OUT <> 8; if (0x00 <= h && h <= 0xff && 0x00 <= l && l <= 0xff - && jis0208_1983_0_f_i[h - 0x00]) - return jis0208_1983_0_f_i[h - 0x00][l - 0x00] - ? jis0208_1983_0_f_i[h - 0x00][l - 0x00] + && jis0208_1990_0_f_i[h - 0x00]) + return jis0208_1990_0_f_i[h - 0x00][l - 0x00] + ? jis0208_1990_0_f_i[h - 0x00][l - 0x00] : NOCHAR; return NOCHAR; } -} rxvt_codeset_conv_jis0208_1983_0; +} rxvt_codeset_conv_jis0208_1990_0; #else -#define rxvt_codeset_conv_jis0208_1983_0 rxvt_codeset_conv_unknown +#define rxvt_codeset_conv_jis0208_1990_0 rxvt_codeset_conv_unknown #endif -- 2.34.1