--- groff-1.18.1.1.orig/src/roff/nroff/nroff.sh +++ groff-1.18.1.1/src/roff/nroff/nroff.sh @@ -12,6 +12,8 @@ T=-Tlatin1 ;; IBM-1047) T=-Tcp1047 ;; + EUC-JP) + T=-Tnippon ;; *) case "${LC_ALL-${LC_CTYPE-${LANG}}}" in *.UTF-8) @@ -20,6 +22,8 @@ T=-Tlatin1 ;; *.IBM-1047) T=-Tcp1047 ;; + ja_JP.ujis | ja_JP.eucJP) + T=-Tnippon ;; *) case "$LESSCHARSET" in utf-8) @@ -28,8 +32,10 @@ T=-Tlatin1 ;; cp1047) T=-Tcp1047 ;; + japanese) + T=-Tnippon ;; *) - T=-Tascii ;; + T=-Tascii8 ;; esac ;; esac ;; esac @@ -52,7 +58,7 @@ exit 1 ;; -[iptSUC] | -[mrno]*) opts="$opts $1" ;; - -Tascii | -Tlatin1 | -Tutf8 | -Tcp1047) + -Tascii | -Tlatin1 | -Tutf8 | -Tcp1047 | -Tascii8 | -Tnippon) T=$1 ;; -T*) # ignore other devices --- groff-1.18.1.1.orig/src/roff/nroff/nroff.man +++ groff-1.18.1.1/src/roff/nroff/nroff.man @@ -53,8 +53,10 @@ command using groff. Only .BR ascii , +.BR ascii8 , .BR latin1 , .BR utf8 , +.BR nippon , and .B cp1047 are valid arguments for the --- groff-1.18.1.1.orig/src/roff/troff/charinfo.h +++ groff-1.18.1.1/src/roff/troff/charinfo.h @@ -29,9 +29,16 @@ macro *mac; unsigned char special_translation; unsigned char hyphenation_code; +#ifdef ENABLE_MULTIBYTE + unsigned short flags; +#else unsigned char flags; +#endif unsigned char ascii_code; unsigned char asciify_code; +#ifdef ENABLE_MULTIBYTE + wchar wchar_code; +#endif char not_found; char transparent_translate; // non-zero means translation applies // to transparent throughput @@ -47,6 +54,11 @@ OVERLAPS_VERTICALLY = 16, TRANSPARENT = 32, NUMBERED = 64 +#ifdef ENABLE_MULTIBYTE + , + DONT_BREAK_BEFORE = 0x100, // 256, pre kinsoku + DONT_BREAK_AFTER = 0x200 // 512, post kinsoku +#endif }; enum { TRANSLATE_NONE, @@ -74,7 +86,11 @@ int get_translation_input(); charinfo *get_translation(int = 0); void set_translation(charinfo *, int, int); +#ifdef ENABLE_MULTIBYTE + void set_flags(unsigned short); +#else void set_flags(unsigned char); +#endif void set_special_translation(int, int); int get_special_translation(int = 0); macro *set_macro(macro *, int = 0); @@ -84,6 +100,12 @@ int get_number(); int numbered(); int is_fallback(); +#ifdef ENABLE_MULTIBYTE + wchar get_wchar_code(); + void set_wchar_code(wchar); + int cannot_break_before(); // pre kinsoku + int cannot_break_after(); // post kinsoku +#endif symbol *get_symbol(); }; @@ -131,6 +153,18 @@ return fallback; } +#ifdef ENABLE_MULTIBYTE +inline int charinfo::cannot_break_before() +{ + return flags & DONT_BREAK_BEFORE; +} + +inline int charinfo::cannot_break_after() +{ + return flags & DONT_BREAK_AFTER; +} +#endif + inline charinfo *charinfo::get_translation(int transparent_throughput) { return (transparent_throughput && !transparent_translate @@ -153,7 +187,18 @@ return (translate_input ? asciify_code : 0); } +#ifdef ENABLE_MULTIBYTE +inline wchar charinfo::get_wchar_code() +{ + return wchar_code; +} +#endif + +#ifdef ENABLE_MULTIBYTE +inline void charinfo::set_flags(unsigned short c) +#else inline void charinfo::set_flags(unsigned char c) +#endif { flags = c; } --- groff-1.18.1.1.orig/src/roff/troff/env.h +++ groff-1.18.1.1/src/roff/troff/env.h @@ -213,6 +213,15 @@ unsigned char control_char; unsigned char no_break_control_char; charinfo *hyphen_indicator_char; +#ifdef ENABLE_MULTIBYTE + int stretch_threshold; + int pre_wchar_cannot_break_after; + int pre_char_is_ascii; + int enable_wcharkern; + int met_with_kword_space; + hunits hwkern; + vunits vlower; +#endif environment(symbol); environment(const environment *); // for temporary environment @@ -279,6 +288,10 @@ void wrap_up_tab(); void set_font(int); void set_font(symbol); +#ifdef ENABLE_MULTIBYTE + void change_curfont(int); + void change_curfont(symbol); +#endif void set_family(symbol); void set_size(int); void set_char_height(int); @@ -309,6 +322,9 @@ const char *get_point_size_string(); const char *get_requested_point_size_string(); void output_pending_lines(); +#ifdef ENABLE_MULTIBYTE + void set_encoding(symbol); +#endif friend void title_length(); friend void space_size(); @@ -347,6 +363,9 @@ #ifdef WIDOW_CONTROL friend void widow_control_request(); #endif /* WIDOW_CONTROL */ +#ifdef ENABLE_MULTIBYTE + friend void stretch_threshold_request(); +#endif friend void do_divert(int append, int boxing); }; --- groff-1.18.1.1.orig/src/roff/troff/node.h +++ groff-1.18.1.1/src/roff/troff/node.h @@ -20,6 +20,8 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include "config.h" + struct hyphen_list { unsigned char hyphen; unsigned char breakable; @@ -31,6 +33,9 @@ void hyphenate(hyphen_list *, unsigned); enum hyphenation_type { HYPHEN_MIDDLE, HYPHEN_BOUNDARY, HYPHEN_INHIBIT }; +#ifdef ENABLE_MULTIBYTE +enum node_type {NODE_GLYPH, NODE_KWORD_SPACE, NODE_NEWLINE_SPACE, NODE_ANOTHER}; +#endif class ascii_output_file; @@ -106,6 +111,9 @@ virtual int same(node *) = 0; virtual const char *type() = 0; +#ifdef ENABLE_MULTIBYTE + virtual node_type get_node_type(); +#endif }; inline node::node() @@ -212,6 +220,24 @@ int force_tprint(); }; +#ifdef ENABLE_MULTIBYTE +class kword_space_node : public word_space_node { +public: + kword_space_node(color *, node * = 0); + node *copy(); + const char *type(); + node_type get_node_type(); +}; + +class newline_space_node : public word_space_node { +public: + newline_space_node(hunits, color *, node * = 0); + node *copy(); + const char *type(); + node_type get_node_type(); +}; +#endif + class unbreakable_space_node : public word_space_node { unbreakable_space_node(hunits, int, color *, node * = 0); public: @@ -538,6 +564,9 @@ node *copy_node_list(node *); int get_bold_fontno(int f); +#ifdef ENABLE_MULTIBYTE +int get_fontset_fontno(int f, wchar wc); +#endif inline hyphen_list::hyphen_list(unsigned char code, hyphen_list *p) : hyphen(0), breakable(0), hyphenation_code(code), next(p) @@ -595,3 +624,4 @@ font_family *lookup_family(symbol); symbol get_font_name(int, environment *); + --- groff-1.18.1.1.orig/src/roff/troff/troff.h +++ groff-1.18.1.1/src/roff/troff/troff.h @@ -28,6 +28,7 @@ #include #include +#include "encoding.h" #include "assert.h" #include "color.h" #include "device.h" --- groff-1.18.1.1.orig/src/roff/troff/env.cc +++ groff-1.18.1.1/src/roff/troff/env.cc @@ -32,6 +32,7 @@ #include "charinfo.h" #include "macropath.h" #include "input.h" +#include "font.h" // ENABLE_MULTIBYTE only? #include symbol default_family("T"); @@ -264,6 +265,13 @@ void environment::add_char(charinfo *ci) { int s; +#ifdef ENABLE_MULTIBYTE + int fontno = get_font(); // current font # + int fontset_font = get_fontset_fontno(fontno, ci->get_wchar_code()); + if (fontno >= 0 && fontno != fontset_font) { + change_curfont(fontset_font); + } +#endif if (interrupted) ; // don't allow fields in dummy environments @@ -286,11 +294,95 @@ else { if (line == 0) start_line(); +#ifdef ENABLE_MULTIBYTE + /* + * XXX: NEED REWRITE TO BE MORE GENERIC + * This code is based on jgroff + * about kerning between ASCII and EUC-JP + */ + if (!ci->get_wchar_code()) { + /* + * This node is a ASCII character node. + */ + if (!pre_char_is_ascii && enable_wcharkern && !hwkern.is_zero()) { + /* + * Insert a little space node between EUC and ASCII. + */ + word_space_node *ws; + + if (ci->ends_sentence() || ci->transparent() || ci->cannot_break_before()) + ws = new unbreakable_space_node(hwkern.to_units(), get_fill_color()); + else + ws = new word_space_node(hwkern.to_units(), + get_fill_color(), + new width_list(env_space_width(this), + env_sentence_space_width(this))); + curenv->add_node(ws); + } + pre_char_is_ascii = 1; + pre_wchar_cannot_break_after = 0; + } else { + /* + * This node is a EUC charcater node. + */ + if (!pre_char_is_ascii && line->get_node_type() == NODE_NEWLINE_SPACE) { + /* + * remove a newline-node. + */ + node *ns_node = line; + line = line->next; + width_total -= ns_node->width(); + space_total -= ns_node->nspaces(); + delete ns_node; + } + + if (!pre_wchar_cannot_break_after && !ci->cannot_break_before()) { + /* + * add a zero-width-space-node before EUC charcater node. + */ + add_node(new kword_space_node(get_fill_color())); + met_with_kword_space = 1; + } + pre_wchar_cannot_break_after = ci->cannot_break_after(); + + if (pre_char_is_ascii && enable_wcharkern && !hwkern.is_zero()) { + /* + * Insert a little space node between ASCII and EUC. + */ + unbreakable_space_node *ws = + new unbreakable_space_node(hwkern.to_units(), get_fill_color()); + curenv->add_node(ws); + } + pre_char_is_ascii = 0; + + if (!vlower.is_zero()) { + /* + * Lower a EUC charcater node. + */ + curenv->add_node(new vmotion_node(vlower.to_units(), + get_fill_color())); // lower + } + } +#endif if (ci != hyphen_indicator_char) line = line->add_char(ci, this, &width_total, &space_total); else line = line->add_discretionary_hyphen(); +#ifdef ENABLE_MULTIBYTE + enable_wcharkern = 1; + if (!vlower.is_zero() && ci->get_wchar_code()) { + /* + * Raise a EUC charcater node. + */ + curenv->add_node(new vmotion_node(-vlower.to_units(), + get_fill_color())); // raise + } +#endif } +#ifdef ENABLE_MULTIBYTE + if (fontset_font >= 0 && fontno != fontset_font) + change_curfont(fontno); /* restore saved font # */ +#endif } node *environment::make_char_node(charinfo *ci) @@ -394,7 +486,11 @@ width_total += x; return; } +#ifdef ENABLE_MULTIBYTE + add_node(new newline_space_node(x, get_fill_color())); // This node may be removed +#else add_node(new word_space_node(x, get_fill_color(), w)); +#endif possibly_break_line(0, spread_flag); spread_flag = 0; } @@ -480,6 +576,35 @@ warning(WARN_FONT, "bad font number"); } +#ifdef ENABLE_MULTIBYTE +void environment::change_curfont(symbol nm) +{ + int n = symbol_fontno(nm); + if (n < 0) { + n = next_available_font_position(); + if (!mount_font(n, nm)) + return; + } + fontno = n; +} + +void environment::change_curfont(int n) +{ + if (is_good_fontno(n)) + fontno = n; + else + error("bad font number"); +} + +void environment::set_encoding(symbol enc) +{ + if (enc.is_null() || enc.is_empty()) + return; + select_input_encoding_handler(enc.contents()); + select_output_encoding_handler(enc.contents()); +} +#endif /* ENABLE_MULTIBYTE */ + void environment::set_family(symbol fam) { if (interrupted) @@ -649,6 +774,16 @@ control_char('.'), no_break_control_char('\''), hyphen_indicator_char(0) +#ifdef ENABLE_MULTIBYTE + , + stretch_threshold(0), + pre_wchar_cannot_break_after(0), + pre_char_is_ascii(-1), + enable_wcharkern(0), + met_with_kword_space(0), + hwkern(font::wcharkern), + vlower(font::lowerwchar) +#endif { prev_family = family = lookup_family(default_family); prev_fontno = fontno = 1; @@ -739,6 +874,16 @@ control_char(e->control_char), no_break_control_char(e->no_break_control_char), hyphen_indicator_char(e->hyphen_indicator_char) +#ifdef ENABLE_MULTIBYTE + , + stretch_threshold(e->stretch_threshold), + pre_wchar_cannot_break_after(0), + pre_char_is_ascii(-1), + enable_wcharkern(0), + met_with_kword_space(0), + hwkern(font::wcharkern), + vlower(font::lowerwchar) +#endif { } @@ -1781,6 +1926,9 @@ target_text_length = line_length - saved_indent; width_total = H0; space_total = 0; +#ifdef ENABLE_MULTIBYTE + enable_wcharkern = 0; +#endif } hunits environment::get_hyphenation_space() @@ -1819,6 +1967,23 @@ skip_line(); } +#ifdef ENABLE_MULTIBYTE +void stretch_threshold_request() +{ + int n; + if (has_arg() && get_integer(&n)) { + if (n < 0 || n > 100) { + warning(WARN_RANGE, "stretch threshold value %1 out of range", n); + } else { + curenv->stretch_threshold = n; + } + } else { + curenv->stretch_threshold = 0; + } + skip_line(); +} +#endif + breakpoint *environment::choose_breakpoint() { hunits x = width_total; @@ -2014,6 +2179,30 @@ // When a macro follows a paragraph in fill mode, the // current line should not be empty. || (width_total - line->width()) > target_text_length)) { +#ifdef ENABLE_MULTIBYTE + if (met_with_kword_space) { + node *linep = line; + node *prep = 0; + while (linep->next) { + if (linep->next->get_node_type() == NODE_GLYPH) + prep = 0; + else if (linep->next->get_node_type() == NODE_KWORD_SPACE) + prep = linep; + linep = linep->next; + } + if (prep) { + /* + * delete a kword_space_node which is in the top of line. + */ + linep = prep->next; + prep->next = linep->next; + width_total -= linep->width(); + space_total -= linep->nspaces(); + delete linep; + } + met_with_kword_space = 0; + } +#endif hyphenate_line(start_here); breakpoint *bp = choose_breakpoint(); if (bp == 0) @@ -2026,6 +2215,15 @@ bp->nd->split(bp->index, &pre, &post); *ndp = post; hunits extra_space_width = H0; +#ifdef ENABLE_MULTIBYTE + int sv_adjust_mode = adjust_mode; + if (stretch_threshold) { + int ratio = bp->width * 100 / target_text_length; + if (ratio < stretch_threshold) { + adjust_mode = ADJUST_LEFT; + } + } +#endif switch(adjust_mode) { case ADJUST_BOTH: if (bp->nspaces != 0) @@ -2041,6 +2239,9 @@ saved_indent += target_text_length - bp->width; break; } +#ifdef ENABLE_MULTIBYTE + adjust_mode = sv_adjust_mode; +#endif distribute_space(pre, bp->nspaces, extra_space_width); hunits output_width = bp->width + extra_space_width; input_line_start -= output_width; @@ -3237,6 +3438,9 @@ init_request("hys", hyphenation_space_request); init_request("hym", hyphenation_margin_request); init_request("pvs", post_vertical_spacing); +#ifdef ENABLE_MULTIBYTE + init_request("stt", stretch_threshold_request); +#endif init_int_env_reg(".f", get_font); init_int_env_reg(".b", get_bold); init_hunits_env_reg(".i", get_indent); --- groff-1.18.1.1.orig/src/roff/troff/troff.man +++ groff-1.18.1.1/src/roff/troff/troff.man @@ -22,6 +22,10 @@ A copy of the Free Documentation License is included as a file called FDL in the main directory of the groff source package. .. +.ig +A copy of the GNU Free Documentation License is also available in this +Debian package as /usr/share/doc/groff-base/copyright. +.. . . .\" -------------------------------------------------------------------- --- groff-1.18.1.1.orig/src/roff/troff/token.h +++ groff-1.18.1.1/src/roff/troff/token.h @@ -28,12 +28,18 @@ symbol nm; node *nd; unsigned char c; +#ifdef ENABLE_MULTIBYTE + wchar wc; +#endif int val; units dim; enum token_type { TOKEN_BACKSPACE, TOKEN_BEGIN_TRAP, TOKEN_CHAR, // a normal printing character +#ifdef ENABLE_MULTIBYTE + TOKEN_WCHAR, // a multibyte character +#endif TOKEN_DUMMY, // \& TOKEN_EMPTY, // this is the initial value TOKEN_END_TRAP, --- groff-1.18.1.1.orig/src/roff/troff/input.cc +++ groff-1.18.1.1/src/roff/troff/input.cc @@ -35,6 +35,7 @@ #include "macropath.h" #include "defs.h" #include "input.h" +#include "encoding.h" // XXX: ukai // Needed for getpid() and isatty() #include "posix.h" @@ -89,6 +90,11 @@ charinfo *charset_table[256]; unsigned char hpf_code_table[256]; +#ifdef ENABLE_MULTIBYTE +charinfo *wcharset_table_entry(wchar wc); + +#endif /* ENABLE_MULTIBYTE */ + static int warning_mask = DEFAULT_WARNING_MASK; static int inhibit_errors = 0; static int ignoring = 0; @@ -148,6 +154,20 @@ input_iterator *make_temp_iterator(const char *); const char *input_char_description(int); +#ifdef ENABLE_MULTIBYTE +static void +select_encoding() +{ + symbol e = get_long_name(1); + if (e.is_null()) { + skip_line(); + return; + } + curenv->set_encoding(e); + skip_line(); + +} +#endif void set_escape_char() { @@ -1524,6 +1544,19 @@ type = TOKEN_NEWLINE; } +#ifdef ENABLE_MULTIBYTE +class encoding_istream_input : public encoding_istream { +private: + node **np; +public: + encoding_istream_input(node **n) : np(n) {}; + ~encoding_istream_input() {}; + int getbyte() { return input_stack::get(np); }; + int peekbyte() { return input_stack::peek(); }; + void ungetbyte(int ch) { return; }; +}; +#endif + void token::next() { if (nd) { @@ -1533,6 +1566,10 @@ units x; for (;;) { node *n; +#ifdef ENABLE_MULTIBYTE + encoding_istream_input einput(&n); +#endif + int cc = input_stack::get(&n); if (cc != escape_char || escape_char == 0) { handle_normal_char: @@ -1686,8 +1723,22 @@ } return; default: +#ifdef ENABLE_MULTIBYTE + wc = input_encoding->make_wchar(cc, einput); + if (is_wchar_code(wc)) { + type = TOKEN_WCHAR; + c = 0; + } else if (wc == ' ') { + type = TOKEN_SPACE; + c = cc; + } else { + type = TOKEN_CHAR; + c = cc; + } +#else type = TOKEN_CHAR; c = cc; +#endif return; } } @@ -2057,6 +2108,10 @@ switch(type) { case TOKEN_CHAR: return c == t.c; +#ifdef ENABLE_MULTIBYTE + case TOKEN_WCHAR: + return wc == t.wc; +#endif case TOKEN_SPECIAL: return nm == t.nm; case TOKEN_NUMBERED_CHAR: @@ -2563,6 +2618,27 @@ } break; } +#ifdef ENABLE_MULTIBYTE + case token::TOKEN_WCHAR: + { + wchar wch = tok.wc; + + if (possibly_handle_first_page_transition()) + ; + else { + for (;;) { + curenv->add_char(wcharset_table_entry(wch)); + tok.next(); + if (tok.type != token::TOKEN_WCHAR) + break; + wch = tok.wc; + } + suppress_next = 1; + bol = 0; + } + break; + } +#endif /* ENABLE_MULTIBYTE */ case token::TOKEN_TRANSPARENT: { if (bol) { @@ -6018,6 +6094,10 @@ { if (type == TOKEN_CHAR) return charset_table[c]; +#ifdef ENABLE_MULTIBYTE + if (type == TOKEN_WCHAR) + return wcharset_table_entry(wc); +#endif if (type == TOKEN_SPECIAL) return get_charinfo(nm); if (type == TOKEN_NUMBERED_CHAR) @@ -6070,6 +6150,11 @@ case TOKEN_CHAR: *pp = (*pp)->add_char(charset_table[c], curenv, &w, &s); break; +#ifdef ENABLE_MULTIBYTE + case TOKEN_WCHAR: + *pp = (*pp)->add_char(wcharset_table_entry(wc), curenv, &w, &s); + break; +#endif case TOKEN_DUMMY: n = new dummy_node; break; @@ -6142,6 +6227,11 @@ case TOKEN_CHAR: curenv->add_char(charset_table[c]); break; +#ifdef ENABLE_MULTIBYTE + case TOKEN_WCHAR: + curenv->add_char(wcharset_table_entry(wc)); + break; +#endif case TOKEN_DUMMY: curenv->add_node(new dummy_node); break; @@ -6900,6 +6990,7 @@ if (!safer_flag) mac_path = ¯o_path; set_string(".T", device); + init_encoding_handler(); init_charset_table(); init_hpf_code_table(); if (!font::load_desc()) @@ -6924,6 +7015,9 @@ // In the DESC file a font name of 0 (zero) means leave this // position empty. if (strcmp(font::font_name_table[i], "0") != 0) +#ifdef ENABLE_MULTIBYTE + if (!font::is_on_demand(i)) +#endif mount_font(j, symbol(font::font_name_table[i])); curdiv = topdiv = new top_level_diversion; if (nflag) @@ -7081,6 +7175,9 @@ init_request("ecs", save_escape_char); init_request("el", else_request); init_request("em", end_macro); +#ifdef ENABLE_MULTIBYTE + init_request("encoding", select_encoding); +#endif init_request("eo", escape_off); init_request("ex", exit_request); init_request("fchar", define_fallback_character); @@ -7533,12 +7630,92 @@ dictionary charinfo_dictionary(501); +#ifdef ENABLE_MULTIBYTE +struct charinfo_list { + struct charinfo_list *next; + charinfo *ci; +} *wcharset_table = NULL; + +/* XXX: use more efficient method? */ +static charinfo* +lookup_wcharset_table(wchar wc) +{ + struct charinfo_list *cl; + for (cl = wcharset_table; cl; cl = cl->next) { + if (cl->ci && cl->ci->get_wchar_code() == wc) + return cl->ci; + } + return NULL; +} + +static void +add_wcharset_table(charinfo *ci) +{ + struct charinfo_list *cl = new struct charinfo_list; + cl->next = wcharset_table; + cl->ci = ci; + wcharset_table = cl; +} + +charinfo *wcharset_table_entry(wchar wc) +{ + if (! is_wchar_code(wc)) + return NULL; + charinfo *cp = lookup_wcharset_table(wc); + if (cp == NULL) { + int i = wchar_code(wc); + char buf[16]; + if (i > 0x100) + sprintf(buf, "u%04X", i); + else { + cp = get_charinfo_by_number(i); + if (cp != NULL) + return cp; + sprintf(buf, "char%d", i); // ??? + } + symbol nm = symbol(buf); + cp = new charinfo(nm); + (void)charinfo_dictionary.lookup(nm, cp); + cp->set_wchar_code(wc); + add_wcharset_table(cp); + } + return cp; +} + +static charinfo * +wchar_charinfo(symbol nm) +{ + const char *p = nm.contents(); + if (*p != 'u') { + return NULL; + } + char *pp; + wchar wc = make_wchar(strtol(p + 1, &pp, 16)); + if (pp < p + 5) + return NULL; + charinfo *cp = lookup_wcharset_table(wc); + if (cp) + return cp; + /* create on demand */ + cp = new charinfo(nm); + cp->set_wchar_code(wc); + add_wcharset_table(cp); + return cp; +} +#endif + charinfo *get_charinfo(symbol nm) { void *p = charinfo_dictionary.lookup(nm); if (p != 0) return (charinfo *)p; +#ifdef ENABLE_MULTIBYTE + charinfo *cp = wchar_charinfo(nm); + if (cp == NULL) + cp = new charinfo(nm); +#else charinfo *cp = new charinfo(nm); +#endif (void)charinfo_dictionary.lookup(nm, cp); return cp; } @@ -7548,6 +7725,9 @@ charinfo::charinfo(symbol s) : translation(0), mac(0), special_translation(TRANSLATE_NONE), hyphenation_code(0), flags(0), ascii_code(0), asciify_code(0), +#ifdef ENABLE_MULTIBYTE + wchar_code(0), +#endif not_found(0), transparent_translate(1), translate_input(0), fallback(0), nm(s) { @@ -7592,6 +7772,14 @@ asciify_code = c; } +#ifdef ENABLE_MULTIBYTE +void charinfo::set_wchar_code(wchar wc) +{ + wchar_code = wc; + index = wc; /* XXX: wchar code == index */ +} +#endif + macro *charinfo::set_macro(macro *m, int f) { macro *tem = mac; @@ -7647,6 +7835,13 @@ int font::name_to_index(const char *nm) { charinfo *ci; +#ifdef ENABLE_MULTIBYTE + int i = 1; + wchar wc = input_encoding->make_wchar(nm[0], (const unsigned char *)nm, &i); + if (is_wchar_code(wc)) { + ci = wcharset_table_entry(wc); + } else +#endif if (nm[1] == 0) ci = charset_table[nm[0] & 0xff]; else if (nm[0] == '\\' && nm[2] == 0) @@ -7663,3 +7858,10 @@ { return get_charinfo_by_number(n)->get_index(); } + +#ifdef ENABLE_MULTIBYTE +int font::wchar_index(wchar wc) +{ + return(wcharset_table_entry(wc)->get_index()); +} +#endif --- groff-1.18.1.1.orig/src/roff/troff/node.cc +++ groff-1.18.1.1/src/roff/troff/node.cc @@ -38,6 +38,7 @@ #include "input.h" #include "div.h" #include "geometry.h" +#include "encoding.h" #include "nonposix.h" @@ -745,8 +746,15 @@ int current_font_number; symbol *font_position; int nfont_positions; +#ifdef ENABLE_MULTIBYTE + const char *current_encoding; +#endif enum { TBUF_SIZE = 256 }; +#ifdef ENABLE_MULTIBYTE + wchar tbuf[TBUF_SIZE]; +#else char tbuf[TBUF_SIZE]; +#endif int tbuf_len; int tbuf_kern; int begun_page; @@ -756,6 +764,9 @@ void put(int i); void put(unsigned int i); void put(const char *s); +#ifdef ENABLE_MULTIBYTE + void putw(const wchar wc); +#endif void set_font(tfont *tf); void flush_tbuf(); public: @@ -799,6 +810,13 @@ putc(c, fp); } +#ifdef ENABLE_MULTIBYTE +inline void troff_output_file::putw(wchar wc) +{ + output_encoding->put_wchar(wc, fp); +} +#endif + inline void troff_output_file::put(unsigned char c) { putc(c, fp); @@ -956,7 +974,11 @@ check_output_limits(hpos, vpos - current_size); for (int i = 0; i < tbuf_len; i++) +#ifdef ENABLE_MULTIBYTE + putw(tbuf[i]); +#else put(tbuf[i]); +#endif put('\n'); tbuf_len = 0; } @@ -988,7 +1010,13 @@ flush_tbuf(); set_font(tf); } +#ifdef ENABLE_MULTIBYTE + wchar c = ci->get_wchar_code(); + if (c == '\0') + c = ci->get_ascii_code(); +#else char c = ci->get_ascii_code(); +#endif if (c == '\0') { flush_tbuf(); do_motion(); @@ -1014,7 +1042,8 @@ } else if (tcommand_flag) { if (tbuf_len > 0 && hpos == output_hpos && vpos == output_vpos - && gcol == current_glyph_color && fcol == current_fill_color + && (!gcol || gcol == current_glyph_color) + && (!fcol || fcol == current_fill_color) && kk == tbuf_kern && tbuf_len < TBUF_SIZE) { check_charinfo(tf, ci); @@ -1039,17 +1068,26 @@ check_charinfo(tf, ci); // check_output_limits(output_hpos, output_vpos); if (vpos == output_vpos - && gcol == current_glyph_color && fcol == current_fill_color + && (!gcol || gcol == current_glyph_color) + && (!fcol || fcol == current_fill_color) && n > 0 && n < 100 && !force_motion) { put(char(n/10 + '0')); put(char(n%10 + '0')); +#ifdef ENABLE_MULTIBYTE + putw(c); +#else put(c); +#endif output_hpos = hpos; } else { do_motion(); put('c'); +#ifdef ENABLE_MULTIBYTE + putw(c); +#else put(c); +#endif } hpos += w.to_units() + kk; } @@ -1063,7 +1101,13 @@ return; if (tf != current_tfont) set_font(tf); +#ifdef ENABLE_MULTIBYTE + wchar c = ci->get_wchar_code(); + if (c == '\0') + c = ci->get_ascii_code(); +#else char c = ci->get_ascii_code(); +#endif if (c == '\0') { do_motion(); glyph_color(gcol); @@ -1087,11 +1131,16 @@ else { int n = hpos - output_hpos; if (vpos == output_vpos - && gcol == current_glyph_color && fcol == current_fill_color + && (!gcol || gcol == current_glyph_color) + && (!fcol || fcol == current_fill_color) && n > 0 && n < 100) { put(char(n/10 + '0')); put(char(n%10 + '0')); +#ifdef ENABLE_MULTIBYTE + putw(c); +#else put(c); +#endif output_hpos = hpos; } else { @@ -1099,13 +1148,26 @@ glyph_color(gcol); fill_color(fcol); put('c'); +#ifdef ENABLE_MULTIBYTE + putw(c); +#else put(c); +#endif } } } void troff_output_file::set_font(tfont *tf) { +#ifdef ENABLE_MULTIBYTE + /* XXX */ + if (current_encoding != output_encoding->name()) { + put("x encoding "); + put(output_encoding->name()); + put('\n'); + current_encoding = output_encoding->name(); + } +#endif if (current_tfont == tf) return; int n = tf->get_input_position(); @@ -1162,7 +1224,7 @@ void troff_output_file::fill_color(color *col) { - if ((current_fill_color == col) || !color_flag) + if (!col || current_fill_color == col || !color_flag) return; flush_tbuf(); put("DF"); @@ -1210,7 +1272,7 @@ void troff_output_file::glyph_color(color *col) { - if ((current_glyph_color == col) || !color_flag) + if (!col || current_glyph_color == col || !color_flag) return; flush_tbuf(); put("m"); @@ -1497,7 +1559,17 @@ put(' '); put(vresolution); put('\n'); +#ifdef ENABLE_MULTIBYTE + current_encoding = output_encoding->name(); + put("x init"); + if (current_encoding && *current_encoding != '\0') { + put(' '); + put(current_encoding); + } + put('\n'); +#else put("x init\n"); +#endif } /* output_file */ @@ -1777,6 +1849,9 @@ int same(node *); const char *type(); int force_tprint(); +#ifdef ENABLE_MULTIBYTE + node_type get_node_type(); +#endif }; glyph_node *glyph_node::free_list = 0; @@ -1802,6 +1877,9 @@ int same(node *); const char *type(); int force_tprint(); +#ifdef ENABLE_MULTIBYTE + node_type get_node_type(); +#endif }; class kern_pair_node : public node { @@ -5225,6 +5303,55 @@ return 0; } +#ifdef ENABLE_MULTIBYTE +kword_space_node::kword_space_node(color *c, node *x) : word_space_node(0, c, new width_list(0, 0), x) +{} + +node *kword_space_node::copy() +{ + return new kword_space_node(col); +} +newline_space_node::newline_space_node(hunits d, color *c, node *x) : word_space_node(d, c, new width_list(0, 0), x) +{} + +node *newline_space_node::copy() +{ + return new newline_space_node(n, col); +} + +const char *kword_space_node::type() +{ + return "kword_space_node"; +} +const char *newline_space_node::type() +{ + return "newline_space_node"; +} + +node_type node::get_node_type() +{ + return NODE_ANOTHER; +} +node_type glyph_node::get_node_type() +{ + return NODE_GLYPH; +} + +node_type ligature_node::get_node_type() +{ + return NODE_ANOTHER; +} + +node_type kword_space_node::get_node_type() +{ + return NODE_KWORD_SPACE; +} +node_type newline_space_node::get_node_type() +{ + return NODE_NEWLINE_SPACE; +} +#endif + int unbreakable_space_node::same(node *nd) { return n == ((unbreakable_space_node *)nd)->n @@ -5625,6 +5752,28 @@ return 0; } +#ifdef ENABLE_MULTIBYTE +int get_fontset_fontno(int n, wchar wc) +{ + if (n >= 0 && n < font_table_size && font_table[n] != 0) { + /* XXX: external_name should be used? */ + int fn = font::get_fontset_font(font_table[n]->get_name().contents(), wc); + if (fn >= 0) { + symbol nm(font::font_name_table[fn]); + int nn = symbol_fontno(nm); + if (nn < 0) { + nn = next_available_font_position(); + if (!mount_font(nn, nm)) { + return -1; /* XXX */ + } + } + return nn; + } + } + return n; +} +#endif + hunits env_digit_width(environment *env) { node *n = make_glyph_node(charset_table['0'], env); --- groff-1.18.1.1.orig/src/roff/groff/groff.man +++ groff-1.18.1.1/src/roff/groff/groff.man @@ -15,6 +15,10 @@ A copy of the Free Documentation License is included as a file called FDL in the main directory of the groff source package. .. +.ig +A copy of the GNU Free Documentation License is also available in this +Debian package as /usr/share/doc/groff-base/copyright. +.. . .\" -------------------------------------------------------------------- .\" Setup @@ -118,7 +122,7 @@ .c -------------------------------------------------------------------- .c ShortOpt ([char [punct]]) .c -.c `-c' somwhere in the text +.c `-c' somewhere in the text .c second arg is punctuation .c .de ShortOpt @@ -130,7 +134,7 @@ .c -------------------------------------------------------------------- .c LongOpt ([name [punct]]) .c -.c `--name' somwhere in the text +.c `--name' somewhere in the text .c second arg is punctuation .c .de LongOpt @@ -314,7 +318,7 @@ .B groff program allows to control the whole .I groff -system by comand line options. +system by command line options. . This is a great simplification in comparison to the classical case (which uses pipes only). @@ -610,7 +614,7 @@ . . .\" -------------------------------------------------------------------- -.SS Tranparent Options +.SS Transparent Options .\" -------------------------------------------------------------------- . The following options are transparently handed over to the formatter @@ -695,7 +699,7 @@ is much easier than .IR "classical roff" . . -This section gives an overview of the parts that consitute the groff +This section gives an overview of the parts that constitute the groff system. . It complements @@ -948,6 +952,10 @@ Text output using the EBCDIC code page IBM cp1047 (e.g. OS/390 Unix). . .TP +.B nippon +Text output using the Japanese-EUC character set. +. +.TP .B dvi TeX DVI format. . @@ -956,6 +964,12 @@ HTML output. . .TP +.B ascii8 +For typewriter-like devices. Unlike +.BR ascii , +this device is 8 bit clean. This device is intended to be used +for codesets other than ASCII and ISO-8859-1. +.TP .B latin1 Text output using the ISO Latin-1 (ISO 8859-1) character set; see .BR iso_8859_1 (7). @@ -1031,7 +1045,7 @@ . .P Today, most printing or drawing hardware is handled by the operating -system, by device drivers, or by software interfaces, usally accepting +system, by device drivers, or by software interfaces, usually accepting PostScript. . Consequently, there isn't an urgent need for more hardware device --- groff-1.18.1.1.orig/src/roff/groff/groff.cc +++ groff-1.18.1.1/src/roff/groff/groff.cc @@ -107,6 +107,7 @@ program_name = argv[0]; static char stderr_buf[BUFSIZ]; setbuf(stderr, stderr_buf); + init_encoding_handler(); assert(NCOMMANDS <= MAX_COMMANDS); string Pargs, Largs, Fargs; int vflag = 0; --- groff-1.18.1.1.orig/src/include/encoding.h +++ groff-1.18.1.1/src/include/encoding.h @@ -0,0 +1,175 @@ +// -*- C++ -*- +/* Copyright (c) 2001 Fumitoshi UKAI + +This file is part of groff. + +groff is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +groff is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#ifndef ENCODING_H +#define ENCODING_H + +#include + +#ifdef ENABLE_MULTIBYTE +typedef int wchar; // negative is used for charcode & index +#else +typedef char wchar; +#endif + +#include + +#ifdef __cplusplus +class encoding_istream { +public: + encoding_istream() {}; + virtual ~encoding_istream() {}; + virtual int getbyte() = 0; + virtual int peekbyte() = 0; + virtual void ungetbyte(int ch) = 0; +}; + +class encoding_istream_str: public encoding_istream { +private: + const unsigned char *s; + int *i; + encoding_istream_str() {}; +public: + encoding_istream_str(const unsigned char *s0, int *i0) : s(s0), i(i0) {}; + ~encoding_istream_str() {}; + inline int getbyte() { return s[(*i)++]; }; + inline int peekbyte() { return s[(*i)]; }; + inline void ungetbyte(int ch) { --(*i); }; +}; + +class encoding_istream_fp: public encoding_istream { +private: + FILE *fp; +public: + encoding_istream_fp(FILE *fp0) : fp(fp0) {}; + ~encoding_istream_fp() {}; + inline int getbyte() { return fgetc(fp); }; + inline int peekbyte() { int ch = fgetc(fp); ungetc(ch, fp); return ch; }; + inline void ungetbyte(int ch) { ungetc(ch, fp); }; +}; + +class encoding_ostream { +public: + encoding_ostream() {}; + virtual ~encoding_ostream() {}; + virtual void putbyte(unsigned char ch) = 0; +}; + +class encoding_ostream_str: public encoding_ostream { +private: + unsigned char *s; + int *i; + int len; + encoding_ostream_str() {}; +public: + encoding_ostream_str(unsigned char *s0, int *i0, int max) : s(s0), i(i0), len(max) {}; + ~encoding_ostream_str() {}; + inline void putbyte(unsigned char ch) { + if (*i < len) + s[(*i)++] = ch; + } +}; + +class encoding_ostream_fp: public encoding_ostream { +private: + FILE *fp; + const char *format; +public: + encoding_ostream_fp(FILE *ofp, const char *fmt = "%c") : fp(ofp), format(fmt) {}; + ~encoding_ostream_fp() {}; + inline void putbyte(unsigned char ch) { + fprintf(fp, format, ch); + } +}; + +class encoding_handler { +public: + encoding_handler() {}; + virtual ~encoding_handler() {}; + + // name of this encoding_handler + virtual const char *name() { return ""; }; + + // check if this byte is byte in multibyte character in this encoding? + virtual int is_wchar_byte(unsigned char c) { return 0; }; + + // make new wchar from c0 (beginning of multibytes) and rest from `in' + virtual wchar make_wchar(unsigned char c0, encoding_istream& in) { + return wchar(c0); + } + // make new wchar from c0 (beginning of multibytes) and rest from `fp' + virtual wchar make_wchar(unsigned char c0, FILE *fp) { + encoding_istream_fp in(fp); + return make_wchar(c0, in); + } + // make new wchar from c0 (beginning of multibtyes) and rest from + // s[*i], *i will be changed to point the byte of next character. + virtual wchar make_wchar(unsigned char c0, const unsigned char *s, int *i) { + encoding_istream_str in(s, i); + return make_wchar(c0, in); + } + + // put wchar to outputstream + // returns number of bytes written + virtual int put_wchar(wchar wc, encoding_ostream& eos) { + eos.putbyte((unsigned char)wc); + return 1; + } + // put wchar to `fp' using `fmt' + // returns number of bytes written + virtual int put_wchar(wchar wc, FILE *fp, const char *fmt = "%c") { + encoding_ostream_fp out(fp, fmt); + return put_wchar(wc, out); + } + // put wchar to s[*i] (until maxlen) + // *i will be changed to point the byte of next character. + virtual int put_wchar(wchar wc, unsigned char *s, int *i, int maxlen) { + encoding_ostream_str out(s, i, maxlen); + return put_wchar(wc, out); + } + + // maximum number of bytes of multibyte character in this encoding + virtual int max_wchar_len() { return 1; }; + +}; + +encoding_handler* select_input_encoding_handler(const char* encoding_name); +encoding_handler* select_output_encoding_handler(const char* encoding_name); +extern encoding_handler* input_encoding; +extern encoding_handler* output_encoding; +void init_encoding_handler(); + +// check if wc is wchar? +int is_wchar_code(wchar wc); + +// check if wc is wchar & can be represented in single byte? +int is_wchar_singlebyte(wchar wc); + +// get singlebyte representation of wchar (if is_wchar_singlebyte(wc)) +unsigned char wchar_singlebyte(wchar wc); + +// get actual wide character code +int wchar_code(wchar wc); + +// make wchar from wide character code +int make_wchar(int w); + +#endif + +#endif /* ENCODING_H */ --- groff-1.18.1.1.orig/src/include/config.h +++ groff-1.18.1.1/src/include/config.h @@ -0,0 +1,187 @@ +/* src/include/config.h. Generated by configure. */ +/* src/include/config.hin. Generated from configure.ac by autoheader. */ + +/* Define if your C++ doesn't understand `delete []'. */ +/* #undef ARRAY_DELETE_NEEDS_SIZE */ + +/* Define if you want to use multibyte extension. */ +#define ENABLE_MULTIBYTE 1 + +/* Define if you have a C++ . */ +#define HAVE_CC_LIMITS_H 1 + +/* Define if you have a C++ . */ +/* #undef HAVE_CC_OSFCN_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_DIRENT_H 1 + +/* Define to 1 if you have the `fmod' function. */ +#define HAVE_FMOD 1 + +/* Define to 1 if you have the `getcwd' function. */ +#define HAVE_GETCWD 1 + +/* Define to 1 if you have the `getpagesize' function. */ +#define HAVE_GETPAGESIZE 1 + +/* Define to 1 if you have the `gettimeofday' function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isatty' function. */ +#define HAVE_ISATTY 1 + +/* Define if you have and nl_langinfo(CODESET). */ +#define HAVE_LANGINFO_CODESET 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MATH_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define if you have mkstemp(). */ +#define HAVE_MKSTEMP 1 + +/* Define to 1 if you have a working `mmap' system call. */ +#define HAVE_MMAP 1 + +/* Define to 1 if you have the `putenv' function. */ +#define HAVE_PUTENV 1 + +/* Define to 1 if you have the `rename' function. */ +#define HAVE_RENAME 1 + +/* Define to 1 if you have the `snprintf' function. */ +#define HAVE_SNPRINTF 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strcasecmp' function. */ +#define HAVE_STRCASECMP 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strncasecmp' function. */ +#define HAVE_STRNCASECMP 1 + +/* Define to 1 if you have the `strsep' function. */ +#define HAVE_STRSEP 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define if defines struct exception. */ +#define HAVE_STRUCT_EXCEPTION 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_DIR_H 1 + +/* Define if you have sys_errlist in or in . */ +#define HAVE_SYS_ERRLIST 1 + +/* Define if you have sysnerr in or . */ +#define HAVE_SYS_NERR 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define if the host's encoding is EBCDIC. */ +/* #undef IS_EBCDIC_HOST */ + +/* Define if localtime() takes a long * not a time_t *. */ +/* #undef LONG_FOR_TIME_T */ + +/* Define if your C++ doesn't declare gettimeofday(). */ +/* #undef NEED_DECLARATION_GETTIMEOFDAY */ + +/* Define if your C++ doesn't declare hypot(). */ +/* #undef NEED_DECLARATION_HYPOT */ + +/* Define if your C++ doesn't declare pclose(). */ +/* #undef NEED_DECLARATION_PCLOSE */ + +/* Define if your C++ doesn't declare popen(). */ +/* #undef NEED_DECLARATION_POPEN */ + +/* Define if your C++ doesn't declare putenv(). */ +/* #undef NEED_DECLARATION_PUTENV */ + +/* Define if your C++ doesn't declare strcasecmp(). */ +/* #undef NEED_DECLARATION_STRCASECMP */ + +/* Define if your C++ doesn't declare strncasecmp(). */ +/* #undef NEED_DECLARATION_STRNCASECMP */ + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "" + +/* Define if the printer's page size is A4. */ +#define PAGEA4 1 + +/* Define as the return type of signal handlers (`int' or `void'). */ +#define RETSIGTYPE void + +/* Define if srand() returns void not int. */ +#define RET_TYPE_SRAND_IS_VOID 1 + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to 1 if `sys_siglist' is declared by or . */ +#define SYS_SIGLIST_DECLARED 1 + +/* Define if your C++ compiler uses a traditional (Reiser) preprocessor. */ +/* #undef TRADITIONAL_CPP */ + +/* Define if the 0200 bit of the status returned by wait() indicates whether a + core image was produced for a process that was terminated by a signal. */ +/* #undef WCOREFLAG */ + +/* Define if -D_POSIX_SOURCE is necessary. */ +/* #undef _POSIX_SOURCE */ + +/* Define if you have ISC 3.x or 4.x. */ +/* #undef _SYSV3 */ + +/* Define uintmax_t to `unsigned long' or `unsigned long long' if + does not exist. */ +/* #undef uintmax_t */ --- groff-1.18.1.1.orig/src/include/lib.h +++ groff-1.18.1.1/src/include/lib.h @@ -88,8 +88,15 @@ extern char invalid_char_table[]; +#include "encoding.h" /* XXX: ukai */ + inline int invalid_input_char(int c) { +#ifdef ENABLE_MULTIBYTE + if (input_encoding->is_wchar_byte(c)) + return 0; + else +#endif return c >= 0 && invalid_char_table[c]; } --- groff-1.18.1.1.orig/src/include/font.h +++ groff-1.18.1.1/src/include/font.h @@ -18,11 +18,17 @@ with groff; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include "encoding.h" + typedef void (*FONT_COMMAND_HANDLER)(const char *, const char *, const char *, int); struct font_kern_list; struct font_char_metric; +#ifdef ENABLE_MULTIBYTE +struct fontset_list; +struct font_wchar_metric; +#endif struct font_widths_cache; class font { @@ -53,6 +59,9 @@ const char *get_special_device_encoding(int index); const char *get_name(); const char *get_internal_name(); +#ifdef ENABLE_MULTIBYTE + const char *get_subfont_name(int index); +#endif static int scan_papersize(const char *, const char **, double *, double *); @@ -62,6 +71,9 @@ static int load_desc(); static int name_to_index(const char *); static int number_to_index(int); +#ifdef ENABLE_MULTIBYTE + static int wchar_index(wchar); +#endif static FONT_COMMAND_HANDLER set_unknown_desc_command_handler(FONT_COMMAND_HANDLER); @@ -76,6 +88,11 @@ static int spare2; static int sizescale; static int tcommand; +#ifdef ENABLE_MULTIBYTE + // XXX: should be in charinfo or font_wchar_metric? + static int lowerwchar; + static int wcharkern; +#endif static int pass_filenames; static int use_charnames_in_special; @@ -83,13 +100,27 @@ static const char **style_table; static const char *family; static int *sizes; +#ifdef ENABLE_MULTIBYTE + // fontsets - sub font list + static fontset_list *fontsets; + // get fontset for `wc' in current font `fname' + static int get_fontset_font(const char *fname, wchar wc); + // is the fontno's font load on demand? + static int is_on_demand(int fontno); +#endif private: unsigned ligatures; font_kern_list **kern_hash_table; int space_width; - short *ch_index; + short *ch_index; /* XXX: this is used unless font_wchar_metric. */ int nindices; font_char_metric *ch; +#ifdef ENABLE_MULTIBYTE + // font metric for wchar + font_wchar_metric *wch; + // get font metric for wchar indexed by c + font_wchar_metric *get_font_wchar_metric(int c); +#endif int ch_used; int ch_size; int special; --- groff-1.18.1.1.orig/src/include/config.hin +++ groff-1.18.1.1/src/include/config.hin @@ -1,84 +1,96 @@ -/* src/include/config.hin. Generated automatically from configure.ac by autoheader. */ +/* src/include/config.hin. Generated from configure.ac by autoheader. */ /* Define if your C++ doesn't understand `delete []'. */ #undef ARRAY_DELETE_NEEDS_SIZE +/* Define if you want to use multibyte extension. */ +#undef ENABLE_MULTIBYTE + /* Define if you have a C++ . */ #undef HAVE_CC_LIMITS_H /* Define if you have a C++ . */ #undef HAVE_CC_OSFCN_H -/* Define if you have the header file. */ +/* Define to 1 if you have the header file. */ #undef HAVE_DIRENT_H -/* Define if you have the `fmod' function. */ +/* Define to 1 if you have the `fmod' function. */ #undef HAVE_FMOD -/* Define if you have the `getcwd' function. */ +/* Define to 1 if you have the `getcwd' function. */ #undef HAVE_GETCWD -/* Define if you have the `getpagesize' function. */ +/* Define to 1 if you have the `getpagesize' function. */ #undef HAVE_GETPAGESIZE -/* Define if you have the `gettimeofday' function. */ +/* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY -/* Define if you have the header file. */ +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `isatty' function. */ +#undef HAVE_ISATTY + +/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET + +/* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H -/* Define if you have the header file. */ +/* Define to 1 if you have the header file. */ #undef HAVE_MATH_H +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + /* Define if you have mkstemp(). */ #undef HAVE_MKSTEMP -/* Define if you have a working `mmap' system call. */ +/* Define to 1 if you have a working `mmap' system call. */ #undef HAVE_MMAP -/* Define if you have the `putenv' function. */ +/* Define to 1 if you have the `putenv' function. */ #undef HAVE_PUTENV -/* Define if you have the `rename' function. */ +/* Define to 1 if you have the `rename' function. */ #undef HAVE_RENAME -/* Define if you have the `snprintf' function. */ +/* Define to 1 if you have the `snprintf' function. */ #undef HAVE_SNPRINTF -/* Define if you have the `isatty' function. */ -#undef HAVE_ISATTY - -/* Define if you have the header file. */ +/* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H -/* Define if you have the header file. */ +/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H -/* Define if you have the `strcasecmp' function. */ +/* Define to 1 if you have the `strcasecmp' function. */ #undef HAVE_STRCASECMP -/* Define if you have the `strerror' function. */ +/* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR -/* Define if you have the header file. */ +/* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H -/* Define if you have the header file. */ +/* Define to 1 if you have the header file. */ #undef HAVE_STRING_H -/* Define if you have the `strncasecmp' function. */ +/* Define to 1 if you have the `strncasecmp' function. */ #undef HAVE_STRNCASECMP -/* Define if you have the `strsep' function. */ +/* Define to 1 if you have the `strsep' function. */ #undef HAVE_STRSEP -/* Define if you have the `strtol' function. */ +/* Define to 1 if you have the `strtol' function. */ #undef HAVE_STRTOL /* Define if defines struct exception. */ #undef HAVE_STRUCT_EXCEPTION -/* Define if you have the header file. */ +/* Define to 1 if you have the header file. */ #undef HAVE_SYS_DIR_H /* Define if you have sys_errlist in or in . */ @@ -87,10 +99,16 @@ /* Define if you have sysnerr in or . */ #undef HAVE_SYS_NERR -/* Define if you have the header file. */ +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H -/* Define if you have the header file. */ +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define if the host's encoding is EBCDIC. */ @@ -120,6 +138,21 @@ /* Define if your C++ doesn't declare strncasecmp(). */ #undef NEED_DECLARATION_STRNCASECMP +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + /* Define if the printer's page size is A4. */ #undef PAGEA4 @@ -129,7 +162,10 @@ /* Define if srand() returns void not int. */ #undef RET_TYPE_SRAND_IS_VOID -/* Define if `sys_siglist' is declared by or . */ +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define to 1 if `sys_siglist' is declared by or . */ #undef SYS_SIGLIST_DECLARED /* Define if your C++ compiler uses a traditional (Reiser) preprocessor. */ --- groff-1.18.1.1.orig/src/include/device.h +++ groff-1.18.1.1/src/include/device.h @@ -18,4 +18,9 @@ with groff; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#ifndef _DEVICE_H +#define _DEVICE_H + extern const char *device; + +#endif /* _DEVICE_H */ --- groff-1.18.1.1.orig/src/include/printer.h +++ groff-1.18.1.1/src/include/printer.h @@ -38,6 +38,8 @@ #include "color.h" +#include "encoding.h" + struct environment { int fontno; int size; @@ -63,6 +65,9 @@ printer(); virtual ~printer(); void load_font(int i, const char *name); +#ifdef ENABLE_MULTIBYTE + void set_wchar_char(wchar c, char *s, int i0, int len, const environment *env, int *widthp = 0); +#endif void set_ascii_char(unsigned char c, const environment *env, int *widthp = 0); void set_special_char(const char *nm, const environment *env, --- groff-1.18.1.1.orig/src/include/driver.h +++ groff-1.18.1.1/src/include/driver.h @@ -27,6 +27,7 @@ #include #include #include +#include "encoding.h" // XXX: ukai #include "errarg.h" #include "error.h" #include "font.h" --- groff-1.18.1.1.orig/src/utils/tfmtodit/tfmtodit.cc +++ groff-1.18.1.1/src/utils/tfmtodit/tfmtodit.cc @@ -650,7 +650,7 @@ gives the groff name of the character, `i' gives its index in the encoding, which is filled in later (-1 if it does not appear). */ -struct { +struct S { const char *ch; int i; } lig_chars[] = { @@ -670,7 +670,7 @@ // Each possible ligature appears in this table. -struct { +struct S2 { unsigned char c1, c2, res; const char *ch; } lig_table[] = { --- groff-1.18.1.1.orig/src/xditview/encoding.h +++ groff-1.18.1.1/src/xditview/encoding.h @@ -0,0 +1,31 @@ +// -*- C++ -*- +/* Copyright (c) 2001 Fumitoshi UKAI + +This file is part of groff. + +groff is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +groff is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#ifndef ENCODING_H +#define ENCODING_H + +#include "config.h" + +#ifdef ENABLE_MULTIBYTE +typedef unsigned int wchar; +#else +typedef char wchar; +#endif + +#endif --- groff-1.18.1.1.orig/src/xditview/DviChar.c +++ groff-1.18.1.1/src/xditview/DviChar.c @@ -5,7 +5,10 @@ * font indexes and back */ -#include "DviChar.h" +#include +#include "config.h" +#include "DviChar.h" +#include "encoding.h" extern char *xmalloc(); @@ -21,7 +24,7 @@ static int standard_maps_loaded = 0; static void load_standard_maps (); static int hash_name (); -static dispose_hash(), compute_hash(); +static void dispose_hash(), compute_hash(); DviCharNameMap * DviFindMap (encoding) @@ -58,7 +61,7 @@ compute_hash (map); } -static +static void dispose_hash (map) DviCharNameMap *map; { @@ -88,7 +91,7 @@ return i; } -static +static void compute_hash (map) DviCharNameMap *map; { @@ -120,7 +123,10 @@ { int i; DviCharNameHash *h; - +#ifdef ENABLE_MULTIBYTE + if (map->char_index) + return (*map->char_index)(map, name); +#endif i = hash_name (name) % DVI_HASH_SIZE; for (h = map->buckets[i]; h; h=h->next) if (!strcmp (h->name, name)) @@ -128,9 +134,47 @@ return -1; } +#ifdef ENABLE_MULTIBYTE +#include +void +DviChar2XChar2b(int c, XChar2b *xc) +{ + /* XXX: can we assume 'c' is EUC-JP ? */ + xc->byte1 = (c >> 8) & 0x7f; + xc->byte2 = (c) &0x7f; + return; +} + +int +DviCharIndexJISX0208_1983(map, name) + DviCharNameMap *map; + char *name; +{ + /* XXX: can we assume name points EUC-JP chars? */ + unsigned char ub = *name, lb = *(name + 1); + int wc; + wc = (name[0] & 0xff) << 8; + wc |= (name[1] & 0xff); + return(wc); +} + +static DviCharNameMap JISX0208_1983_0_map = { + "jisx0208.1983-0", + 0, + DviChar2XChar2b, + DviCharIndexJISX0208_1983, +{ +{ "DummyEntry", /* 0 */}, +}}; +#endif + static DviCharNameMap ISO8859_1_map = { "iso8859-1", 0, +#ifdef ENABLE_MULTIBYTE + 0, + 0, +#endif { { 0, /* 0 */}, { 0, /* 1 */}, @@ -393,6 +437,10 @@ static DviCharNameMap Adobe_Symbol_map = { "adobe-fontspecific", 1, +#ifdef ENABLE_MULTIBYTE + 0, + 0, +#endif { { 0, /* 0 */}, { 0, /* 1 */}, @@ -659,4 +707,7 @@ standard_maps_loaded = 1; DviRegisterMap (&ISO8859_1_map); DviRegisterMap (&Adobe_Symbol_map); +#ifdef ENABLE_MULTIBYTE + DviRegisterMap (&JISX0208_1983_0_map); +#endif } --- groff-1.18.1.1.orig/src/xditview/config.h +++ groff-1.18.1.1/src/xditview/config.h @@ -0,0 +1,4 @@ +#ifndef _config_h +#include "../include/config.h" +#define _config_h +#endif --- groff-1.18.1.1.orig/src/xditview/GXditview.ad +++ groff-1.18.1.1/src/xditview/GXditview.ad @@ -55,3 +55,25 @@ GXditview.promptShell.promptDialog.cancel.label: Cancel GXditview.promptShell.promptDialog.cancel.translations: #override \ : Cancel() unset() + +GXditview*fontMap: \ +TR -adobe-times-medium-r-normal--*-100-*-*-*-*-iso8859-1\n\ +TI -adobe-times-medium-i-normal--*-100-*-*-*-*-iso8859-1\n\ +TB -adobe-times-bold-r-normal--*-100-*-*-*-*-iso8859-1\n\ +TBI -adobe-times-bold-i-normal--*-100-*-*-*-*-iso8859-1\n\ +CR -adobe-courier-medium-r-normal--*-100-*-*-*-*-iso8859-1\n\ +CI -adobe-courier-medium-o-normal--*-100-*-*-*-*-iso8859-1\n\ +CB -adobe-courier-bold-r-normal--*-100-*-*-*-*-iso8859-1\n\ +CBI -adobe-courier-bold-o-normal--*-100-*-*-*-*-iso8859-1\n\ +HR -adobe-helvetica-medium-r-normal--*-100-*-*-*-*-iso8859-1\n\ +HI -adobe-helvetica-medium-o-normal--*-100-*-*-*-*-iso8859-1\n\ +HB -adobe-helvetica-bold-r-normal--*-100-*-*-*-*-iso8859-1\n\ +HBI -adobe-helvetica-bold-o-normal--*-100-*-*-*-*-iso8859-1\n\ +NR -adobe-new century schoolbook-medium-r-normal--*-100-*-*-*-*-iso8859-1\n\ +NI -adobe-new century schoolbook-medium-i-normal--*-100-*-*-*-*-iso8859-1\n\ +NB -adobe-new century schoolbook-bold-r-normal--*-100-*-*-*-*-iso8859-1\n\ +NBI -adobe-new century schoolbook-bold-i-normal--*-100-*-*-*-*-iso8859-1\n\ +S -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\n\ +SS -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\n\ +M -misc-fixed-medium-r-normal--*-100-*-*-*-*-jisx0208.1983-0\n\ +G -misc-fixed-medium-r-normal--*-100-*-*-*-*-jisx0208.1983-0 --- groff-1.18.1.1.orig/src/xditview/GXditview-ad.h +++ groff-1.18.1.1/src/xditview/GXditview-ad.h @@ -50,3 +50,24 @@ "GXditview.promptShell.promptDialog.cancel.label: Cancel", "GXditview.promptShell.promptDialog.cancel.translations: #override \ : Cancel() unset()", +"GXditview*fontMap: \ +TR -adobe-times-medium-r-normal--*-100-*-*-*-*-iso8859-1\\n\ +TI -adobe-times-medium-i-normal--*-100-*-*-*-*-iso8859-1\\n\ +TB -adobe-times-bold-r-normal--*-100-*-*-*-*-iso8859-1\\n\ +TBI -adobe-times-bold-i-normal--*-100-*-*-*-*-iso8859-1\\n\ +CR -adobe-courier-medium-r-normal--*-100-*-*-*-*-iso8859-1\\n\ +CI -adobe-courier-medium-o-normal--*-100-*-*-*-*-iso8859-1\\n\ +CB -adobe-courier-bold-r-normal--*-100-*-*-*-*-iso8859-1\\n\ +CBI -adobe-courier-bold-o-normal--*-100-*-*-*-*-iso8859-1\\n\ +HR -adobe-helvetica-medium-r-normal--*-100-*-*-*-*-iso8859-1\\n\ +HI -adobe-helvetica-medium-o-normal--*-100-*-*-*-*-iso8859-1\\n\ +HB -adobe-helvetica-bold-r-normal--*-100-*-*-*-*-iso8859-1\\n\ +HBI -adobe-helvetica-bold-o-normal--*-100-*-*-*-*-iso8859-1\\n\ +NR -adobe-new century schoolbook-medium-r-normal--*-100-*-*-*-*-iso8859-1\\n\ +NI -adobe-new century schoolbook-medium-i-normal--*-100-*-*-*-*-iso8859-1\\n\ +NB -adobe-new century schoolbook-bold-r-normal--*-100-*-*-*-*-iso8859-1\\n\ +NBI -adobe-new century schoolbook-bold-i-normal--*-100-*-*-*-*-iso8859-1\\n\ +S -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\\n\ +SS -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\\n\ +M -misc-fixed-medium-r-normal--*-100-*-*-*-*-jisx0208.1983-0\\n\ +G -misc-fixed-medium-r-normal--*-100-*-*-*-*-jisx0208.1983-0", --- groff-1.18.1.1.orig/src/xditview/page.c +++ groff-1.18.1.1/src/xditview/page.c @@ -28,6 +28,7 @@ return m; } +void DestroyFileMap (m) DviFileMap *m; { @@ -39,6 +40,7 @@ } } +void ForgetPagePositions (dw) DviWidget dw; { @@ -46,6 +48,7 @@ dw->dvi.file_map = 0; } +void RememberPagePosition(dw, number) DviWidget dw; int number; @@ -64,6 +67,7 @@ m->position = ftell (dw->dvi.file); } +int SearchPagePosition (dw, number) DviWidget dw; int number; @@ -75,6 +79,7 @@ return m->position; } +void FileSeek(dw, position) DviWidget dw; long position; --- groff-1.18.1.1.orig/src/xditview/xtotroff.c +++ groff-1.18.1.1/src/xditview/xtotroff.c @@ -2,6 +2,7 @@ * xtotroff * * convert X font metrics into troff font metrics + * XXX: ENABLE_MULTIBYTE may not work yet */ #include @@ -10,6 +11,7 @@ #include #include #include +#include "config.h" #include "XFontName.h" #include "DviChar.h" @@ -171,6 +173,47 @@ fprintf (out, "spacewidth %d\n", w); } fprintf (out, "charset\n"); +#if 0 /* def ENABLE_MULTIBYTE */ + if (fi->min_byte1 != 0 || fi->max_byte1 != 0) { + /* + * 2 byte code font. + */ + int N; + int D = fi->max_char_or_byte2 - fi->min_char_or_byte2 + 1; + int max = (fi->max_byte1 - fi->min_byte1 + 1) * + (fi->max_char_or_byte2 - fi->min_char_or_byte2 + 1); + unsigned byte1; + unsigned byte2; + unsigned int euc_code; + + for (N = 0; N < max; N++) { + byte1 = N / D + fi->min_byte1; + byte2 = N % D + fi->min_char_or_byte2; + euc_code = ((byte1 << 8) | byte2) & 0xffff | 0x8080; + wid = fi->max_bounds.width; + fputc(byte1 & 0xff | 0x80, out);/* output EUC code */ + fputc(byte2 & 0xff | 0x80, out);/* output EUC code */ + fprintf (out, "\t%d", wid); + if (groff_flag) { + int param[5]; + param[0] = fi->max_bounds.ascent; + param[1] = fi->max_bounds.descent; + param[2] = 0 /* charRBearing (fi, c) - wid */; + param[3] = 0 /* charLBearing (fi, c) */; + param[4] = 0; /* XXX */ + for (j = 0; j < 5; j++) + if (param[j] < 0) + param[j] = 0; + for (j = 4; j >= 0; j--) + if (param[j] != 0) + break; + for (k = 0; k <= j; k++) + fprintf (out, ",%d", param[k]); + } + fprintf (out, "\t0\t%#x\n", euc_code); + } + } else +#endif /* ENABLE_MULTIBYTE */ for (c = fi->min_char_or_byte2; c <= fi->max_char_or_byte2; c++) { char *name = DviCharName (char_map,c,0); if (charExists (fi, c) && (groff_flag || name)) { --- groff-1.18.1.1.orig/src/xditview/Dvi.c +++ groff-1.18.1.1/src/xditview/Dvi.c @@ -4,6 +4,8 @@ #endif /* lint */ #endif /* SABER */ +#include "config.h" + /* * Dvi.c - Dvi display widget * @@ -49,6 +51,8 @@ NBI -adobe-new century schoolbook-bold-i-normal--*-100-*-*-*-*-iso8859-1\n\ S -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\n\ SS -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\n\ +M -misc-fixed-medium-r-normal--*-100-*-*-*-*-jisx0208.1983-0\n\ +G -misc-fixed-medium-r-normal--*-100-*-*-*-*-jisx0208.1983-0\ "; #define offset(field) XtOffset(DviWidget, field) @@ -94,6 +98,20 @@ static void SaveToFile (); +/* font.c */ +extern void ParseFontMap(); +extern void DestroyFontMap(); +extern void ForgetFonts(); + +/* page.c */ +extern void DestroyFileMap(); +extern int SearchPagePosition(); +extern void FileSeek(); +extern void ForgetPagePositions(); + +/* parse.c */ +extern int ParseInput(); + DviClassRec dviClassRec = { { &widgetClassRec, /* superclass */ @@ -406,6 +424,7 @@ return ret; } +void SetDevice (dw, name) DviWidget dw; char *name; @@ -559,6 +578,9 @@ DviWidgetClass super = (DviWidgetClass) wc->core_class.superclass; if (wc->command_class.save == InheritSaveToFile) wc->command_class.save = super->command_class.save; +#ifdef ENABLE_MULTIBYTE + DviInitLocale(); +#endif } /* --- groff-1.18.1.1.orig/src/xditview/DviP.h +++ groff-1.18.1.1/src/xditview/DviP.h @@ -8,6 +8,7 @@ #ifndef _XtDviP_h #define _XtDviP_h +#include "config.h" #include "Dvi.h" #include "DviChar.h" @@ -89,9 +90,17 @@ #define DVI_CHAR_CACHE_SIZE 1024 typedef struct _dviCharCache { +#ifdef ENABLE_MULTIBYTE + XTextItem16 cache[DVI_TEXT_CACHE_SIZE]; +#else XTextItem cache[DVI_TEXT_CACHE_SIZE]; +#endif char adjustable[DVI_TEXT_CACHE_SIZE]; +#ifdef ENABLE_MULTIBYTE + XChar2b char_cache[DVI_CHAR_CACHE_SIZE]; +#else char char_cache[DVI_CHAR_CACHE_SIZE]; +#endif int index; int max; int char_index; @@ -182,6 +191,7 @@ int word_flag; } DviPart; +extern int DviGetAndPut(); #define DviGetIn(dw,cp)\ (dw->dvi.tmpFile ? (\ DviGetAndPut (dw, cp) \ @@ -228,6 +238,11 @@ extern DeviceFont *QueryDeviceFont (); extern char *GetWord(), *GetLine(); + +#ifdef ENABLE_MULTIBYTE +extern void DviInitLocale(); +extern int DviGEtCharacter(); +#endif #endif /* _XtDviP_h */ --- groff-1.18.1.1.orig/src/xditview/parse.c +++ groff-1.18.1.1/src/xditview/parse.c @@ -9,15 +9,49 @@ #include #include #include +#include "config.h" #include "DviP.h" +#include "encoding.h" static int StopSeen = 0; -static ParseDrawFunction(), ParseDeviceControl(); -static push_env(), pop_env(); +static void ParseDrawFunction(), ParseDeviceControl(); +static void push_env(), pop_env(); + +/* draw.c */ +extern int PutCharacter(); +extern int PutNumberedCharacter(); +extern void HorizontalGoto(); +extern void Word(); +extern void VerticalGoto(); +extern void VerticalMove(); +extern void FlushCharCache(); +extern void Newline(); +extern void DrawLine(); +extern void DrawCircle(); +extern void DrawFilledCircle(); +extern void DrawEllipse(); +extern void DrawFilledEllipse(); +extern void DrawArc(); +extern void DrawPolygon(); +extern void DrawFilledPolygon(); +extern void DrawSpline(); + +/* Dvi.c */ +extern void SetDevice(); + +/* page.c */ +extern void RememberPagePosition(); + +/* font.c */ +extern void SetFontPosition(); + +/* lex.c */ +extern int GetNumber(); #define HorizontalMove(dw, delta) ((dw)->dvi.state->x += (delta)) +int ParseInput(dw) register DviWidget dw; { @@ -57,11 +91,17 @@ DviGetC(dw,&otherc)-'0'); /* fall through */ case 'c': /* single ascii character */ +#ifdef ENABLE_MULTIBYTE + DviGetCharacter(dw, Buffer); + if (Buffer[0] == ' ') + break; +#else DviGetC(dw,&c); if (c == ' ') break; Buffer[0] = c; Buffer[1] = '\0'; +#endif (void) PutCharacter (dw, Buffer); break; case 'C': @@ -69,10 +109,15 @@ (void) PutCharacter (dw, Buffer); break; case 't': +#ifdef ENABLE_MULTIBYTE + while (DviGetCharacter(dw, Buffer) != EOF + && Buffer[0] != ' ' && Buffer[0] != '\n') { +#else Buffer[1] = '\0'; while (DviGetC (dw, &c) != EOF && c != ' ' && c != '\n') { Buffer[0] = c; +#endif HorizontalMove (dw, PutCharacter (dw, Buffer)); } break; @@ -158,7 +203,7 @@ } } -static +static void push_env(dw) DviWidget dw; { @@ -177,7 +222,7 @@ dw->dvi.state = new; } -static +static void pop_env(dw) DviWidget dw; { @@ -188,7 +233,7 @@ XtFree ((char *) old); } -static +static void InitTypesetter (dw) DviWidget dw; { @@ -200,7 +245,7 @@ #define DRAW_ARGS_MAX 128 -static +static void ParseDrawFunction(dw, buf) DviWidget dw; char *buf; @@ -284,13 +329,12 @@ } } -static +static void ParseDeviceControl(dw) /* Parse the x commands */ DviWidget dw; { char str[20], str1[50]; int c, n; - extern int LastPage, CurrentPage; GetWord (dw, str, 20); switch (str[0]) { /* crude for now */ --- groff-1.18.1.1.orig/src/xditview/device.c +++ groff-1.18.1.1/src/xditview/device.c @@ -2,10 +2,12 @@ #include #include +#include #include #include +#include "config.h" #include "device.h" #ifndef FONTPATH @@ -48,6 +50,9 @@ Device *dev; struct charinfo *char_table[CHAR_TABLE_SIZE]; struct charinfo *code_table[256]; +#ifdef ENABLE_MULTIBYTE + struct charrange *range; +#endif }; struct charinfo { @@ -71,6 +76,15 @@ static struct charinfo *add_char(); static int read_charset_section(); static char *canonicalize_name(); +#ifdef ENABLE_MULTIBYTE +struct charrange { + struct charrange *next; + int width; + int start_code; + int end_code; +}; +static void add_charrange(); +#endif static Device *new_device(name) @@ -256,6 +270,9 @@ f->char_table[i] = 0; for (i = 0; i < 256; i++) f->code_table[i] = 0; +#ifdef ENABLE_MULTIBYTE + f->range = 0; +#endif return f; } @@ -267,6 +284,15 @@ if (!f) return; +#ifdef ENABLE_MULTIBYTE + { + struct charrange *cp, *cp2; + for (cp = f->range; cp != NULL; cp = cp2) { + cp2 = cp->next; + XtFree((char *)cp); + } + } +#endif XtFree(f->name); for (i = 0; i < CHAR_TABLE_SIZE; i++) { struct charinfo *ptr = f->char_table[i]; @@ -342,6 +368,20 @@ { struct charinfo *p; +#ifdef ENABLE_MULTIBYTE + int wc; + extern DviWCharP(); + if (DviWCharP(name, &wc)) { + struct charrange *rp; + for (rp = f->range; rp != NULL; rp = rp->next) { + if (rp->start_code <= wc && wc <= rp->end_code) { + *widthp = scale_round(rp->width, ps, + f->dev->unitwidth); + return 1; + } + } + } +#endif name = canonicalize_name(name); for (p = f->char_table[hash_name(name) % CHAR_TABLE_SIZE];; p = p->next) { if (!p) @@ -424,6 +464,22 @@ return ci; } +#ifdef ENABLE_MULTIBYTE +static void +add_charrange(f, width, start_code, end_code) + DeviceFont *f; + int width, start_code, end_code; +{ + struct charrange *ci; + ci = (struct charrange *)XtMalloc(sizeof(struct charrange)); + ci->start_code = start_code; + ci->end_code = end_code; + ci->width = width; + ci->next = f->range; + f->range = ci; +} +#endif + /* Return non-zero for success. */ static @@ -439,11 +495,31 @@ int width; int code; char *p; +#ifdef ENABLE_MULTIBYTE + int scode, ecode; +#endif current_lineno++; name = strtok(buf, WS); if (!name) continue; /* ignore blank lines */ +#ifdef ENABLE_MULTIBYTE + if (sscanf(name, "u%X..u%X", &scode, &ecode) == 2) { + p = strtok((char *)0, WS); + if (!p) + break; + if (sscanf(p, "%d", &width) != 1) { + error("bad width field"); + return 0; + } + p = strtok((char *)0, WS); + if (!p) { + error("missing type field"); + return 0; + } + add_charrange(f, width, scode, ecode); + } else { +#endif p = strtok((char *)0, WS); if (!p) /* end of charset section */ break; @@ -479,6 +555,9 @@ } last_charinfo = add_char(f, name, width, code); } +#ifdef ENABLE_MULTIBYTE + } +#endif } return 1; } @@ -559,7 +638,7 @@ FILE *open_device_file(device_name, file_name, result) char *device_name, *file_name, **result; { - char *buf, *path; + char *buf; FILE *fp; buf = XtMalloc(3 + strlen(device_name) + 1 + strlen(file_name) + 1); --- groff-1.18.1.1.orig/src/xditview/XFontName.c +++ groff-1.18.1.1/src/xditview/XFontName.c @@ -225,6 +225,7 @@ return True; } +Bool XCopyFontName (name1, name2, fontNameAttributes) XFontName *name1, *name2; unsigned int fontNameAttributes; --- groff-1.18.1.1.orig/src/xditview/FontMap.jisx0208 +++ groff-1.18.1.1/src/xditview/FontMap.jisx0208 @@ -0,0 +1,2 @@ +M -misc-fixed-medium-r-normal--*-100-*-*-*-*-jisx0208.1983-0 +G -misc-fixed-medium-r-normal--*-100-*-*-*-*-jisx0208.1983-0 --- groff-1.18.1.1.orig/src/xditview/DviChar.h +++ groff-1.18.1.1/src/xditview/DviChar.h @@ -10,6 +10,8 @@ * CharSetRegistry from the CharSetEncoding */ +#include "config.h" + # define DVI_MAX_SYNONYMS 10 # define DVI_MAP_SIZE 256 # define DVI_HASH_SIZE 256 @@ -23,6 +25,10 @@ typedef struct _dviCharNameMap { char *encoding; int special; +#ifdef ENABLE_MULTIBYTE + void (*char2XChar2b)(/* int c, XChar2b *xc */); + int (*char_index)(/* struct _dviCharNameMap *map, char *name */); +#endif char *dvi_names[DVI_MAP_SIZE][DVI_MAX_SYNONYMS]; DviCharNameHash *buckets[DVI_HASH_SIZE]; } DviCharNameMap; --- groff-1.18.1.1.orig/src/xditview/xditview.c +++ groff-1.18.1.1/src/xditview/xditview.c @@ -46,6 +46,7 @@ #include #include +#include #include #include "Dvi.h" @@ -101,7 +102,7 @@ * Report the syntax for calling xditview. */ -static +static void Syntax(call) char *call; { @@ -126,12 +127,12 @@ char *name; void (*function)(); } menuEntries[] = { - "nextPage", NextPage, - "previousPage", PreviousPage, - "selectPage", SelectPage, - "print", Print, - "openFile", OpenFile, - "quit", Quit, + {"nextPage", NextPage}, + {"previousPage",PreviousPage}, + {"selectPage", SelectPage}, + {"print", Print}, + {"openFile", OpenFile}, + {"quit", Quit}, }; static void NextPageAction(), PreviousPageAction(), SelectPageAction(); @@ -139,17 +140,18 @@ static void AcceptAction(), CancelAction(); static void PrintAction(); static void RerasterizeAction(); +static void MakePrompt(); XtActionsRec xditview_actions[] = { - "NextPage", NextPageAction, - "PreviousPage", PreviousPageAction, - "SelectPage", SelectPageAction, - "Print", PrintAction, - "OpenFile", OpenFileAction, - "Rerasterize", RerasterizeAction, - "Quit", QuitAction, - "Accept", AcceptAction, - "Cancel", CancelAction, + {"NextPage", NextPageAction}, + {"PreviousPage", PreviousPageAction}, + {"SelectPage", SelectPageAction}, + {"Print", PrintAction}, + {"OpenFile", OpenFileAction}, + {"Rerasterize", RerasterizeAction}, + {"Quit", QuitAction}, + {"Accept", AcceptAction}, + {"Cancel", CancelAction}, }; #define MenuNextPage 0 @@ -318,6 +320,7 @@ static char fileBuf[1024]; +static void ResetMenuEntry (entry) Widget entry; { @@ -516,6 +519,7 @@ CancelAction (widget, event, params, num_params); } +static void MakePrompt(centerw, prompt, func, def) Widget centerw; char *prompt; --- groff-1.18.1.1.orig/src/xditview/font.c +++ groff-1.18.1.1/src/xditview/font.c @@ -9,10 +9,16 @@ #include #include #include +#include #include "DviP.h" #include "XFontName.h" -static DisposeFontSizes(); +static void DisposeFontSizes(); +void DestroyFontMap(); + +/* XFontName.c */ +extern Bool XParseFontName(); +extern Bool XFormatFontName(); static char * savestr (s) @@ -115,7 +121,7 @@ # define SizePosition 8 # define EncodingPosition 13 -static +static int ConvertFontNameToSize (n) char *n; { @@ -191,7 +197,7 @@ return sizes; } -static +static void DisposeFontSizes (dw, fs) DviWidget dw; DviFontSizeList *fs; @@ -263,6 +269,7 @@ return f; } +void ForgetFonts (dw) DviWidget dw; { @@ -322,6 +329,7 @@ } #endif +void ParseFontMap (dw) DviWidget dw; { @@ -357,6 +365,7 @@ dw->dvi.font_map = fm; } +void DestroyFontMap (font_map) DviFontMap *font_map; { @@ -374,6 +383,7 @@ /* ARGSUSED */ +void SetFontPosition (dw, position, dvi_name, extra) DviWidget dw; int position; --- groff-1.18.1.1.orig/src/xditview/draw.c +++ groff-1.18.1.1/src/xditview/draw.c @@ -10,6 +10,7 @@ #include #include #include +#include "config.h" /* math.h on a Sequent doesn't define M_PI, apparently */ #ifndef M_PI @@ -17,6 +18,7 @@ #endif #include "DviP.h" +#include "encoding.h" /* XXX */ #define DeviceToX(dw, n) ((int)((n) * (dw)->dvi.scale_factor + .5)) #define XPos(dw) (DeviceToX((dw), (dw)->dvi.state->x - \ @@ -25,6 +27,10 @@ static int FakeCharacter(); +/* font.c */ +extern int MaxFontPosition(); + +void HorizontalMove(dw, delta) DviWidget dw; int delta; @@ -32,6 +38,7 @@ dw->dvi.state->x += delta; } +void HorizontalGoto(dw, NewPosition) DviWidget dw; int NewPosition; @@ -39,6 +46,7 @@ dw->dvi.state->x = NewPosition; } +void VerticalMove(dw, delta) DviWidget dw; int delta; @@ -46,6 +54,7 @@ dw->dvi.state->y += delta; } +void VerticalGoto(dw, NewPosition) DviWidget dw; int NewPosition; @@ -53,6 +62,7 @@ dw->dvi.state->y = NewPosition; } +void AdjustCacheDeltas (dw) DviWidget dw; { @@ -94,14 +104,21 @@ } } +void FlushCharCache (dw) DviWidget dw; { if (dw->dvi.cache.char_index != 0) { AdjustCacheDeltas (dw); +#ifdef ENABLE_MULTIBYTE + XDrawText16 (XtDisplay (dw), XtWindow (dw), dw->dvi.normal_GC, + dw->dvi.cache.start_x, dw->dvi.cache.start_y, + dw->dvi.cache.cache, dw->dvi.cache.index + 1); +#else XDrawText (XtDisplay (dw), XtWindow (dw), dw->dvi.normal_GC, dw->dvi.cache.start_x, dw->dvi.cache.start_y, dw->dvi.cache.cache, dw->dvi.cache.index + 1); +#endif } dw->dvi.cache.index = 0; dw->dvi.cache.max = DVI_TEXT_CACHE_SIZE; @@ -115,6 +132,7 @@ dw->dvi.cache.start_y = dw->dvi.cache.y = YPos (dw); } +void Newline (dw) DviWidget dw; { @@ -123,6 +141,7 @@ dw->dvi.word_flag = 0; } +void Word (dw) DviWidget dw; { @@ -135,7 +154,6 @@ :\ (fi)->max_bounds.width\ ) - static int charExists (fi, c) @@ -152,14 +170,25 @@ || p->ascent != 0 || p->descent != 0 || p->attributes != 0); } -static +static void +#ifdef ENABLE_MULTIBYTE +DoCharacter (dw, c, wid, char2xchar2b) +#else DoCharacter (dw, c, wid) +#endif DviWidget dw; int c; int wid; /* width in device units */ +#ifdef ENABLE_MULTIBYTE + void (*char2xchar2b)(); +#endif { register XFontStruct *font; +#ifdef ENABLE_MULTIBYTE + register XTextItem16 *text; +#else register XTextItem *text; +#endif int x, y; x = XPos(dw); @@ -225,9 +254,25 @@ text->font = None; dw->dvi.cache.x += text->delta; } +#ifdef ENABLE_MULTIBYTE + if (charExists(font, c) || char2xchar2b) { +#else if (charExists(font, c)) { +#endif int w; +#ifdef ENABLE_MULTIBYTE + if (char2xchar2b) { + (*char2xchar2b)(c, + &dw->dvi.cache.char_cache[dw->dvi.cache.char_index++]); + } else { + dw->dvi.cache.char_cache[dw->dvi.cache.char_index]. + byte1 = (unsigned char)'\0'; + dw->dvi.cache.char_cache[dw->dvi.cache.char_index++]. + byte2 = (unsigned char)c; + } +#else dw->dvi.cache.char_cache[dw->dvi.cache.char_index++] = (char) c; +#endif ++text->nchars; w = charWidth(font, c); dw->dvi.cache.x += w; @@ -291,7 +336,11 @@ if (map) c = DviCharIndex (map, buf); if (c >= 0) +#ifdef ENABLE_MULTIBYTE + DoCharacter (dw, c, wid, map->char2XChar2b); +#else DoCharacter (dw, c, wid); +#endif else (void) FakeCharacter (dw, buf, wid); dw->dvi.state->font_number = prevFont; @@ -345,6 +394,7 @@ return 1; } +void PutNumberedCharacter (dw, c) DviWidget dw; int c; @@ -368,7 +418,11 @@ dw->dvi.state->font_size, c, &wid)) return; if (dw->dvi.native) { +#ifdef ENABLE_MULTIBYTE + DoCharacter (dw, c, wid, NULL); +#else DoCharacter (dw, c, wid); +#endif return; } map = QueryFontMap (dw, dw->dvi.state->font_number); @@ -379,7 +433,11 @@ name = device_name_for_code ((DeviceFont *)0, c)) { int code = DviCharIndex (map, name); if (code >= 0) { +#ifdef ENABLE_MULTIBYTE + DoCharacter (dw, code, wid, map->char2XChar2b); +#else DoCharacter (dw, code, wid); +#endif break; } if (FakeCharacter (dw, name, wid)) @@ -387,13 +445,14 @@ } } +void ClearPage (dw) DviWidget dw; { XClearWindow (XtDisplay (dw), XtWindow (dw)); } -static +static void setGC (dw) DviWidget dw; { @@ -417,7 +476,7 @@ } } -static +static void setFillGC (dw) DviWidget dw; { @@ -444,6 +503,7 @@ } } +void DrawLine (dw, x, y) DviWidget dw; int x, y; @@ -459,6 +519,7 @@ xp + DeviceToX (dw, x), yp + DeviceToX (dw, y)); } +void DrawCircle (dw, diam) DviWidget dw; int diam; @@ -473,6 +534,7 @@ d, d, 0, 64*360); } +void DrawFilledCircle (dw, diam) DviWidget dw; int diam; @@ -490,6 +552,7 @@ d, d, 0, 64*360); } +void DrawEllipse (dw, a, b) DviWidget dw; int a, b; @@ -501,6 +564,7 @@ DeviceToX (dw, a), DeviceToX (dw, b), 0, 64*360); } +void DrawFilledEllipse (dw, a, b) DviWidget dw; int a, b; @@ -515,6 +579,7 @@ DeviceToX (dw, a), DeviceToX (dw, b), 0, 64*360); } +void DrawArc (dw, x0, y0, x1, y1) DviWidget dw; int x0, y0, x1, y1; @@ -541,6 +606,7 @@ rad*2, rad*2, angle1, angle2); } +void DrawPolygon (dw, v, n) DviWidget dw; int *v; @@ -572,7 +638,7 @@ XtFree((char *)p); } - +void DrawFilledPolygon (dw, v, n) DviWidget dw; int *v; @@ -608,7 +674,7 @@ #define POINTS_MAX 10000 -static +static void appendPoint(points, pointi, x, y) XPoint *points; int *pointi; @@ -623,7 +689,7 @@ #define FLATNESS 1 -static +static void flattenCurve(points, pointi, x2, y2, x3, y3, x4, y4) XPoint *points; int *pointi; @@ -659,7 +725,7 @@ } } - +void DrawSpline (dw, v, n) DviWidget dw; int *v; --- groff-1.18.1.1.orig/src/xditview/lex.c +++ groff-1.18.1.1/src/xditview/lex.c @@ -2,8 +2,10 @@ #include #include #include +#include "config.h" #include "DviP.h" +int DviGetAndPut(dw, cp) DviWidget dw; int *cp; @@ -67,6 +69,7 @@ return Buffer; } +int GetNumber(dw) DviWidget dw; { @@ -90,6 +93,98 @@ DviUngetC(dw, c); return i; } + +#ifdef ENABLE_MULTIBYTE +#include +#include +#include +#include + +static iconv_t icd; +void +DviInitLocale() +{ + char *enc; + setlocale(LC_ALL, ""); + enc = nl_langinfo(CODESET); + icd = iconv_open("UCS-2BE", enc); +} + +int +DviGetCharacter(dw, cp) + DviWidget dw; + char *cp; +{ + char inbuf[8]; + char outbuf[8]; + char *inp, *outp; + size_t inbytesleft, outbytesleft = 8; + int i = 0; + int j; + int wc = 0; + int c; + size_t r; + + while (wc == 0) { + DviGetC(dw, &c); + if (c == EOF) + return EOF; + inbuf[i++] = c; + inbytesleft = i; + outbytesleft = BUFSIZ; + inp = inbuf; + outp = outbuf; + r = iconv(icd, &inp, &inbytesleft, &outp, &outbytesleft); + if (r == (size_t)-1) { + if (errno == EILSEQ) { + /* illegal sequence */ + } else if (errno == EINVAL) { + /* incomplete sequence */ + continue; + } else if (errno == E2BIG) { + /* no room to output? */ + + } + DviUngetC(dw, c); + } + /* ok - pass inbuf to cp */ + for (j = 0; j < i; j++) { + cp[j] = inbuf[j]; + } + cp[j] = '\0'; + return i; + } + /* NOT REACHED */ +} + +int +DviWCharP(char *name, int *wc) +{ + char outbuf[BUFSIZ]; + char *inp, *outp; + int inbytesleft, outbytesleft; + size_t r; + *wc = 0; + inp = name; + inbytesleft = strlen(name); + outp = outbuf; + outbytesleft = sizeof(outbuf)-1; + r = iconv(icd, &inp, &inbytesleft, &outp, &outbytesleft); + if (r < 0) { + return 0; + } + /* UCS-2 check */ + if (outbuf + 2 != outp) { + return 0; + } + for (inp = outbuf; inp < outp; inp++) { + *wc <<= 8; + *wc |= (*inp) & 0x0ff; + } + return 1; +} + +#endif /* Local Variables: --- groff-1.18.1.1.orig/src/preproc/grn/hdb.cc +++ groff-1.18.1.1/src/preproc/grn/hdb.cc @@ -115,7 +115,6 @@ type = DBGetType(string); /* interpret element type */ if (type < 0) { /* no more data */ done = TRUE; - (void) fclose(file); } else { #ifdef UW_FASTSCAN (void) xscanf(file, &x, &y); /* always one point */ --- groff-1.18.1.1.orig/src/preproc/html/pre-html.cc +++ groff-1.18.1.1/src/preproc/html/pre-html.cc @@ -63,6 +63,10 @@ #define DEFAULT_IMAGE_RES 100 // number of pixels per inch resolution #define IMAGE_BOARDER_PIXELS 0 #define INLINE_LEADER_CHAR '\\' +#define A4_LENGTH 841890 // taken from devps/Makefile.sub +#define LETTER_LENGTH 792000 // taken from devps/Makefile.sub +#define A4_OFFSET 0 +#define LETTER_OFFSET 50 // 50/72 of an inch #define TRANSPARENT "-background white -transparent white" #define MIN_ALPHA_BITS 0 @@ -104,6 +108,7 @@ static char *macroset_template= NULL; // image template passed to troff by -D static int troff_arg = 0; // troff arg index static char *image_dir = NULL; // user specified image directory +static char *gsPaper = NULL; // the paper size that gs must use static int textAlphaBits = MAX_ALPHA_BITS; static int graphicAlphaBits = MAX_ALPHA_BITS; static char *antiAlias = NULL; // antialias arguments we pass to gs. @@ -211,6 +216,54 @@ } /* + * get_papersize - returns an integer determining the paper length from + * devps/DESC + */ + +static int get_papersize (void) +{ + char *pathp; + FILE *f; + int res; + f = font_path.open_file("devps/DESC", &pathp); + if (f == 0) + fatal("can't open devps/DESC"); + while (get_line(f)) { + int n = sscanf(linebuf, "paperlength %d", &res); + if (n >= 1) { + fclose(f); + return res; + } + if (!strncmp(linebuf, "papersize", 9)) { + double length; + char *p = linebuf + 9; + while (*p == ' ' || *p == '\t') + p++; + for (p = strtok(p, " \t"); p; p = strtok(0, " \t")) { + if (font::scan_papersize(p, 0, &length, 0)) { + fclose(f); + return int(length * postscriptRes + 0.5); + } + } + fatal("bad argument to `papersize' keyword in devps/DESC"); + } + } + fatal("can't find `papersize' or `paperlength' keyword in devps/DESC"); + return 0; +} + +/* + * determine_vertical_offset - works out the default vertical offset from + * the page length + */ + +static void determine_vertical_offset (void) +{ + vertical_offset = ((A4_LENGTH-get_papersize())*72)/postscriptRes; + gsPaper = "-sPAPERSIZE=a4"; +} + +/* * html_system - a wrapper for system() */ @@ -1469,6 +1522,7 @@ int ok=1; postscriptRes = get_resolution(); + determine_vertical_offset(); i = scanArguments(argc, argv); setupAntiAlias(); checkImageDir(); --- groff-1.18.1.1.orig/src/preproc/eqn/main.cc +++ groff-1.18.1.1/src/preproc/eqn/main.cc @@ -258,6 +258,7 @@ program_name = argv[0]; static char stderr_buf[BUFSIZ]; setbuf(stderr, stderr_buf); + init_encoding_handler(); int opt; int load_startup_file = 1; static const struct option long_options[] = { --- groff-1.18.1.1.orig/src/preproc/eqn/lex.cc +++ groff-1.18.1.1/src/preproc/eqn/lex.cc @@ -23,6 +23,7 @@ #include "eqn_tab.h" #include "stringclass.h" #include "ptable.h" +#include "encoding.h" struct definition { char is_macro; @@ -375,6 +376,11 @@ lex_error("invalid input character code %1", c); else { line += char(c); +#ifdef ENABLE_MULTIBYTE + if (input_encoding->is_wchar_byte(c)) { + line += char(getc(fp)); + } +#endif if (c == '\n') break; } --- groff-1.18.1.1.orig/src/preproc/eqn/text.cc +++ groff-1.18.1.1/src/preproc/eqn/text.cc @@ -21,13 +21,20 @@ #include "eqn.h" #include "pbox.h" #include "ptable.h" +#include "encoding.h" class char_box : public simple_box { unsigned char c; +#ifdef ENABLE_MULTIBYTE + wchar wc; +#endif char next_is_italic; char prev_is_italic; public: char_box(unsigned char); +#ifdef ENABLE_MULTIBYTE + char_box(unsigned char, wchar); +#endif void debug_print(); void output(); int is_char(); @@ -165,11 +172,22 @@ } char_box::char_box(unsigned char cc) -: c(cc), next_is_italic(0), prev_is_italic(0) +: c(cc), +#ifdef ENABLE_MULTIBYTE + wc(cc), +#endif + next_is_italic(0), prev_is_italic(0) { spacing_type = char_table[c].spacing_type; } +#ifdef ENABLE_MULTIBYTE +char_box::char_box(unsigned char cc, wchar wc) +: c(cc), wc(wc), next_is_italic(0), prev_is_italic(0) +{ +} +#endif + void char_box::hint(unsigned flags) { if (flags & HINT_PREV_IS_ITALIC) @@ -188,7 +206,11 @@ if (c == '\\') fputs("\\e", stdout); else +#ifdef ENABLE_MULTIBYTE + output_encoding->put_wchar(wc, stdout); +#else putchar(c); +#endif if (!next_is_italic) fputs("\\/", stdout); else @@ -497,6 +519,14 @@ break; default: normal_char: +#ifdef ENABLE_MULTIBYTE + if (input_encoding->is_wchar_byte(c)) { + int i = 1; + wchar wc = input_encoding->make_wchar(c, (unsigned char *)s, &i); + b = new char_box('A', wc); // char_info of wc is same the 'A'. + s += i; + } else +#endif b = new char_box(c); break; } --- groff-1.18.1.1.orig/src/preproc/eqn/eqn.y +++ groff-1.18.1.1/src/preproc/eqn/eqn.y @@ -21,6 +21,7 @@ #include #include +#include "encoding.h" /* XXX */ #include "lib.h" #include "box.h" extern int non_empty_flag; --- groff-1.18.1.1.orig/src/preproc/eqn/box.cc +++ groff-1.18.1.1/src/preproc/eqn/box.cc @@ -80,7 +80,7 @@ int nroff = 0; // should we grok ndefine or tdefine? -struct { +struct S { const char *name; int *ptr; } param_table[] = { --- groff-1.18.1.1.orig/src/preproc/refer/command.cc +++ groff-1.18.1.1/src/preproc/refer/command.cc @@ -632,7 +632,7 @@ ? means that the previous argument is optional, * means that the previous argument can occur any number of times. */ -struct { +struct S { const char *name; command_t func; const char *arg_types; --- groff-1.18.1.1.orig/src/libs/libdriver/printer.cc +++ groff-1.18.1.1/src/libs/libdriver/printer.cc @@ -27,6 +27,7 @@ */ #include "driver.h" +#include "encoding.h" printer *pr = 0; @@ -138,6 +139,24 @@ } } +#ifdef ENABLE_MULTIBYTE +void printer::set_wchar_char(wchar c, char *s, int i0, int len, const environment *env, int *widthp) +{ + unsigned char *buf = new unsigned char[len+1]; + memset(buf, 0, len+1); + memcpy(buf, s+i0, len); + font *f; + int w; + int i = set_char_and_width((const char *)buf, env, &w, &f); + if (i != -1) { + set_char(c, f, env, w, (const char *)buf); + if (widthp) + *widthp = w; + } + delete [] buf; +} +#endif + void printer::set_special_char(const char *nm, const environment *env, int *widthp) { --- groff-1.18.1.1.orig/src/libs/libdriver/input.cc +++ groff-1.18.1.1/src/libs/libdriver/input.cc @@ -250,6 +250,7 @@ #include "driver.h" #include "device.h" +#include "encoding.h" #include #include @@ -1439,6 +1440,19 @@ char *subcmd_str = get_string_arg(); char subcmd = subcmd_str[0]; switch (subcmd) { +#ifdef ENABLE_MULTIBYTE + case 'e': // x encoding: select encoding + { + char *str_arg = get_string_arg(); + if (str_arg == 0) + warning("empty argument for `x encoding' command"); + else { + select_input_encoding_handler(str_arg); + delete str_arg; + } + break; + } +#endif case 'f': // x font: mount font { IntArg n = get_integer_arg(); @@ -1517,7 +1531,7 @@ return stopped; } - +//////////////////////////////////////////////////////////////// /********************************************************************** exported part (by driver.h) **********************************************************************/ @@ -1625,6 +1639,18 @@ if (str_arg[0] != 'i') fatal("the third command must be `x init'"); delete str_arg; +#ifdef ENABLE_MULTIBYTE + Char c = get_char(); + while (is_space_or_tab(c) && c != Char('\n') && c != Char(EOF)) + c = get_char(); + unget_char(c); + if (c != Char('\n') && c != Char(EOF)) { + const char *tmp_encoding = get_string_arg(); + if (tmp_encoding && *tmp_encoding) + select_input_encoding_handler(tmp_encoding); + delete tmp_encoding; + } +#endif skip_line_x(); } @@ -1763,6 +1789,18 @@ size_t i = 0; while ((c = str_arg[i++]) != '\0') { EnvInt w; +#ifdef ENABLE_MULTIBYTE + if (input_encoding->is_wchar_byte(c)) { + int i0 = i - 1; + wchar wc = input_encoding->make_wchar(c, (const unsigned char *)str_arg, (int *)&i); + if (is_wchar_code(wc)) { + /* XXX: singlebyte check? */ + pr->set_wchar_char(wc, str_arg, i0, i - i0, current_env, &w); + } else { + pr->set_ascii_char((unsigned char) c, current_env, &w); + } + } else +#endif pr->set_ascii_char((unsigned char) c, current_env, &w); current_env->hpos += w; } --- groff-1.18.1.1.orig/src/libs/libgroff/font.cc +++ groff-1.18.1.1/src/libs/libgroff/font.cc @@ -25,6 +25,7 @@ #include #include #include +#include "encoding.h" // XXX: ukai #include "errarg.h" #include "error.h" #include "cset.h" @@ -43,8 +44,39 @@ int italic_correction; int subscript_correction; char *special_device_coding; +#ifdef ENABLE_MULTIBYTE + char *subfont_name; +#endif }; +#ifdef ENABLE_MULTIBYTE +struct fontset_list { + struct fontset_list *next; + char *primary_font_name; + int fontset_font; + wchar start_code; + wchar end_code; + int on_demand; +}; + +fontset_list *font::fontsets = NULL; + +struct font_wchar_metric { + struct font_wchar_metric *next; + char type; + int start_code; + int end_code; + int width; + int height; + int depth; + int pre_math_space; + int italic_correction; + int subscript_correction; + char *special_device_coding; + char *subfont_name; +}; +#endif + struct font_kern_list { int i1; int i2; @@ -149,7 +181,11 @@ font::font(const char *s) : ligatures(0), kern_hash_table(0), space_width(0), ch_index(0), nindices(0), - ch(0), ch_used(0), ch_size(0), special(0), widths_cache(0) + ch(0), +#ifdef ENABLE_MULTIBYTE + wch(0), +#endif + ch_used(0), ch_size(0), special(0), widths_cache(0) { name = new char[strlen(s) + 1]; strcpy(name, s); @@ -183,6 +219,17 @@ widths_cache = widths_cache->next; delete tem; } +#ifdef ENABLE_MULTIBYTE + struct font_wchar_metric *wcp, *nwcp; + for (wcp = wch; wcp != NULL; wcp = nwcp) { + nwcp = wcp->next; + if (wcp->special_device_coding) + delete [] wcp->special_device_coding; + if (wcp->subfont_name) + delete [] wcp->subfont_name; + delete wcp; + } +#endif } static int scale_round(int n, int x, int y) @@ -244,6 +291,11 @@ int font::contains(int c) { +#ifdef ENABLE_MULTIBYTE + font_wchar_metric *wcp = get_font_wchar_metric(c); + if (wcp != NULL) + return 1; +#endif return c >= 0 && c < nindices && ch_index[c] >= 0; } @@ -266,8 +318,31 @@ a_delete width; } +#ifdef ENABLE_MULTIBYTE +struct font_wchar_metric * +font::get_font_wchar_metric(int c) +{ + /* XXX: c is font index, not char code... */ + /* XXX: we assume wchar_code == font index code for wchars */ + /* XXX: does really code conflicts with index? */ + struct font_wchar_metric *wcp; + for (wcp = wch; wcp != NULL; wcp = wcp->next) { + if (wcp->start_code <= wchar_code(c) && wchar_code(c) <= wcp->end_code) { + return wcp; + } + } + return NULL; +} +#endif + int font::get_width(int c, int point_size) { +#ifdef ENABLE_MULTIBYTE + font_wchar_metric *wcp = get_font_wchar_metric(c); + if (wcp != NULL) { + return scale(wcp->width, point_size); + } +#endif assert(c >= 0 && c < nindices); int i = ch_index[c]; assert(i >= 0); @@ -299,30 +374,60 @@ int font::get_height(int c, int point_size) { +#ifdef ENABLE_MULTIBYTE + font_wchar_metric *wcp = get_font_wchar_metric(c); + if (wcp != NULL) { + return scale(wcp->height, point_size); + } +#endif assert(c >= 0 && c < nindices && ch_index[c] >= 0); return scale(ch[ch_index[c]].height, point_size); } int font::get_depth(int c, int point_size) { +#ifdef ENABLE_MULTIBYTE + font_wchar_metric *wcp = get_font_wchar_metric(c); + if (wcp != NULL) { + return scale(wcp->depth, point_size); + } +#endif assert(c >= 0 && c < nindices && ch_index[c] >= 0); return scale(ch[ch_index[c]].depth, point_size); } int font::get_italic_correction(int c, int point_size) { +#ifdef ENABLE_MULTIBYTE + font_wchar_metric *wcp = get_font_wchar_metric(c); + if (wcp != NULL) { + return scale(wcp->italic_correction, point_size); + } +#endif assert(c >= 0 && c < nindices && ch_index[c] >= 0); return scale(ch[ch_index[c]].italic_correction, point_size); } int font::get_left_italic_correction(int c, int point_size) { +#ifdef ENABLE_MULTIBYTE + font_wchar_metric *wcp = get_font_wchar_metric(c); + if (wcp != NULL) { + return scale(wcp->pre_math_space, point_size); + } +#endif assert(c >= 0 && c < nindices && ch_index[c] >= 0); return scale(ch[ch_index[c]].pre_math_space, point_size); } int font::get_subscript_correction(int c, int point_size) { +#ifdef ENABLE_MULTIBYTE + font_wchar_metric *wcp = get_font_wchar_metric(c); + if (wcp != NULL) { + return scale(wcp->subscript_correction, point_size); + } +#endif assert(c >= 0 && c < nindices && ch_index[c] >= 0); return scale(ch[ch_index[c]].subscript_correction, point_size); } @@ -371,12 +476,24 @@ int font::get_character_type(int c) { +#ifdef ENABLE_MULTIBYTE + font_wchar_metric *wcp = get_font_wchar_metric(c); + if (wcp != NULL) { + return wcp->type; + } +#endif assert(c >= 0 && c < nindices && ch_index[c] >= 0); return ch[ch_index[c]].type; } int font::get_code(int c) { +#ifdef ENABLE_MULTIBYTE + font_wchar_metric *wcp = get_font_wchar_metric(c); + if (wcp != NULL) { + return c; + } +#endif assert(c >= 0 && c < nindices && ch_index[c] >= 0); return ch[ch_index[c]].code; } @@ -393,10 +510,26 @@ const char *font::get_special_device_encoding(int c) { +#ifdef ENABLE_MULTIBYTE + font_wchar_metric *wcp = get_font_wchar_metric(c); + if (wcp != NULL) + return wcp->special_device_coding; +#endif assert(c >= 0 && c < nindices && ch_index[c] >= 0); return( ch[ch_index[c]].special_device_coding ); } +#ifdef ENABLE_MULTIBYTE +const char *font::get_subfont_name(int c) +{ + font_wchar_metric *wcp = get_font_wchar_metric(c); + if (wcp != NULL) + return wcp->subfont_name; + assert(c >= 0 && c < nindices && ch_index[c] >= 0); + return ch[ch_index[c]].subfont_name; +} +#endif + void font::alloc_ch_index(int index) { if (nindices == 0) { @@ -554,9 +687,11 @@ return 0; } + // If the font can't be found, then if not_found is non-NULL, it will be set // to 1 otherwise a message will be printed. + int font::load(int *not_found) { char *path; @@ -570,7 +705,7 @@ } text_file t(fp, path); t.skip_comments = 1; - char *p; + char *p = NULL; for (;;) { if (!t.next()) { t.error("missing charset command"); @@ -681,6 +816,9 @@ } else if (strcmp(command, "charset") == 0) { had_charset = 1; +#ifdef ENABLE_MULTIBYTE + int had_range = 0; +#endif int last_index = -1; for (;;) { if (!t.next()) { @@ -695,6 +833,11 @@ command = nm; break; } +#ifdef ENABLE_MULTIBYTE + int start_code = 0; + int end_code = 0; + int nrange = sscanf(nm, "u%X..u%X", &start_code, &end_code); +#endif if (p[0] == '"') { if (last_index == -1) { t.error("first charset entry is duplicate"); @@ -711,7 +854,64 @@ } copy_entry(index, last_index); } +#ifdef ENABLE_MULTIBYTE + else if (nrange == 2) { + had_range = 1; + font_wchar_metric *wcp = new font_wchar_metric; + wcp->start_code = start_code; + wcp->end_code = end_code; + wcp->height = 0; + wcp->depth = 0; + wcp->pre_math_space = 0; + wcp->italic_correction = 0; + wcp->subscript_correction = 0; + int nparms = sscanf(p, "%d,%d,%d,%d,%d,%d", + &wcp->width, &wcp->height, &wcp->depth, + &wcp->italic_correction, + &wcp->pre_math_space, + &wcp->subscript_correction); + if (nparms < 1) { + t.error("bad width for `%1'", nm); + return 0; + } + p = strtok(0, WS); + if (p == 0) { + t.error("missing character type for `%1'", nm); + return 0; + } + int type; + if (sscanf(p, "%d", &type) != 1) { + t.error("bad character type for `%1'", nm); + return 0; + } + if (type < 0 || type > 255) { + t.error("character type `%1' out of range", type); + return 0; + } + wcp->type = type; + + p = strtok(0, WS); + if ((p == 0) || (strcmp(p, "--") == 0)) { + wcp->subfont_name = NULL; + } else { + wcp->subfont_name = new char[strlen(p) + 1]; + strcpy(wcp->subfont_name, p); + } + + p = strtok(0, WS); + if ((p == NULL) || (strcmp(p, "--") == 0)) { + wcp->special_device_coding = NULL; + } else { + wcp->special_device_coding = new char[strlen(p) + 1]; + strcpy(wcp->special_device_coding, p); + } + wcp->next = wch; + wch = wcp; + p = NULL; + } +#endif else { + font_char_metric metric; metric.height = 0; metric.depth = 0; @@ -747,6 +947,16 @@ t.error("missing code for `%1'", nm); return 0; } +#ifdef ENABLE_MULTIBYTE + char *subp = strchr(p, ':'); + if (subp) { + *subp++ = '\0'; + metric.subfont_name = new char[strlen(subp) + 1]; + strcpy(metric.subfont_name, subp); + } else { + metric.subfont_name = NULL; + } +#endif char *ptr; metric.code = (int)strtol(p, &ptr, 0); if (metric.code == 0 && ptr == p) { @@ -777,7 +987,11 @@ } } } +#ifdef ENABLE_MULTIBYTE + if (!had_range && last_index == -1) { +#else if (last_index == -1) { +#endif t.error("I didn't seem to find any characters"); return 0; } @@ -811,6 +1025,11 @@ { "biggestfont", &font::biggestfont }, { "spare2", &font::spare2 }, { "sizescale", &font::sizescale } +#ifdef ENABLE_MULTIBYTE + , + { "lowerwchar", &font::lowerwchar }, + { "wcharkern", &font::wcharkern } +#endif }; int font::load_desc() @@ -981,6 +1200,67 @@ tcommand = 1; else if (strcmp("use_charnames_in_special", p) == 0) use_charnames_in_special = 1; +#ifdef ENABLE_MULTIBYTE + else if (strcmp("fontset", p) == 0) { + /* fontset .. [ondemand] */ + p = strtok(0, WS); + if (p == NULL) { + t.error("no primary font for fontset"); + return 0; + } + char *pfont = NULL; + if (strcmp(p, "-") != 0) { + pfont = new char[strlen(p)+1]; + strcpy(pfont, p); + } + p = strtok(0, WS); + if (p == NULL) { + t.error("no fontset font for `%1'", + pfont ? pfont : "-"); + return 0; + } + int fontset_font = 0; + for (int i = 0; i < nfonts; i++) { + if (strcmp(p, font_name_table[i]) == 0) { + fontset_font = i; + break; + } + } + if (fontset_font == nfonts) { + t.error("fontset font `%1' for font `%2' not defined", + p, pfont ? pfont : "-"); + return 0; + } + p = strtok(0, WS); + if (p == NULL) { + t.error("no range for fontset font `%1' for font `%2'", + font_name_table[fontset_font], + pfont ? pfont : "-"); + return 0; + } + wchar start_code = 0; + wchar end_code = 0; + int nparms = sscanf(p, "%x..%x", &start_code, &end_code); + if (nparms != 2) { + t.error("invalid range format `%1'", p); + return 0; + } + p = strtok(0, WS); + int on_demand = 0; + if (p != NULL && strcmp(p, "ondemand") == 0) { + on_demand = 1; + } + /* XXX */ + fontset_list *fl = new fontset_list; + fl->primary_font_name = pfont; + fl->fontset_font = fontset_font; + fl->start_code = start_code; + fl->end_code = end_code; + fl->on_demand = on_demand; + fl->next = fontsets; + fontsets = fl; + } +#endif else if (strcmp("charset", p) == 0) break; else if (unknown_desc_command_handler) { @@ -1020,6 +1300,39 @@ return 1; } +#ifdef ENABLE_MULTIBYTE +int +font::get_fontset_font(const char *fname, wchar wc) { + fontset_list *fl; + int avail_fontno = -1; + wc = wchar_code(wc); + for (fl = fontsets; fl != NULL; fl = fl->next) { + if (fl->primary_font_name == NULL) { + if (fl->start_code <= wc && wc <= fl->end_code) { + avail_fontno = fl->fontset_font; + } + } + else if (fname && strcmp(fl->primary_font_name, fname) == 0) { + if (fl->start_code <= wc && wc <= fl->end_code) { + return fl->fontset_font; + } + } + } + return avail_fontno; +} + +int +font::is_on_demand(int fontno) { + fontset_list *fl; + for (fl = fontsets; fl != NULL; fl = fl->next) { + if (fl->fontset_font == fontno) { + return fl->on_demand; + } + } + return 0; +} +#endif + void font::handle_unknown_font_command(const char *, const char *, const char *, int) { --- groff-1.18.1.1.orig/src/libs/libgroff/fontfile.cc +++ groff-1.18.1.1/src/libs/libgroff/fontfile.cc @@ -24,6 +24,7 @@ #include #include #include +#include "encoding.h" // XXX: ukai #include "font.h" #include "searchpath.h" #include "device.h" @@ -36,6 +37,10 @@ int font::res = 0; int font::hor = 1; int font::vert = 1; +#ifdef ENABLE_MULTIBYTE +int font::lowerwchar = 0; +int font::wcharkern = 0; +#endif int font::unitwidth = 0; int font::paperwidth = 0; int font::paperlength = 0; --- groff-1.18.1.1.orig/src/libs/libgroff/encoding.cc +++ groff-1.18.1.1/src/libs/libgroff/encoding.cc @@ -0,0 +1,441 @@ +// -*- C++ -*- +/* Copyright (C) 2001 Fumitoshi UKAI + +This file is part of groff. + +groff is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +groff is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#include "encoding.h" +#include "device.h" + +#include +#ifdef ENABLE_MULTIBYTE +#include +#include +#ifdef HAVE_LANGINFO_CODESET +#include +#else +#include +#endif +#endif + +class ascii8_handler : public encoding_handler { + // encoding handler for 8bit ascii + // no multibyte support +public: + ascii8_handler() {} + ~ascii8_handler() {} + + const char *name() { return "C"; }; /* ??? */ + + inline int is_wchar_byte(unsigned char c) { return 0; } + inline wchar make_wchar(unsigned char c0, encoding_istream& eis) { + return wchar(c0); + } + inline int put_wchar(wchar wc, encoding_ostream& eos) { + eos.putbyte((unsigned char)wchar_code(wc)); + return 1; + } + inline int max_wchar_len() { return 1; }; + +}; + +#ifdef ENABLE_MULTIBYTE +class utf8_handler: public encoding_handler { +public: + utf8_handler() { } + ~utf8_handler() { } + + const char *name() { return "UTF-8"; }; + + inline int is_wchar_byte(unsigned char c) { + return (c >= 0x80); + } + + /* + 0000 0000-0000 007F 0xxxxxxx + 0000 0080-0000 07FF 110xxxxx 10xxxxxx + 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx + + 0001 0000-001F FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + 0020 0000-03FF FFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx + 0400 0000-7FFF FFFF 1111110x 10xxxxxx ... 10xxxxxx + */ + + inline wchar make_wchar(unsigned char c0, encoding_istream& eis) { + wchar wc = 0; + int count = 0; + if (! is_wchar_byte(c0)) { + return c0; + } + if ((c0 & 0xFC) == 0xFC) { + wc = c0 & 0x01; + count = 5; + } else if ((c0 & 0xF8) == 0xF8) { + wc = c0 & 0x03; + count = 4; + } else if ((c0 & 0xF0) == 0xF0) { + wc = c0 & 0x07; + count = 3; + } else if ((c0 & 0xE0) == 0xE0) { + wc = c0 & 0x0F; + count = 2; + } else if ((c0 & 0xC0) == 0xC0) { + wc = c0 & 0x1F; + count = 1; + } + for (; count > 0; count--) { + wc <<= 6; + int c1 = eis.getbyte(); + if (! is_wchar_byte(c1)) { + /* illegal utf8 sequence? */ + } + wc |= (c1 & 0x3F); + } + return -wc; // XXX: negative + } + + inline int put_wchar(wchar wc, encoding_ostream& eos) { + int count = 0; + if (! is_wchar_code(wc)) { + eos.putbyte(wc); + return 1; + } + wc = -wc; // XXX: negative -> character code + + if (wc < 0x800) { + count = 1; eos.putbyte((wc >> 6) | 0xC0); + } else if (wc < 0x10000) { + count = 2; eos.putbyte((wc >> 12) | 0xE0); + } else if (wc < 0x200000) { + count = 3; eos.putbyte((wc >> 18) | 0xF0); + } else if (wc < 0x4000000) { + count = 4; eos.putbyte((wc >> 24) | 0xf8); + } else if (wc <= 0x7fffffff) { + count = 5; eos.putbyte((wc >> 30) | 0xFC); + } + for (int i = 0; i < count; i++) { + eos.putbyte(((wc >> 6 * (count - i - 1)) & 0x3f) | 0x80); + } + return count; + } + inline int max_wchar_len() { return 6; }; /* XXX 3?*/ + +}; + +#define USE_ICONV +#ifdef USE_ICONV +#include +#include + +class iconv_handler : public encoding_handler { +private: + iconv_t icd, ocd; + const char *encoding_name; + static iconv_handler *ih_header; + +public: + iconv_handler *next; + + static iconv_handler *new_iconv_handler(const char *ename) { + iconv_handler *ip; + // if already created, use it. + for (ip = ih_header; ip != NULL; ip = ip->next) { + if (strcmp(ip->name(), ename) == 0) { + return ip; + } + } + // not found, create new one. + ip = new iconv_handler(ename); + ip->next = ih_header; + ih_header = ip; + return ip; + } + iconv_handler(const char *ename) : encoding_name(ename) { + // internal code is UCS-2BE + icd = iconv_open("UCS-2BE", encoding_name); + ocd = iconv_open(encoding_name, "UCS-2BE"); + }; + ~iconv_handler() {}; + + const char *name() { return encoding_name; }; + + inline int is_wchar_byte(unsigned char c) { + return (c >= 0x80); /* ??? */ + } + + inline wchar make_wchar(unsigned char c0, encoding_istream& eis) { + wchar wc = 0; + char inbuf[8], outbuf[8]; + char *inp, *outp; + size_t inbytesleft, outbytesleft; + int i = 0; + + if (! is_wchar_byte(c0)) { + return c0; + } + for (inbuf[i++] = c0; ;inbuf[i++] = eis.getbyte()) { + inbytesleft = i; + outbytesleft = sizeof(outbuf); + inp = inbuf; + outp = outbuf; + size_t r = iconv(icd, &inp, &inbytesleft, &outp, &outbytesleft); + if (r == (size_t)-1) { + if (errno == EILSEQ) { + /* illegal sequence? */ + return '?'; + } else if (errno == EINVAL) { + /* incomplete sequence? */ + continue; + } else if (errno == E2BIG) { + /* no room to output? */ + return '?'; + } + } + /* ok */ + /* UCS-2 is 2 bytes */ + wc = ((outbuf[0] & 0x0ff) << 8) | (outbuf[1] & 0x0ff); + return -wc; // XXX: negative + } + } + + + inline int put_wchar(wchar wc, encoding_ostream& eos) { + char inbuf[4], outbuf[4]; + char *inp, *outp; + size_t inbytesleft, outbytesleft; + + if (!is_wchar_code(wc)) { + eos.putbyte(wc & 0x0ff); + return 1; + } + wc = -wc; // XXX: negative -> character code + + inbuf[0] = (wc >> 8) & 0x0ff; + inbuf[1] = (wc >> 0) & 0x0ff; + inbuf[2] = 0; + inbytesleft = 2; + outbytesleft = 4; + inp = inbuf; + outp = outbuf; + size_t r = iconv(ocd, &inp, &inbytesleft, &outp, &outbytesleft); + if (r == (size_t)-1) { + if (errno == EILSEQ) { + /* illegal sequence? */; + } else if (errno == EINVAL) { + /* incomplete sequence? */; + } else if (errno == E2BIG) { + /* no room to output? */; + } + eos.putbyte('?'); + return 1; + } + char *op = outbuf; + int n = 0; + for (; op < outp; op++, n++) { + eos.putbyte(*op & 0x0ff); + } + return outp - outbuf; + } + inline int max_wchar_len() { return 6; }; /* XXX */ + +}; +#else +class euc_handler : public encoding_handler { + static const int WCTABLE_OFFSET = 0xa1; + static const int WCTABLE_SIZE = 94; + static const int EUCMASK = 0x8080; + +public: + euc_handler() {} + ~euc_handler() {}; + + const char *name() { return "EUC-JP"; }; + + inline int is_wchar_byte(unsigned char c) { + return (c >= 0xa1 && c <= 0xfe); + } + + inline wchar make_wchar(unsigned char c0, encoding_istream& eis) { + wchar wc; + if (! is_wchar_byte(c0)) { + return c0; + } + int c1 = eis.peekbyte(); + if (! is_wchar_byte(c1)) { + eis.ungetbyte(c1); + return c0; + } + c1 = eis.getbyte(); + wc = (c0 & 0xff) << 8; + wc |= (c1 & 0xff); + + if (wc == 0xa1a1) + return ' '; + return -wc; + } + + inline int put_wchar(wchar wc, encoding_ostream& eos) { + if (is_wchar_code(wc)) { + wc = -wc; + eos.putbyte((wc >> 8) & 0x0ff); + eos.putbyte((wc >> 0) & 0x0ff); + return 2; + } else { + eos.putbyte(wc & 0x0ff); + return 1; + } + } + inline int max_wchar_len() { return 2; }; /* XXX */ +}; +#endif /* USE_ICONV */ +#endif + +static ascii8_handler ascii8; +#ifdef ENABLE_MULTIBYTE +static utf8_handler utf8; +#ifdef USE_ICONV +iconv_handler *iconv_handler::ih_header = NULL; +#else +static euc_handler eucjp; +#endif +#endif + +encoding_handler *input_encoding = &ascii8; +encoding_handler *output_encoding = &ascii8; + +static void +new_encoding_handler(encoding_handler **eptr, const char *encoding_name) +{ + if (!encoding_name) { + *eptr = &ascii8; + return; + } +#ifdef ENABLE_MULTIBYTE + if (strcmp(encoding_name, "UTF-8") == 0) { + *eptr = &utf8; + return; + } +#ifdef USE_ICONV + if (strcmp(encoding_name, "C") != 0) { + *eptr = iconv_handler::new_iconv_handler(encoding_name); + return; + } +#else + // printf("encoding request: [%s]\n", encoding_name); + if (strcmp(encoding_name, "EUC-JP") == 0) { + // printf("encoding: [EUC-JP]\n"); + *eptr = &eucjp; + return; + } +#endif +#endif + // default + *eptr = &ascii8; + return; +} + +encoding_handler * +select_input_encoding_handler(const char *encoding_name) +{ + new_encoding_handler(&input_encoding, encoding_name); + return input_encoding; +} + +encoding_handler * +select_output_encoding_handler(const char *encoding_name) +{ + new_encoding_handler(&output_encoding, encoding_name); + return output_encoding; +} + +void +init_encoding_handler() +{ +#ifdef ENABLE_MULTIBYTE + const char *locale, *charset; + // groff 1 defines ISO-8859-1 as the input encoding, so this is required + // for compatibility. groff 2 will define UTF-8 (or possibly officially + // allow it to be switchable?) + select_input_encoding_handler("ISO-8859-1"); + select_output_encoding_handler("C"); + + locale = setlocale(LC_ALL, ""); + if (locale == NULL || + strcmp(locale, "C") == 0 || strcmp(locale, "POSIX") == 0) { + return; + } + /* check LC_CTYPE is C or POSIX */ + locale = setlocale(LC_CTYPE, NULL); + if (strcmp(locale, "C") == 0 || strcmp(locale, "POSIX") == 0) { + return; + } + /* otherwise */ +#if HAVE_LANGINFO_CODESET + charset = nl_langinfo(CODESET); +#else + charset = strchr(locale, '.'); + if (charset) + ++charset; + else + charset = ""; +#endif + if (strncmp(locale, "ja", 2) == 0 || strncmp(locale, "zh", 2) == 0 || + (strncmp(locale, "ko", 2) == 0 && strcmp(charset, "UTF-8") == 0)) { + select_input_encoding_handler(charset); + select_output_encoding_handler(charset); + } else if ((!device || strcmp(device, "ascii8") == 0)) { + select_input_encoding_handler(NULL); + select_output_encoding_handler(NULL); + } +#endif + return; +} + +int +is_wchar_code(wchar wc) +{ + return (wc < 0); +} + +int +is_wchar_singlebyte(wchar wc) +{ + return ((-256 < wc) && (wc < 0)); +} + +unsigned char +wchar_singlebyte(wchar wc) +{ + if (wc >= 0) + return (unsigned char)wc; + else + return (unsigned char)-wc; +} + +int +wchar_code(wchar wc) +{ + if (wc >= 0) + return wc; + else + return -wc; +} + +int +make_wchar(int w) +{ + return -w; +} --- groff-1.18.1.1.orig/src/libs/libgroff/Makefile.sub +++ groff-1.18.1.1/src/libs/libgroff/Makefile.sub @@ -6,6 +6,7 @@ color.$(OBJEXT) \ cset.$(OBJEXT) \ device.$(OBJEXT) \ + encoding.$(OBJEXT) \ errarg.$(OBJEXT) \ error.$(OBJEXT) \ fatal.$(OBJEXT) \ @@ -45,6 +46,7 @@ $(srcdir)/color.cc \ $(srcdir)/cset.cc \ $(srcdir)/device.cc \ + $(srcdir)/encoding.cc \ $(srcdir)/errarg.cc \ $(srcdir)/error.cc \ $(srcdir)/fatal.cc \ --- groff-1.18.1.1.orig/src/libs/libgroff/searchpath.cc +++ groff-1.18.1.1/src/libs/libgroff/searchpath.cc @@ -19,6 +19,7 @@ with groff; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include "encoding.h" #include "lib.h" #include --- groff-1.18.1.1.orig/src/libs/libgroff/tmpfile.cc +++ groff-1.18.1.1/src/libs/libgroff/tmpfile.cc @@ -24,6 +24,7 @@ #include #include +#include "encoding.h" #include "posix.h" #include "errarg.h" #include "error.h" --- groff-1.18.1.1.orig/src/libs/libgroff/nametoindex.cc +++ groff-1.18.1.1/src/libs/libgroff/nametoindex.cc @@ -24,6 +24,7 @@ #include #include #include +#include "encoding.h" // XXX: ukai #include "errarg.h" #include "error.h" #include "font.h" @@ -37,6 +38,9 @@ character_indexer(); ~character_indexer(); int ascii_char_index(unsigned char); +#ifdef ENABLE_MULTIBYTE + int wchar_index(wchar); +#endif int named_char_index(const char *); int numbered_char_index(int); private: @@ -68,6 +72,13 @@ return ascii_index[c]; } +#ifdef ENABLE_MULTIBYTE +int character_indexer::wchar_index(wchar wc) +{ + return wc; /* XXX: wchar code == index */ +} +#endif + int character_indexer::numbered_char_index(int n) { if (n >= 0 && n < NSMALL) { @@ -103,6 +114,30 @@ int font::name_to_index(const char *s) { assert(s != 0 && s[0] != '\0' && s[0] != ' '); +#ifdef ENABLE_MULTIBYTE + { + int i = 1; + wchar wc = input_encoding->make_wchar(s[0], (const unsigned char *)s, &i); + /* XXX + * if wchar can be represented in single byte (<256), + * it should be the same as char. + */ + if (is_wchar_singlebyte(wc)) { + return indexer.ascii_char_index(wchar_singlebyte(wc)); + } + if (is_wchar_code(wc)) { + return indexer.wchar_index(wc); + } + /* XXX: uA1A1 and \xa1a1 are synonyms */ + if (s[0] == 'u') { + char *res; + long n = strtol(s + 1, &res, 16); + if (res != s + 1 && *res == '\0') { + return indexer.wchar_index(n); + } + } + } +#endif if (s[1] == '\0') return indexer.ascii_char_index(s[0]); /* char128 and \200 are synonyms */ @@ -115,3 +150,9 @@ return indexer.named_char_index(s); } +#ifdef ENABLE_MULTIBYTE +int font::wchar_index(wchar wc) +{ + return indexer.wchar_index(wc); +} +#endif --- groff-1.18.1.1.orig/src/devices/grops/ps.cc +++ groff-1.18.1.1/src/devices/grops/ps.cc @@ -24,6 +24,7 @@ #include "cset.h" #include "nonposix.h" #include "paper.h" +#include "encoding.h" #include "ps.h" #include @@ -193,12 +194,23 @@ return *this; } +#ifdef ENABLE_MULTIBYTE +ps_output &ps_output::put_string(const wchar *s, int n) +#else ps_output &ps_output::put_string(const char *s, int n) +#endif { int len = 0; int i; for (i = 0; i < n; i++) { +#ifdef ENABLE_MULTIBYTE + wchar wc = s[i]; + char c = 0; + if (is_wchar_singlebyte(wc)) + c = wchar_singlebyte(wc); +#else char c = s[i]; +#endif if (is_ascii(c) && csprint(c)) { if (c == '(' || c == ')' || c == '\\') len += 2; @@ -224,8 +236,13 @@ putc('\n', fp); col = 0; } +#ifdef ENABLE_MULTIBYTE + int nb = output_encoding->put_wchar(s[i], fp, "%02x"); + col += nb * 2; +#else fprintf(fp, "%02x", s[i] & 0377); col += 2; +#endif } putc('>', fp); col++; @@ -396,6 +413,9 @@ int encoding_index; char *encoding; char *reencoded_name; +#ifdef ENABLE_MULTIBYTE + char *encodingname; +#endif ~ps_font(); void handle_unknown_font_command(const char *command, const char *arg, const char *filename, int lineno); @@ -414,6 +434,9 @@ ps_font::ps_font(const char *nm) : font(nm), encoding_index(-1), encoding(0), reencoded_name(0) +#ifdef ENABLE_MULTIBYTE + , encodingname(0) +#endif { } @@ -421,6 +444,9 @@ { a_delete encoding; a_delete reencoded_name; +#ifdef ENABLE_MULTIBYTE + a_delete encodingname; +#endif } void ps_font::handle_unknown_font_command(const char *command, const char *arg, @@ -433,6 +459,15 @@ else encoding = strsave(arg); } +#ifdef ENABLE_MULTIBYTE + if (strcmp(command, "encodingname") == 0) { + if (arg == 0) + error_with_file_and_line(filename, lineno, + "`encodingname' command requires an argument"); + else + encodingname = strsave(arg); + } +#endif } static void handle_unknown_desc_command(const char *command, const char *arg, @@ -487,7 +522,11 @@ int paper_length; int equalise_spaces; enum { SBUF_SIZE = 256 }; +#ifdef ENABLE_MULTIBYTE + wchar sbuf[SBUF_SIZE]; +#else char sbuf[SBUF_SIZE]; +#endif int sbuf_len; int sbuf_start_hpos; int sbuf_vpos; @@ -606,7 +645,11 @@ { if (i == space_char_index || invis_count > 0) return; +#ifdef ENABLE_MULTIBYTE + wchar code = f->get_code(i); +#else unsigned char code = f->get_code(i); +#endif style sty(f, env->size, env->height, env->slant); if (sty.slant != 0) { if (sty.slant > 80 || sty.slant < -80) { @@ -763,6 +806,14 @@ if (sty == defined_styles[i]) { sprintf(buf, "F%d", i); out.put_symbol(buf); +#ifdef ENABLE_MULTIBYTE + char *encodingname = ((ps_font *)sty.f)->encodingname; + if (encodingname != 0) { + select_output_encoding_handler(encodingname); + } else { + select_output_encoding_handler("LATIN1"); + } +#endif return; } if (ndefined_styles >= MAX_DEFINED_STYLES) @@ -772,6 +823,14 @@ const char *psname = sty.f->get_internal_name(); if (psname == 0) fatal("no internalname specified for font `%1'", sty.f->get_name()); +#ifdef ENABLE_MULTIBYTE + char *encodingname = ((ps_font *)sty.f)->encodingname; + if (encodingname != 0) { + select_output_encoding_handler(encodingname); + } else { + select_output_encoding_handler("LATIN1"); + } +#endif char *encoding = ((ps_font *)sty.f)->encoding; if (encoding != 0) { char *s = ((ps_font *)sty.f)->reencoded_name; @@ -1555,6 +1614,7 @@ string env; static char stderr_buf[BUFSIZ]; setbuf(stderr, stderr_buf); + init_encoding_handler(); int c; static const struct option long_options[] = { { "help", no_argument, 0, CHAR_MAX + 1 }, --- groff-1.18.1.1.orig/src/devices/grops/ps.h +++ groff-1.18.1.1/src/devices/grops/ps.h @@ -18,10 +18,16 @@ with groff; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include "encoding.h" // XXX + class ps_output { public: ps_output(FILE *, int max_line_length); +#ifdef ENABLE_MULTIBYTE + ps_output &put_string(const wchar *, int); +#else ps_output &put_string(const char *, int); +#endif ps_output &put_number(int); ps_output &put_fix_number(int); ps_output &put_float(double); --- groff-1.18.1.1.orig/src/devices/grotty/grotty.man +++ groff-1.18.1.1/src/devices/grotty/grotty.man @@ -50,7 +50,9 @@ command with a .BR \-Tascii , -.B \-Tlatin1 +.BR \-Tascii8 , +.BR \-Tlatin1 , +.B \-Tnippon or .B \-Tutf8 option on ASCII based systems, and with @@ -235,8 +237,10 @@ .I name is the name of the device, usually .BR ascii , +.BR ascii8 , .BR latin1 , .BR utf8 , +.B nippon or .BR cp1047 . .TP @@ -315,10 +319,20 @@ device. . .TP +.B @FONTDIR@/devascii8/DESC +Device description file for +.B ascii8 +device. +.TP .B @FONTDIR@/devlatin1/DESC Device description file for .B latin1 device. +.TP +.B @FONTDIR@/devnippon/DESC +Device description file for +.B nippon +device. . .TP .BI @FONTDIR@/devlatin1/ F --- groff-1.18.1.1.orig/src/devices/grotty/tty.cc +++ groff-1.18.1.1/src/devices/grotty/tty.cc @@ -20,6 +20,7 @@ #include "driver.h" #include "device.h" +#include "encoding.h" extern "C" const char *Version_string; @@ -51,8 +52,18 @@ HDRAW_MODE = 0x08, CU_MODE = 0x10, COLOR_CHANGE = 0x20 +#ifdef ENABLE_MULTIBYTE + , WCHAR_MODE = 0x100 +#endif }; +#ifdef ENABLE_MULTIBYTE +# ifdef putchar +# undef putchar +# endif +#define putchar(wc) output_encoding->put_wchar((wc), stdout) +#endif + // Mode to use for bold-underlining. static unsigned char bold_underline_mode = BOLD_MODE|UNDERLINE_MODE; @@ -89,6 +100,7 @@ static tty_font *load_tty_font(const char *); }; + tty_font *tty_font::load_tty_font(const char *s) { tty_font *f = new tty_font(s); @@ -98,8 +110,26 @@ } const char *num = f->get_internal_name(); long n; +#ifdef ENABLE_MULTIBYTE + if (num != 0) { + n = strtol(num, 0, 0); + switch (n) { + case 1: + f->mode = int(UNDERLINE_MODE); + break; + case 2: + case 5: + f->mode = int(BOLD_MODE); + break; + case 3: + f->mode = int(BOLD_MODE|UNDERLINE_MODE); + break; + } + } +#else if (num != 0 && (n = strtol(num, 0, 0)) != 0) f->mode = int(n & (BOLD_MODE|UNDERLINE_MODE)); +#endif if (!underline_flag) f->mode &= ~UNDERLINE_MODE; if (!bold_flag) @@ -135,6 +165,9 @@ short hpos; unsigned int code; unsigned char mode; +#ifdef ENABLE_MULTIBYTE + short cols; +#endif unsigned char back_color_idx; unsigned char fore_color_idx; void *operator new(size_t); @@ -184,7 +217,7 @@ void make_underline(); void make_bold(unsigned int); unsigned char color_to_idx(color *col); - void add_char(unsigned int, int, int, color *, color *, unsigned char); + void add_char(unsigned int, int, int, color *, color *, font *, unsigned char); public: tty_printer(const char *device); ~tty_printer(); @@ -193,7 +226,7 @@ void special(char *arg, const environment *env, char type); void change_color(const environment *env); void change_fill_color(const environment *env); - void put_char(unsigned int); + int put_char(unsigned int); void put_color(unsigned char, int); void begin_page(int) { } void end_page(int page_length); @@ -203,6 +236,10 @@ tty_printer::tty_printer(const char *device) : cached_v(0) { is_utf8 = !strcmp(device, "utf8"); +#ifdef ENABLE_MULTIBYTE + if (is_utf8) + select_output_encoding_handler("UTF-8"); +#endif tty_colors[0].set_rgb(0, // black 0, 0); @@ -242,8 +279,18 @@ void tty_printer::make_underline() { if (old_drawing_scheme) { +#if 0 /* def ENABLE_MULTIBYTE XXX: not necessary? */ + if ((p->mode & WCHAR_MODE)) { + putchar('_'); putchar('_'); + putchar('\b'); putchar('\b'); + } else { + putchar('_'); + putchar('\b'); + } +#else putchar('_'); putchar('\b'); +#endif } else { if (!is_underline) { @@ -285,17 +332,25 @@ void tty_printer::set_char(int i, font *f, const environment *env, int w, const char *name) { +#ifdef ENABLE_MULTIBYTE + if (is_wchar_code(i)) { + add_char(wchar_code(i), env->hpos, env->vpos, env->col, env->fill, + f, ((tty_font *)f)->get_mode()); + return; + } +#endif if (w != font::hor) fatal("width of character not equal to horizontal resolution"); add_char(f->get_code(i), env->hpos, env->vpos, env->col, env->fill, - ((tty_font *)f)->get_mode()); + f, ((tty_font *)f)->get_mode()); } void tty_printer::add_char(unsigned int c, int h, int v, color *fore, color *back, + font *curfont, unsigned char mode) { #if 0 @@ -338,6 +393,16 @@ g->code = c; g->fore_color_idx = color_to_idx(fore); g->back_color_idx = color_to_idx(back); +#ifdef ENABLE_MULTIBYTE + if (is_wchar_code(c)) + mode |= WCHAR_MODE; + if (curfont && curfont->contains(c)) { + int gw0 = curfont->get_space_width(font::unitwidth); + int gw = curfont->get_width(c, font::unitwidth); + g->cols = gw/gw0; + } else + g->cols = 1; /* XXX */ +#endif g->mode = mode; // The list will be reversed later. After reversal, it must be in @@ -357,7 +422,7 @@ void tty_printer::special(char *arg, const environment *env, char type) { if (type == 'u') { - add_char(*arg - '0', env->hpos, env->vpos, env->col, env->fill, CU_MODE); + add_char(*arg - '0', env->hpos, env->vpos, env->col, env->fill, get_font_from_index(env->fontno), CU_MODE); return; } if (type != 'p') @@ -395,12 +460,12 @@ void tty_printer::change_color(const environment *env) { - add_char(0, env->hpos, env->vpos, env->col, env->fill, COLOR_CHANGE); + add_char(0, env->hpos, env->vpos, env->col, env->fill, get_font_from_index(env->fontno), COLOR_CHANGE); } void tty_printer::change_fill_color(const environment *env) { - add_char(0, env->hpos, env->vpos, env->col, env->fill, COLOR_CHANGE); + add_char(0, env->hpos, env->vpos, env->col, env->fill, get_font_from_index(env->fontno), COLOR_CHANGE); } void tty_printer::draw(int code, int *p, int np, const environment *env) @@ -420,7 +485,7 @@ len = -len; } while (len >= 0) { - add_char('|', env->hpos, v, env->col, env->fill, VDRAW_MODE); + add_char('|', env->hpos, v, env->col, env->fill, get_font_from_index(env->fontno), VDRAW_MODE); len -= font::vert; v += font::vert; } @@ -434,18 +499,24 @@ len = -len; } while (len >= 0) { - add_char('-', h, env->vpos, env->col, env->fill, HDRAW_MODE); + add_char('-', h, env->vpos, env->col, env->fill, get_font_from_index(env->fontno), HDRAW_MODE); len -= font::hor; h += font::hor; } } } -void tty_printer::put_char(unsigned int wc) +int tty_printer::put_char(unsigned int wc) { +#ifdef ENABLE_MULTIBYTE + if (wc >= 0x80) { + return output_encoding->put_wchar(make_wchar(wc), stdout); + } +#else if (is_utf8 && wc >= 0x80) { char buf[6 + 1]; int count; + int len; char *p = buf; if (wc < 0x800) count = 1, *p = (unsigned char)((wc >> 6) | 0xc0); @@ -458,14 +529,18 @@ else if (wc <= 0x7fffffff) count = 5, *p = (unsigned char)((wc >> 30) | 0xfC); else - return; + return 0; + len = count; do *++p = (unsigned char)(((wc >> (6 * --count)) & 0x3f) | 0x80); while (count > 0); *++p = '\0'; putstring(buf); + return len; } +#endif else putchar(wc); + return 1; } void tty_printer::put_color(unsigned char color_index, int back) @@ -629,7 +704,11 @@ } } put_char(p->code); +#ifdef ENABLE_MULTIBYTE + hpos += p->cols; +#else hpos++; +#endif } if (!old_drawing_scheme && (is_bold || is_underline @@ -667,6 +746,7 @@ if (getenv("GROFF_NO_SGR")) old_drawing_scheme = 1; setbuf(stderr, stderr_buf); + init_encoding_handler(); int c; static const struct option long_options[] = { { "help", no_argument, 0, CHAR_MAX + 1 }, --- groff-1.18.1.1.orig/src/devices/grodvi/dvi.cc +++ groff-1.18.1.1/src/devices/grodvi/dvi.cc @@ -21,6 +21,7 @@ #include "driver.h" #include "nonposix.h" +#include "encoding.h" extern "C" const char *Version_string; @@ -104,6 +105,9 @@ struct output_font { dvi_font *f; int point_size; +#ifdef ENABLE_MULTIBYTE + const char *sf; // subfont name +#endif output_font() : f(0) { } }; @@ -121,6 +125,9 @@ output_font output_font_table[FONTS_MAX]; font *cur_font; int cur_point_size; +#ifdef ENABLE_MULTIBYTE + const char *cur_subfont; +#endif color cur_color; int pushed; int pushed_h; @@ -341,9 +348,18 @@ if (*env->col != cur_color) set_color(env->col); int code = f->get_code(index); +#ifdef ENABLE_MULTIBYTE + const char *sf = f->get_subfont_name(index); + if (env->size != cur_point_size || f != cur_font || + (sf != cur_subfont && strcmp(sf, cur_subfont))) { +#else if (env->size != cur_point_size || f != cur_font) { +#endif cur_font = f; cur_point_size = env->size; +#ifdef ENABLE_MULTIBYTE + cur_subfont = sf; +#endif int i; for (i = 0;; i++) { if (i >= FONTS_MAX) { @@ -352,9 +368,16 @@ if (output_font_table[i].f == 0) { output_font_table[i].f = (dvi_font *)cur_font; output_font_table[i].point_size = cur_point_size; +#ifdef ENABLE_MULTIBYTE + output_font_table[i].sf = cur_subfont; +#endif define_font(i); } if (output_font_table[i].f == cur_font +#ifdef ENABLE_MULTIBYTE + && (output_font_table[i].sf == cur_subfont || + strcmp(output_font_table[i].sf, cur_subfont) == 0) +#endif && output_font_table[i].point_size == cur_point_size) break; } @@ -398,7 +421,13 @@ out4(f->checksum); out4(output_font_table[i].point_size*RES_7227); out4(int((double(f->design_size)/(1<<20))*RES_7227*100 + .5)); +#ifdef ENABLE_MULTIBYTE + const char *nm; + if (!(nm = output_font_table[i].sf)) + nm = f->get_internal_name(); +#else const char *nm = f->get_internal_name(); +#endif out1(0); out_string(nm); } @@ -889,6 +918,7 @@ program_name = argv[0]; static char stderr_buf[BUFSIZ]; setbuf(stderr, stderr_buf); + init_encoding_handler(); int c; static const struct option long_options[] = { { "help", no_argument, 0, CHAR_MAX + 1 }, --- groff-1.18.1.1.orig/src/devices/grohtml/html.h +++ groff-1.18.1.1/src/devices/grohtml/html.h @@ -49,6 +49,9 @@ class simple_output { public: simple_output(FILE *, int max_line_length); +#ifdef ENABLE_MULTIBYTE + simple_output &put_string(const wchar *, int); +#endif simple_output &put_string(const char *, int); simple_output &put_string(const char *s); simple_output &put_string(const string &s); --- groff-1.18.1.1.orig/src/devices/grohtml/post-html.cc +++ groff-1.18.1.1/src/devices/grohtml/post-html.cc @@ -29,6 +29,7 @@ #include "html.h" #include "html-text.h" #include "html-table.h" +#include "encoding.h" // XXX: ukai #include @@ -260,7 +261,7 @@ char_block *next; char_block(); - char_block::char_block(int length); + char_block(int length); }; char_block::char_block() @@ -280,6 +281,9 @@ public: char_buffer(); ~char_buffer(); +#ifdef ENABLE_MULTIBYTE + char *add_string(const wchar *, unsigned int); +#endif char *add_string(const char *, unsigned int); char *add_string(const string &); private: @@ -301,6 +305,43 @@ } } +#ifdef ENABLE_MULTIBYTE +char *char_buffer::add_string (const wchar *s, unsigned int length) +{ + int i=0; + unsigned int old_used; + + if (tail == 0) { + tail = new char_block; + head = tail; + } else { + if (tail->used + length*2 + 1 > char_block::SIZE) { + tail->next = new char_block; + tail = tail->next; + } + } + // at this point we have a tail which is ready for the string. + if (tail->used + length*2 + 1 > char_block::SIZE) { + fatal("need to increase char_block::SIZE"); + } + + old_used = tail->used; + do { + length -= output_encoding->put_wchar(s[i], (unsigned char *)tail->buffer, &tail->used, length*2); + i++; + } while (length>0); + + // add terminating nul character + + tail->buffer[tail->used] = '\0'; + tail->used++; + + // and return start of new string + + return( &tail->buffer[old_used] ); +} +#endif + char *char_buffer::add_string (const char *s, unsigned int length) { int i=0; @@ -320,6 +361,7 @@ } old_used = tail->used; + /* XXX: encoding - ukai */ do { tail->buffer[tail->used] = s[i]; tail->used++; @@ -1917,6 +1959,15 @@ current_paragraph->do_para(&html, "", indentation, pageoffset, linelength); } +#if 0 // def ENABLE_MULTIBYTE /* XXX */ + else if (strcmp(fontname, "M") == 0) { + current_paragraph->done_bold(); + current_paragraph->done_italic(); + current_paragraph->done_tt(); + } else if (strcmp(fontname, "G") == 0) { + current_paragraph->do_bold(); + } +#endif } void html_printer::determine_header_level (int level) @@ -2948,6 +2999,11 @@ current_paragraph->done_italic(); current_paragraph->done_tt(); } +#ifdef ENABLE_MULTIBYTE + else if (strcmp(fontname, "G") == 0) { + current_paragraph->done_bold(); + } +#endif } /* @@ -2992,6 +3048,15 @@ current_paragraph->do_italic(); current_paragraph->do_bold(); } +#ifdef ENABLE_MULTIBYTE + else if (strcmp(fontname, "M") == 0) { + current_paragraph->done_bold(); + current_paragraph->done_italic(); + current_paragraph->done_tt(); + } else if (strcmp(fontname, "G") == 0) { + current_paragraph->do_bold(); + } +#endif } /* @@ -3331,7 +3396,23 @@ last_sbuf_length = sbuf.length(); if (html_glyph == NULL) +#ifdef ENABLE_MULTIBYTE + { + if (is_wchar_code(code)) { + int mblen = output_encoding->max_wchar_len(); + unsigned char *wbuf = new unsigned char[mblen]; + int i = 0, j = 0; + output_encoding->put_wchar(code, wbuf, &j, mblen); + for (i = 0; i < j; i++) { + sbuf += wbuf[i]; + } + } + else + sbuf += ((char)code); + } +#else sbuf += ((char)code); +#endif else sbuf += html_glyph; } @@ -3445,12 +3526,12 @@ return; flush_sbuf(); + sbuf_style = sty; /* XXX? */ add_to_sbuf(i, name); sbuf_end_hpos = env->hpos + w; sbuf_start_hpos = env->hpos; sbuf_prev_hpos = env->hpos; sbuf_vpos = env->vpos; - sbuf_style = sty; sbuf_kern = 0; } @@ -3659,6 +3740,7 @@ program_name = argv[0]; static char stderr_buf[BUFSIZ]; setbuf(stderr, stderr_buf); + init_encoding_handler(); int c; static const struct option long_options[] = { { "help", no_argument, 0, CHAR_MAX + 1 }, --- groff-1.18.1.1.orig/debian/README.build +++ groff-1.18.1.1/debian/README.build @@ -0,0 +1,20 @@ +Debian groff build process +-------------------------- + +People starting new ports of Debian should be aware that there is a circular +build-dependency between the groff and xfree86 source packages. Fortunately, +in both cases this is in order to build optional components: xfree86 needs +groff to build some of its documentation, and groff needs xfree86 to build +the gxditview display program. + +To build groff without xfree86 installed, set the DEB_BUILD_OPTIONS +environment variable to include the string "no-groff-x11". Please do not +upload packages to the Debian archive that have been built in this way. + +The gs, netpbm, and psutils build-dependencies need not be satisfied while +bootstrapping. They are only necessary to build HTML documentation. + +Once a new port has been fully bootstrapped, there should be no problems +building groff routinely as with any other package. + + -- Colin Watson Tue, 22 Jan 2002 14:18:58 +0000 --- groff-1.18.1.1.orig/debian/groff-base.docs +++ groff-1.18.1.1/debian/groff-base.docs @@ -0,0 +1,9 @@ +BUG-REPORT +ChangeLog.jp +MORE.STUFF +NEWS +PROBLEMS +PROJECTS +README +README.jp +TODO --- groff-1.18.1.1.orig/debian/groff.links +++ groff-1.18.1.1/debian/groff.links @@ -0,0 +1,2 @@ +usr/share/man/man1/grohtml.1.gz usr/share/man/man1/post-grohtml.1.gz +usr/share/man/man1/grohtml.1.gz usr/share/man/man1/pre-grohtml.1.gz --- groff-1.18.1.1.orig/debian/groff-base.links.in +++ groff-1.18.1.1/debian/groff-base.links.in @@ -0,0 +1,8 @@ +etc/groff usr/share/groff/site-tmac +usr/bin/eqn usr/bin/geqn +usr/bin/tbl usr/bin/gtbl +usr/bin/pic usr/bin/gpic +usr/share/groff/@VERSION@ usr/share/groff/current +usr/share/man/man1/eqn.1.gz usr/share/man/man1/geqn.1.gz +usr/share/man/man1/tbl.1.gz usr/share/man/man1/gtbl.1.gz +usr/share/man/man1/pic.1.gz usr/share/man/man1/gpic.1.gz --- groff-1.18.1.1.orig/debian/groff-base.postrm +++ groff-1.18.1.1/debian/groff-base.postrm @@ -0,0 +1,21 @@ +#! /bin/sh -e + +case $1 in + abort-install|abort-upgrade) + if [ -e /etc/tmac.man.local.moved-by-preinst ]; then + mv -f /etc/groff/man.local /etc/tmac.man.local + rm -f /etc/tmac.man.local.moved-by-preinst + fi + if [ -e /usr/share/groff/site-tmac.moved-by-preinst ]; then + mv -f /etc/groff /usr/share/groff/site-tmac + rm -f /usr/share/groff/site-tmac.moved-by-preinst + fi + if [ -d /usr/share/groff/site-tmac.old ]; then + mv -f /usr/share/groff/site-tmac.old /usr/share/groff/site-tmac + fi + ;; +esac + +#DEBHELPER# + +exit 0 --- groff-1.18.1.1.orig/debian/groff-base.mime +++ groff-1.18.1.1/debian/groff-base.mime @@ -0,0 +1 @@ +application/x-troff-man; /usr/bin/nroff -mandoc -Tlatin1; copiousoutput; print=/usr/bin/nroff -mandoc -Tlatin1 | print text/plain:- --- groff-1.18.1.1.orig/debian/control +++ groff-1.18.1.1/debian/control @@ -0,0 +1,68 @@ +Source: groff +Section: text +Priority: important +Maintainer: Colin Watson +Uploaders: Fumitoshi UKAI +Standards-Version: 3.6.2 +Build-Depends: byacc, debhelper (>= 4), gs, netpbm, psutils, xutils, x-dev, libx11-dev, libxmu-dev, libxt-dev, libxaw7-dev + +Package: groff-base +Architecture: any +Depends: ${shlibs:Depends} +Suggests: groff +Replaces: groff (<< 1.18.1.1-9), jgroff (<< 1.17-1) +Conflicts: groff (<< 1.17-1), jgroff (<< 1.17-1), pmake (<< 1.45-7), troffcvt (<< 1.04-14) +Description: GNU troff text-formatting system (base system components) + This package contains the traditional UN*X text formatting tools + troff, nroff, tbl, eqn, and pic. These utilities, together with the + man-db package, are essential for displaying the on-line manual pages. + . + groff-base is a stripped-down package containing the necessary components + to read manual pages in ASCII, Latin-1, and UTF-8, plus the PostScript + device (groff's default). Users who want a full groff installation, with + the standard set of devices, fonts, macros, and documentation, should + install the groff package. + +Package: groff +Priority: optional +Architecture: any +Depends: groff-base (= ${Source-Version}), ${shlibs:Depends} +Recommends: gs, imagemagick, libpaper1, netpbm, psutils +Provides: jgroff, groff-x11 +Conflicts: jgroff (<< 1.17-1), groff-x11 (<< 1.18-1) +Replaces: jgroff (<< 1.17-1), groff-base (<< 1.17.2-9), groff-x11 (<< 1.18-1) +Description: GNU troff text-formatting system + This package contains optional components of the GNU troff text-formatting + system. The core package, groff-base, contains the traditional tools like + troff, nroff, tbl, eqn, and pic. This package contains additional devices + and drivers for output to DVI, HTML (when the recommended packages gs, + netpbm, and psutils are installed), HP LaserJet printers, and Canon CAPSL + LBP-4 and LBP-8 printers. + . + The X75, X75-12, X100, and X100-12 devices, which allow groff output to be + conveniently viewed on an X display using the standard X11 fonts, are now + included here. They were previously in a separate package, groff-x11. + . + Besides these, the groff package contains man pages describing the language + and its macro sets, info documentation, and a number of supplementary + programs: + . + - gxditview, which is used to display the output of the X* devices, and + can also be used to view PostScript output from groff; + - grn, a preprocessor for pictures in the 'gremlin' format; + - tfmtodit, which creates font files for use with 'groff -Tdvi'; + - hpftodit, which creates font files for use with 'groff -Tlj4'; + - afmtodit, which creates font files for use with 'groff -Tps'; + - refer, which preprocesses bibliographic references for use with groff; + - indxbib, which creates inverted indices for bibliographic databases used + by 'refer'; + - lkbib and lookbib, which search bibliographic databases; + - addftinfo, which adds metric information to troff font files for use + with groff; + - pfbtops, which translates a PostScript font in .pfb format to ASCII for + use with groff; + - mmroff, a simple groff preprocessor which expands references in mm; + - pic2graph, which converts PIC diagrams into cropped image files; + - eqn2graph, which converts EQN equations into cropped image files. + . + All the standard macro packages are supported. --- groff-1.18.1.1.orig/debian/README.Debian +++ groff-1.18.1.1/debian/README.Debian @@ -0,0 +1,57 @@ +groff for Debian +---------------- + +As of version 1.17-1, Debian groff was split into three packages: +groff-base, groff, and groff-x11. At version 1.18-1 the groff-x11 package +was merged back into groff. The current organization is as follows: + + groff-base - a stripped-down groff package containing the components + required to read man pages in ASCII, Latin-1, UTF-8, and + PostScript + groff - all other components + +If you only need groff in order to read man pages in common formats, you can +remove the main groff package and save some disk space. For more +information, please see 'dpkg --print-avail ' or 'apt-cache show +'. + +If you see error messages like "groff: can't find `DESC' file", make sure +that you have the groff package installed as well as groff-base, as this +message indicates that the requested output device is not installed. + +Where is the groff documentation? It's not easy to find when you're +unfamiliar with the system (as I well remember). The 'SEE ALSO' section of +the roff(7) man page has a good index. + +The macro path in Debian groff is as follows: + + /usr/lib/groff/site-tmac + - old directory for compatibility purposes + /usr/share/groff/site-tmac (symlink to /etc/groff) + - local macro configuration, such as man.local + /usr/share/groff//tmac + - macros installed as part of groff + /usr/share/groff/tmac + - macros installed by other Debian packages + +If you're using a UTF-8 locale and are having problems searching for dashes +in man pages such as those in command-line options, this may be because the +man page uses "-" rather than "\-" to represent them, so they get rendered +as a Unicode hyphen which isn't the one you can type conveniently on your +keyboard. These man pages should be fixed. However, you can make groff use a +plain ASCII dash in this case by editing both /etc/groff/man.local and +/etc/groff/mdoc.local and uncommenting the final request, so that it looks +like this: + +. \" Debian: Many UTF-8 man pages use "-" instead of "\-" for dashes such +. \" as those in command-line options. This is a bug in those pages, but +. \" too many fonts are missing the Unicode HYPHEN character, so we render +. \" this as the ASCII-compatible HYPHEN-MINUS instead. +. if '\*[.T]'utf8' \ +. char - \N'45' + +As of groff 1.18.1.1-7, this defaults to being uncommented. You can comment +it out again if you want to make sure that man pages you're writing are +clear of this problem. + + -- Colin Watson Sat, 15 Nov 2003 17:42:38 +0000 --- groff-1.18.1.1.orig/debian/rules +++ groff-1.18.1.1/debian/rules @@ -0,0 +1,184 @@ +#! /usr/bin/make -f +# +# rules to debianize groff + +export DH_OPTIONS + +CC = gcc +CXX = g++ +ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) +CFLAGS = -O2 -g -Wall +else +CFLAGS = -g -Wall +endif + +# From Makefile.in +version = $(shell cat VERSION) +revision = $(shell sed -e 's/^0$$//' -e 's/^[1-9].*$$/.&/' REVISION) +upstream = $(version)$(revision) +datadir = usr/share/groff/$(upstream) + +fontpath := /$(datadir)/font:/usr/local/share/groff/font +fontpath := $(fontpath):/usr/local/lib/font:/usr/lib/font + +gbtmp = debian/groff-base +gtmp = debian/groff + +devbase = ascii ascii8 latin1 nippon ps utf8 +devx11 = X100 X100-12 X75 X75-12 + +ifeq (,$(findstring no-groff-x11,$(DEB_BUILD_OPTIONS))) +GROFF_X11 := yes +else +GROFF_X11 := no +endif + +ifeq ($(GROFF_X11),yes) +BUILD_TARGETS := build-groff build-groff-x11 +else +BUILD_TARGETS := build-groff +endif +BINARY_TARGETS := binary-groff-base binary-groff +DH_EXCLUDE := -Ngroff-x11 + +configure: configure-stamp +configure-stamp: + if [ ! -f Makefile.clean ]; then cp -p Makefile Makefile.clean; fi + -rm -f config.log config.cache + CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CFLAGS)" \ + PSPRINT=lpr PAGE=A4 \ + ./configure --prefix=/usr --mandir=\$${prefix}/share/man \ + --infodir=\$${prefix}/share/info --enable-multibyte + touch $@ + +src/xditview/Makefile: configure + # This strange BuildXaw tweak reminds imake that we're building with + # libxaw7, not libxaw8 (per the build-dependencies) and that + # therefore we don't need to link against libxp. + cd src/xditview && xmkmf -DBuildXaw=NO + +build-arch: $(BUILD_TARGETS) +build-indep: +build: build-arch build-indep + +build-groff: configure + dh_testdir + touch configure # avoid autoconf build-dependency + $(MAKE) extratmacdirs=/usr/share/groff/tmac + GROFF_NO_SGR=1 $(MAKE) -C doc meintro.txt meref.txt pic.txt + touch $@ + +ifeq ($(GROFF_X11),yes) +build-groff-x11: src/xditview/Makefile + dh_testdir + touch configure # avoid autoconf build-dependency + $(MAKE) -C src/xditview depend + $(MAKE) -C src/xditview FONTPATH=$(fontpath) + touch $@ +endif + +clean: + dh_testdir + dh_testroot + touch configure # avoid autoconf build-dependency + rm -f man/index.* + find . -name tags | xargs -r rm -f + find . -name '*.cc.combine' | xargs -r rm -f + -$(MAKE) -C doc -i extraclean + -$(MAKE) -C src/xditview extraclean + -$(MAKE) -i realclean extraclean + rm -f src/xditview/Imakefile src/xditview/Makefile + dh_clean configure-stamp build-stamp + rm -f debian/groff-base.files debian/groff-base.links + rm -f config.log config.cache config.status + if [ -f Makefile.clean ]; then mv -f Makefile.clean Makefile; fi + +%: %.in + sed -e 's/@VERSION@/$(upstream)/g' $< > $@ + +install: DH_OPTIONS= +install: build debian/groff-base.files + dh_testdir + dh_testroot + dh_clean -k -a + dh_installdirs -a + $(MAKE) install prefix=$(CURDIR)/$(gtmp)/usr \ + docdir=$(CURDIR)/$(gtmp)/usr/share/doc/groff-base \ + INSTALL_INFO=: + dh_movefiles -pgroff-base --sourcedir=debian/groff + dh_installdirs -pgroff-base $(datadir)/font + set -e; for x in $(devbase); do \ + mv $(gtmp)/$(datadir)/font/dev$$x $(gbtmp)/$(datadir)/font/; \ + done +ifeq ($(GROFF_X11),yes) + install -m755 src/xditview/gxditview $(gtmp)/usr/bin/gxditview + install -m644 src/xditview/GXditview.ad \ + $(gtmp)/etc/X11/app-defaults/GXditview +else + set -e; for x in $(devx11); do \ + rm -rf $(gtmp)/$(datadir)/font/dev$$x; \ + done +endif + +binary-indep: + +binary-groff-base: DH_OPTIONS=-pgroff-base +binary-groff-base: install debian/groff-base.links + dh_testdir + dh_testroot + # Conffiles should go in /etc + mv $(gbtmp)/usr/share/groff/site-tmac $(gbtmp)/etc/groff + # Debian additions to *.local + cat debian/mandoc.local >> $(gbtmp)/etc/groff/man.local + cat debian/mandoc.local >> $(gbtmp)/etc/groff/mdoc.local + # Scripts should be executable + chmod +x $(gbtmp)/$(datadir)/font/devps/generate/afmname \ + $(gbtmp)/$(datadir)/font/devps/generate/symbol.sed + dh_installdocs + dh_installmime + dh_installchangelogs ChangeLog + dh_link + +binary-groff: DH_OPTIONS=-pgroff +binary-groff: install + dh_testdir + dh_testroot + # Scripts should be executable + chmod +x $(gtmp)/$(datadir)/font/devdvi/generate/CompileFonts + # Now in groff-base + rmdir $(gtmp)/usr/lib/groff/site-tmac || true + rmdir $(gtmp)/usr/share/groff/site-tmac || true + # 'make install' creates this directory when installing documentation. + dh_link usr/share/doc/groff-base usr/share/doc/groff + dh_installdocs -Xcopyright +ifeq ($(GROFF_X11),yes) + install -m644 src/xditview/ChangeLog \ + $(gtmp)/usr/share/doc/groff/ChangeLog.gxditview + dh_installman src/xditview/gxditview._man +endif + dh_installinfo doc/groff doc/groff-[0-9]* + dh_link + +binary-arch: DH_OPTIONS=-a $(DH_EXCLUDE) +binary-arch: $(BINARY_TARGETS) + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb +ifneq ($(GROFF_X11),yes) + @echo + @echo "==========================================================" + @echo "WARNING! groff has been built without X support." + @echo "Please do not upload these packages to the Debian archive!" + @echo "==========================================================" + @echo +endif + +binary: binary-indep binary-arch + +.PHONY: configure build build-arch build-indep clean install +.PHONY: binary binary-arch binary-indep binary-groff-base binary-groff --- groff-1.18.1.1.orig/debian/groff.dirs +++ groff-1.18.1.1/debian/groff.dirs @@ -0,0 +1,2 @@ +etc/X11/app-defaults +usr/bin --- groff-1.18.1.1.orig/debian/groff-base.postinst +++ groff-1.18.1.1/debian/groff-base.postinst @@ -0,0 +1,16 @@ +#! /bin/sh -e + +case $1 in + configure) + if [ -e /etc/tmac.man.local.moved-by-preinst ]; then + rm -f /etc/tmac.man.local.moved-by-preinst + fi + if [ -e /usr/share/groff/site-tmac.moved-by-preinst ]; then + rm -f /usr/share/groff/site-tmac.moved-by-preinst + fi + ;; +esac + +#DEBHELPER# + +exit 0 --- groff-1.18.1.1.orig/debian/compat +++ groff-1.18.1.1/debian/compat @@ -0,0 +1 @@ +4 --- groff-1.18.1.1.orig/debian/mandoc.local +++ groff-1.18.1.1/debian/mandoc.local @@ -0,0 +1,24 @@ +. +.if n \{\ +. \" Debian: Map \(oq to ' rather than ` in nroff mode for devices other +. \" than utf8. +. if !'\*[.T]'utf8' \ +. tr \[oq]' +. +. \" Debian: Disable the use of SGR (ANSI colour) escape sequences by +. \" grotty. +. if '\V[GROFF_SGR]'' \ +. output x X tty: sgr 0 +. +. \" Debian: Map \- to the Unicode HYPHEN-MINUS character, to make +. \" searching in man pages easier. +. if '\*[.T]'utf8' \ +. char \- \N'45' +. +. \" Debian: Many UTF-8 man pages use "-" instead of "\-" for dashes such +. \" as those in command-line options. This is a bug in those pages, but +. \" too many fonts are missing the Unicode HYPHEN character, so we render +. \" this as the ASCII-compatible HYPHEN-MINUS instead. +. if '\*[.T]'utf8' \ +. char - \N'45' +.\} --- groff-1.18.1.1.orig/debian/groff-base.dirs +++ groff-1.18.1.1/debian/groff-base.dirs @@ -0,0 +1,2 @@ +etc +usr/lib/groff/site-tmac --- groff-1.18.1.1.orig/debian/groff-base.preinst +++ groff-1.18.1.1/debian/groff-base.preinst @@ -0,0 +1,30 @@ +#! /bin/sh -e + +case $1 in + install|upgrade) + if dpkg --compare-versions "$2" lt 1.17-2; then + if [ -d /usr/share/groff/site-tmac ]; then + if [ -d /etc/groff ]; then + # Erm. This shouldn't happen. + echo "Moving /usr/share/groff/site-tmac out of the way." + mv -f /usr/share/groff/site-tmac \ + /usr/share/groff/site-tmac.old + else + echo "Moving /usr/share/groff/site-tmac to /etc/groff." + mv -f /usr/share/groff/site-tmac /etc/groff + touch /usr/share/groff/site-tmac.moved-by-preinst + fi + fi + if [ -e /etc/tmac.man.local ]; then + echo "Moving /etc/tmac.man.local to /etc/groff/man.local." + mkdir -p /etc/groff + mv -f /etc/tmac.man.local /etc/groff/man.local + touch /etc/tmac.man.local.moved-by-preinst + fi + fi + ;; +esac + +#DEBHELPER# + +exit 0 --- groff-1.18.1.1.orig/debian/copyright +++ groff-1.18.1.1/debian/copyright @@ -0,0 +1,488 @@ +This is the Debian GNU/Linux prepackaged version of the GNU groff +document formatting system. +GNU groff was written by James Clark . +It is now maintained by Ted Harding and +Werner Lemberg . + +This Debian package was previously maintained by Fabrizio Polacco +. +It is now maintained by Colin Watson . + +The original tarball came from : + 4c7a1b478d230696f14743772f31639f groff-1.18.1.tar.gz +and was simply renamed to groff_1.18.1.orig.tar.gz. + +Some patches have been applied to groff outside the debian directory. The +most visible of these is a patch for Japanese support (contributed by +Fumitoshi UKAI and others in the jgroff team), which adds the ascii8 and +nippon devices and a number of font files. This has been discussed on the +upstream mailing list, and the opinion there was that multi-byte language +support would be better implemented using preprocessors and a UTF-8 core. +However, at the time of writing, there are no known problems caused by this +patch, and until a more complete solution is implemented upstream this +provides a useful service to Japanese users of Debian. + +The Debian diff also appends /usr/share/groff/tmac to the default macro path +for compatibility with versions of groff earlier than 1.17 (patch by Colin +Watson). + +========================================================================= + +Copyright (C) 1989-2000 Free Software Foundation, Inc. + Written by James Clark (jjc@jclark.com) + +This file is part of groff. + +groff is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +groff is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with groff; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +On Debian systems, a copy of the GNU General Public License is available +in /usr/share/common-licenses/GPL as part of the base-files package. + +========================================================================= + +Included in this release are implementations of troff, pic, eqn, tbl, +grn, refer, -man, -mdoc, and -ms macros, and drivers for PostScript, TeX +dvi format, HP LaserJet 4 printers, Canon CAPSL printers, HTML format +(still alpha), and typewriter-like devices. Also included is a modified +version of the Berkeley -me macros, an enhanced version of the X11 +xditview previewer, and an implementation of the -mm macros contributed +by Joergen Haegg (jh@axis.se). + +xditview is copyrighted by MIT under the usual X terms. + +/* + * Copyright 1991 Massachusetts Institute of Technology + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of M.I.T. not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. M.I.T. makes no representations about the + * suitability of this software for any purpose. It is provided "as is" + * without express or implied warranty. + * + * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. + * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +========================================================================= + +The groff manual is distributed under the following terms: + +Copyright (C) 1994-2000, 2001, 2002 Free Software Foundation, Inc. + + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation License, + Version 1.1 or any later version published by the Free Software + Foundation; with no Invariant Sections, with the Front-Cover texts + being `A GNU Manual," and with the Back-Cover Texts as in (a) + below. A copy of the license is included in the section entitled + `GNU Free Documentation License." + + (a) The FSF's Back-Cover Text is: `You have freedom to copy and + modify this GNU Manual, like GNU software. Copies published by + the Free Software Foundation raise funds for GNU development." + + + GNU Free Documentation License + Version 1.1, March 2000 + + Copyright (C) 2000 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + +0. PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +written document "free" in the sense of freedom: to assure everyone +the effective freedom to copy and redistribute it, with or without +modifying it, either commercially or noncommercially. Secondarily, +this License preserves for the author and publisher a way to get +credit for their work, while not being considered responsible for +modifications made by others. + +This License is a kind of "copyleft", which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + + +1. APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work that contains a +notice placed by the copyright holder saying it can be distributed +under the terms of this License. The "Document", below, refers to any +such manual or work. Any member of the public is a licensee, and is +addressed as "you". + +A "Modified Version" of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A "Secondary Section" is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall subject +(or to related matters) and contains nothing that could fall directly +within that overall subject. (For example, if the Document is in part a +textbook of mathematics, a Secondary Section may not explain any +mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The "Invariant Sections" are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. + +The "Cover Texts" are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. + +A "Transparent" copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, whose contents can be viewed and edited directly and +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup has been designed to thwart or discourage +subsequent modification by readers is not Transparent. A copy that is +not "Transparent" is called "Opaque". + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML designed for human modification. Opaque formats include +PostScript, PDF, proprietary formats that can be read and edited only +by proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML produced by some word processors for output +purposes only. + +The "Title Page" means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, "Title Page" means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + + +2. VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + + +3. COPYING IN QUANTITY + +If you publish printed copies of the Document numbering more than 100, +and the Document's license notice requires Cover Texts, you must enclose +the copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a publicly-accessible computer-network location containing a complete +Transparent copy of the Document, free of added material, which the +general network-using public has access to download anonymously at no +charge using public-standard network protocols. If you use the latter +option, you must take reasonably prudent steps, when you begin +distribution of Opaque copies in quantity, to ensure that this +Transparent copy will remain thus accessible at the stated location +until at least one year after the last time you distribute an Opaque +copy (directly or through your agents or retailers) of that edition to +the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + + +4. MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. +B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has less than five). +C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. +D. Preserve all the copyright notices of the Document. +E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. +F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. +G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. +H. Include an unaltered copy of this License. +I. Preserve the section entitled "History", and its title, and add to + it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. +J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. +K. In any section entitled "Acknowledgements" or "Dedications", + preserve the section's title, and preserve in the section all the + substance and tone of each of the contributor acknowledgements + and/or dedications given therein. +L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. +M. Delete any section entitled "Endorsements". Such a section + may not be included in the Modified Version. +N. Do not retitle any existing section as "Endorsements" + or to conflict in title with any Invariant Section. + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section entitled "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + + +5. COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections entitled "History" +in the various original documents, forming one section entitled +"History"; likewise combine any sections entitled "Acknowledgements", +and any sections entitled "Dedications". You must delete all sections +entitled "Endorsements." + + +6. COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + + +7. AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, does not as a whole count as a Modified Version +of the Document, provided no compilation copyright is claimed for the +compilation. Such a compilation is called an "aggregate", and this +License does not apply to the other self-contained works thus compiled +with the Document, on account of their being thus compiled, if they +are not themselves derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one quarter +of the entire aggregate, the Document's Cover Texts may be placed on +covers that surround only the Document within the aggregate. +Otherwise they must appear on covers around the whole aggregate. + + +8. TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License provided that you also include the +original English version of this License. In case of a disagreement +between the translation and the original English version of this +License, the original English version will prevail. + + +9. TERMINATION + +You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + + +10. FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. + + +ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + + Copyright (c) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.1 + or any later version published by the Free Software Foundation; + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. + A copy of the license is included in the section entitled "GNU + Free Documentation License". + +If you have no Invariant Sections, write "with no Invariant Sections" +instead of saying which ones are invariant. If you have no +Front-Cover Texts, write "no Front-Cover Texts" instead of +"Front-Cover Texts being LIST"; likewise for Back-Cover Texts. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + +========================================================================= + +meintro.me and meref.me are distributed under the following terms: + + Copyright (c) 1986 The Regents of the University of California. + All rights reserved. + + Redistribution and use in source and binary forms are permitted + provided that the above copyright notice and this paragraph are + duplicated in all such forms and that any documentation, + advertising materials, and other materials related to such + distribution and use acknowledge that the software was developed + by the University of California, Berkeley. The name of the + University may not be used to endorse or promote products derived + from this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +========================================================================= + +pic.ms is distributed under the following terms: + + This document was written for free use and redistribution by + Eric S. Raymond in August 1995. + +(I've contacted the author for clarification.) --- groff-1.18.1.1.orig/debian/changelog +++ groff-1.18.1.1/debian/changelog @@ -0,0 +1,1044 @@ +groff (1.18.1.1-12) unstable; urgency=low + + * src/devices/grohtml/post-html.cc: Remove extra qualification on + char_block constructor (closes: #356248). + + -- Colin Watson Mon, 17 Apr 2006 12:05:51 +0100 + +groff (1.18.1.1-11) unstable; urgency=low + + * Build-depend on x-dev, libx11-dev, libxmu-dev, and libxt-dev rather than + the transitional xlibs-dev package. + * Use debhelper v4. + + -- Colin Watson Fri, 16 Dec 2005 13:28:09 +0000 + +groff (1.18.1.1-10) unstable; urgency=low + + * Configure gxditview with 'xmkmf -DBuildXaw=NO' to override imake's + incorrect ideas about library linkage and avoid libXp when linking with + libXaw7. We don't need Xprint support anyway. + * Build-depend on just libxaw7-dev, dropping the alternative. + + -- Colin Watson Tue, 13 Sep 2005 10:38:10 +0100 + +groff (1.18.1.1-9) unstable; urgency=low + + * Move www.tmac to groff-base (closes: #319506). + * Fix non-XSI code in groff.postinst (part of #256226). + * Improve CJK support (closes: #324107): + - Add support for Chinese GB2312/GBK and BIG5 encodings (in the + increasingly-misnamed nippon driver), with kinsoku tables borrowed + from Emacs. Simon Law eyeballed the GB2312/GBK table. + - Expect UTF-8 input when running under a ko_*.UTF-8 locale. Functional + Korean support still requires a kinsoku table and a groff font + covering Hangul. + * Fix use of DoCharacter() in multibyte case; some calls to it were + missing the fourth argument (closes: #285524). + * Policy version 3.6.2. No changes required. + + -- Colin Watson Wed, 31 Aug 2005 12:54:37 +0100 + +groff (1.18.1.1-8) unstable; urgency=low + + * Avoid double fclose() in grn, which causes a build failure with glibc + 2.3.5. + * Move gxditview from /usr/X11R6 to /usr. + + -- Colin Watson Mon, 23 May 2005 16:34:34 +0100 + +groff (1.18.1.1-7) unstable; urgency=low + + * Too many fonts are missing the Unicode HYPHEN character, so I give up. + Render "-" as HYPHEN-MINUS (ASCII 0x2D) by default. (Of course, manual + pages using "-" when they should be using "\-" should still be fixed.) + + -- Colin Watson Fri, 18 Mar 2005 17:57:51 +0000 + +groff (1.18.1.1-6) unstable; urgency=low + + * Refer to /usr/share/doc/groff-base/copyright or + /usr/share/doc/groff/copyright in the header of all manual pages + licensed under the GFDL, per GFDL section 6 "COLLECTIONS OF DOCUMENTS" + (closes: #292229, #292230). + + -- Colin Watson Wed, 26 Jan 2005 09:28:10 +0000 + +groff (1.18.1.1-5) unstable; urgency=high + + * Upstream fix for temporary file handling vulnerability in pic2graph + (closes: #286371). + * Upstream fix for temporary file handling vulnerability in eqn2graph + (closes: #286372). + + -- Colin Watson Mon, 20 Dec 2004 14:26:25 +0000 + +groff (1.18.1.1-4) unstable; urgency=low + + * Fix use of anonymous structs at top level, which gcc-4.0 doesn't like + (patch backported from upstream, by Art Haas; closes: #282682). + + -- Colin Watson Sat, 11 Dec 2004 14:39:11 +0100 + +groff (1.18.1.1-3) unstable; urgency=low + + * Clarify copyright file (closes: #279904). Some items of documentation + are under non-free licences; this is exempt for sarge, and in any case + will be resolved when I update to a new version of groff after sarge. + + -- Colin Watson Wed, 17 Nov 2004 19:36:29 +0000 + +groff (1.18.1.1-2) unstable; urgency=high + + * [SECURITY] Fix a race condition in groffer leading to a temporary file + handling vulnerability (closes: #278265). + + -- Colin Watson Tue, 26 Oct 2004 23:52:13 +0100 + +groff (1.18.1.1-1) unstable; urgency=low + + * The "Death! Ride, ride to ruin and the world's ending!" release. + * New upstream release. The only change is an updated groffer script. + * Policy version 3.6.1. No changes required. + + -- Colin Watson Tue, 22 Jun 2004 01:44:41 +0100 + +groff (1.18.1-15) unstable; urgency=low + + * Create eqn2graph's temporary files in /tmp, not /usr/tmp (thanks, Einar + Karttunen; closes: #216819). How did I miss this when doing the same for + pic2graph? + + -- Colin Watson Fri, 23 Jan 2004 11:37:26 +0000 + +groff (1.18.1-14) unstable; urgency=low + + * Document Unicode hyphen configuration in README.Debian. + + -- Colin Watson Sat, 15 Nov 2003 17:43:03 +0000 + +groff (1.18.1-13) unstable; urgency=low + + * Add sample code to /etc/groff/man.local and /etc/groff/mdoc.local to + make "-" render as Unicode HYPHEN-MINUS on the utf8 device. This is + commented out by default because man pages which require this are buggy: + "\-" should be used instead when a real dash as opposed to a logical + hyphen is required. + * Fix some typos in groff(1) (thanks, Göran Weinholt; closes: #181375). + + -- Colin Watson Thu, 6 Nov 2003 12:52:18 +0000 + +groff (1.18.1-12) unstable; urgency=low + + * Create pic2graph's temporary files in /tmp, not /usr/tmp (thanks, Alex + Withers; closes: #216819). + + -- Colin Watson Tue, 21 Oct 2003 09:24:37 +0100 + +groff (1.18.1-11) unstable; urgency=low + + * Never recode input or output for the ascii8 device. It doesn't work in + non-trivial locales, since ascii8 isn't supposed to be prepared for + input in, say, UTF-8, and the point of ascii8 is to be a trivial hack + device for use when you know your input encoding is the same as your + output encoding. This makes man(1)'s life easier, and incidentally fixes + a problem with iconv replacing certain Polish characters with question + marks (closes: #170320). + * Revert part of the original attempt at fixing #170320 (in 1.18.1-2), + which made ascii8 accept U+0100 to U+0200. This is no longer necessary + with the above, and it broke the assumptions in + font::get_font_wchar_metric(), causing problems for KOI8-R input. + * Stop output devices breaking when given the 'x init' command in an + intermediate output file rather than 'x init '. + + -- Colin Watson Sun, 14 Sep 2003 16:17:41 +0100 + +groff (1.18.1-10) unstable; urgency=low + + * Fix wrong devps Japanese font metrics (thanks, Masatoshi Suehiro and + Junichi Uekawa; closes: #194016). + + -- Colin Watson Tue, 19 Aug 2003 02:54:34 +0100 + +groff (1.18.1-9) unstable; urgency=low + + * Fix segfault in grotty when changing the colour before setting the + initial font (closes: #189384). + + -- Colin Watson Fri, 18 Apr 2003 00:47:43 +0000 + +groff (1.18.1-8) unstable; urgency=low + + * Make sure that the default input character encoding is always + ISO-8859-1, except for the ascii8 device and for Japanese locales. This + is required for compatibility with upstream. + * Automatically load latin1.tmac when using all terminal devices except + ascii, not just the latin1 device. + + -- Colin Watson Fri, 11 Apr 2003 00:11:40 +0100 + +groff (1.18.1-7) unstable; urgency=low + + * Use groff's font metric instead of wcwidth() + (src/devices/grotty/tty.cc): add cols to tty_font + add_char takes font parameter + tty_printer:add_char calculate hpos by using font metric + (src/include/encoing.h src/libs/libgroff/encoding.cc): + put_wchar returns number of bytes written, not columns. + * font metric fixed, X*/M.proto, + * fix sed script in font's Makefile.sub. sed doesn't see + as regex metachar. + replace [0-9]+ to [0-9][0-9]*. + + -- Fumitoshi UKAI Mon, 24 Feb 2003 10:59:09 +0900 + +groff (1.18.1-6) unstable; urgency=low + + * Use wcwidth() to find the width of UTF-8 characters. This seems to work + well for both en_GB.UTF-8 and ja_JP.UTF-8, so both CJK and non-CJK + output should finally be correct (closes: #173764). + * Recommend libpaper1 instead of libpaperg. + + -- Colin Watson Sun, 23 Feb 2003 19:33:50 +0000 + +groff (1.18.1-5) unstable; urgency=low + + * put_wchar() returns number of columns for char + * add UTF-8 support for Japanese. + + -- Fumitoshi UKAI Fri, 7 Feb 2003 00:32:00 +0900 + +groff (1.18.1-4) unstable; urgency=low + + * Fix over-zealous backspacing in UTF-8 output (closes: #173764). + + -- Colin Watson Thu, 6 Feb 2003 01:31:57 +0000 + +groff (1.18.1-3) unstable; urgency=low + + * Recode this changelog to UTF-8. + * Clarify README.Debian to mention the error message you get if you've + forgotten to install groff as well as groff-base (see #175585). + * Build with g++ 3.2. Drop hppa -fno-strength-reduce hack from 1.17.2-12, + which I hope should no longer be required. + + -- Colin Watson Wed, 8 Jan 2003 03:26:13 +0000 + +groff (1.18.1-2) unstable; urgency=low + + * Backport upstream patch to fix segfaults in + node::add_discretionary_hyphen() observed while building aegis and + aegis3 (closes: #173058, #173063). + * Fix pic2graph syntax error, thanks to lintian. Patch also sent upstream. + * Patch from Fumitoshi UKAI to fix ISO-8859-2 output through devascii8 + (closes: #170320). + + -- Colin Watson Sun, 15 Dec 2002 14:59:20 +0000 + +groff (1.18.1-1) unstable; urgency=low + + * New upstream release. + - Includes 'Am' string in mdoc from NetBSD (closes: #163195). + * Amend debian/copyright to reflect that the papersize fallback patch has + been merged upstream. + * Actually call the GROFF_LANGINFO_CODESET macro as well as defining it. + + * New multibyte patch from Fumitoshi UKAI, with adjustments by me. Fixes + Japanese HTML output, among other things (closes: #149006). + + groff (1.18.1-0.u1) unstable; urgency=low + + * for C or POSIX locale, use ascii8 encoding handler + * xditview supports ENABLE_MULTIBYTE (at least Japanese) + + -- Fumitoshi UKAI Mon, 4 Nov 2002 02:05:16 +0900 + + groff (1.18.1-0.u) unstable; urgency=low + + * New upstream release + + -- Fumitoshi UKAI Wed, 9 Oct 2002 02:09:41 +0900 + + groff (1.18-6.u2) unstable; urgency=low + + * src/roff/troff/input.cc: fix bug in wchar_charinfo() + * src/device/grohtml/post-html.cc: works ENABLE_MULTIBYTE + * font/devhtml: add font M, G for Japanese + * grohtml works (japanese) + + -- Fumitoshi UKAI Mon, 23 Sep 2002 02:56:59 +0900 + + groff (1.18-6.u1) unstable; urgency=low + + * new multibyte support patch based on japanese patch + - use iconv + - add .encoding directive (default encoding is determined from locale) + - \[u] supported + - font/*/DESC: + add fontset + - font/*/ + add u..u range + - grotty and grops works (japanese) + + -- Fumitoshi UKAI Sun, 22 Sep 2002 04:47:10 +0900 + + -- Colin Watson Sun, 10 Nov 2002 23:16:32 +0000 + +groff (1.18-7) unstable; urgency=low + + * Policy version 3.5.7: + - Drop DEB_BUILD_OPTIONS=debug support; compile with -g by default. + - Support DEB_BUILD_OPTIONS=noopt. + * src/roff/troff/node.cc (bracket_node::copy): Fix a segfault on copying + an empty bracket_node, such as '(\bu' (closes: #162595). + + -- Colin Watson Fri, 27 Sep 2002 16:03:22 +0100 + +groff (1.18-6) unstable; urgency=low + + * Backport upstream patch to m.tmac for the benefit of gpresent: the VM + macro definition was missing a backslash (closes: #160713). + + -- Colin Watson Fri, 13 Sep 2002 00:54:39 +0100 + +groff (1.18-5) unstable; urgency=low + + * Document the Debian groff macro path in README.Debian. + * Map \- to Unicode HYPHEN-MINUS in UTF-8 mode, for more convenient + searching in man pages (closes: #159872). + + -- Colin Watson Fri, 6 Sep 2002 22:34:21 +0100 + +groff (1.18-4) unstable; urgency=low + + * Upstream patch to freeze unbreakable spaces, preventing a failed + assertion on latin1(7) (closes: #155969). + * Install text versions of meintro.ps, meref.ps, and pic.ps. Other + documents either aren't very useful in plain text or don't format well + (closes: #155226). + * Reorder clean target a little. + + -- Colin Watson Sat, 10 Aug 2002 10:54:54 +0100 + +groff (1.18-3) unstable; urgency=low + + * src/devices/grohtml/html-table.cc: Initialize another variable properly. + This really fixes the segfault during the arm build. + + -- Colin Watson Wed, 31 Jul 2002 02:52:20 +0100 + +groff (1.18-2) unstable; urgency=low + + * src/include/encoding.h: Fix broken token-after-#endif syntax. + * src/devices/grohtml/post-html.cc: Make sure pointsize is initialized + properly. This fixes an infinite loop in the ia64 build, and perhaps arm + too. + + -- Colin Watson Sat, 27 Jul 2002 18:41:46 +0100 + +groff (1.18-1) unstable; urgency=low + + * New upstream release. Highlights: + - Colour support (although see below). + - New macro set, mom, mainly for non-scientific writers. The aim of + these macros is to make groff accessible for ordinary use with a + minimum of convoluted syntax. + - 'eu' and 'Eu' characters available for Euro support. + - Improved support for TeX hyphenation files. + - New means of setting the line length, which now works for -mdoc manual + pages as well as -man. Use man-db >= 2.4.0 to take advantage of this. + - Documentation of the differences between groff and Unix troff is now + in groff_diff(7). + - groff_mwww(1) has been renamed to groff_www(1). + - groff_ms(7) has been completely rewritten. + - New scripts: groffer, pic2graph, and eqn2graph. + - Substantial improvements in grohtml (although it's still alpha), + including dealing with overstriking properly (closes: #67545). + + * Many thanks, again, to Fumitoshi UKAI for forward-porting the Japanese + patch. + * Disable the new ANSI colour/bold/underline escapes in nroff mode, + because most pagers either fail to cope with it or need special options + to do so. It can be re-enabled by editing /etc/groff/man.local and + /etc/groff/mdoc.local, or by setting the environment variable GROFF_SGR + to something non-empty. + * Drop most current /etc/papersize patches, as the 'papersize' DESC + keyword is now available upstream. We now only patch the DESC files and + extend the papersize keyword to allow falling back to something else if + /etc/papersize doesn't exist. + * Fix the removal of final newlines when reading /etc/papersize. + * Translate the 'oq' character to an apostrophe (0x27) rather than a + backquote (0x60) when using devices other than utf8 (closes: #149086). + + * Merge groff-x11 back into groff, since this release doesn't have to + worry so much about smooth upgrades from potato (closes: #129835). + * Accordingly, remove the debconf note about this, since it was an abuse + of debconf anyway. README.Debian describes the package organization. + * Include more documentation in the main groff package (closes: #121475). + * Build-depend on gs, netpbm, and psutils for HTML documentation. Mention + in README.build that people bootstrapping a new port or otherwise + building the base system from scratch don't need these three. + * Recommend these three packages for the grohtml driver. + * Recommend imagemagick for pic2graph and eqn2graph. + * Downgrade libpaperg dependency to a recommendation, since we fall back + to a4 now if it's not installed. + * Use debhelper v3 mode. + * Upstream ships pre-built info files now, so use them. You need texinfo + (>= 4.2) if you want to regenerate them. + + -- Colin Watson Sun, 21 Jul 2002 18:33:04 +0100 + +groff (1.17.2-17) unstable; urgency=low + + * Back to unstable, now that there's no concern about disrupting woody. + Merge changes from -15.woody.1 (unstable) and -16 (experimental). + * Delete excess charset information in M and G font files that also use + the fixedkanji directive, after consultation with Fumitoshi UKAI. This + saves over 1.6Mb. + * Move ps device to base, now that it isn't quite so large. It's needed + there because it's the default device (closes: #131410). + * Update the descriptions of groff-base and groff for the move of the + PostScript device. + + -- Colin Watson Sat, 4 May 2002 18:03:40 +0100 + +groff (1.17.2-16) experimental; urgency=low + + * Experimental upload for the benefit of the NetBSD porters. + * Document the build-dependency loop with xfree86, and allow people + constructing new ports to override this temporarily with + DEB_BUILD_OPTIONS=no-groff-x11 (closes: #130312). + * Import AM_LANGINFO_CODESET macro from gettext, and use it for + --enable-japanese to provide an emulation of nl_langinfo(CODESET) for + systems that don't have it (closes: #130356). + * Fix build without --enable-japanese. + * Build-depend on a version of debhelper which pulls in debconf-utils + (closes: #130357). + * Test that Makefile.clean doesn't exist before clobbering it in the + configure target. + + -- Colin Watson Tue, 22 Jan 2002 18:34:22 +0000 + +groff (1.17.2-15.woody.1) unstable; urgency=medium + + * New Danish debconf translation (thanks, Rune B. Broberg; + closes: #131092). + * New French debconf translation (thanks, Philippe Batailler; + closes: #138515). + + -- Colin Watson Sun, 17 Mar 2002 04:11:50 +0000 + +groff (1.17.2-15) unstable; urgency=high + + * Fix buffer overflow in grn (closes: #129261). + + -- Colin Watson Tue, 15 Jan 2002 00:22:19 +0000 + +groff (1.17.2-14) unstable; urgency=low + + * Upstream patch to make .TH respect the line length (closes: #125826). + + -- Colin Watson Mon, 14 Jan 2002 02:49:45 +0000 + +groff (1.17.2-13) unstable; urgency=high + + * Fix peekbyte() to return correctly (closes: #122702). + + -- Colin Watson Thu, 6 Dec 2001 17:15:20 +0000 + +groff (1.17.2-12) unstable; urgency=high + + * Use -fno-strength-reduce on hppa, as a temporary workaround for a + compiler bug. + * Display package-split note when reconfiguring (closes: #122420). + + -- Colin Watson Wed, 5 Dec 2001 17:24:08 +0000 + +groff (1.17.2-11) unstable; urgency=high + + * Use lpr as the print spooler, even if it happens not to be installed on + the build system. This broke 'groff -l' (thanks, Mike Fontenot). + + -- Colin Watson Fri, 30 Nov 2001 21:41:29 +0000 + +groff (1.17.2-10) unstable; urgency=high + + * Install lbp.tmac (closes: #121765). + + -- Colin Watson Thu, 29 Nov 2001 20:28:18 +0000 + +groff (1.17.2-9) unstable; urgency=low + + * Add Fumitoshi UKAI to Uploaders, in case of emergencies. + * Move refer to groff, as this saves over 100K in groff-base and I don't + think refer is very useful without additional macro packages. + * Document refer in groff's description. + * Move ChangeLog.jp and README.jp to groff-base. + * Replace createM.c with a Perl implementation to aid cross-compilation + (thanks, Fumitoshi UKAI; closes: #114338). + + -- Colin Watson Sun, 14 Oct 2001 04:35:20 +0100 + +groff (1.17.2-8) unstable; urgency=medium + + * The "Texas Armadillo" release. + * Policy version 3.5.6 (support build-arch and build-indep targets). + * Reduce size of devnippon fonts, and include devnippon in groff-base + (thanks, Fumitoshi UKAI and GOTO Masanori; closes: #112622). + * Upstream fix for overzealous warnings from -mm and -ms (closes: #69129). + * Fix building in a subdirectory (closes: #111229). + * Remove spurious substitutions of '..' for '.' in groff_man(7). + * groff depends on libpaperg so that /etc/papersize is always present. + * Urgency medium as the above has broken some builds of other packages. + * Correct quoted-printable remnant in Brazilian Portugese debconf template + (thanks, Andre Luis Lopes; closes: #110192). + * New Russian debconf template (thanks, Ilgiz Kalmetev; closes: #112653). + + -- Colin Watson Wed, 19 Sep 2001 01:34:21 +0100 + +groff (1.17.2-7) unstable; urgency=low + + * Back with a new GPG key after a disk crash. Thanks for the NMU in the + meantime (closes: #107998, #108705). + * Document that -E can't suppress messages output to stderr by macro + packages using .tm or .tm1 (fix from upstream CVS; closes: #69130). + * src/devices/grotty/tty.cc: Correct one instance of putchar() on a + potential UTF-8 character to put_char() (thanks, Mike Fabian and Michael + Schroeder; closes: #110008). + + -- Colin Watson Sun, 26 Aug 2001 00:15:42 +0100 + +groff (1.17.2-6.1) unstable; urgency=low + + * Non Maintainer Upload + * fix hyphen character problem in EUC-JP encoding + (closes: Bug#107998). + + -- Fumitoshi UKAI Fri, 17 Aug 2001 02:06:21 +0900 + +groff (1.17.2-6) unstable; urgency=medium + + * src/devices/grohtml/post-html.cc: Put characters into the right places + in the output buffer so that HTML output no longer ends up as gibberish + (closes: #107788). + + -- Colin Watson Wed, 8 Aug 2001 00:33:13 +0100 + +groff (1.17.2-5) unstable; urgency=high + + * src/preproc/pic/pic.y: Fix format string vulnerability that could allow + the -S flag to be disabled (closes: #107459). Patch adapted from one by + Zenith Parsec . + * Add a note to README.Debian about where to find documentation. + + -- Colin Watson Thu, 2 Aug 2001 20:36:18 +0100 + +groff (1.17.2-4) unstable; urgency=low + + * src/preproc/eqn/text.cc: Initialize wc to the value of the current + character even if it isn't a wide character. Otherwise eqn would output + nulls instead of normal characters (closes: #106551). + * Conflict with jgroff as well as with pre-split versions of ordinary + groff, and make references to jgroff versioned to avoid triggering on + groff's Provides: field. + + -- Colin Watson Wed, 25 Jul 2001 22:40:52 +0100 + +groff (1.17.2-3) unstable; urgency=low + + * Remove spare newline from troffrc, which broke e.g. the ms macros + (closes: #105777). + + -- Colin Watson Thu, 19 Jul 2001 00:07:18 +0100 + +groff (1.17.2-2) unstable; urgency=medium + + * Urgency medium to get a halfway recent groff into testing for the base + system freeze. This version should be a significant improvement for + non-ASCII/Latin-1 users. + + * New Japanese patch from Fumitoshi UKAI: + + groff (1.17.2-1.ukai.1) unstable; urgency=low + + * fix tmac/euc-jp.tmac (fix coding-system) + + -- Fumitoshi UKAI Sun, 15 Jul 2001 21:14:56 +0900 + + groff (1.17.2-1.ukai.0) unstable; urgency=low + + * revised Japanese patch evaluation build + - refactoring, cleanups + not completed (for example src/xditview) + + -- Fumitoshi UKAI Sun, 15 Jul 2001 15:27:59 +0900 + + Also added dq and cq characters to the ascii8 and nippon devices. + + * Make groff-base and groff-x11 conflict with pre-split groff + (closes: #105276). + * Move ascii8 device to groff-base (closes: #105627). + * Remove stray + in groff(1) (closes: #105530). + * New Brazilian Portugese debconf translation (thanks, Andre Luis Lopes; + closes: #105367). + + -- Colin Watson Tue, 17 Jul 2001 17:58:23 +0100 + +groff (1.17.2-1) unstable; urgency=low + + * New upstream release. Fixes \s[0] escape (affects non-tty use of mdoc). + * debian/rules: + - The clean target now cleans the source tree better. + - Use version detection from Makefile.in: it's friendlier to syntax + highlighting. + + -- Colin Watson Mon, 9 Jul 2001 03:35:20 +0100 + +groff (1.17.1-3) unstable; urgency=low + + * New Spanish debconf translation (thanks, Carlos Valdivia Yagüe; + closes: #102897). + + -- Colin Watson Sat, 30 Jun 2001 20:05:18 +0100 + +groff (1.17.1-2) unstable; urgency=low + + * Conflict with pmake (<< 1.45-7), which had problems with the new + location of groff's macros (see #101973). + + -- Colin Watson Sun, 24 Jun 2001 03:45:43 +0100 + +groff (1.17.1-1) unstable; urgency=low + + * New upstream release. + * Of course, the library directory has moved with the new version number. + Add a symlink, /usr/share/groff/current, which points to the current + library directory; also add a versioned conflicts on troffcvt, which I'm + about to fix to cope with this. If you rely on some particular version, + use it; if not, use current. + * Autogenerate debian/groff-base.files and debian/groff-base.links. + + -- Colin Watson Sat, 23 Jun 2001 00:54:37 +0100 + +groff (1.17-4) unstable; urgency=low + + * Back out patch supporting transparent decompression of groff's input + stream. Since programs using groff have to support systems where *roff + doesn't know how to decompress things, it doesn't really simplify + anything else greatly; more importantly, using gzip means that argument + parsing didn't always work the way we expected (closes: #75990). + * The lj4 and ps drivers already support /etc/papersize due to an earlier + Debian patch, and it turns out that lbp supports it upstream but wasn't + previously configured to use it. Altered its DESC file to meet libpaper + standards (closes: #19681, #19722). + * Move the error unwind for groff-base's preinst into its postrm (oops). + * New German debconf translation (thanks, Sebastian Feltel; + closes: #100681). + * Add README.Debian, describing the recent package reorganization. + * Update copyright file to describe all upstream-relevant patches. + + -- Colin Watson Wed, 20 Jun 2001 00:43:45 +0100 + +groff (1.17-3) unstable; urgency=low + + * Restore /usr/share/groff/tmac to the macro path, as some third-party + programs install macros there (should fix #100139, but I'll leave it to + the vgrind maintainer to check that groff 1.17 hasn't broken anything + else). + + -- Colin Watson Fri, 8 Jun 2001 19:06:15 +0100 + +groff (1.17-2) unstable; urgency=low + + * Brown paper bag bug: move grotty to groff-base! + * Also move the doc macros to groff-base; some man pages use them. (This + and the above bloat -base by some 200K, I'm afraid.) + * Mention in the debconf note that groff-base supports Latin-1 and UTF-8 + as well as ASCII. + * /usr/share/groff/site-tmac contains mdoc.local as well as man.local as + of 1.17, so make that whole directory a symlink to /etc/groff and + migrate the old /etc/tmac.man.local conffile to /etc/groff/man.local. + This seems to need some ugly migration code. + * Back out the autoconf 2.50 diffs for now, as they were polluting the + .diff.gz. I've sent them upstream, though. + + -- Colin Watson Wed, 6 Jun 2001 17:02:12 +0100 + +groff (1.17-1) unstable; urgency=low + + * New maintainer (ciao, Fabrizio). + * Thanks for the NMUs (closes: #75722, #90765). + * New upstream release, with corresponding debian/copyright updates. + * Follow upstream's move to versioned subdirectories of /usr/share/groff. + * The components of groff required to support normal use of man-db are now + in a separate package, groff-base (thanks, Elrond; closes: #53225). + * Also split out gxditview and the devices that use it into the groff-x11 + package. I'd have preferred them to stay part of groff, as discussed on + -devel, but the necessary xlibs dependency would mean that everybody + dist-upgrading from a potato base system would get the X libraries. + Added a debconf note to avoid silent loss of functionality; maybe in + woody+1 they can be merged back into groff. + + * New packaging, using debhelper. + - This shouldn't generate invalid syntax in the prerm (closes: #86437). + - All binaries should be correctly stripped now (closes: #96786). + * Add build dependencies (thanks, Daniel Schepler; closes: #80844). + * Don't bother running configure in the clean target. + * Touch configure in debian/rules to avoid a build-dep on autoconf. This + means I have to remember to run the autotools manually every time. Ugh. + * Support DEB_BUILD_OPTIONS debug and nostrip. + * Mark /etc/X11/app-defaults/GXditview as a conffile. + * All this brings us to Standards-Version: 3.5.2. + + * New Japanese patch (version 0.0.2) from Fumitoshi UKAI. This may not be + quite right yet; please let me know if there are any problems. + * Replace mdate.sh with something whose results are more predictable + (thanks, Florian Lohoff; closes: #62554). + * Force LC_ALL to C so that makeinfo doesn't insert some localized strings + for the package builder's environment (closes: #84370). + * s/man/man-db/ in the package description. + * Remove an autoconf hack from aclocal.m4; the bug it's working around is + now fixed and the hack broke with autoconf 2.50 (closes: #98916). + * Set gxditview's fontpath in debian/rules, restoring + /usr/local/share/groff/font. + * Preserve the Makefile to avoid a large diff. + * Back out single-page an.tmac patch; upstream did it more neatly. + + -- Colin Watson Sat, 2 Jun 2001 20:18:14 +0100 + +groff (1.16-3.4) unstable; urgency=medium + + * Non-maintainer upload + * gcc 3.0 fixes (needed by PARISC port). fixes #90765. + + -- LaMont Jones Wed, 25 Apr 2001 00:19:29 -0600 + +groff (1.16-3.3) unstable; urgency=medium + + * Non-maintainer upload + * fixed font count in font/devdvi/DESC.in as suggested in bug + report from John P. Cummings , closes: #75722 + + -- Paul Bame Sat, 24 Feb 2001 17:16:47 -0700 + +groff (1.16-3.2) unstable; urgency=high + + * Added ascii8 device and fixed bug with (non-latin1&&non-CJK) man-pages + viewing (before this polish, russian etc. manpages couldn't be viewed), + closes: #81148, #71744, #66928, #74535 + + -- Peter Novodvorsky Sun, 14 Jan 2001 01:09:24 +0300 + +groff (1.16-3.1) unstable; urgency=low + + * Rebuilt on a system with Xfree 4 and toasted contents of /usr/X11R6/lib, + closes: #76813, #77024, #77515, #77608, #77684, #78054, #78905, #79472, + #80559 + + -- Robert Woodcock Thu, 28 Dec 2000 20:51:34 -0800 + +groff (1.16-3) unstable; urgency=low + + * oops: had left generated files in the diff. + * In new macro checking for gzcat (aclocal.m4), added use of option -f + to permit transparent fallback to 'normal' cat. + * In src/roff/groff/groff.cc , added gzcat command before soelim; it + permits transparent use of zipped or not sources. + + -- Fabrizio Polacco Sun, 27 Aug 2000 18:13:10 +0300 + +groff (1.16-2) unstable; urgency=low + + * now going into woody (previous were experimental). + * Added check for gzip in configure.in + * Applyed correction to patch #64551, thanx to Werner LEMBERG. + * Added single final footer to an macro, thanx to Werner LEMBERG; + closes: #65735. (waiting for the same for the doc macro) + + -- Fabrizio Polacco Mon, 3 Jul 2000 00:13:23 +0300 + +groff (1.16-1) experimental; urgency=low + + * Fixed src/roff/nroff.sh, which was too much different from the + previous one to apply the dumb patch. + Thanx to Taketoshi Sano for the right patch! + (that was exactly the reason for using experimental instead of + unstable: uploading something broken and ask for help to fix it, + yeah!) + + -- Fabrizio Polacco Fri, 16 Jun 2000 11:33:47 +0300 + +groff (1.16-0) experimental; urgency=low + + * New upstream release. + * Manually applyed all the nippon and ascii8 changes. + Failed for: src/roff/nroff.sh, + * Added new info document. + + -- Fabrizio Polacco Wed, 7 Jun 2000 19:09:17 +0300 + +groff (1.15.3-2) unstable; urgency=low + + * Applied patch proposed by Karl M.Hegbloom to get a single page from + manpages when in nroff mode. Closes: #64551. + + -- Fabrizio Polacco Thu, 25 May 2000 13:43:18 +0300 + +groff (1.15.3-1) unstable; urgency=low + + * re-enabled default font in Dvi.c, thanx to Kevin Ryde. + closes: #63491, but opens probably some other i18n related bug, + sigh. + * changed version to 1.15.3 (waiting for 1.16 :-) to be grater than + the version in slink and than the one in potato. + This means that I must reupload the sources ... which were gone from + woody anyway (why it's possible?). + * Applyed patch submitted by Tomohiro KUBOTA: + * Added a new device type 'ascii8', which is 8 bit clean (like latin1) + but does not use Latin-1 character for hyphenation and so on (like + ascii). This device is intended to be used for codesets other than + ASCII and ISO-8859-1. This device should be temporal till all + charsets (ISO-8859-*, KOI8-R, EUC-KR, EUC-ZH, TIS620, and so on so on) + in the world are implemented, though this is almost impossible. + * Added a new character 'sy', which is soft hyphen. This character is + defined only for latin1 device. This 'sy' is used for hyphenation + instead of [char173], because [char173] may not be a soft hyphen, + though [char173] is a soft hyphen in ISO-8859-1. + Tomohiro KUBOTA Wed, 19 Apr 2000 23:47:18 +0900 + This closes: #62840. + + -- Fabrizio Polacco Thu, 11 May 2000 10:44:14 +0300 + +groff (1.15-3.ja.3) unstable; urgency=low + + * Corrected bug that segfaults when reading manpage printf(1), thanx + to David Schmitt who submitted the bug (closes: #60096) and to + Fumitoshi UKAI who submitted the patch to fix it. It was the same + bug that jgroff had (#59628). + + -- Fabrizio Polacco Mon, 13 Mar 2000 12:50:02 +0200 + +groff (1.15-3.ja.2) unstable; urgency=low + + * Included changes proposed by Fumitoshi UKAI and Taketoshi Sano. + * corrected groff_man manpage which didn't parse correctly for mandb. + + -- Fabrizio Polacco Fri, 25 Feb 2000 20:57:40 +0200 + +groff (1.15-3.ja.1) experimental; urgency=low + + * Added japanes patch for join with jgroff. + + -- Fabrizio Polacco Sun, 30 Jan 2000 15:36:03 +0200 + +groff (1.15-3) frozen unstable; urgency=high + + * mm and mse macros were missing (thanx to Daniel Quinlan to make me + discover this grave bug); closes: #55428. + * corrected wrong .so request in macro mse + + -- Fabrizio Polacco Mon, 17 Jan 2000 15:25:06 +0200 + +groff (1.15-2) unstable; urgency=low + + * quick fix to a bug reported only mainstream. + postscript device fails if paper format is not a4 or letter. + Fixed using "letter" for all other formats, as it _was_ before. + + -- Fabrizio Polacco Fri, 14 Jan 2000 12:21:38 +0200 + +groff (1.15-1) unstable; urgency=low + + * new upstream release: only minor bugfixes. + + -- Fabrizio Polacco Thu, 6 Jan 2000 18:23:41 +0200 + +groff (1.12-1) unstable; urgency=low + + * new upstream release. + Got all previous changes (except papersize), + plus: new HTML device! (expermental). + * leaved version numeric only: closes: #31739, thanx to + Jonathan H N Chin . + + -- Fabrizio Polacco Fri, 17 Dec 1999 14:40:46 +0200 + +groff (1.11b-1) unstable; urgency=low + + * updated to policy 3.1.0. + * new imminent release 1.12; this use groff-current renamed + groff-1.11b. Not to be uploaded until 1.12 is released. + + -- Fabrizio Polacco Sun, 12 Dec 1999 18:15:26 +0200 + +groff (1.11a-9) unstable; urgency=low + + * not uploaded due to imminent 1.12 + * added management of /etc/papersize in driver lj4. + todo: the same in driver ps. + + -- Fabrizio Polacco Sun, 5 Dec 1999 14:26:18 +0200 + +groff (1.11a-8) unstable; urgency=low + + * moved tmac.local to /etc (as tmac.man.local) and symlinked from the + original place; made it a conffile. Thanx to Decklin Foster + , closes: #39043 + * recompiled with libstdc++2.10 . closes: #49392. + * added manpages groff_mdoc(7) and groff_mdoc.samples(7) taken from + netBSD, thanks to Ben Harris . closes: #49159. + * added Y2K corrections from the beta-12, from Paul Eggert. + * Got rid of old and unusefull checks in postinst. + * added symlink from /usr/doc, and added -e to script; closes: #39410 + * Bugs fixed in previous releases: closes: #27016, #28097. + * Updated to std policy 3.0.1 + + -- Fabrizio Polacco Tue, 26 Oct 1999 14:39:10 +0300 + +groff (1.11a-7) unstable; urgency=low + + * Applied patch to add include path search to groff e gsoelim, provided by + Peter Miller needed by aegis. + + -- Fabrizio Polacco Sat, 17 Oct 1998 23:45:27 +0300 + +groff (1.11a-6) unstable; urgency=low + + * Recompiled to generate new dependencies into libs + (closes: #27790, thanx to Zephaniah E, Hull.) + [Previous attempt wasn't succesful.] + + -- Fabrizio Polacco Sat, 17 Oct 1998 02:39:10 +0300 + +groff (1.11a-5) unstable; urgency=low + + * Recompiled to generate new dependencies into libs + (closes: #27790, thanx to Zephaniah E, Hull.) + * added mime file as suggested by Brian White + (closes: #27016) + + -- Fabrizio Polacco Tue, 13 Oct 1998 18:54:55 +0300 + +groff (1.11a-4) unstable; urgency=low + + * Added groff_man(7) manpage for tmac.an macro written by Susan Kleinmann. + * Added patch from Andy Dougherty to let groff pass the -U flag along to + troff. (closes: #20628) + + -- Fabrizio Polacco Sat, 4 Apr 1998 23:46:42 +0300 + +groff (1.11a-2) unstable; urgency=low + + * groff (1.11a-2) unstable; urgency=low + * groff (1.11a-0bo2) bo-unstable; urgency=low + + * (lintian): added a symlink for neqn manpage. + * (lintian): changed mode of manpage gxditview.1x to 644. + * (lintian): changed mode of app-defaults/GXditview to 644. + * (lintian): updated the debian/copyright file (previously + debian/README), to point to the actual postal address of the FSF, + even if the sources in the distribution, including the COPYING file) + still point tro the old file (this should be reported as a bug to + upstream :-) . Now it says: + A copy of the GNU General Public License is available in + /usr/doc/copyright/GPL (as installed by package base-files); + if not, write to the Free Software Foundation, Inc., + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * commented creation of ctags file in debian/rules (closes: #15825, + #16006). + * checked correct build of fontpath (closes: #16007). + * added gzipping of X11 manpage (closes: #17455), tx to David ROCHER. + * reverted security changes done in 1.10-3.5 due to added use of safer + macro. Added -U flag to nroff/troff/groff/pic to revert to old + unsecure behaviour: + - nroff script defaults calling groff -S + - troff defaults as called with -msafer + - groff defaults as called with -S + - pic defaults as called with -S + Updated manpages nroff(1), groff(1), troff(1), pic(1) for the -U option. + * changed reference to me and msafer manpages in groff(1), to reflect + the change in their names (done in 1.10-3.5 and 1.10-5). + + -- Fabrizio Polacco Sun, 15 Feb 1998 13:09:27 +0200 + +groff (1.11a-1) unstable; urgency=low + + * changed Standards Version to 2.3.0.1 + * corrected names of copyright and chnagelog files. + * added full copyright from MIT (for gzditview). + * avoid gzipping of copyright file (oops!) + * new upstream version 1.11a (fixes #12130) including: + - new document for pic. + - changes to groff manpage. + * full libc6 version (fixes #14592) Since there aren't changes to + code, there's no need for a libc5 version. + + -- Fabrizio Polacco Mon, 17 Nov 1997 11:00:21 +0200 + +groff (1.10-3.5) stable; urgency=high + + * Compiled under debian-1.3.1 (libc5) as a security bugfix; used + version number 3.5 (instead of 5) to avoid downgrading for hamm. + * Avoided execution of arbitrary code embedded in documents; + added warning WARN_SECURITY, enabled by default, to warn about .sy + directives, but not yet documented in manpage. Warning mode enabled + by default via ifdef, should be toggled by option flag. (need + coordination with upstream maintainer.) + * Applied patch from Brian Mays to pic/tex.cc to + cast a long double value to double (fixes #13788) + * Changed name of manpages me and msafer to groff_me and groff_msafer. + + -- Fabrizio Polacco Wed, 15 Oct 1997 23:15:08 +0300 + +groff (1.10-4) unstable; urgency=low + + * libc6 version + * added explicit link to libc to let ld.so find libc dependencies. + * added dinamic dependence as Suggest for gxditview. + * forced configure to use /usr/bin/perl (fixes bug#11149 and #13239) + * added debian version number to option -v + + -- Fabrizio Polacco Sun, 28 Sep 1997 09:09:22 +0300 + +groff (1.10-3) frozen unstable; urgency=low + + * Applied changes to avoid problem with bash-2 (bug#8755) + * Added gxditview notice in file copyright.debian + * Compiled to supply gxditview, to let groff -X and man -X work. + (changed font path in device.c) + + -- Fabrizio Polacco Wed, 16 Apr 1997 22:50:58 +0300 + +groff (1.10-2) frozen unstable; urgency=low + + * corrected shlibs.local for libstd++ depenedency (fixes #5401) + + -- Fabrizio Polacco Thu, 14 Nov 1996 08:39:25 +0200 + +groff (1.10-1) frozen; urgency=low + + * new maintainer: Fabrizio Polacco + * changed description in control file (fixes bug #4013 part 2) + * new upstream sources 1.10 (fixes bug #4013 part 1) + * added symlinks for geqn, gpic, gtbl (bug #4754) + * compressed manpages. + * Updated to Standards-Version 2.1.1.0 + + -- Fabrizio Polacco Fri, 8 Nov 1996 13:50:09 +0200 + +groff (1.09-12) frozen; urgency=low + + * this version was never uploaded + * new maintainer: Fabrizio Polacco + * built using original upstream sources 1.09 + patch 1.09-11 + * Updated to Standards-Version 2.1.1.0 + + -- Fabrizio Polacco Wed, 6 Nov 1996 15:15:10 +0200 + +Changes: + 2-Jul-1995 Alvar Bray + Set permissions of /usr/doc/groff dir in post install script. + Previous versions of this package may have got these wrong and + replacing the package will not fix them. + 5-Mar-1995 Bruce Perens + Added Debian GNU/Linux package maintenance system files. + --- groff-1.18.1.1.orig/debian/groff.postinst +++ groff-1.18.1.1/debian/groff.postinst @@ -0,0 +1,17 @@ +#! /bin/sh -e + +[ "$1" = configure ] || exit 0 + +if dpkg --compare-versions "$2" lt-nl 1.17-1; then + # dpkg won't replace the directory /usr/share/doc/groff with a symlink, + # so do that now. + if [ ! -L /usr/share/doc/groff ] && [ -d /usr/share/doc/groff ]; then + if rmdir /usr/share/doc/groff 2>/dev/null; then + ln -sf groff-base /usr/share/doc/groff + fi + fi +fi + +#DEBHELPER# + +exit 0 --- groff-1.18.1.1.orig/debian/groff-base.files.in +++ groff-1.18.1.1/debian/groff-base.files.in @@ -0,0 +1,51 @@ +usr/bin/eqn +usr/bin/groff +usr/bin/grog +usr/bin/grops +usr/bin/grotty +usr/bin/neqn +usr/bin/nroff +usr/bin/pic +usr/bin/soelim +usr/bin/tbl +usr/bin/troff +usr/share/man/man1/eqn.1 +usr/share/man/man1/groff.1 +usr/share/man/man1/grog.1 +usr/share/man/man1/grops.1 +usr/share/man/man1/grotty.1 +usr/share/man/man1/neqn.1 +usr/share/man/man1/nroff.1 +usr/share/man/man1/pic.1 +usr/share/man/man1/soelim.1 +usr/share/man/man1/tbl.1 +usr/share/man/man1/troff.1 +usr/share/groff/@VERSION@/eign +usr/share/groff/@VERSION@/tmac/an-old.tmac +usr/share/groff/@VERSION@/tmac/an.tmac +usr/share/groff/@VERSION@/tmac/andoc.tmac +usr/share/groff/@VERSION@/tmac/doc.tmac +usr/share/groff/@VERSION@/tmac/doc-old.tmac +usr/share/groff/@VERSION@/tmac/eqnrc +usr/share/groff/@VERSION@/tmac/euc-jp.tmac +usr/share/groff/@VERSION@/tmac/hyphen.us +usr/share/groff/@VERSION@/tmac/latin1.tmac +usr/share/groff/@VERSION@/tmac/man.tmac +usr/share/groff/@VERSION@/tmac/mandoc.tmac +usr/share/groff/@VERSION@/tmac/mdoc.tmac +usr/share/groff/@VERSION@/tmac/mdoc/doc-common +usr/share/groff/@VERSION@/tmac/mdoc/doc-ditroff +usr/share/groff/@VERSION@/tmac/mdoc/doc-nroff +usr/share/groff/@VERSION@/tmac/mdoc/doc-syms +usr/share/groff/@VERSION@/tmac/pic.tmac +usr/share/groff/@VERSION@/tmac/ps.tmac +usr/share/groff/@VERSION@/tmac/psatk.tmac +usr/share/groff/@VERSION@/tmac/psold.tmac +usr/share/groff/@VERSION@/tmac/pspic.tmac +usr/share/groff/@VERSION@/tmac/safer.tmac +usr/share/groff/@VERSION@/tmac/troffrc +usr/share/groff/@VERSION@/tmac/troffrc-end +usr/share/groff/@VERSION@/tmac/tty-char.tmac +usr/share/groff/@VERSION@/tmac/tty.tmac +usr/share/groff/@VERSION@/tmac/www.tmac +usr/share/groff/site-tmac --- groff-1.18.1.1.orig/debian/groff.docs +++ groff-1.18.1.1/debian/groff.docs @@ -0,0 +1,3 @@ +doc/meintro.txt +doc/meref.txt +doc/pic.txt --- groff-1.18.1.1.orig/README.jp +++ groff-1.18.1.1/README.jp @@ -0,0 +1,142 @@ + + ÆüËܸìÂбþÈÇ groff-1.12 (jgroff-0.101) + + + ËÌÀî ¿®µü (Kitagawa Toshiyuki) + tm-kita@kh.rim.or.jp + + Ìø¸¶ ÎÉμ (Yanagihara Yoshiaki) + yochi@debian.or.jp + + GNU¤Îroff¥Õ¥©¡¼¥Þ¥Ã¥¿groff(version 1.12)¤ÎÆüËܸìÂбþ¤ò¹Ô¤Ê¤¤¤Þ¤·¤¿¡£ + ¾å°Ì¸ß´¹¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢ÆüËܸì¤ò´Þ¤Þ¤Ê¤¤roff¥Ç¡¼¥¿¤Ï¥ª¥ê¥¸¥Ê¥ë¤É +¤ª¤ê¤ÎÆ°ºî¤Ë¤Ê¤ê¤Þ¤¹¡£ÆüËܸ첽¤Ë´Ø¤¹¤ë½¤ÀµÉôʬ¤Ë¤Ä¤¤¤Æ¤ÎÃøºî¸¢¤ÏGNU +General Public License Version 2 ¤Ë½¾¤¤¤Þ¤¹(¾ÜºÙ¤ÏCOPYING¤ò¸æÍ÷¤¯¤À¤µ¤¤)¡£ + + ÆüËܸìgroff(jgroff)¤Î¸½¥Ð¡¼¥¸¥ç¥ó¤Ï0.101(ºÇ½ª¦ÂÈÇ)¤Ç¤¹¡£¤³¤Î¥Ð¡¼¥¸¥ç¥ó +¤Ç¤Ï°Ê²¼¤Î¥â¥¸¥å¡¼¥ë¤¬ÆüËܸ첽¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ + + groff ... groff¥É¥é¥¤¥Ð + gtroff ... groffËÜÂÎ + grotty ... üËöÍѥݥ¹¥È¥×¥í¥»¥Ã¥µ + grops ... PostScriptÍѥݥ¹¥È¥×¥í¥»¥Ã¥µ + grohtml ... HTMLÍѥݥ¹¥È¥×¥í¥»¥Ã¥µ(Thanks HANATAKA Shinya + ) + grodvi ... DVIÍѥݥ¹¥È¥×¥í¥»¥Ã¥µ (NTT JTeX or ASCIIÆüËܸìTeX) + gxditview ... X¥¦¥£¥ó¥É¥¦Íѥݥ¹¥È¥×¥í¥»¥Ã¥µ + gtbl ... tbl¥Þ¥¯¥íÍÑ¥×¥ê¥×¥í¥»¥Ã¥µ + gpic ... pic¥Þ¥¯¥íÍÑ¥×¥ê¥×¥í¥»¥Ã¥µ + geqn ... eqn¥Þ¥¯¥íÍÑ¥×¥ê¥×¥í¥»¥Ã¥µ + xtotroff ... X¤Î¥Õ¥©¥ó¥È¤«¤égroffÍÑ¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹ + ¤ë¥Ä¡¼¥ë + +¡ô lj4¥Ý¥¹¥È¥×¥í¥»¥Ã¥µ¡¢bib´ØÏ¢¤Î¥³¥Þ¥ó¥É¤ÏÆüËܸì̤Âбþ¤Ç¤¹¡£ + + +¡ý ¥¤¥ó¥¹¥È¡¼¥ë + + °Ê²¼¤Î´Ä¶­¤Çmake½ÐÍè¤ë¤³¤È¤ò³Îǧ¤·¤Æ¤¤¤Þ¤¹¡£ + + ¡ù FreeBSD 2.1.0-RELEASE + XFree86-3.1.2, gcc 2.6.3 + + ¡ù Debian GNU/Linux 2.2 + + ¡ù NEC EWS/4800/310 + SVR4.2 Release9.1 Rev.B, X11R5, gcc 2.6.0 + + (1) ¥ª¥ê¥¸¥Ê¥ë¤ÈƱÍÍconfigure¤ò¼Â¹Ô¤·¤¿¸å¡¢make & install¤·¤Æ²¼¤µ¤¤¡£ + ¾Ü¤·¤¯¤ÏINSTALL¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ + + *) grodvi¤ÏNTT JTeX·Á¼°¤Þ¤¿¤ÏASCIIÆüËܸìTeX·Á¼°¤ÎDVI¥Õ¥¡¥¤¥ë¤ò¥µ¥Ý¡¼ + ¥È¤·¤Æ¤¤¤Þ¤¹¡£groff¤¬½ÐÎϤ¹¤ëDVI¥Õ¥¡¥¤¥ë¤òASCIIÆüËܸìTeX·Á¼°¤Ë + ¤·¤¿¤¤¾ì¹ç¤Ïconfigure --JTeX=ASCII¤È¤·¤Æ¤¯¤À¤µ¤¤¡£ + --JTeX¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤ÏNTT JTeX·Á¼°¤Ë¤Ê¤ê¤Þ¤¹¡£ + + (2) groff¤Îmake¤Î¸å¡¢gxditview(groff¤ÎX¥¦¥£¥ó¥É¥¦Íѥݥ¹¥È¥×¥í¥»¥Ã¥µ) + ¤òmake¤·¤Þ¤¹¡£¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥êľ²¼¤Îxditview¤Øcd¤·¤Æ¡¢ + + % xmkmf + % make depend + % make all + % make install install.man + + ¤Ç¡¢¥¤¥ó¥¹¥È¡¼¥ë´°Î»¤Ç¤¹¡£ + + +¡ý »È¤¤Êý + + groff¤Î-T¥ª¥×¥·¥ç¥ó¤Ë-Tnippon(üËöɽ¼¨)¤òÄɲä·¤¿°Ê³°¤Ï¥ª¥ê¥¸¥Ê¥ë¤Î¤Þ +¤Þ¤Ç¤¹¡£ +°Ê²¼¤Ï»ÈÍÑÎã¡£ + + (£±) groff -Tnippon -man groff.jman + + ÆüËܸì¤ò´Þ¤àroff¥Õ¥¡¥¤¥ë(groff.jman)¤òman¥Þ¥¯¥í¤ò»È¤Ã¤Æ¥Õ¥©¡¼¥Þ¥Ã¥È¤·¡¢ +üËö¤Ëɽ¼¨¤·¤Þ¤¹¡£ + + (£²) groff -Tps -man groff.jman + + ÆüËܸì¤ò´Þ¤àroff¥Õ¥¡¥¤¥ë¤ò¥Õ¥©¡¼¥Þ¥Ã¥È¤·¡¢PostScript¤ËÊÑ´¹¤·¤Þ¤¹¡£ + + (£³) groff -TX100 -man groff.jman + + ÆüËܸì¤ò´Þ¤àroff¥Õ¥¡¥¤¥ë¤ò¥Õ¥©¡¼¥Þ¥Ã¥È¤·¡¢X¥¦¥£¥ó¥É¥¦¤Ëɽ¼¨¤·¤Þ¤¹¡£ + + (£´) groff -Tdvi -man groff.jman + + ÆüËܸì¤ò´Þ¤àroff¥Õ¥¡¥¤¥ë¤ò¥Õ¥©¡¼¥Þ¥Ã¥È¤·¡¢DVI¥Õ¥¡¥¤¥ë¤ò½ÐÎϤ·¤Þ¤¹¡£ + + +¡ý ÆüËܸ첽¤Ë¤Ä¤¤¤Æ + +¡¦ ÆüËܸìʸ»ú¥³¡¼¥É¤ÏÆüËܸìEUC(¤Î¥³¡¼¥É¥»¥Ã¥È1)¤Î¤ß¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£ + +¡¦ ÆüËܸì¥Õ¥©¥ó¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥«¥ì¥ó¥È¥Õ¥©¥ó¥È¤¬¥Ü¡¼¥ë¥ÉÂΤλþ¤Ï¥´¥·¥Ã + ¥¯ÂΤˡ¢¤½¤ì°Ê³°¤Î¥Õ¥©¥ó¥È(¥í¡¼¥Þ¥ó¡¢¥¤¥¿¥ê¥Ã¥¯¡¢¥¤¥¿¥ê¥Ã¥¯¥Ü¡¼¥ë¥É + Åù)¤¬¥«¥ì¥ó¥È¥Õ¥©¥ó¥È¤Î»þ¤ÏÌÀÄ«ÂΤˡ¢¼«Æ°Åª¤ËÀÚ¤êÂؤï¤ê¤Þ¤¹¡£ÆüËܸì + ¥Õ¥©¥ó¥È¤òľÀÜ»ØÄꤹ¤ë¤³¤È¤Ï½ÐÍè¤Þ¤»¤ó¡£ + + (Ãí) ¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë̾¤¬'B'¤Ç½ª¤Ã¤Æ¤¤¤ë¥Õ¥©¥ó¥È(B¡¢TB¡¢HNB¤Ê¤É)¤ò + ¥Ü¡¼¥ë¥É¥Õ¥©¥ó¥È¤È¤·¤Æ¤¤¤Þ¤¹¡£ + +¡¦ ¹ÔƬ¡¢¤ª¤è¤Ó¹ÔËö¶Ø§¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£¤½¤ì¤¾¤ì¤Î¶Ø§ʸ»ú¤Ï¡¢ + + ¹ÔƬ¶Ø§ʸ»ú: ¡¢ ¡£¡¤¡¥¡¦¡§¡¨¡©¡ª¡Ë¡Í¡Ï¡Ñ¡×¡Ù¡Û + ¤¡¤£¤¥¤§¤©¤Ã¤ã¤å¤ç¥¡¥£¥¥¥§¥©¥Ã¥ã¥å¥ç + . ? ! " ' ) ] * , : ; > } + ¹ÔËö¶Ø§ʸ»ú: ¡Ê ¡Ì¡Î¡Ð¡Ö¡Ø¡Ú + + ¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£ + +¡¦ -Tps¤ò»ØÄꤷ¤¿¾ì¹ç¡¢EUCʸ»ú¤ÈASCIIʸ»ú¤Î´Ö¤Ë¤Ï¡¢Éý¤Î¶¹¤¤¶õÇò¤¬¼«Æ° + Ū¤ËÁÞÆþ¤µ¤ì¤Þ¤¹¡£¤³¤Î¶õÇò¤ÎÉý¤Ïdevps/DESC¤Îwcharkern¤Ç»ØÄꤷ¤Þ¤¹¡£ + unitñ°Ì¤Ç¤¹¡£0¤ò»ØÄꤹ¤ë¤È¶õÇò¤ÏÁÞÆþ¤µ¤ì¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ + +¡¦ -Tps¤ò»ØÄꤷ¤¿¾ì¹ç¡¢EUCʸ»ú¤ÏASCIIʸ»ú¤ËÂФ·¤Æ¾¯¤·²¼¤²¤Æ½ÐÎϤµ¤ì¤Þ + ¤¹(¤½¤Î¤Þ¤Þ¤À¤ÈASCIIʸ»ú¤¬Íî¤Á¹þ¤ó¤Ç¸«¤¨¤ë¤¿¤á)¡£¤³¤Î²¼¤²Éý¤Ï + devps/DESC¤Îlowerwchar¤Ç»ØÄꤷ¤Þ¤¹¡£unitñ°Ì¤Ç¤¹¡£0¤ò»ØÄꤹ¤ë¤È»ú²¼ + ¤²¤Ï¹Ô¤Ê¤ï¤ì¤Þ¤»¤ó¡£ + +¡¦ ¥ª¥ê¥¸¥Ê¥ë¤Ç¤Ï²þ¹Ô¥³¡¼¥É¤Ï̵¾ò·ï¤Ë¥¹¥Ú¡¼¥¹Ê¸»ú¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¤¬¡¢EUC + ʸ»ú¤Ç°Ï¤Þ¤ì¤¿²þ¹Ô¥³¡¼¥É¤Ï¥¹¥Ú¡¼¥¹¤ËÊÑ´¹¤»¤ºÌµ»ë¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿¡£ + +¡¦ EUC¤Î¥¹¥Ú¡¼¥¹Ê¸»ú(0xa1a1)¤ÏASCII¤Î¥¹¥Ú¡¼¥¹Ê¸»ú¤È¤·¤Æ½èÍý¤µ¤ì¤Þ¤¹¡£ + + +¡ý ¼Õ¼­ + +grodvi¤ÎASCIIÆüËܸìTeXÂбþ¤Ï¡¢±§ÅÔµÜÂç³Ø¤Î²£ÅĤµ¤ó¤¬¹Ô¤Ê¤Ã¤Æ¤¯¤À¤µ¤¤¤Þ +¤·¤¿¡£grohtml¤ÎÆüËܸì(EUC)Âбþ¤Ï¡¢²Ö¿ó¿®ºÈ¤µ¤ó¤¬¹Ô¤Ã¤Æ¤¯¤ì¤Þ¤·¤¿¡£ +¤Þ¤¿¡¢Â¿¤¯¤ÎÊý¤«¤é¥Ð¥°¤Ë´Ø¤¹¤ëÊó¹ð¡¢½¤Àµ¥¤¥á¡¼¥¸¤òÁ÷¤Ã¤Æ夭¤Þ¤·¤¿¡£ +¸æ¶¨ÎϤ¯¤À¤µ¤Ã¤¿³§ÍͤˤϤȤƤⴶ¼Õ¤·¤Æ¤ª¤ê¤Þ¤¹¡£Í­Æñ¤¦¤´¤¶¤¤¤Þ¤·¤¿¡£ + + +¡ý ¤ª´ê¤¤ + +¸½¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ïlj4¥Ý¥¹¥È¥×¥í¥»¥Ã¥µ¡¢bib´ØÏ¢¤Î¥³¥Þ¥ó¥É·²¤¬ÆüËܸ첽¤µ¤ì +¤Æ¤ª¤ê¤Þ¤»¤ó¡£¤³¤ì¤é¤ÎÆüËܸ첽¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤ëÊý¤òÊ罸Ãפ·¤Æ¤ª¤ê¤Þ¤¹¡£ +¤¼¤Ò¸æ¶¨ÎϤ¯¤À¤µ¤¤¡£¤Þ¤¿¡¢ÆüËܸìÂбþgroff¤Ë´Ø¤·¤Æ¸æ°Õ¸«¡¢¸æ´õ˾Åù¤ò +À§Èó¤ªÊ¹¤«¤»¤¯¤À¤µ¤¤¡£º£¸å¤Î»²¹Í¤Ë¤µ¤»¤Æ夭¤Þ¤¹(¤â¤Á¤í¤ó¥Ð¥°Êó¹ð¤â +´¿·Þ¤Ç¤¹¡ª)¡£ +°Ê¾å¤ÏE-Mail¤Ë¤Æ¡¢tm-kita@kh.rim.or.jp°¸¤Ë¤ªÁ÷¤ê¤¯¤À¤µ¤¤¡£ --- groff-1.18.1.1.orig/configure.ac +++ groff-1.18.1.1/configure.ac @@ -68,6 +68,9 @@ GROFF_G GROFF_TMAC GROFF_HTML_PROGRAMS +GROFF_MULTIBYTE +GROFF_DVIFORMAT +GROFF_LANGINFO_CODESET AC_CONFIG_FILES(stamp-h, [echo timestamp > stamp-h]) AC_CONFIG_FILES([Makefile doc/Makefile src/xditview/Imakefile]) AC_OUTPUT --- groff-1.18.1.1.orig/ChangeLog.jp +++ groff-1.18.1.1/ChangeLog.jp @@ -0,0 +1,345 @@ +2002-11-04 Fumitoshi UKAI + + * src/libs/libgroff/encoding.cc: for C or POSIX locale, + use ascii8 encoding handler + * font/devX*: new font desc for M, G + * src/xditview: support ENABLE_MULTIBYTE (Japanese only?) + +2002-10-09 Fumitoshi UKAI + + * update groff-1.18-7 + +2002-09-23 Fumitoshi UKAI + + * src/roff/troff/input.cc: fix bug in wchar_charinfo() + check u where is 4- HEX chars + * src/device/grohtml/post-html.cc: works ENABLE_MULTIBYTE + * font/devhtml: add font M, G for Japanese + +2002-09-22 Fumitoshi UKAI + + * new multibyte patch + +2001-08-16 Fumitoshi UKAI + + * tmac/euc-jp.tmac: + fix disappearing `-' char + +2001-07-21 Fumitoshi UKAI + + * add ENABLE_MULTIBYTE support to src/xditview + +2001-07-20 Fumitoshi UKAI + + * introduce "fontset" in font/*/DESC + obsoletes "ondemand" + +2001-07-19 Fumitoshi UKAI + + * don't use input_encoding->is_wchar_code() + * fix troffrc empty line + * fix duplicate strcasecmp() + +2001-07-19 Fumitoshi UKAI + + * sub font selection move into environment::add_char() + it makes possible to use \[uni] + +2001-07-19 Fumitoshi UKAI + + * use generic iconv_handler instead of euc_handler + * internal code now uses UCS-2 + +2001-07-19 Fumitoshi UKAI uni%X + - still no code conversion + - font description is not accurate + * change "fixed" to charset range + +2001-07-18 Fumitoshi UKAI + + * Configuration Change: + obsolete: --enable-japanese (#ifdef NIPPON) + new: --enable-multibyte (#ifdef ENABLE_MULTIBYTE) + +2001-07-18 Fumitoshi UKAI + + * create charinfo for wchar on demand (src/roff/troff/input.cc) + * use "fixed" for font wchar metric (src/libs/libgroff/font.cc) + - font/*/M,G + +2001-07-17 Fumitoshi UKAI + + * add utf8 encoding handler to src/libs/libgroff/encoding.cc + (this utf8 encodig handler is too slow!) + +2001-07-15 Fumitoshi UKAI + + * based on groff 1.17.2-1 + * use src/include/encoding.h instead of eucmac.h + * introduce src/libs/libgroff/encoding.cc + * introduce tmac/euc-jp.tmac for EUC-JP documents + +2001-05-24 Fumitoshi UKAI + + * Apply for groff-1.17 + +2000-01-06 Yoshiaki Yanagihara + + * Apply japanese patch "jgroff-0.101" + (thanks hanataka@abyss.rim.or.jp). + * Added japanese extention option at configure.in, aclocal.m4. + +Sat Jan 1 17:10:32 JST 2000 HANATAKA Shinya + + * jgroff-0.100 ¤ò¤½¤Î¤Þ¤Þ groff-1.14 ¤ËŬÍѤ·¤Æ jgroff-101 + ¤È¤·¤¿¡£ + * grohtml ¤òÆüËܸì¤ËÂбþ¤µ¤»¤ë¡£ + * ÆüËܸì¥Þ¥Ë¥å¥¢¥ëÍÑ¤Ë tmac.docj ¤È tmac.andocj ¥Þ¥¯¥í¤òÄɲᣠ+ +Sun Mar 15 18:23:12 1998 Yoshiaki Yanagihara + + * jgroff ¤Î¥Ù¡¼¥¹¤ò groff-1.11a ¤ËÊѹ¹¤·¡¢jgroff-0.99¥Ñ¥Ã¥Á¤ò + ŬÍѤ·¤¿¤â¤Î¤ò jgroff-0.100 ¤È¤·¤¿¡£ + ´ðËÜŪ¤Ë jgroff-0.99 ¤Èµ¡Ç½¤ÏƱ¤¸ *¤Ï¤º*¡£ + +Fri Dec 22 11:47:46 1995 Kitagawa Toshiyuki + + * ¥Ð¡¼¥¸¥ç¥ó0.99¡£ + +Mon Dec 18 18:28:37 1995 Kitagawa Toshiyuki + + * tmac/Makefile.sub: ¥¿¡¼¥²¥Ã¥È stamp-wrap¡¢uninstall_sub ¤¬°ìÉô + OS¤Îsh¤Ç¹½Ê¸¥¨¥é¡¼¤È¤Ê¤ë¥ª¥ê¥¸¥Ê¥ë¥Ð¥°¤ò½¤Àµ¡£ + +Wed Dec 13 15:09:26 1995 Kitagawa Toshiyuki + + * jgroff.sh: ¥ª¥ê¥¸¥Ê¥ë¤Ç¥¤¥ó¥¹¥È¡¼¥ë¥Ñ¥¹¤¬Êѹ¹¤µ¤ì¤¿¤Î¤Ë¹ç¤ï¤»¡¢ + GROFF_TMAC_PATH¡¢GROFF_FONT_PATH¤òshare/groffÇÛ²¼¤ËÊѹ¹¡£ + +Sat Dec 9 15:28:36 1995 Kitagawa Toshiyuki + + * wchar.h¤«¤éeucmac.h¤Ë¥Õ¥¡¥¤¥ë̾¤òÊѹ¹¡£ + +Fri Dec 8 12:15:47 1995 Yoshio Takaeda + + * troff/env.cc(add_char): ¡ØASCIIʸ»ú + ²þ¹Ô¥³¡¼¥É + EUCʸ»ú¡Ù¤È¤¤¤¦ + ¥Ñ¥¿¡¼¥ó¤Î»þ¡¢²þ¹Ô¥³¡¼¥É¤¬¥¹¥Ú¡¼¥¹¤ËÊÑ´¹¤µ¤ì¤Ê¤¤¥Ð¥°¤ò½¤Àµ¡£ + +Thu Dec 7 21:35:06 1995 Yanagihara Yoshiaki + + * troff/input.cc (process_input_stack): gcc-2.7.0¤ÇÊÑ¿ôÄêµÁ¤¬¥¹¥³¡¼¥× + °ãÈ¿¤È¤Ê¤Ã¤Æ¤·¤Þ¤¦²Õ½ê¤ò½¤Àµ¡£ + +Thu Dec 7 21:35:06 1995 Yanagihara Yoshiaki + + * jgroff¤Î¥Ù¡¼¥¹¥½¡¼¥¹¤ògroff-1.10¤ËÊѹ¹¡£ + +Thu Apr 6 16:56:32 1995 Kitagawa Toshiyuki + + * devdvi/M.proto-NTT: DNP¤Îpk¥Õ¥©¥ó¥È¤Î¥Á¥§¥Ã¥¯¥µ¥àÃͤ¬0¤Ê¤Î¤Ç¡¢¤³ + ¤ì¤Ë¹ç¤ï¤»¤Æchecksum¤ÎÃͤò0¤ËÊѹ¹¡£ + +Mon Apr 3 20:36:37 1995 Kitagawa Toshiyuki + + * troff/env.cc (possibly_break_line): + line¥ê¥¹¥ÈÃæ¤Îkword_space_node¤òÄ´À°¤¹¤ë½èÍý¤Ç¡¢lineÃæ¤Ë¤³¤Î¥Î¡¼¥É + ¤¬´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï½èÍý¤ò¥¹¥­¥Ã¥×¤¹¤ë¤è¤¦¤Ë¤·¤¿(EUC¥³¡¼¥É¤ò´Þ¤Þ + ¤Ê¤¤roff¤ò½èÍý¤¹¤ë¾ì¹ç¤Ë¤Ïkword_space_node¤Ï¸½¤ì¤Ê¤¤¤Î¤Ç½èÍý¤¬¹â® + ²½¤µ¤ì¤ë)¡£ + +Mon Apr 3 20:36:37 1995 Kitagawa Toshiyuki + + * troff/env.cc (add_char): hwkern¡¢vlower¤Î½é´ü²½¤Ïdevice½é´ü²½¸å + ¤Ë°ìÅÙ¤À¤±¹Ô¤¨¤ÐÎɤ¤¤Î¤Çenvironment¥¯¥é¥¹¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤Ç¤³¤ì¤ò + ¹Ô¤¦¤è¤¦¤ËÊѹ¹¡£ + +Sat Apr 1 17:57:23 1995 Kitagawa Toshiyuki + + * troff/input.cc (mount_on_demand): on demand¤Ç¥Þ¥¦¥ó¥È¤µ¤ì¤ë¥Õ¥© + ¥ó¥È̾¤ò¥Ç¥Ð¥¤¥¹¤´¤È¤ÎDESC¥Õ¥¡¥¤¥ë¤Ç»ØÄê¤Ç¤­¤ë¤è¤¦¤ËÊѹ¹¡£ + ¥Ç¥£¥ì¥¯¥Æ¥£¥Öondemand¤Ç»ØÄꤷ¤¿¥Õ¥©¥ó¥È¤¬on demand¤Ç¥Þ¥¦¥ó¥È¤µ¤ì¤ë¡£ + +Fri Mar 31 20:23:43 1995 Kitagawa Toshiyuki + + * libgroff/font.cc (load): ´Á»ú¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ëÍѤ˥ǥ£¥ì¥¯¥Æ¥£¥Ö + fixedkanji¤òÄɲᣤ³¤ì¤Ï³Æʸ»ú¤Î¥á¥È¥ê¥Ã¥¯¤¬Á´¤ÆƱ¤¸¤Ç¤¢¤ë»ö¤ò»ØÄê + ¤¹¤ë¤â¤Î¤Ç¡¢fixedkanji¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ïcharset¤Ïɾ²Á¤µ¤ì¤Ê¤¤ + ¤¿¤á´Á»ú¥Õ¥©¥ó¥È¤Î¥í¡¼¥É¤¬Â®¤¤¡£ + +Thu Mar 30 18:20:24 1995 Kitagawa Toshiyuki + + * troff: node¼±Ê̤òʸ»úÎóÈæ³Ó¤Ç¹Ô¤Ã¤Æ¤¤¤¿¤¬¹â®²½¤Î¤¿¤á¿ôÃÍÈæ³Ó¤Ë + Êѹ¹¤·¤¿¡£ + +Wed Mar 29 20:20:49 1995 Kitagawa Toshiyuki + + * troff/input.cc: ´Á»ú¥Õ¥©¥ó¥È(M¤ÈG)¤òon demand¤Ç¥Þ¥¦¥ó¥È¤¹¤ë¤è¤¦ + ¤ËÊѹ¹¡£¤³¤ì¤Ë¤è¤Ã¤Æ´Á»ú¤ò´Þ¤Þ¤Ê¤¤roff¥Õ¥¡¥¤¥ë¤Î½èÍý»þ´Ö¤¬¹â®²½¤µ + ¤ì¤¿¡£ + +Fri Mar 10 15:34:26 1995 Shigeki Yoshida + + * troff/input.cc (process): geqn¤Ç¡¢ + + .EQ + Í×ÁÇ sub µ­¹æ + .EN + + ¤ò½èÍý¤¹¤ë¤È¡¢"illegal token in argument to \Z"¤È¤Ê¤Ã¤Æ¤·¤Þ¤¦¥Ð¥° + (\Z¥·¡¼¥±¥ó¥¹¤Î°ú¿ô¤ËEUCʸ»ú¤¬Í褿¾ì¹ç¤ÎÂбþϳ¤ì)¤ò½¤Àµ¡£ + +Mon Feb 6 11:22:33 1995 Yoshio Takaeda + + * troff/input.cc: ¹ÔƬ¶Ø§ʸ»ú¤ÎEUC¥³¡¼¥É¤Î°ìÉô¤¬ÉÔÀµ¡£ + +Mon Jan 30 14:02:54 1995 Kitagawa Toshiyuki + + * ¥Ð¡¼¥¸¥ç¥ó0.97¡£ + +Fri Dec 10 14:26:14 1994 Kazutaka YOKOTA + + * devdvi/M.proto: NTT JTeX¤ÈASCIIÆüËܸìTeXξÊý¤Îdvi¥Õ¥¡¥¤¥ë¤ò°·¤¨¤ë¤è¤¦ + M.proto¥Õ¥¡¥¤¥ë¤òÊѹ¹¡£ + +Fri Dec 9 14:26:14 1994 Kazutaka YOKOTA + + * troff/node.cc: boldfont_list[]¤Ë¥Õ¥©¥ó¥È̾ B ¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤«¤Ã + ¤¿¤¿¤á¡¢dvi¥Õ¥¡¥¤¥ë¤Ë¥´¥·¥Ã¥¯ÂΤ¬½ÐÎϤµ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£ + +Fri Dec 9 14:23:22 1994 Kazutaka YOKOTA + + * grotty/tty.cc (add_char): EUCʸ»ú¤ËÂФ·¤ÆWCHAR_MODE¤òÀßÄꤷ¤Æ¤¤ + ¤Ê¤«¤Ã¤¿¤¿¤á¡¢tty½ÐÎϤǥ´¥·¥Ã¥¯ÂΤ¬Æó½ÅÂǤÁ¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£ + +Fri Dec 9 14:19:33 1994 Kazutaka YOKOTA + + * devdvi/Makefile.sub: ¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë G ¤Ç¡¢name¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤¬ + `name M'¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£ + +Wed Nov 30 13:24:54 1994 Kitagawa Toshiyuki + + * ¥Ð¡¼¥¸¥ç¥ó0.96¡£ + + * grodvi/dvi.cc: FreeBSD 1.1.5R¤Îstrcmp(3)¤Ç¤Ï°ú¿ô¤Ë¥Ì¥ë¥Ý¥¤¥ó¥¿¤ò + ÅϤ¹¤È¥³¥¢¥À¥ó¥×¤·¤Æ¤·¤Þ¤¦¤Î¤Ç¡¢¤³¤ì¤ò²óÈò¤¹¤ë¥³¡¼¥É¤òÄɲä·¤¿¡£ + +Tue Nov 29 13:52:54 1994 Kitagawa Toshiyuki + + * troff/input.cc: EUC¤Î¥¹¥Ú¡¼¥¹Ê¸»ú(0xa1a1)¤ÏASCII¤Î¥¹¥Ú¡¼¥¹Ê¸»ú¤È + ¤·¤Æ½èÍý¤¹¤ë¤è¤¦½¤Àµ¡£ + + * devnippon/createM: JISX0208¤Ë¤ª¤¤¤Æʸ»ú¤¬Ì¤ÄêµÁ¤ÎÉôʬ¤Ë¤Ä¤¤¤Æ¤Ï + ¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë¤Ë½ÐÎϤ·¤Ê¤¤¤è¤¦½¤Àµ¡£ + +Mon Nov 28 18:15:31 1994 Kitagawa Toshiyuki + + * grodvi/dvi.cc: grodvi¤òÆüËܸ첽¤·¤¿¡£ + +Fri Nov 25 15:39:05 1994 Kitagawa Toshiyuki + + * troff/env.cc: EUCʸ»ú¤Ç»Ï¤Þ¤ë¹Ô¤ËÂФ·¤Æ¶ÑÅù³ä¤êÉÕ¤±¤¬¹Ô¤ï¤ì¤¿¾ì + ¹ç¡¢¹ÔƬ¤Ë;ʬ¤Ê¶õÇò¤¬Æþ¤ë»ö¤¬¤¢¤Ã¤¿¤Î¤Ç¤³¤ì¤ò½¤Àµ¤·¤¿¡£ + +Fri Nov 18 20:19:55 1994 Masubuchi Toshimichi + + * devnippon/createM.c: createM¤Î½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤¬ÉÔÄê¤Ë¤Ê¤ë¤¿¤á¡¢ + make¤¬½ªÎ»¤·¤Æ¤·¤Þ¤¦¡£createM¤Î½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤¬0¤Ë¤Ê¤ë¤è¤¦½¤Àµ¡£ + + * devnippon/Makefile.sub: PATH´Ä¶­ÊÑ¿ô¤Ë¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤¬´Þ¤Þ + ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢devnippon/M¤òmake¤¹¤ë»þÅÀ¤ÇcreateM¤¬¸«¤Ä¤«¤é¤ºmake + ¥¨¥é¡¼¤Ë¤Ê¤ë¥Ð¥°¤ò½¤Àµ¡£ + +Thu Nov 17 17:11:26 1994 Kitagawa Toshiyuki + + * devnippon/createM.c: gets()¤òfgets()¤ËÊѹ¹¡£ + +Sat Nov 12 13:38:19 1994 Kitagawa Toshiyuki + + * ¥Ð¡¼¥¸¥ç¥ó0.95¡£ + + * troff/env.cc: .stt ¥ê¥¯¥¨¥¹¥È¤òÄɲÃ(¥í¡¼¥«¥ë¤Ê¥Þ¥Ë¥å¥¢¥ë½ñ¼°¤Ë¹ç + ¤ï¤»¤ë¤¿¤á -> ¤³¤Î¥ê¥¯¥¨¥¹¥È¤ÏÈó¸ø³«)¡£ + + * troff/input.cc (init_charset_table): ASCII¤Î¹ÔƬ¶Ø§ʸ»ú¤È¤·¤Æ + ,:;>}¤òÄɲä·¤¿¡£ + + * EUC¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë¤Ï¡¢make»þ¤Ë¥Ä¡¼¥ë¤Ë¤è¤Ã¤ÆÀ¸À®¤¹¤ë¤è¤¦Êѹ¹¡£ + ¤³¤ì¤Ë¤è¤êpatch¥µ¥¤¥º¤¬¤«¤Ê¤ê¾®¤µ¤¯¤Ê¤Ã¤¿¡£ + +Fri Nov 11 20:53:00 1994 Kitagawa Toshiyuki + + * troff/env.cc (add_char): + ¤Î¾ì¹ç¡¢´Ö¤ËÆþ¤ì + ¤ë¶õÇò¤Ï¶Ø§¤Ë°ãÈ¿¤·¤Ê¤¤¤«¤®¤ê¥Ö¥ì¡¼¥¯²Äǽ¤Ê¶õÇò¤¬Æþ¤ë¤è¤¦½¤Àµ¤·¤¿¡£ + + +Tue Oct 25 04:46:09 1994 Kitagawa Toshiyuki (kitagawa@bsd2.kbnes.nec.co.jp) + + * ¥Ð¡¼¥¸¥ç¥ó0.94¡£ + + * libdriver/input.cc (do_file): -Tlatin1¤ÇEUC¤Ç¤Ï¤Ê¤¤Ê¸»ú¥³¡¼¥É¤ò + EUC¤ÈȽÃǤ·¤Æ¤·¤Þ¤¦¥Ð¥°¤ò½¤Àµ¡£ + +Mon Oct 24 07:16:19 1994 Kitagawa Toshiyuki (kitagawa@bsd2.kbnes.nec.co.jp) + + * troff/node.cc (is_boldfont): FreeBSD 1.1.5¤Ç¡¢¥¼¥íÈÖÃÏ»²¾È¤Î¤¿¤á¥³ + ¥¢¥À¥ó¥×¤¹¤ë¥Ð¥°¤ò½¤Àµ¡£ + + * indxbib/dirnamemax.c: FreeBSD 1.1.5¤Ïpathconf()¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤Î¤Ç + _POSIX_VERSION¤òundef¤·¤¿¡£ + + * ¥Ð¡¼¥¸¥ç¥ó0.93¡£ + + * geqn¤òÆüËܸ첽¤·¤¿¡£ + + * devps/DESC¤Îwcharkern¤òÀßÄꤹ¤ë¤È¹ÔƬ¤Ë¶õÇò¤¬Æþ¤Ã¤Æ¤·¤Þ¤¦¥Ð¥°¤Î + ½¤ÀµÊýË¡¤òÊѹ¹¡£ + +Sat Oct 22 08:19:15 1994 Kitagawa Toshiyuki (kitagawa@bsd2.kbnes.nec.co.jp) + + * ¥Ð¡¼¥¸¥ç¥ó0.90¡£ + + * xtotroff¤òÆüËܸ첽¡£ + +Fri Oct 21 05:33:02 1994 Kitagawa Toshiyuki (kitagawa@bsd2.kbnes.nec.co.jp) + + * devps/DESC¤Îwcharkern¤òÀßÄꤹ¤ë¤È¹ÔƬ¤Ë¶õÇò¤¬Æþ¤Ã¤Æ¤·¤Þ¤¦»ö¤¬¤¢ + ¤Ã¤¿¤Î¤Ç¡¢¤³¤ì¤ò½¤Àµ¡£ + + * pre-release¥Ð¡¼¥¸¥ç¥ó¡£ + + * gxditview¤òÆüËܸ첽¤·¤¿(¥Õ¥©¥ó¥È¥á¥È¥ê¥Ã¥¯¤Î¼è¤ê½Ð¤·¤¬¤¤¤¤²Ã¸º)¡£ + +Thu Oct 20 05:23:09 1994 Kitagawa Toshiyuki (kitagawa@bsd2.kbnes.nec.co.jp) + + * ¥Õ¥©¥ó¥ÈÈÖ¹æ3¤Ë¥Ü¡¼¥ë¥ÉÂΰʳ°¤Î¥Õ¥©¥ó¥È¤ò¥Þ¥¦¥ó¥È¤·¤¿¾ì¹ç¡¢´Á»ú¥Õ¥© + ¥ó¥È¤¬¥´¥·¥Ã¥¯ÂΤˤʤäƤ·¤Þ¤¦¥Ð¥°¤ò½¤Àµ¡£ + +Wed Oct 19 06:48:55 1994 Kitagawa Toshiyuki (kitagawa@bsd2.kbnes.nec.co.jp) + + * beta¥Ð¡¼¥¸¥ç¥ó¡£ + +Tue Oct 18 05:02:59 1994 Kitagawa Toshiyuki (kitagawa@bsd2.kbnes.nec.co.jp) + + * pic: + gpic¤òÆüËܸìÂбþ¤·¤¿¡£ + + * tbl: + gtbl¤òÆüËܸìÂбþ¤·¤¿¡£ + + * troff/troff: + Times-Bold°Ê³°¤Î¥Ü¡¼¥ë¥ÉÂΤ¬¥«¥ì¥ó¥È¥Õ¥©¥ó¥È¤Î»þ¡¢´Á»ú¥Õ¥©¥ó¥È¤¬¥´ + ¥·¥Ã¥¯¤ËÀÚ¤êÂؤï¤é¤Ê¤¤¥Ð¥°¤ò½¤Àµ¡£ + + * troff/troff: + DESC¤Ë¥Ç¥£¥ì¥¯¥Æ¥£¥Öwcharkern¤òÄɲä·¡¢ASCIIʸ»ú¤ÈEUCʸ»ú¤Î´Ö¤Ë¡¢ + »ØÄꤷ¤¿unit¿ô¤À¤±breakÉÔ²Äǽ¤Ê¶õÇò¤òÆþ¤ì¤ë¤è¤¦¤Ë¤·¤¿¡£ + + * troff/troff: + DESC¤Ë¥Ç¥£¥ì¥¯¥Æ¥£¥Ölowerwchar¤òÄɲä·¡¢ASCIIʸ»ú¤ËÂФ·¤ÆEUCʸ»ú¤ò¡¢ + »ØÄꤷ¤¿unit¿ô¤À¤±²¼¤²¤ë¤è¤¦¤Ë¤·¤¿(ASCIIʸ»ú¤¬Íî¤Á¹þ¤ó¤Ç¸«¤¨¤ë¤¿¤á)¡£ + +Fri Oct 14 08:29:06 1994 Kitagawa Toshiyuki (kitagawa@bsd2.kbnes.nec.co.jp) + + * aplah¥Ð¡¼¥¸¥ç¥ó¡£ --- groff-1.18.1.1.orig/tmac/tty.tmac +++ groff-1.18.1.1/tmac/tty.tmac @@ -68,7 +68,7 @@ .ie '\*(.T'cp1047' \ . do mso cp1047.tmac .el \ -. if '\*(.T'latin1' \ +. if !'\*(.T'ascii' \ . do mso latin1.tmac . .\" If you want the character definitions in tty-char.tmac to be loaded --- groff-1.18.1.1.orig/tmac/docj.tmac +++ groff-1.18.1.1/tmac/docj.tmac @@ -0,0 +1,3427 @@ +.\" Copyright (c) 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)doc 5.8 (Berkeley) 8/5/91 +.\" Modified by jjc@jclark.com as follows: the doc-* files are assumed to be +.\" installed as mdoc/doc-* rather than tmac.doc-* (the filename +.\" `tmac.doc-common' would be too long); when using groff, the doc-* files +.\" are loaded using the `mso' request. +.\" +.\" .mdoc-parse - attempt to parse troff request arguments +.\" %beginstrip% +.if \n(.g \{\ +.cp 0 +.ftr C CR +.\} +.if \n(.g .ig +.de sO +.so /usr/share/tmac/\\$1 +.. +.if !\n(.g .ig +.de sO +.mso mdoc/\\$1 +.. +.if t \{\ +. sO docj-ditroff +.\} +.if n \{\ +. sO docj-nroff +.\} +.sO doc-common +.sO doc-syms +.\" NS Db macro - start/stop DEBUG MODE +.\" NS Db register DEBUG MODE +.\" NS iN register DEBUG MODE (inline if 1, to stderr if 0 (default)) +.nr Db 0 +.de Db +.ie \\n(.$==0 \{\ +. ie \\n(Db==0 \{\ +.tm DEBUGGING ON +. nr Db 1 +. \} +. el \{\ +.tm DEBUGGING OFF +. nr Db 0 +. \} +.\} +.el \{\ +. if "\\$1"on" \{\ +.tm DEBUGGING ON +. nr Db 1 +. \} +. if "\\$1"off" \{\ +.tm DEBUGGING OFF +. nr Db 0 +. \} +.\} +.. +.\" NS aV macro - parse argument vector (recursive) (.aV arg ... ) +.\" NS fV macro - parse argument vector (recursive) (.fV) +.\" NS aC register argument counter (aV/fV) +.\" NS fV register argument counter (must set to \\n(.$ prior to reuqest) (fV) +.\" NS A[0-9] argument vector (aV/fV) +.\" NS C[0-9] reg. arg type(1=macro, 2=arg, 3=punct-suf, 4=punct-pre) (aV/fV) +.\" NS S[0-9] space vector (sV) +.\" NS aP register argument pointer (aV) +.\" NS yU local string used for debugging +.\" NS iI local register (indent for inline debug mode) +.\" NS mN name of calling request (set in each user requestable macro) +.de aV +.nr aC \\n(aC+1 +.ie "\\$1"|" \{\ +. if "\\*(mN"Op" .ds A\\n(aC \fR\\$1\fP +. if "\\*(mN"Ar" .ds A\\n(aC \fR\\$1\fP +. if "\\*(mN"Fl" .ds A\\n(aC \fR\\$1\fP +. if "\\*(mN"Cm" .ds A\\n(aC \fR\\$1\fP +. if "\\*(mN"It" .ds A\\n(aC \fR\\$1\fP +.\} +.el .ds A\\n(aC \\$1 +.aU \\n(aC +.nr C\\n(aC \\n(aT +.s\\n(aT +.if \\n(Db \{\ +. if \\n(aT==1 .ds yU Executable +. if \\n(aT==2 .ds yU String +. if \\n(aT==3 .ds yU Closing Punctuation or suffix +. if \\n(aT==4 .ds yU Opening Punctuation or prefix +. if \\n(iN==1 \{\ +. br +. nr iI \\n(.iu +. in -\\n(iIu +. if \\n(aC==1 \{\ +\&\fBDEBUG(argv) MACRO:\fP `.\\*(mN' \fBLine #:\fP \\n(.c +. \} +\&\t\fBArgc:\fP \\n(aC \fBArgv:\fP `\\*(A\\n(aC' \fBLength:\fP \\n(sW +\&\t\fBSpace:\fP `\\*(S\\n(aC' \fBClass:\fP \\*(yU +. \} +. if \\n(iN==0 \{\ +. if \\n(aC==1 \{\ +. tm DEBUG(argv) MACRO: `.\\*(mN' Line #: \\n(.c +. \} +. tm \tArgc: \\n(aC Argv: `\\*(A\\n(aC' Length: \\n(sW +. tm \tSpace: `\\*(S\\n(aC' Class: \\*(yU +. \} +.\} +.ie \\n(.$==1 \{\ +. nr aP 0 +. ie \\n(dZ==1 \{\ +. if \\n(oM>1 .as b1 \\*(S0 +. \} +. el \{\ +. if \\n(oM>0 \{\ +. if \\n(fC==0 .as b1 \\*(S0 +. \} +. \} +. ds S0 \\*(S\\n(aC +. if \\n(Db \{\ +. if \\n(iN==1 \{\ +\&MACRO REQUEST: \t.\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9 +. br +. in \\n(iIu +. \} +. if \\n(iN==0 \{\ +.tm \tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9 +. \} +. \} +.\} +.el .aV \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.de fV +.nr aC \\n(aC+1 +.if "\\*(A\\n(aC"|" \{\ +. if "\\*(mN"Op" .ds A\\n(aC \fR\\*(A\\n(aC\fP +. if "\\*(mN"Ar" .ds A\\n(aC \fR\\*(A\\n(aC\fP +. if "\\*(mN"Fl" .ds A\\n(aC \fR\&\\*(A\\n(aC\fP +. if "\\*(mN"Cm" .ds A\\n(aC \fR\\*(A\\n(aC\fP +. if "\\*(mN"It" .ds A\\n(aC \fR\\*(A\\n(aC\fP +.\} +.aU \\n(aC +.nr C\\n(aC \\n(aT +.s\\n(aT +.if \\n(Db \{\ +. if \\n(aT==1 .ds yU Executable +. if \\n(aT==2 .ds yU String +. if \\n(aT==3 .ds yU Closing Punctuation or suffix +. if \\n(aT==4 .ds yU Opening Punctuation or prefix +. if \\n(iN==1 \{\ +. br +. nr iI \\n(.iu +. in -\\n(iIu +. if \\n(aC==1 \{\ +\&\fBDEBUG(fargv) MACRO:\fP `.\\*(mN' \fBLine #:\fP \\n(.c +. \} +\&\t\fBArgc:\fP \\n(aC \fBArgv:\fP `\\*(A\\n(aC' \fBLength:\fP \\n(sW +\&\t\fBSpace:\fP `\\*(S\\n(aC' \fBClass:\fP \\*(yU +. \} +. if \\n(iN==0 \{\ +. if \\n(aC==1 \{\ +. tm DEBUG(fargv) MACRO: `.\\*(mN' Line #: \\n(.c +. \} +. tm \tArgc: \\n(aC Argv: `\\*(A\\n(aC' Length: \\n(sW +. tm \tSpace: `\\*(S\\n(aC' Class: \\*(yU +. \} +.\} +.ie \\n(fV==1 \{\ +. nr aP 0 +. ie \\n(dZ==1 \{\ +. if \\n(oM>1 .as b1 \\*(S0 +. \} +. el \{\ +. if \\n(oM>0 \{\ +. if \\n(fC==0 .as b1 \\*(S0 +. \} +. \} +. ds S0 \\*(S\\n(aC +. nr fV 0 +. if \\n(Db \{\ +. ie \\n(iN \{\ +\&\tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9 +. br +. in \\n(iIu +. \} +. el \{\ +.tm \tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9 +. \} +. \} +.\} +.el \{\ +. nr fV \\n(fV-1 +. fV +.\} +.. +.\" NS aX macro - stuff saved strings into `b1' (used by -diag list) +.de aX +.nr aP \\n(aP+1 +.as b1 \&\\*(A\\n(aP +.ie \\n(fV==1 \{\ +. nr aP 0 +. nr fV 0 +.\} +.el \{\ +. as b1 \&\\*(sV +. nr fV \\n(fV-1 +. aX +.\} +.. +.\" NS aI macro - append arg to arg vector: .aI [arg] [type] (used by .En only) +.de aI +.ie \\n(aC<9 \{\ +. nr aC \\n(aC+1 +. ds A\\n(aC \\$1 +. nr C\\n(aC \\$2 +. s\\$2 +. ds xV S\\n(aC +.\} +.el \{\ +. tm Usage: Too many arguments (maximum of 8 accepted) (#\\n(.c) +. tm \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9 +.\} +.. +.\" +.\" NS aZ macro - print buffer (pB) and clean up arg vectors (aY) +.de aZ +.pB +.aY +.. +.\" NS aY macro - clean up arg vector +.de aY +.rm C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 +.rm A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 +.rm S1 S2 S3 S4 S5 S6 S7 S8 S9 +.nr aC 0 +.nr aP 0 +.. +.\" NS pB macro - test for end of vector (eol) (print b1 buffer or divert) +.de pB +.ie \\n(dZ==1 \{\ +. if \\n(oM==1 \{\&\\*(b1 +. rm S0 +. ds b1 +. \} +. if \\n(oM==0 \{\ +. x2 +. \} +.\} +.el \{\ +. ie \\n(oM==0 \{\&\\*(b1 +. rm S0 +. ds b1 +. \} +. el \{\ +. if ((\\n(sM==1)&(\\n(tP==0)) \{\ +. x1 +. \} +. \} +.\} +.hy +.. +.\" NS x1 macro - save buffer and divert if tP flag set +.\" NS eB diversion string +.\" NS b2 string save of buffer +.\" NS lK register count of lines read from input file +.de x1 +.nr dZ \\n(dZ+1 +.ds b2 \\*(b1 +.ds b1 +.nr lK \\n(.c +.ev 2 +.fi +.di eB +.. +.\" +.\" NS x2 macro - end diversion and print +.\" NS b0 string local temporary +.de x2 +.br +.di +.ev +.ie (\\n(.c-\\n(lK>1) \{\ +. ds b0 \&\\*(eB\\ +. ds b1 \\*(b2\\*(b0\\*(b1 +.\} +.el .ds b1 \\*(b2\\*(b1 +\&\\*(b1 +.rm eB b2 b0 b1 +.nr dZ \\n(dZ-1 +.. +.\" NS Fl macro - flags (appends - and prints flags) +.\" NS cF register save current font +.\" NS cZ register save current font size +.de Fl +.as b1 \&\\*(fL +.if \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. as b1 \&\|\-\|\fP\s0 +. pB +. \} +. el \{\ +. ds mN Fl +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>0 \{\ +. ie (\\n(aC-\\n(aP)==0 \{\ +. as b1 \&\|\-\fP\s0 +. aZ +. \} +. el \{\ +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 \{\ +. as b1 \&\|\-\fP\s0 +. \\*(A\\n(aP +. \} +. el \{\ +. nr cF \\n(.f +. nr cZ \\n(.s +. if \\n(C\\n(aP==3 \{\ +. as b1 \&\|\-\| +. \} +. fR +. \} +. \} +.\} +.. +.\" +.\" NS fR macro - Fl flag recursion routine (special handling) +.\" NS jM local register +.\" NS jN local register +.\" +.de fR +.hy 0 +.nr jM \\n(C\\n(aP +.ie \\n(jM==1 \{\ +. as b1 \&\fP\s0 +. \\*(A\\n(aP +.\} +.el \{\ +. nr jN \\n(aP +. ie \\n(jM==2 \{\ +. ie !"\\*(A\\n(aP"\\*(Ba" \{\ +. ie !"\\*(A\\n(aP"\fR|\fP" \{\ +. ie "\\*(A\\n(aP"-" .as b1 \&\|\-\^\-\| +. el .as b1 \&\|\-\\*(A\\n(aP +. \} +. el .as b1 \&\\*(A\\n(aP +. \} +. el .as b1 \&\\*(A\\n(aP +. \} +. el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0 +. ie \\n(aC==\\n(aP \{\ +. if \\n(jM==4 .as b1 \&\|\- +. as b1 \&\fP\s0 +. aZ +. \} +. el \{\ +. nr aP \\n(aP+1 +. ie ((\\n(C\\n(aP==3)&(\\n(C\\n(jN==4)) .as b1 \&\|\- +. el .as b1 \&\\*(S\\n(jN +. fR \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.rr jM jN +.. +.\" +.\" NS nR macro - general name recursion routine +.\" NS jM local register +.\" NS jN local register +.de nR +.hy 0 +.nr jM \\n(C\\n(aP +.ie \\n(jM==1 \{\ +. as b1 \&\f\\n(cF\s\\n(cZ +. \\*(A\\n(aP +.\} +.el \{\ +. nr jN \\n(aP +. ie \\n(jM==2 .as b1 \&\\*(A\\n(aP +. el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0 +. ie \\n(aC==\\n(aP \{\ +. as b1 \&\f\\n(cF\s\\n(cZ +. aZ +. \} +. el \{\ +. nr aP \\n(aP+1 +. as b1 \&\\*(S\\n(jN +. nR +. \} +.\} +.rr jM jN +.. +.\" NS Ar macro - command line `argument' macro +.\" +.de Ar +.as b1 \\*(aR +.if \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. as b1 file\ ...\fP\s0 +. pB +. \} +. el \{\ +. ds mN Ar +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>0 \{\ +. ie (\\n(aC-\\n(aP)==0 \{\ +. as b1 \&file\ ...\fP\s0 +. aZ +. \} +. el \{\ +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 \{\ +. as b1 \&file\ ...\fP\s0 +. \\*(A\\n(aP +. \} +. el \{\ +. nr cF \\n(.f +. nr cZ \\n(.s +. if \\n(C\\n(aP==3 \{\ +. as b1 \&file\ ... +. \} +. nR +. \} +. \} +.\} +.. +.\" NS Ad macro - Addresses +.de Ad +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Ad address ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Ad +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(aD +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Cd macro - Config declaration (for section 4 SYNOPSIS) (not callable) +.\" needs work - not very translatable +.de Cd +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Cd Configuration file declaration (#\\n(.c) +. el \{\ +. ds mN Cd +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.br +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(nM +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. ie \\n(nS \{\ +. if "\\*(mN"Cd" \{\ +. rs +. ie \\n(nS>1 .br +. el \{\ +. if \\n(iS==0 .nr iS \\n(Dsu +. \} +. in +\\n(iSu +. ti -\\n(iSu +. nr nS \\n(nS+1 +. \} +. nR +. in -\\n(iSu +. \} +. el .nR +.\} +.. +.\" NS Cm macro - Interactive command modifier (flag) +.de Cm +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Cm Interactive command modifier ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Cm +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(cM +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Dv macro - define variable +.de Dv +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Dv define_variable ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Dv +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(eR +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Em macro - Emphasis +.de Em +.if \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. tm Usage: .Em text ... \\*(Pu (#\\n(.c) +. \} +. el \{\ +. ds mN Em +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(eM +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Er macro - Errnotype +.de Er +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Er ERRNOTYPE ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Er +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(eR +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Ev macro - Environment variable +.de Ev +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Ev ENVIRONMENT_VARIABLE ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Ev +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(eV +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Fd macro - function declaration - not callable (& no err check) +.\" NS fD register subroutine test (in synopsis only) +.\" NS fY register subroutine count (in synopsis only) (fortran only) +.\" NS fZ register also subroutine count (in synopsis only) +.de Fd +.ds mN Fd +.if \\n(nS>0 \{\ +.\" if a variable type was the last thing given, want vertical space +. if \\n(fX>0 \{\ +. Pp +. nr fX 0 +. \} +.\" if a subroutine was the last thing given, want vertical space +. if \\n(fZ>0 \{\ +. ie \\n(fD==0 \{\ +. Pp +. rs +. \} +. el .br +. \} +. nr fD \\n(fD+1 +.\} +.nr cF \\n(.f +.nr cZ \\n(.s +\&\\*(fD\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.br +.ft \\n(cF +.fs \\n(cZ +.. +.\" NS Fr macro - function return value - not callable (at the moment) +.de Fr +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Fr Function_return_value... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Fr +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(aR +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Ic macro - Interactive command +.de Ic +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Ic Interactive command ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Ic +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(iC +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Li macro - literals +.de Li +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage .Li argument ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Li +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(lI +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Or macro - Pipe symbol (OR) +.de Or +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Or ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Or +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(iC +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Ms macro - Math symbol +.de Ms +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Ms Math symbol ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Ms +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(sY +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Nm macro - Name of command or page topic +.\" NS n1 string - save first invocation of .Nm +.\" NS iS register - indent second command line in a synopsis +.de Nm +.if \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. ie "\\*(n1"" .tm Usage: .Nm Name(s) ... \\*(Pu (#\\n(.c) +. el \&\\*(nM\\*(n1\fP\s0 +. \} +. el \{\ +. ds mN Nm +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>0 \{\ +. ie \\n(aC==\\n(aP \{\ +. as b1 \&\\*(nM\\*(n1\fP\s0 +. aZ +. \} +. el \{\ +. as b1 \\*(nM +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 \{\ +. as b1 \&\\*(n1\fP\s0 +. \\*(A\\n(aP +. \} +. el \{\ +. nr cF \\n(.f +. nr cZ \\n(.s +. if \\n(nS \{\ +. if "\\*(mN"Nm" \{\ +. rs +. in -\\n(iSu +. ie \\n(nS>1 .br +. el \{\ +. if \\n(iS==0 \{\ +. sw \\$1 +. nr iS ((\\n(sWu+1)*\\n(fW)u +. \} +. \} +. in +\\n(iSu +. ti -\\n(iSu +. nr nS \\n(nS+1 +. \} +. \} +. if "\\*(n1"" .ds n1 \\*(A\\n(aP +. nR +. \} +. \} +.\} +.. +.\" NS Pa macro - Pathname +.de Pa +.if \\n(aC==0 \{\ +. ie \\n(.$==0 \&\\*(pA~\fP\s0 +. el \{\ +. ds mN Pa +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(pA +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Sy macro - Symbolics +.de Sy +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Sy symbolic_text ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Sy +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(sY +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Tn macro - Trade Name Macro +.de Tn +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Tn Trade_name(s) ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Tn +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(tN\\*(tF +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS nN macro - Trade Name Macro for inside of reference +.de nN +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Tn Trade_name(s) ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Tn +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(tN +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS Va macro - variable name macro +.de Va +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Va variable_name(s) ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Va +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(vA +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" +.\" NS No macro - Normal text macro (default text style if mess up) +.de No +.as b1 \\*(nO +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .No must be called with arguments (#\\n(.c) +. el \{\ +. ds mN No +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 \{\ +. \\*(A\\n(aP +. \} +. el \{\ +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +. \} +.\} +.. +.\"------------------------------------------------------------------------ +.\" NS Op macro - Option Expression +.de Op +.if \\n(aC==0 \{\ +. ds mN Op +.\} +.\" .ds qL \&\\*(lO +.\" .ds qR \&\\*(rO +.ds qL \&\\*(lB +.ds qR \&\\*(rB +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 +.. +.\" NS Aq macro - Enclose string in angle brackets +.de Aq +.if \\n(aC==0 .ds mN Aq +.ds qL \&< +.ds qR \&> +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Bq macro - Enclose string in square brackets +.de Bq +.if \\n(aC==0 .ds mN Bq +.ds qL \&\\*(lB +.ds qR \&\\*(rB +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Dq macro - Enclose string in double quotes +.de Dq +.if \\n(aC==0 .ds mN Dq +.ds qL \&\\*(Lq +.ds qR \&\\*(Rq +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Eq macro - Enclose string in double quotes +.de Eq +.if \\n(aC==0 .ds mN Eq +.ds qL \\$1 +.ds qR \\$2 +.En \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Pq macro - Enclose string in parenthesis +.de Pq +.if \\n(aC==0 .ds mN Pq +.ds qL \&\\*(lP +.ds qR \&\\*(rP +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Ql macro - Quoted literal is in file mdocj-[dit|n|g]roff (too large +.\" an if-else to carry along recursively for `if n ...') +.\" +.\" NS Sq macro - Enclose string in single quotes +.de Qq +.if \\n(aC==0 .ds mN Qq +.ds qL \&\\*q +.ds qR \&\\*q +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Sq macro - Enclose string in single quotes +.de Sq +.if \\n(aC==0 .ds mN Sq +.ds qL \&\\*(sL +.ds qR \&\\*(sR +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" +.\" NS Es macro - Set up strings for .En call +.de Es +.if \\n(aC==0 \{\ +. ie \\n(.$>2 .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. el \{\ +. ds qL \\$1 +. ds qR \\$2 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. ds qL \\*(A\\n(aP +. nr aP \\n(aP+1 +. ds qR \\*(A\\n(aP +. ie \\n(aC>\\n(aP .c\\n(C\\n(aP +. el .aZ +.\} +.. +.\" .tm En beg arg(A[\\n(aP])==\\*(A\\n(aP; +.\" .tm En oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC +.\" NS En macro - Enclose string with given args (eg [ and ] etc) +.\" NS qL string variable set by calling macro +.\" NS qR string variable set by calling macro +.\" NS aJ register (for vR) +.de En +.ie \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. as b1 \&\\*(qL\\*(qR +. pB +. \} +. el \{\ +.\". as mN (En) +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. as b1 \&\\*(qL +. \} +.\} +.el \{\ +. as b1 \&\\*(qL +.\} +.if \\n(aC>0 \{\ +. ie (\\n(aC-\\n(aP)==0 \{\ +. as b1 \&\\*(qR +. aZ +. \} +. el \{\ +. ie \\n(C\\n(aC==3 \{\ +. nr aJ \\n(aC-1 +. vR +. nr aJ \\n(aJ+1 +. ds A\\n(aJ \&\\*(qR\\*(A\\n(aJ +. nr aJ 0 +. \} +. el .aI \&\\*(qR 3 +. nr aP \\n(aP+1 +. if \\n(C\\n(aP==1 .\\*(A\\n(aP +. if \\n(C\\n(aP>1 \{\ +. nr aP \\n(aP-1 +. No +. \} +. \} +.\} +.. +.\" NS vR macro - vector routine (for En, trace backwards past trail punct) +.de vR +.if \\n(C\\n(aJ==3 \{\ +. nr aJ \\n(aJ-1 +. vR +.\} +.. +.\"------------------------------------------------------------------------ +.\" NS Ao macro - Angle open +.de Ao +.if \\n(aC==0 .ds mN Ao +.ds qL \&< +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Ac macro - Angle close +.de Ac +.if \\n(aC==0 .ds mN Ac +.ds qR \&> +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Bo macro - Bracket open +.de Bo +.if \\n(aC==0 .ds mN Bo +.ds qL \&[ +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Bc macro - Bracket close +.de Bc +.if \\n(aC==0 .ds mN Bc +.ds qR \&] +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Do macro - Double Quote open +.de Do +.if \\n(aC==0 .ds mN Do +.ds qL \&\\*(Lq +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Dc macro - Double Quote close +.de Dc +.if \\n(aC==0 .ds mN Dc +.ds qR \&\\*(Rq +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Eo macro - Enclose open +.de Eo +.if \\n(aC==0 .ds mN Eo +.ds qL \\$1 +.eO \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Ec macro - Enclose close +.de Ec +.if \\n(aC==0 .ds mN Ec +.ds qR \\$1 +.eC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Oo macro - Option open +.de Oo +.if \\n(aC==0 .ds mN Oo +.ds qL \&[ +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Oc macro - Option close +.de Oc +.if \\n(aC==0 .ds mN Oc +.ds qR \&] +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Po macro - Parenthesis open +.de Po +.if \\n(aC==0 .ds mN Po +.ds qL \&( +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Pc macro - Parenthesis close +.de Pc +.if \\n(aC==0 .ds mN Pc +.ds qR \&) +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Qo macro - Straight Double Quote open +.de Qo +.if \\n(aC==0 .ds mN Qo +.ds qL \&\\*q +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Qc macro - Straight Double Quote close +.de Qc +.if \\n(aC==0 .ds mN Qc +.ds qR \&\\*q +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS So macro - Single Quote open +.de So +.if \\n(aC==0 .ds mN So +.ds qL \&\\*(sL +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Sc macro - Single Quote close +.de Sc +.if \\n(aC==0 .ds mN Sc +.ds qR \&\\*(sR +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Xo macro - Extend open (continue) +.de Xo +.if \\n(aC==0 .ds mN Xo +.\" .nr mN 1 +.ds qL +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Xe macro - Extend close (end) +.de Xc +.\" .nr mN 0 +.if \\n(aC==0 .ds mN Xc +.ds qR +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS eO macro - enclose string open +.\" NS oM register (extension possible) +.de eO +.nr oM \\n(oM+1 +.\" .tm eO last arg==A[\\n(aC]==\\*(A\\n(aC; aP==\\n(aP; oM==\\n(oM; dZ==\\n(dZ; +.ie \\n(aC==0 \{\ +. ie \\n(.$>0 \{\ +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. as b1 \\*(qL +. \} +. el \{\ +. as b1 \\*(qL +. if (\\n(dZ==0)&(\\n(sM==1) \{\ +. nr dZ \\n(dZ+1 +. ds b2 \\*(b1 +. ds b1 +. nr lK \\n(.c +. ev 2 +. fi +. di eB +. \} +. \} +.\} +.el \{\ +. as b1 \\*(qL +.\} +.ie \\n(aC>0 \{\ +. if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 .\\*(A\\n(aP +. el \{\ +. nr aP \\n(aP-1 +. No +. \} +. \} +. if \\n(aC==\\n(aP \{\ +. if \\n(tP==1 \{\ +.\" .tm SETTING Xt!!! +. nr Xt 1 +. \} +.\".\" . ds S0 +.\"CHANGED ds S0 \\*(iV +. aY +. \} +.\} +.el \{\ +. if \\n(oM>1 .as b1 \\*(sV +.\} +.. +.\" +.\" NS eC macro - enclose string close +.\" NS aa local register +.de eC +.nr oM \\n(oM-1 +.\" tm eC last arg==A[\\n(aC]==\\*(A\\n(aC; aP==\\n(aP; oM==\\n(oM; dZ==\\n(dZ; +.as b1 \\*(qR +.if \\n(aC==0 \{\ +. ie \\n(.$>0 \{\ +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +. el \{\ +. ie "\\*(xB"" \{\ +. pB +. \} +. el \{\ +. pB +.\\*(L\\n(lC +. nr Xt 0 +. ds xB +. \} +. \} +.\} +.if \\n(aC>0 \{\ +. ie \\n(aC==\\n(aP \{\ +. ie \\n(oM==0 \{\ +. aZ +. \} +. el .aY +. \} +. el \{\ +. nr aa \\n(aP+1 +. if \\n(C\\n(aa==2 .as b1 \\*(S\\n(aC +.\" tm CURRENT arg (aP==\\*(A\\n(aP and ap+1==\\*(A\\n(aa) tP==\\n(tP Xt==\\n(Xt +. rr aa +. if \\n(tP>0 \{\ +.\" tm UNSETTING Xt==\\n(Xt!!!! +. if \\n(Xt>0 .nr Xt \\n(Xt-1 +.\" tm NOW Xt==\\n(Xt!!!! +. \} +. No +. \} +.\} +.. +.\"------------------------------------------------------------------------ +.\" NS Pf macro - Prefix (calls .pF) +.de Pf +.if \\n(aC==0 .ds mN Pf +.ds qL \&\\$1 +.pF \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS pF macro - Prefix (for prefixing open quotes, brackets etc) +.de pF +.ie \\n(aC==0 \{\ +. as b1 \&\\*(qL +. ie \\n(.$<2 \{\ +. tm Warning: Missing arguments - prefix .Pf) +. pB +. \} +. el .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.\} +.el \{\ +. ie (\\n(aC-\\n(aP)>1 \{\ +. nr aP \\n(aP+1 +. as b1 \&\\*(A\\n(aP +. \} +. el .tm Warning: .Pf: trailing prefix (#\\n(.c) +.\} +.if \\n(aC>0 \{\ +. ie (\\n(aC-\\n(aP)==0 .aZ +. el \{\ +. nr aP \\n(aP+1 +. c\\n(C\\n(aP +. \} +.\} +.. +.\" NS Ns macro - remove space (space remove done by .aV or .fV) +.de Ns +.if \\n(aC==0 \{\ +. ds mN Ns +. ie \\n(.$>0 .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. el .tm Usage: .Ns must be called with arguments (#\\n(.c) +.\} +.No +.. +.de Ap +.if \\n(aC==0 \{\ +. ds mN Ap +. tm Usage: Ap "cannot be first request on a line (no .Ap)" (#\\n(.c) +.\} +.as b1 \&' +.No +.. +.\" NS Hv macro - Hard (unpaddable) Space vector +.\" NS iV string inter-vector space +.\" NS sV string inter-argument space +.de Hv +.ds iV \\*(sV +.ds sV \\*(hV +.. +.\" NS Sv macro - Soft Space vector (troff limitation) +.de Sv +.ds sV \\*(iV +.. +.\" NS Tv macro - Tab Space vector +.de Tv +.ds sV \\*(tV +.. +.\" NS Sm macro - Space mode +.\" NS sM register - default is one (space mode on) +.nr sM 1 +.de Sm +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm "Usage: .Sm [off | on]" (#\\n(.c) +. el \{\ +. ds mN Sm +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>0 \{\ +. nr aP \\n(aP+1 +. if "\\*(A\\n(aP"on" \{\ +. ds sV \\*(iV +. nr sM 1 +. \} +. if "\\*(A\\n(aP"off" \{\ +. ds sV +. rm S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 +. nr sM 0 +. \} +. ie \\n(aC>\\n(aP \{\ +. No +. \} +. el .aY +.\} +.. +.\"------------------------------------------------------------------------ +.\" Size and Argument type macros +.\" NS aT macro - argument type +.\" NS aU macro - argument type (same as .aT but uses A[1-9] strings +.\" NS aT register argument type +.if \n(.g \{\ +.de aT +.nr aT 0 +.ie \\n(sW>2:(\A'\\$1'==0) \{\ +. nr aT 2 +.\} +.el \{\ +. if \\n(sW==1 \{\ +. ie \\n(z\\$1>2 \{\ +. nr aT \\n(z\\$1 +. \} +. el .nr aT 2 +. \} +. if \\n(sW==2 \{\ +. ie \\n(\\$1 \{\ +. nr aT 1 +. \} +. el .nr aT 2 +. \} +.\} +.. +.de aU +.nr aT 0 +.aW \\$1 +.ie \\n(sW>2:(\A'\\*(A\\$1'==0) .nr aT 2 +.el \{\ +. if \\n(sW==1 \{\ +. ie \\n(z\\*(A\\$1>2 \{\ +. nr aT \\n(z\\*(A\\$1 +. \} +. el .nr aT 2 +. \} +. if \\n(sW==2 \{\ +. ie (\\n(\\*(A\\$1) \{\ +. nr aT 1 +. \} +. el .nr aT 2 +. \} +.\} +.. +.\} +.if !\n(.g \{\ +.de aT +.nr aT 0 +.ie \\n(sW>2 \{\ +. nr aT 2 +.\} +.el \{\ +. if \\n(sW==1 \{\ +. ie \\n(z\\$1>2 \{\ +. nr aT \\n(z\\$1 +. \} +. el .nr aT 2 +. \} +. if \\n(sW==2 \{\ +. ie \\n(\\$1 \{\ +. nr aT 1 +. \} +. el .nr aT 2 +. \} +.\} +.. +.de aU +.nr aT 0 +.aW \\$1 +.ie \\n(sW>2 .nr aT 2 +.el \{\ +. if \\n(sW==1 \{\ +. ie \\n(z\\*(A\\$1>2 \{\ +. nr aT \\n(z\\*(A\\$1 +. \} +. el .nr aT 2 +. \} +. if \\n(sW==2 \{\ +. ie (\\n(\\*(A\\$1) \{\ +. nr aT 1 +. \} +. el .nr aT 2 +. \} +.\} +.. +.\} +.\" NS s1 macro - set spacing for class type 1 +.\" NS s2 macro - set spacing for class type 2 +.\" NS s3 macro - set spacing for class type 3 +.\" NS s1 macro - set spacing for class type 1 +.\" NS s2 macro - set spacing for class type 2 +.\" NS s3 macro - set spacing for class type 3 +.\" NS s4 macro - set spacing for class type 4 +.\" NS S[0-9] string spacing +.\" NS xX local register +.\" NS aa local register +.de s0 +.tm MDOC-ERROR: bogus type 0 (can't set space '\\*(A\\n(aC') (#\\n(.c) +.. +.de s1 +.if \\n(\\*(A\\n(aC==3 \{\ +. nr xX \\n(aC-1 +. rm S\\n(xX +. ds S\\n(aC \\*(sV +.\} +.if \\n(\\*(A\\n(aC==2 \{\ +. nr xX \\n(aC-1 +.\" this kludge can probably go away, but need to double check first +. ie "\\*(A\\n(aC"Nb" .ds S\\n(xX \\*(hV +. el .rm S\\n(xX +.\} +.. +.de s2 +.ds S\\n(aC \\*(sV +.. +.de s3 +.if \\n(aC>1 \{\ +. nr xX \\n(aC-1 +. rm S\\n(xX +.\} +.ds S\\n(aC \\*(sV +.. +.de s4 +.nr aa 0 +.. +.\" Class switches (on current argument aP) +.\" NS c0 macro - catch errors (non-existent class type 0) +.\" NS c1 macro - call request if type 1 +.\" NS c2 macro - call .No if type 2 +.\" NS c3 macro - call .No if type 3 +.\" NS c4 macro - call .No if type 4 +.de c0 +.tm MDOC-ERROR: bogus class 0 (can't determine '\\*(A\\n(aC') (#\\n(.c) +.. +.de c1 +.\\*(A\\n(aP +.. +.de c2 +.nr aP \\n(aP-1 +.No +.. +.de c3 +.nr aP \\n(aP-1 +.No +.. +.de c4 +.nr aP \\n(aP-1 +.No +.. +.\" NS y1 macro - ignore if class 1 +.\" NS y2 macro - ignore if class 2 +.\" NS y3 macro - append if type 3 +.\" NS y4 macro - append if type 4 +.de y1 +.nr aa 1 +.. +.de y2 +.nr aa 1 +.. +.de y3 +.as b1 \\*(A\\n(aP +.nr aP \\n(aP+1 +.n\\C\\n(aP +.. +.de y4 +.as b1 \\*(A\\n(aP +.nr aP \\n(aP+1 +.n\\C\\n(aP +.. +.\"-------------------------------------------------------------------------- +.\" Ns Bf macro - Begin Font Mode (will be begin-mode/end-mode in groff & TeX) +.\" Ns Ef macro - End Font Mode +.de Bf +.ds mN Bf +.ie \\n(.$>0 \{\ +. nr bF \\n(.f +. nr bZ \\n(.s +. if "\\$1"Em" \&\\*(eM\c +. if "\\$1"Li" \&\\*(lI\c +. if "\\$1"Sy" \&\\*(sY\c +. if "\\$1"-emphasis" \&\\*(eM\c +. if "\\$1"-literal" \&\\*(lI\c +. if "\\$1"-symbolic" \&\\*(sY\c +.\} +.el .tm Usage .Bf [Em | emphasis | Li | literal | Sy | symbolic] (#\\n(.c) +.. +.de Ef +.ds mN Ef +.ie \\n(.$>0 .tm Usage .Ef (does not take arguments) (#\\n(.c) +.el \&\f\\n(bF\s\\n(bZ +.. +.\" Ns Bk macro - Begin Keep +.\" Ns Ek macro - End Keep +.\" Ns kS string - keep type +.de Bk +.ds mN Bk +.ie \\n(.$==0 \{\ +.tm Usage: .Bk [-lines | -words] (#\\n(.c) +.\} +.el \{\ +. if !"\\*(kS"" .tm .Bk: nesting keeps not implemented yet. (#\\n(.c) +. if "\\$1"-lines" .tm .Bd -lines: Not implemented yet. (#\\n(.c) +. if "\\$1"-words" .Hv +. ds kS \\$1 +.\} +.. +.de Ek +.ds mN Ek +.ie \\n(.$>0 .tm Usage .Ek (does not take arguments) (#\\n(.c) +.el \{\ +. if "\\*(kS"-lines" .tm .Bd -lines: Not implemented yet. (#\\n(.c) +. if "\\*(kS"-words" .Sv +. rm kS +.\} +.. +.\" NS Bd macro - Begin Display display-type [offset string] +.\" NS Ed macro - end Display +.\" NS O[0-9] registers - stack of indent +.\" NS d[0-9] registers - display-type stack +.de Bd +.ds mN Bd +.ie \\n(.$==0 \{\ +.tm Usage: .Bd [-literal | -filled | -ragged | -unfilled] [-offset [string]] [-compact] (#\\n(.c) +.\} +.el \{\ +. ds aa +. nr bV 0 +. nr iD 0 +. nr dP \\n(dP+1 +. if "\\$1"-literal" \{\ +. nr iD \\n(iD+1 +. ds d\\n(dP dL +. nr cF \\n(.f +. nr cZ \\n(.s +. ie t \{\&\\*(lI +' ta 9n 18n 27n 36n 45n 54n 63n 72n +. \} +. el \{\ +' ta 8n 16n 24n 32n 40n 48n 56n 64n 72n +. \} +. nf +. \} +. if "\\$1"-filled" \{\ +. nr iD \\n(iD+1 +. ds d\\n(dP dF +. br +. \} +. if "\\$1"-ragged" \{\ +. nr iD \\n(iD+1 +. ds d\\n(dP dR +. na +. \} +. if "\\$1"-unfilled" \{\ +. nr iD \\n(iD+1 +. ds d\\n(dP dU +. nf +. \} +.\" .tm Here is argc: \\n(.$ and here is iD \\n(iD +. if ((\\n(iD>=1)&(\\n(.$>\\n(iD)) \{\ +. bV \\$2 \\$3 \\$4 +. \} +. if \\n(O\\n(dP>0 'in \\n(.iu+\\n(O\\n(dPu +. if (\\n(bV==0) \{\ +. if (\\n(nS==0) \{\ +. ie "\\*(d\\n(dP"dR" .sp \\n(dVu +. el 'sp \\n(dVu +. \} +. \} +. if \\n(cR==0 .ne 2v +. nr bV 0 +. nr iD 0 +.\} +.. +.\" NS bV macro - resolve remaining .Bd arguments +.de bV +.\" .tm in bV with args: \\$1 \\$2 \\$3 +.nr iD 1 +.ds bY +.if "\\$1"-offset" \{\ +. ds bY \\$2 +. if "\\*(bY"left" \{\ +. nr iD \\n(iD+1 +. nr O\\n(dP 0 +. \} +. if "\\*(bY"right" \{\ +. nr iD \\n(iD+1 +. nr O\\n(dP (\\n(.l/3)u +. \} +. if "\\*(bY"center" \{\ +. nr iD \\n(iD+1 +. nr O\\n(dP (\\n(.l-\\n(.i)/4u +. \} +. if "\\*(bY"indent" \{\ +. nr iD \\n(iD+1 +. nr O\\n(dP \\n(dIu +. \} +. if "\\*(bY"indent-two" \{\ +. nr iD \\n(iD+1 +. nr O\\n(dP \\n(dIu+\\n(dIu +. \} +. if \\n(iD==1 \{\ +. nr iD \\n(iD+1 +. sW "\\*(bY" +. ie \\n(sW>2 \{\ +. ie ((\\*(bY>9n)&(\\*(bY<100n)) \{\ +. nr O\\n(dP \\*(bY +. \} +. el .nr O\\n(dP (\\n(sW)*\\n(fWu +. \} +. el \{\ +. if \\n(sW==2 .aT \\*(bY +. ie \\n(aT==1 \{\ +. nr O\\n(dP \\n(\\*(bY +. \} +. el .nr O\\n(dP \\*(bY +. \} +. \} +.\} +.if "\\$1"-compact" \{\ +. nr bV 1 +.\} +.if \\n(iD<\\n(.$ \{\ +. ie "\\*(bY"" \{\ +. bV \\$2 \\$3 +. \} +. el \{\ +. bV \\$3 +. \} +.\} +.. +.\" NS Ed macro - end display +.de Ed +.ds mN Ed +.br +.if \\n(dP==0 .tm mdoc: Extraneous .Ed +.if "\\*(d\\n(dP"dL" \{\ +. ft \\n(cF +. fz \\n(cZ +.\} +.in \\n(.iu-\\n(O\\n(dPu +.rr O\\n(dP +.rm d\\n(dP +.nr dP \\n(dP-1 +.fi +.if t .ad +.. +.\"-------------------------------------------------------------------------- +.\" NS Bl macro - begin list (.Bl list-type) +.\" NS L[0-9] registers - stack of list types +.de Bl +.ie \\n(.$==0 \{\ +.tm Usage: .Bl [[-hang | -tag] [-width]] [ -item | -enum | -bullet | -diag] (#\\n(.c) +.\} +.el \{\ +. ds mN Bl +. nr aP 0 +. nr lC \\n(lC+1 +. ds A1 \\$2 +. ds A2 \\$3 +. ds A3 \\$4 +. ds A4 \\$5 +. ds A5 \\$6 +. ds A6 \\$7 +. ds A7 \\$8 +. ds A8 \\$9 +. nr fV \\n(.$-1 +. if "\\$1"-hang" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC hL +. nr w\\n(lC 6n +. nr tC 1 +. \} +. if "\\$1"-tag" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC tL +. nr tC 1 +. \} +. if "\\$1"-item" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC iT +. nr tC 1 +. \} +. if "\\$1"-enum" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC nU +. nr w\\n(lC 3n +. nr tC 1 +. \} +. if "\\$1"-bullet" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC bU +. nr w\\n(lC 2n +. nr tC 1 +. \} +. if "\\$1"-dash" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC hU +. nr w\\n(lC 2n +. nr tC 1 +. \} +. if "\\$1"-hyphen" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC hU +. nr w\\n(lC 2n +. nr tC 1 +. \} +. if "\\$1"-inset" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC lL +. nr tC 1 +. \} +. if "\\$1"-diag" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC mL +. nr mL 1 +. \} +. if "\\$1"-ohang" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC oL +. nr tC 1 +. \} +. if "\\$1"-column" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC cL +. \} +. ie \\n(aP==0 \{\ +. tm \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. tm Usage: .Bl [[-inset|-tag] -width] [-item|-enum|-bullet|-diag] (#\\n(.c) +. \} +. el \{\ +. tY +. if (\\n(aP==1)&(\\n(aP<\\n(.$) \{\ +. nr aP 0 +. lV +. if "\\*(L\\n(lC"cL" \{\ +. W\\n(wV +. nr w\\n(lC 0 +' in -\\n(eWu +. ie \\n(v\\n(lC==1 \{\ +. nr aa 0 +. \} +. el \{\ +. sp \\n(dVu +. \} +. nf +. nr wV 0 +. \} +. \} +. \} +. nr aP 0 +.\" . ds b1 +. aY +.\" .tm Here is L[\\n(lC]==\\*(L\\n(lC +.\} +.. +.if \n(.g \{\ +. nr i 10 +. while \ni<100 \{\ +. nr num!\nin 1 +. nr i +1 +. \} +.\} +.\" NS lV macro - resolve remaining .Bl arguments +.de lV +.nr aP \\n(aP+1 +.if \\n(fV>=\\n(aP \{\ +. nr iD 0 +. if "\\*(A\\n(aP"-compact" \{\ +. nr iD 1 +. nr v\\n(lC 1 +. \} +. if "\\*(A\\n(aP"-width" \{\ +. nr iD 1 +. nr aP \\n(aP+1 +. nr tW 1 +. ds t\\n(lC TagwidtH +. ds tS \\*(A\\n(aP +. aW \\n(aP +. ie \\n(sW>2 \{\ +. nr w\\n(lC (\\n(sW)*\\n(fWu +. if \\n(sW==3 \{\ +. ie \\n(.g \{\ +. if \A'\\*(tS' .if r num!\\*(tS \{\ +. nr w\\n(lC \\*(tS +. \} +. \} +. el \{\ +. if (\\*(tS>9n)&(\\*(tS<99n) \{\ +. nr w\\n(lC \\*(tSu +. \} +. \} +. \} +. \} +. el \{\ +. aT \\*(tS +. ie \\n(aT==1 \{\ +. nr w\\n(lC \\n(\\*(tS +. \} +. el \{\ +. nr w\\n(lC \\*(tSu +. \} +. \} +. \} +. if "\\*(A\\n(aP"-offset" \{\ +. nr iD 1 +. nr aP \\n(aP+1 +. ie "\\*(A\\n(aP"indent" \{\ +. nr o\\n(lC \\n(Dsu +. \} +. el \{\ +. ds tS \\*(A\\n(aP +. aW \\n(aP +. ie \\n(sW>2 \{\ +. nr o\\n(lC (\\n(sW)*\\n(fWu +. ie \\n(.g \{\ +. if \A'\\*(tS' .if r num!\\*(tS \{\ +. nr o\\n(lC \\*(tS +. \} +. \} +. el \{\ +. if (\\*(tS>9n)&(\\*(tS<100n) \{\ +. nr o\\n(lC \\*(tS +. \} +. \} +. \} +. el \{\ +. ie \\n(C\\n(aP==1 .nr o\\n(lC \\n(\\*(tS +. el .nr o\\n(lC \\*(tS +. \} +. \} +. \} +. if \\n(iD==0 \{\ +. if "\\*(L\\n(lC"cL" \{\ +. nr wV \\n(wV+1 +. ds A\\n(wV \\*(A\\n(aP +. \} +. \} +. if \\n(fV>\\n(aP .lV +.\} +.. +.\" NS El macro - end list +.\" NS iD local register +.de El +.ie \\n(.$>0 \{\ +. tm Usage: .El (#\\n(.c) +.\} +.el \{\ +. ds mN El +. nr iD 0 +. if "\\*(L\\n(lC"cL" \{\ +. nr iD 1 +. cC +. \} +. if "\\*(L\\n(lC"nU" \{\ +. nr nU 0 +. \} +. if \\n(mL>0 \{\ +. nr iD 1 +. nr mL 0 +. tZ +. nr lC \\n(lC-1 +. tY +. \} +. if "\\*(L\\n(lC"iT" \{\ +' in \\n(.iu-\\n(o\\n(lCu +. tZ +. nr lC \\n(lC-1 +. tY +. nr iD 1 +. \} +. if "\\*(L\\n(lC"oL" \{\ +' in \\n(.iu-\\n(o\\n(lCu +. tZ +. nr lC \\n(lC-1 +. tY +. nr iD 1 +. \} +. if "\\*(L\\n(lC"lL" \{\ +' in \\n(.iu-\\n(o\\n(lCu +. tZ +. nr lC \\n(lC-1 +. tY +. nr iD 1 +. \} +. if \\n(iD==0 \{\ +. lE +. \} +. br +. nr iD 0 +.\} +.. +.\" NS It macro - list item +.\" NS iD local register +.\" NS aA save pA font string for section FILES (no underline if nroff) +.de It +.if "\\*(L\\n(lC"" \{\ +. tm Usage .Bl -list-type [-width [string] | -compact | -offset [string]] (#\\n(.c) +. tm .It \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 +.\} +.\" .tm Here is L[\\n(lC]==\\*(L\\n(lC +.ne 3v +.ie \\n(.$>0 \{\ +. ds mN It +. ds b1 +. nr iD 0 +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. if "\\*(L\\n(lC"mL" \{\ +. nr iD 1 +. nr aP 0 +. aX +. \\*(L\\n(lC +. \} +. if "\\*(L\\n(lC"cL" \{\ +. ds b1 +. nr aP 0 +. nr iD 1 +. \\*(L\\n(lC +. \} +. if "\\*(L\\n(lC"iT" \{\ +. nr aP 0 +. nr iD 1 +. \\*(L\\n(lC +. \} +. if \\n(iD==0 \{\ +. fV +.\" tm ------------------------------------------------------------------------ +.\" tm It list-type==\\*(L\\n(lC, aP==\\n(aP +.\" tm It beg arg(A[1])==\\*(A1; oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC +. nr oM \\n(oM+1 +. nr tP 1 +. nr aP \\n(aP+1 +. nr tX \\n(C\\n(aP +. ds tX \\*(A\\n(aP +. if \\n(nF==1 \{\ +. ds aA \\*(pA +. if n .ds pA \\*(nO +. \} +. ie \\n(C\\n(aP==1 \{\ +. \\*(A\\n(aP +. \} +. el \{\ +. nr aP \\n(aP-1 +. No +. \} +.\" tm in It here is b1==\\*(b1 +.\" tm It mid arg(A[1])==\\*(A1; oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC +. ie \\n(Xt==1 .ds xB \&\\*(L\\n(lC +. el .\\*(L\\n(lC +. \} +. nr iD 0 +.\} +.el .\\*(L\\n(lC +.. +.\" NS lL macro - .It item of list-type inset +.de lL +.lY +.br +\&\\*(b1 +.nr oM \\n(oM-1 +.nr tP 0 +.ds b1 +.aY +'fi +.. +.\" NS hL macro - .It item of list-type hanging label (as opposed to tagged) +.de hL +.lX +.nr bb \\n(w\\n(lCu+\\n(lSu +.ti -\\n(bbu +.ie \w\\*(b1u>=(\\n(w\\n(lCu) \&\\*(b1 +.el \&\\*(b1\h'|\\n(bbu'\c +.nr oM \\n(oM-1 +.ds b1 +.nr tP 0 +.aY +'fi +.. +.\" NS oL macro - .It item of list-type overhanging label +.de oL +.lY +\&\\*(b1 +.br +.nr oM \\n(oM-1 +.ds b1 +.nr tP 0 +.aY +'fi +.. +.\" NS iT macro - .It item of list-type [empty label] +.de iT +.lY +.br +.\" .ds b1 +.aY +'fi +.. +.\" NS nU macro - Enumerated list +.\" NS nU register count +.\" NS hU macro - Hyphen paragraph list (sub bullet list) +.\" NS bU macro - Bullet paragraph list +.de nU +.nr oM \\n(oM+1 +.nr nU \\n(nU+1 +.ds b1 \&\\n(nU. +.uL +.. +.de bU +.nr oM \\n(oM+1 +.nr bU \\n(bU+1 +.ds b1 \&\\*(sY\&\(bu\fP +.uL +.. +.de hU +.nr oM \\n(oM+1 +.nr bU \\n(bU+1 +.ds b1 \&\\*(sY\&\-\fP +.uL +.. +.\" NS uL macro - .It item of list-type enum/bullet/hyphen +.de uL +.lX +.nr bb \\n(w\\n(lCu+\\n(lSu +.ti -\\n(bbu +.ie \w\\*(b1u>=(\\n(w\\n(lCu) \&\\*(b1 +.el \&\\*(b1\h'|\\n(bbu'\c +.nr oM \\n(oM-1 +.\" .nr dZ \\n(dZ+1 +.ds b1 +.nr tP 0 +.aY +'fi +.. +.\" NS mL macro - .It item of list-type diagnostic-message +.de mL +.nr cF \\n(.f +.nr cZ \\n(.s +.ie \\n(mL==1 \{\ +. nr zB \\n(.c +. ie (\\n(zB-\\n(zA)>1 .Pp +. el .br +. nr zA \\n(zB +. nr zB 0 +.\} +.el \{\ +. nr zA \\n(.c +. br +.\} +\&\\*(sY\\*(b1\f\\n(cF\s\\n(cZ\\*(lS\c +.aY +.ds b1 +'fi +.. +.\" NS tL macro - .It item of list-type "tag" +.de tL +.\" tm in tL here is b1==\\*(b1 +.if \\n(tW==0 .lW +.lX +.nr bb \\n(w\\n(lCu+\\n(lSu +.ti -\\n(bbu +.ie (\w\\*(b1u)>(\\n(w\\n(lCu) \{\&\\*(b1 +. br +.\} +.el \&\\*(b1\h'|\\n(bbu'\c +.if \\n(nF==1 \{\ +. if n .ds pA \\*(aA +.\} +.nr oM \\n(oM-1 +.nr tP 0 +.\" .nr dZ \\n(dZ+1 +.ds b1 +.aY +'fi +.. +.\" NS lW macro - resolve unknown label/tag width (if .Bl [inset | tag] only) +.de lW +.if !"TagwidtH"\\*(t\\n(lC" \{\ +. ie \\n(tX==1 \{\ +. ds t\\n(lN \\*(tX +. nr w\\n(lN \\n(\\*(tX +. \} +. el \{\ +. ds t\\n(lN No +. nr w\\n(lN \\n(No +. \} +. if !"\\*(t\\n(lC"\\*(t\\n(lN" .nr tC 1 +.\} +.. +.\" NS lX macro - set up vertical spacing (if compact) and offset+indent (all) +.de lX +.ie \\n(tC \{\ +. nr tC 0 +. nr tW 0 +. if \\n(v\\n(lC==0 .sp \\n(dVu +. in \\n(.iu+\\n(w\\n(lCu+\\n(o\\n(lCu+\\n(lSu +.\} +.el \{\ +. ie \\n(v\\n(lC==1 \{\ +. nr aa 0 +. \} +. el \{\ +. sp \\n(dVu +. \} +.\} +.if !\\n(cR .ne 2v +.. +.\" NS lY macro - set up vertical spacing (if compact) and offset+indent (all) +.de lY +.ie \\n(tC \{\ +. nr tC 0 +. nr tW 0 +. if \\n(v\\n(lC==0 .sp \\n(dVu +. in \\n(.iu+\\n(o\\n(lCu +.\} +.el \{\ +. ie \\n(v\\n(lC==1 \{\ +. nr aa 0 +. \} +. el \{\ +. sp \\n(dVu +. \} +.\} +.if !\\n(cR .ne 2v +.. +.\" NS tS temporary string +.\" NS hL macro - hanging list function +.\" NS tS temporary string +.\" NS hL macro - hanging list function +.\" NS lT macro - tagged list function +.\" NS lE macro - list end function +.\" NS tX string (initial string) +.\" NS tX register (initial class) +.\" NS tC parameter change flag +.\" NS Xt save current list-type flag +.\" NS lC register - list type stack counter +.\" NS tP register tag flag (for diversions) +.\" NS w[0-9] register tag stack (nested tags) +.\" NS t[0-9] register tag string stack (nested tags) +.\" NS o[0-9] register offset stack (nested tags) +.\" NS v[0-9] register vertical tag break stack +.\" NS h[0-9] register horizontal tag stack (continuous if 1, break if 0) +.nr lC 0 +.nr wV 0 +.nr w1 0 +.nr o1 0 +.nr v1 0 +.nr h1 0 +.ds t\n(lC +.de lE +.\" IN lC o[\\n(lC]==\\n(o\\n(lC, w[\\n(lC]==\\n(w\\n(lC, +.ie \\n(o\\n(lC>0 \{\ +' in \\n(.iu-(\\n(w\\n(lCu)-(\\n(o\\n(lCu)-\\n(lSu +. rr o\\n(lC +.\} +.el 'in \\n(.iu-\\n(w\\n(lCu-\\n(lSu +.if \\n(lC<=0 .tm Extraneous .El call (#\\n(.c) +.tZ +.nr lC \\n(lC-1 +.tY +.. +.\" NS tY macro - set up next block for list +.\" NS tZ macro - decrement stack +.\" NS tY register (next possible lC value) +.de tY +.nr tY (\\n(lC+1) +.nr w\\n(tY 0 +.nr h\\n(tY 0 +.nr o\\n(tY 0 +.ds t\\n(tY \\*(t\\n(lC +.ds L\\n(tY +.nr v\\n(tY 0 +.. +.de tZ +.rm L\\n(tY +.rr w\\n(tY +.rr h\\n(tY +.rr o\\n(tY +.rm t\\n(tY +.rr v\\n(tY +.nr tY \\n(tY-1 +.. +.\" initial values +.nr w1 0 +.nr o1 0 +.nr h1 0 +.ds t1 +.nr v1 0 +.nr tY 1 +.\" NS Xr macro - cross reference (man page only) +.de Xr +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Xr +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c) +. el \{\ +. ie \\n(C\\n(aP>2 .y\\n(C\\n(aP +. el \{\ +. as b1 \&\\*(xR\\*(A\\n(aP\fP\s0 +. if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. if \\n(C\\n(aP==2 \{\ +. as b1 \&(\\*(A\\n(aP) +. nr aP \\n(aP+1 +. \} +. if \\n(aC>=\\n(aP \{\ +. c\\n(C\\n(aP +. \} +. \} +. \} +. aZ +. \} +.\} +.. +.\" NS Sx macro - cross section reference +.de Sx +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Sx Usage: .Sx Section Header \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Sx +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. as b1 \\*(sX +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS cC macro - column-list end-list +.\" NS eW macro - column indent width +.\" NS cI register - column indent width +.\" NS W[1-5] macro - establish tabs for list-type column +.de cC +'in \\n(.iu-\\n(o\\n(lCu-\\n(w\\n(lCu +.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +.fi +.tZ +.nr lC \\n(lC-1 +.tY +.. +.de W1 +.ta \w\\*(A1 u +.nr eW \w\\*(A1 u +'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.de W2 +.ta \w\\*(A1 u +\w\\*(A2 u +.nr eW \w\\*(A1 u+\w\\*(A2 u +'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.de W3 +.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +.nr eW \w\\*(A1 u+\w\\*(A2 u+\w\\*(A3 u +'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.de W4 +.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +.nr eW \w\\*(A1 u+\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.de W5 +.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +.nr eW \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +' in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.\" This is packed abnormally close, intercol width should be an option +.de W6 +.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +\w\\*(A6 +.nr eW \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +\w\\*(A6 +' in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.\" NS cL macro - column items +.de cL +.if \\n(w\\n(lC==0 .nr w\\n(lC \\n(eWu +.if \\n(.u==0 \{\ +. fi +' in \\n(.iu+\\n(eWu +.\} +.ti -\\n(eWu +.fV +.nr aP \\n(aP+1 +.ie \\n(aC>=\\n(aP \{\ +. if "\\*(A\\n(aP"Ta" \{\ +. nr jJ \\n(aP-1 +. rm S\\n(jJ +. rr jJ +. \} +. c\\n(C\\n(aP +.\} +.el .tm Usage: .It column_string [Ta [column_string ...] ] (#\\n(.c) +.. +.\" NS Ta macro - append tab (\t) +.de Ta +.ie \\n(aC>0 \{\ +. nr aP \\n(aP+1 +. ie \\n(aC>=\\n(aP \{\ +. if "\\*(A\\n(aP"Ta" \{\ +. nr jJ \\n(aP-1 +. rm S\\n(jJ +. rr jJ +. \} +. as b1 \\t +. c\\n(C\\n(aP +. \} +. el \{\ +. as b1 \\t\\c +. rm S\\n(aP +. pB +. aY +.\" . ds b1 +. \} +.\} +.el \{\ +. tm Usage: Ta must follow column entry: e.g. (#\\n(.c) +. tm .It column_string [Ta [column_string ...] ] +.\} +.. +.\" +.\" NS Dl macro - display (one line) literal +.de Dl +'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +.in \\n(.iu+\\n(Dsu +.ie \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. tm Usage: .Dl argument ... (#\\n(.c) +. \} +. el \{\ +. ds mN Dl +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. Li +. \} +.\} +.el \{\ +. tm Usage: .Dl not callable by other macros (#\\n(.c) +.\} +.in \\n(.iu-\\n(Dsu +.. +.\" +.\" NS D1 macro - display (one line) +.de D1 +'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +.in \\n(.iu+\\n(Dsu +.ie \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. tm Usage: .D1 argument ... (#\\n(.c) +. \} +. el \{\ +. ds mN D1 +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 .\\*(A\\n(aP +. el .No +. \} +.\} +.el \{\ +. tm Usage: .D1 not callable by other macros (#\\n(.c) +.\} +.in \\n(.iu-\\n(Dsu +.. +.\" NS Ex macro - DEFUNCT +.de Ex +.tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" +.\" NS Ex macro - DEFUNCT +.de Ex +.tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" +.\" NS Vt macro - Variable type (for forcing old style variable declarations) +.\" this is not done in the same manner as .Ot for fortrash - clean up later +.de Vt +.\" if a function declaration was the last thing given, want vertical space +.if \\n(fD>0 \{\ +. Pp +. nr fD 0 +.\} +.\" if a subroutine was the last thing given, want vertical space +.if \\n(fZ>0 \{\ +. ie \\n(fX==0 \{\ +. Pp +. rs +. \} +. el .br +.\} +.nr fX \\n(fX+1 +.nr cF \\n(.f +.nr cZ \\n(.s +\\*(fT\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.ie \\n(oT==0 .br +.el \&\ \& +.ft \\n(cF +.fs \\n(cZ +.. +.\" +.\" NS Ft macro - Function type +.nr fZ 0 +.de Ft +.if \\n(nS>0 \{\ +. if \\n(fZ>0 \{\ +. Pp +. nr fD 0 +. nr fX 0 +. \} +. if \\n(fD>0 \{\ +. Pp +. nr fD 0 +. nr fX 0 +. \} +. if \\n(fX>0 \{\ +. Pp +. nr fX 0 +. \} +. nr fY 1 +.\} +.nr cF \\n(.f +.nr cZ \\n(.s +\&\\*(fT\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.ft \\n(cF +.fs \\n(cZ +.\" .br +.. +.\" +.\" NS Ot macro - Old Function type (fortran - no newline) +.\" Ns oT register +.nr oT 0 +.de Ot +.nr oT 1 +.if \\n(nS>0 \{\ +. if \\n(fZ>0 \{\ +. Pp +. nr fD 0 +. nr fX 0 +. \} +. if \\n(fD>0 \{\ +. Pp +. nr fD 0 +. nr fX 0 +. \} +. if \\n(fX>0 \{\ +. Pp +. nr fX 0 +. \} +. nr fY 1 +.\} +.if \\n(.$==4 .as b1 \&\\*(fT\&\\$1 \\$2 \\$3 \\$4 +.if \\n(.$==3 .as b1 \&\\*(fT\&\\$1 \\$2 \\$3 +.if \\n(.$==2 .as b1 \&\\*(fT\&\\$1 \\$2 +.if \\n(.$==1 .as b1 \&\\*(fT\&\\$1 +.as b1 \&\ \fP +.. +.\" +.\" NS Fa macro - Function arguments +.de Fa +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Fa Function Arguments ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Fa +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.ie \\n(fC>0 \{\ +. fC +.\} +.el \{\ +. if \\n(aC>\\n(aP \{\ +. as b1 \\*(fA +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +. if \\n(nS>0 \{\ +. if \\n(fZ>0 .br +. \} +. \} +.\} +.. +.\" NS fC macro - interal .Fa for .FO and .Fc +.de fC +.ie \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +.\" . nr aa \\n(aP +.\" . if \\n(nS>0 \{\ +. ds Fb +. nr fB 0 +. nr Fb 0 +. fB \\*(A\\n(aP +. if \\n(fB>1 \{\ +. rm A\\n(aP +. rn Fb A\\n(aP +. \} +.\" . \} +. if \\n(fC>1 \{\ +. as b1 \&\f\\n(cF\s\\n(cZ,\\*(S\\n(aP\\*(fA\\*(A\\n(aP\fP\s0 +.\" . as b1 \&\\,\\*(S\\n(aP\fP\s0\\*(fA\\*(A\\n(aP\fP\s0 +. \} +. if \\n(fC==1 \{\ +. as b1 \&\|\\*(fA\\*(A\\n(aP\fP\s0 +. \} +. nr fC \\n(fC+1 +. fC +.\} +.el \{\ +. aY +.\} +.. +.\" NS Fn macro - functions +.\" NS fY register - dick with old style function declarations (fortran) +.\" NS fZ register - break a line when more than one function in a synopsis +.\" +.de Fn +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Fn function_name function_arg(s) ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Fn +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(nS>0 \{\ +.\" if there is/has been more than one subroutine declaration +. if \\n(fY==0 \{\ +. if \\n(fZ>0 \{\ +. Pp +. nr fX 0 +. nr fD 0 +. \} +. \} +. if \\n(fY==1 \{\ +. br +. nr fX 0 +. nr fD 0 +. nr fY 0 +. \} +. if \\n(fD>0 \{\ +. Pp +. nr fX 0 +. \} +. if \\n(fX>0 \{\ +. Pp +. nr fD 0 +. \} +. nr fZ \\n(fZ+1 +. nr fY 0 +. rs +. ie \\n(nS>1 .br +. el \{\ +. if \\n(iS==0 \{\ +. nr iS ((8)*\\n(fW)u +. \} +. \} +. in +\\n(iSu +. ti -\\n(iSu +. nr nS \\n(nS+1 +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp +. ie \\n(aC>\\n(aP \{\ +. as b1 \\*(fA +. nr aP \\n(aP+1 +. f\\n(C\\n(aP +. \} +. el \{\ +. as b1 \|\\*(rp +. aZ +. \} +. if \\n(nS>0 \{\ +. in -\\n(iSu +. \} +.\} +.. +.\" +.\" NS f1 macro - class switch +.\" NS f2 macro - handle function arguments +.\" NS f3 macro - punctuation +.\" NS f4 macro - write out function +.de f1 +.as b1 \\*(rp\f\\n(cF\s\\n(cZ +.\\*(A\\n(aP +.. +.de f2 +.if \\n(nS>0 \{\ +. ds Fb +. nr fB 0 +. nr Fb 0 +. fB \\*(A\\n(aP +. if \\n(fB>1 \{\ +. rm A\\n(aP +. rn Fb A\\n(aP +. \} +.\} +.as b1 \\*(A\\n(aP +.ie \\n(aC>\\n(aP \{\ +. nr aa \\n(aP +. nr aP \\n(aP+1 +. if \\n(C\\n(aP==2 \{\ +. as b1 \&\|\f\\n(cF\s\\n(cZ,\\*(S\\n(aa\fP\s0\| +. \} +. f\\n(C\\n(aP +.\} +.el \{\ +. as b1 \\*(rp\f\\n(cF\s\\n(cZ +. aZ +.\} +.. +.de f3 +.as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(A\\n(aP +.ie \\n(aC>\\n(aP \{\ +. No +.\} +.el .aZ +.. +.de f4 +.as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(S\\n(aP\\*(A\\n(aP +.ie \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. No +.\} +.el .aZ +.. +.de Fo +.hy 0 +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Fo function_name +. el \{\ +. ds mN Fo +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(nS>0 \{\ +.\" if there is/has been more than one subroutine declaration +. if \\n(fY==0 \{\ +. if \\n(fZ>0 \{\ +. Pp +. nr fX 0 +. nr fD 0 +. \} +. \} +. if \\n(fY==1 \{\ +. br +. nr fX 0 +. nr fD 0 +. nr fY 0 +. \} +. if \\n(fD>0 \{\ +. Pp +. nr fX 0 +. \} +. if \\n(fX>0 \{\ +. Pp +. nr fD 0 +. \} +. nr fZ \\n(fZ+1 +. nr fY 0 +. rs +. ie \\n(nS>1 .br +. el \{\ +. if \\n(iS==0 \{\ +. nr iS ((8)*\\n(fW)u +. \} +. \} +. in +\\n(iSu +. ti -\\n(iSu +. nr nS \\n(nS+1 +.\} +.if \\n(aC>\\n(aP \{\ +. nr oM \\n(oM+1 +. nr fC 1 +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp +. aY +.\} +.. +.de Fc +.if \\n(aC==0 \{\ +. if \\n(.$>0 \{\ +. ds mN Fo +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.nr fC 0 +.nr oM \\n(oM-1 +.as b1 \|\\*(rp +.ie \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. \\*(A\\n(aP +.\} +.el \{\ +. aZ +.\} +.if \\n(nS>0 \{\ +. in -\\n(iSu +.\} +.hy +.. +.\" NS fb macro - if SYNOPSIS, set hard space inbetween function args +.\" NS fb register - count of words in a function argument +.\" NS Fb register - counter +.\" NS Fb string - temporary string +.de fB +.\" .tm fB==\\n(fB, Fb==\\n(Fb, 1==\\$1 2==\\$2 3==\\$3 4==\\$4 5==\\$5 6==\\$6 +.if \\n(fB==0 \{\ +. nr fB \\n(.$ +. nr Fb 0 +. ds Fb +.\} +.nr Fb \\n(Fb+1 +.as Fb \&\\$1 +.if \\n(Fb<\\n(fB \{\ +. as Fb \&\\*(hV +. fB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.\} +.. +.\" NS Fc - Function close - not implemented yet +.\" NS Fo - Function open - not implemented yet +.\" +.\" Very crude references, stash all reference info into strings (usual +.\" use of b1 buffer, then b1 contents copied to string of retrievable +.\" naming convention), print out reference on .Re request and clean up. +.\" Ordering very limited, no fancy citations, but can do articles, journals +.\" and books - need to add several missing options (like city etc). +.\" should be able to grab a refer entry, massage it a wee bit (prefix +.\" a `.' to the %[A-Z]) and not worry (ha!) +.\" +.\" NS Rs macro - Reference Start +.\" NS rS register - Reference Start flag +.\" NS rS string - Reference Start buffer name for next save (of b1 buffer) +.de Rs +.nr rS 1 +.rC +.if \\n(nA==1 .Pp +.nr Kl 0 +.. +.\" NS Re macro - Reference End +.de Re +.rZ +.rC +.nr rS 0 +.. +.\" NS rC macro - reference cleanup +.de rC +.nr uK 0 +.nr jK 0 +.nr nK 0 +.nr oK 0 +.nr qK 0 +.nr rK 0 +.nr tK 0 +.nr vK 0 +.nr dK 0 +.nr pK 0 +.nr bK 0 +.ds rS +.rm U1 U2 U3 U4 U5 U6 U7 U8 +.rm uK jK nK oK rK qK tK vK dK pK bK +.. +.\" NS rZ macro - reference print +.de rZ +.if \\n(uK \{\&\\*(U1, +. nr aK 1 +. if (\\n(uK>1 \{\ +. aK +. \} +. nr Kl -\\n(uK +.\} +.if \\n(tK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \{\ +. ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q. +. \} +. el \{\&\\*(eM\\*(tK\\*(nO. +. \} +. \} +. if \\n(Kl>0 \{\ +. ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q, +. \} +. el \{\&\\*(eM\\*(tK\\*(nO, +. \} +. \} +.\} +.if \\n(bK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(eM\\*(bK\\*(nO. +. if \\n(Kl>0 \&\\*(eM\\*(bK\\*(nO, +.\} +.if \\n(jK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(eM\\*(jK\\*(nO. +. if \\n(Kl>0 \&\\*(eM\\*(jK\\*(nO, +.\} +.if \\n(rK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(rK. +. if \\n(Kl>0 \&\\*(rK, +.\} +.if \\n(nK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(nK. +. if \\n(Kl>0 \&\\*(nK, +.\} +.if \\n(vK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(vK. +. if \\n(Kl>0 \&\\*(vK, +.\} +.if \\n(pK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(pK. +. if \\n(Kl>0 \&\\*(pK, +.\} +.if \\n(qK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(qK. +. if \\n(Kl>0 \&\\*(qK, +.\} +.if \\n(dK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(dK. +. if \\n(Kl>0 \&\\*(dK, +.\} +.if \\n(oK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(oK. +. if \\n(Kl>0 \&\\*(oK, +.\} +.if \\n(Kl>0 .tm unresolved reference problem +.. +.\" NS aK macro - print out reference authors +.de aK +.nr aK \\n(aK+1 +.ie (\\n(uK-\\n(aK)==0 \{\&and \\*(U\\n(aK, +.\} +.el \{\&\\*(U\\n(aK, +. aK +.\} +.. +.\" NS %A macro - reference author(s) +.\" NS uK register - reference author(s) counter +.\" NS U[1-9] strings - reference author(s) names +.de %A +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%A Author_name (#\\n(.c) +. el \{\ +. nr uK \\n(uK+1 +. nr Kl \\n(Kl+1 +. ds rS U\\n(uK +. ds mN %A +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %B macro - [reference] Book Name +.\" NS bK string - Book Name +.\" NS bK register - Book Name flag +.de %B +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%B Book Name (#\\n(.c) +. el \{\ +. ds mN %B +. if \\n(rS>0 \{\ +. nr bK \\n(bK+1 +. nr Kl \\n(Kl+1 +. ds rS bK +. \} +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. ie \\n(rS==0 \{\ +. as b1 \&\\*(eM +. nR +. \} +. el .rR +.\} +.. +.\" NS %D macro - [reference] Date +.\" NS dK string - Date String +.\" NS dK register - Date flag +.de %D +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%D Date (#\\n(.c) +. el \{\ +. ds mN %D +. nr dK \\n(dK+1 +. nr Kl \\n(Kl+1 +. ds rS dK +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %J macro - [reference] Journal Name +.\" NS jK register - [reference] Journal Name flag +.\" NS jK string - [reference] Journal Name +.de %J +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%J Journal Name (#\\n(.c) +. el \{\ +. ds mN %J +. nr jK \\n(jK+1 +. ds rS jK +. nr Kl \\n(Kl+1 +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %N macro - [reference] issue number +.\" NS nK register - [reference] issue number flag +.\" NS nK string - [reference] issue number +.de %N +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%N issue number (#\\n(.c) +. el \{\ +. nr nK \\n(nK+1 +. nr Kl \\n(Kl+1 +. ds rS nK +. ds mN %N +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %O macro - [reference] optional information +.\" NS oK register - [reference] optional information flag +.\" NS oK string - [reference] optional information +.de %O +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%O optional information ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN %O +. nr oK \\n(oK+1 +. nr Kl \\n(Kl+1 +. ds rS oK +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %P macro - [reference] page numbers +.\" NS pK register - [reference] page number flag +.\" NS pK string - [reference] page number +.de %P +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%P page numbers ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN %P +. nr pK \\n(pK+1 +. nr Kl \\n(Kl+1 +. ds rS pK +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %Q macro - Corporate or Foreign Author +.\" NS qK string - Corporate or Foreign Author +.\" NS qK register - Corporate or Foreign Author flag +.de %Q +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%Q Corporate or Foreign Author (#\\n(.c) +. el \{\ +. ds mN %Q +. nr qK \\n(qK+1 +. nr Kl \\n(Kl+1 +. ds rS qK +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %R macro - [reference] report name +.\" NS rK string - [reference] report name +.\" NS rK register - [reference] report flag +.de %R +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%R reference report (#\\n(.c) +. el \{\ +. ds mN %R +. nr rK \\n(rK+1 +. nr Kl \\n(Kl+1 +. ds rS rK +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %T macro - reference title +.\" NS tK string - reference title +.\" NS tK register - reference title flag +.de %T +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%T (#\\n(.c) +. el \{\ +. ds mN %T +. if \\n(rS>0 \{\ +. nr tK \\n(tK+1 +. nr Kl \\n(Kl+1 +. ds rS tK +. \} +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +.\" . ie \\n(jS==1 \{\ +.\" . nr cF \\n(.f +.\" . nr cZ \\n(.s +.\" . ds qL \&\\*(Lq\\*(rA +.\" . ds qR \&\\*(Rq\f\\n(cF\s\\n(cZ +.\" . En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.\" . \} +.\" . el \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. ie \\n(rS==0 \{\ +. as b1 \&\\*(eM +. nR +. \} +. el .rR +.\" . \} +.\} +.. +.\" NS %V macro - reference volume +.\" NS vK string - reference volume +.\" NS vK register - reference volume flag +.de %V +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%V Volume , ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN %V +. nr vK \\n(vK+1 +. nr Kl \\n(Kl+1 +. ds rS vK +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS rR macro - reference recursion routine +.\" NS jM local register +.\" NS jN local register +.de rR +.hy 0 +.nr jM \\n(C\\n(aP +.ie \\n(jM==1 \{\ +.\" . as b1 \&\f\\n(cF\s\\n(cZ +. ie "\\*(A\\n(aP"Tn" \{\ +. nN +. \} +. el \{\ +. if \\n(aC>8 .tm Usage: \\*(mN - maximum 8 arguments (#\\n(.c) +. aI rR 1 +. \\*(A\\n(aP +. \} +.\} +.el \{\ +. nr jN \\n(aP +. ie \\n(jM==2 .as b1 \&\\*(A\\n(aP +. el .as b1 \&\\*(A\\n(aP +.\" . el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0 +. ie \\n(aC==\\n(aP \{\ +.\" . as b1 \&\f\\n(cF\s\\n(cZ +. rD +. \} +. el \{\ +. nr aP \\n(aP+1 +. as b1 \&\\*(S\\n(jN +. rR +. \} +.\} +.rr jM jN +.. +.\" NS rD macro - save b1 buffer in to appropriate name +.de rD +.as \\*(rS \\*(b1 +.ds b1 +.ds rS +.aY +.. +.\" NS Hf macro - source include header files. +.de Hf +.Pp +File: +.Pa \\$1 +.Pp +.nr cF \\n(.f +.nr cZ \\n(.s +.ie t \{\ +\&\\*(lI +.br +.ta +9n 18n 27n 36n 45n 54n 63n 72n +.\} +.el \{\ +.ta +8n 16n 24n 32n 40n 48n 56n 64n 72n +.\} +.nf +.so \\$1 +.fi +.ft \\n(cF +.fz \\n(cZ +.Pp +.. +.\" NS An macro - author name +.\" NS aN register +.nr aN 0 +.de An +.if \\n(nY==1 \{\ +. ie \\n(aN==1 \{\ +. br +. \} +. el \{\ +. nr aN 1 +. \} +.\} +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .An author_name ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN An +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Sf macro -defunct +.de Sf +.tm .Sf defunct, use prefix or Ns +.. +.ds rV "function returns the value 0 if successful; otherwise the value -1 is returned and the global variable \\*(vAerrno\fP is set to indicate the error. +.\" Ns Rv macro - return values +.\" Ns rV string - standard return message +.de Rv +.ie \\n(.$==0 \{\ +.tm Usage: .Rv [-std] (#\\n(.c) +.\} +.el \{\ +. ds mN Rv +.\" . nr aP 0 +.\" . nr lR \\n(lR+1 +.\" . ds A1 \\$2 +.\" . ds A2 \\$3 +.\" . ds A3 \\$4 +.\" . ds A4 \\$5 +.\" . ds A5 \\$6 +.\" . ds A6 \\$7 +.\" . ds A7 \\$8 +.\" . ds A8 \\$9 +.\" . nr fV \\n(.$-1 +. if "\\$1"-std" \{\ +. nr cH \\*(cH +. if (\\n(cH<2):(\\n(cH>3) .tm Usage: .Rv -std sections 2 and 3 only +. br +\&The +.Fn \\$2 +\&\\*(rV +. \} +.\} +.. --- groff-1.18.1.1.orig/tmac/big5.tmac +++ groff-1.18.1.1/tmac/big5.tmac @@ -0,0 +1,15 @@ +.\" Kinsoku table for the BIG5 encoding of Chinese, recoded from +.\" kinsoku.el in Emacs 22.0.50. +.\" Needs review by native zh_TW speaker. +.\" +.cflags 256 ¡B¡C¡A¡D¡G¡F¡H¡I¡Ã¡Ä +.cflags 256 ¡²Éi¡X¡þ¡U¡L¡¦¡¨¡^ +.cflags 256 ¡f¡b¡r¡n¡v¡z¡j¡Ñ¡×¡Õ¡Ø¡Û¡ñ¢X +.cflags 256 ¡½¡µ¡¶¡¾¡¿¡°¢E¡÷¡ö¡ô¡ã +.cflags 512 ¡Ö¡Ù¡ï¡ð¢X¢C¡ì +.cflags 512 ÛÖ¶yÅV¡D¡¶¡ù£H¢} +.\" +.\" http://tcl.apache.org/sources/tcl/tools/encoding/big5.txt lists U+FF0D +.\" as FULLWIDTH HYPHEN-MINUS. Is this correct? +.\" +.hc ¡Ð --- groff-1.18.1.1.orig/tmac/Makefile.sub +++ groff-1.18.1.1/tmac/Makefile.sub @@ -25,15 +25,19 @@ html.tmac www.tmac \ eqnrc \ troffrc troffrc-end \ - hyphen.us + hyphen.us \ + andocj.tmac \ + euc-jp.tmac \ + gb.tmac big5.tmac SPECIALFILES=an.tmac man.tmac s.tmac ms.tmac -STRIPFILES=e.tmac doc.tmac doc-old.tmac -MDOCFILES=doc-common doc-ditroff doc-nroff doc-syms +STRIPFILES=e.tmac doc.tmac doc-old.tmac docj.tmac +MDOCFILES=doc-common doc-ditroff doc-nroff doc-syms docj-ditroff docj-nroff mdocdir=$(tmacdir)/mdoc CLEANADD=\ stamp-wrap stamp-sed *-wrap man.tmac-sed ms.tmac-sed \ stamp-strip e.tmac-s doc.tmac-s doc-old.tmac-s \ - doc-common-s doc-ditroff-s doc-nroff-s doc-syms-s mdoc.local-s + doc-common-s doc-ditroff-s doc-nroff-s doc-syms-s mdoc.local-s \ + docj.tmac-s docj-ditroff-s docj-nroff-s tmac_s_prefix= tmac_an_prefix= tmac_wrap= --- groff-1.18.1.1.orig/tmac/groff_trace.man +++ groff-1.18.1.1/tmac/groff_trace.man @@ -31,6 +31,10 @@ A copy of the Free Documentation License is included as a file called FDL in the main directory of the groff source package. .. +.ig +A copy of the GNU Free Documentation License is also available in this +Debian package as /usr/share/doc/groff/copyright. +.. . .\" -------------------------------------------------------------------- .\" Setup --- groff-1.18.1.1.orig/tmac/euc-jp.tmac +++ groff-1.18.1.1/tmac/euc-jp.tmac @@ -0,0 +1,7 @@ +.\" euc-jp.tmac +.\" +.cflags 256 ,:;>} +.cflags 256 ¡¢¡£¡¤¡¥¡¦¡§¡¨¡©¡ª¡Ë¡Í¡Ï¡Ñ¡×¡Ù¡Û¤¡¤£¤¥¤§¤©¤Ã¤ã¤å¤ç¡¼ +.cflags 256 ¥¡¥£¥¥¥§¥©¥Ã¥ã¥å¥ç +.cflags 512 ¡Ê¡Ì¡Î¡Ð¡Ö¡Ø¡Ú +.hc ¡¾ --- groff-1.18.1.1.orig/tmac/troffrc +++ groff-1.18.1.1/tmac/troffrc @@ -13,7 +13,9 @@ .do ds troffrc!X100 X.tmac .do ds troffrc!X100-12 X.tmac .do ds troffrc!ascii tty.tmac +.do ds troffrc!ascii8 tty.tmac .do ds troffrc!latin1 tty.tmac +.do ds troffrc!nippon tty.tmac .do ds troffrc!utf8 tty.tmac .do ds troffrc!cp1047 tty.tmac .do ds troffrc!lj4 lj4.tmac @@ -36,4 +38,13 @@ .\" Load hyphenation patterns from `hyphen.us' (in the tmac directory). .do hpf hyphen.us . +.\" For CJK hack. The hardcoded list of locales is especially nasty, but +.\" getting the locale charmap requires a troff extension. +.ie "\V[LANG]"ja_JP.eucJP" .do mso euc-jp.tmac +.el .ie "\V[LANG]"zh_CN" .do mso gb.tmac +.el .ie "\V[LANG]"zh_CN.GBK" .do mso gb.tmac +.el .ie "\V[LANG]"zh_SG" .do mso gb.tmac +.el .ie "\V[LANG]"zh_SG.GBK" .do mso gb.tmac +.el .if "\V[LANG]"zh_TW" .do mso big5.tmac +. .\" Don't let blank lines creep in here. --- groff-1.18.1.1.orig/tmac/docj-nroff +++ groff-1.18.1.1/tmac/docj-nroff @@ -0,0 +1,247 @@ +.\" Copyright (c) 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)doc-nroff 5.6 (Berkeley) 8/5/91 +.\" +.\" tmac.mdoc-nroff +.ds aD \fI +.ds aR \fI +.ds cM \fB +.ds dF \fR +.ds eM \fI +.ds eR \fR +.ds eV \fR +.ds fA \fI +.ds fD \fB +.ds fL \fB +.ds fN \fB +.ds fP \fP +.ds fS +.ds fT \fI +.ds Hs \fR +.ds iC \fB +.ds lI \fR +.ds lP \fR\|(\fP +.ds rP \fR\|)\fP +.ds lp \fR\|(\fP +.ds rp \fR\|)\fP +.ds lB \fR\|[\|\fP +.ds rB \fR\|]\fP +.ds mL \fB +.ds nM \fB +.ds nO \fR +.ds pA \fI +.ds Pu {\ .\ ,\ ;\ :\ (\ )\ [\ ]} +.ds rA \fR +.ds rT \fI +.ds sH \fB +.ds sP +.ds sY \fB +.ds sX \fI +.ds tF \fR +.ds tN +.ds vA \fI +.ds Vs \fR +.ds vT \fB +.ds xR \fR +.nr sI .5i +.nr Ti .5i +.nr cR 1 +.nr Pp 1v +.ds lS \0\0 +.nr lS \w'\0\0'u +.nr dI 6n +.de pL +.ie \\n(cR .nr Hm 0 +.el .nr Hm .5i +.nr Fm .5i +.nr ll 78n +.ll 78n +.nr lt 78n +.lt 78n +.nr po 0i +.po 0i +.nr dV 1v +.ad l +.na +.. +.ds <= \&<\&= +.ds >= \&>\&= +.ds Rq '' +.ds Lq `` +.ds ua ^ +.ds aa \' +.ds ga \` +.ds sL ` +.ds sR ' +.ds q \&" +.ds Pi pi +.ds Ne != +.ds Le <= +.ds Ge >= +.ds Lt < +.ds Gt > +.ds Pm +- +.ds If infinity +.ds Na \fINaN\fP +.ds Ba \fR\&|\fP + +.de hK +.nr % 1 +.ds hT \\*(dT +.if !"\\*(cH"Null" \{\ +. ie !"\\*(gP"Null" .as hT \|(\|\\*(cH\\*(gP\|) +. el .as hT \\|(\\|\\*(cH\\|) +.\} +.if "\\*(cH"Null" .if !"\\*(gP"Null" .as hT \&\|(\|\\*(gP\|) +.ie \\n(cR \{\ +. hM +. wh -1v fM +.\} +.el \{\ +. wh 0 hM +. wh -1.167i fM +.\} +.if \\n(nl==0:\\n(nl==-1 'bp +.em lM +.. +.nr fW \w'0' +.de sW +.nr sW \w\\$1 +.ie \\n(sW>=\\n(fW \{\ +. ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1 +. el .nr sW \\n(sW/\\n(fW +.\} +.el .nr sW 0 +.. +.de aW +.nr sW \w\\*(A\\$1 +.ie \\n(sW>=\\n(fW \{\ +. ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1 +. el .nr sW \\n(sW/\\n(fW +.\} +.el .nr sW 0 +.. +.de Ql +.if \\n(aC==0 \{\ +. ds mN Ql +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +.\} +.ds qL \&\\*(sL +.ds qR \&\\*(sR +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.de Sh +.nr nS 0 +.nr sE 0 +.nr iS 0 +.ie "\\$1"NAME" \{\ +. hK +' in 0 +.\} +.el \{\ +. ie "\\$1"̾Á°" \{\ +. hK +' in 0 +. \} +. el \{\ +. ie "\\$1"̾¾Î" \{\ +. hK +' in 0 +. \} +. el \{\ +. nr nS 0 +. nr nA 0 +. nr nF 0 +. nr nT 0 +. nr nY 0 +. nr aN 0 +. nr oT 0 +. if "\\$1"SEE" .nr nA 1 +. if "\\$1"´ØÏ¢¹àÌÜ" .nr nA 1 +. if "\\$1"FILES" .nr nF 1 +. if "\\$1"¥Õ¥¡¥¤¥ë" .nr nF 1 +. if "\\$1"´ØÏ¢¥Õ¥¡¥¤¥ë" .nr nF 1 +. if "\\$1"STANDARDS" .nr nT 1 +. if "\\$1"½àµò" .nr nT 1 +. if "\\$1"µ¬³Ê" .nr nT 1 +. if "\\$1"SYNOPSIS" .nr nS 1 +. if "\\$1"½ñ¼°" .nr nS 1 +. if "\\$1"DESCRIPTION" \{\ +. rr fB +. rr Fb +. ds Fb +. nr fY 0 +. nr fZ 0 +. \} +. if "\\$1"ÀâÌÀ" \{\ +. rr fB +. rr Fb +. ds Fb +. nr fY 0 +. nr fZ 0 +. \} +. if "\\$1"²òÀâ" \{\ +. rr fB +. rr Fb +. ds Fb +. nr fY 0 +. nr fZ 0 +. \} +. if "\\$1"AUTHORS" .nr nY 1 +. if "\\$1"Ãø¼Ô" .nr nY 1 +. if "\\$1"ºî¼Ô" .nr nY 1 +. in 0 +. \} +. \} +.\} +.pL +'sp +.ns +.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +.if !\\n(cR .ne 3 +'fi +\&\\*(sH\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9 +\&\fP\s0\& +.in \\n(.iu+\\n(Tiu +.if "\\$1"SEE" .nr sE 1 +.ns +.. --- groff-1.18.1.1.orig/tmac/gb.tmac +++ groff-1.18.1.1/tmac/gb.tmac @@ -0,0 +1,15 @@ +.\" Kinsoku table for the GB2312 encoding of Chinese, recoded from +.\" kinsoku.el in Emacs 22.0.50. +.\" Checked by Simon Law, who reckons this is "mostly right". That will +.\" probably do for now ... +.\" +.cflags 256 ¡¢¡££®£¬¡¤¡¥¡¦¡§¡¨¡©¡ª¡«¡¬¡­¡¯¡±£©¡³¡µ¡·¡¹¡»¡½ +.cflags 256 ¡¿£»£º£¿£¡¡À¡Á¡Â¡Ã¡ã¡ä¡å¡æ£¯£Ü£¢£ß£þ£ü¨å +.cflags 512 ¨Å¨Æ¨Ç¨È¨É¨Ê¨Ë¨Ì¨Í¨Î¨Ï¨Ð¨Ñ¨Ò¨Ó¨Ô¨Õ¨Ö¨×¨Ø¨Ù¨è +.\" Simon Law supplied these. +.cflags 512 £¨¡®¡°¡²¡´¡¶¡¸¡º¡¼¡¾ +.\" +.\" http://tcl.apache.org/sources/tcl/tools/encoding/gb2312.txt lists U+FF0D +.\" as FULLWIDTH HYPHEN-MINUS. Is this correct? +.\" +.hc £­ --- groff-1.18.1.1.orig/tmac/docj-ditroff +++ groff-1.18.1.1/tmac/docj-ditroff @@ -0,0 +1,305 @@ +.\" Copyright (c) 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)doc-ditroff 5.8 (Berkeley) 8/5/91 +.\" +.\" tmac.mdoc-ditroff +.if \n(.g .if !rC .nr C 0 +.ds aD \fI\s10 +.ds aR \f(CO\s10 +.ds cM \f(CB\s10 +.ds dF \fR\s10 +.ds eM \fI\s10 +.ds eR \fC\s10 +.ds eV \fC\s10 +.ds fA \f(CO\s10 +.ds fD \f(CB\s10 +.ds fL \f(CB\s10 +.ds fN \f(CB\s10 +.ds fP \fP\s0 +.ds fS \s0 +.ds fT \f(CO\s10 +.ds Hs \fR\s10 +.ds iC \f(CB\s10 +.ds lI \fC +.ds lP \fR\|(\|\fP\s10 +.ds lp \fR(\fP\s10 +.ds rP \fR\|)\|\fP\s10 +.ds rp \fR)\fP\s10 +.ds lB \fR\^[\^\fP\s10 +.ds rB \fR\^]\fP\s10 +.ds mL \fB\s10 +.ds nM \f(CB\s10 +.ds nO \fR\s10 +.ds nT \s0 +.ds pA \fC\s10 +.ds Pu \fR{\ .\ ,\ :\ ;\ (\ )\ [\ ]\ \fR} +.ds rA \fR\s10 +.ds rT \f(CO\s10 +.ds sH \fB\s10 +.ds sP \s0 +.ds sY \fB\s10 +.ds sX \fR\s10 +.ds tF \fR +.ds tN \s9 +.ds vA \fI\s10 +.ds Vs \fR\s10 +.ds vT \f(CB\s10 +.ds xR \fC\s10 +.tr *\(** +.nr sI \w\fC,u*5 +.nr Ti \n(sIu +.nr Pp .5v +.ds lS \0 +.nr lS \w'\0'u +.nr dI 6n +.de pL +.nr Hm .5i +.nr Fm .5i +.nr ll 6.5i +.ll 6.5i +.nr lt 6.5i +.lt 6.5i +.nr po 1i +.po 1.i +.nr dV .5v +.. +.ds <= \(<= +.ds >= \(>= +.ie \n(.g \{\ +. ds Lq \(lq +. ds Rq \(rq +.\} +.el \{\ +. ds Lq \&`` +. ds Rq \&'' +.\} +.ds ua \(ua +.ds aa \(aa +.ds ga \(ga +.ds sR \&' +.ds sL \&` +.ds q \&" +.ds Pi \(*p +.ds Ne \(!= +.ds Le \(<= +.ds Ge \(>= +.ds Lt < +.ds Gt > +.ds Pm \(+- +.ds If \(if +.ds Na \fINaN\fP +.ds Ba \fR\&|\fP +.nr gX 0 +.de hK +.ds hT \\*(dT +.if !"\\*(cH"Null" \{\ +. ie !"\\*(gP"Null" .as hT \|(\|\\*(cH\\*(gP\|) +. el .as hT \\|(\\|\\*(cH\\|) +.\} +.if "\\*(cH"Null" \{\ +. if !"\\*(gP"Null" .as hT \&\|(\|\\*(gP\|) +.\} +.wh 0 hM +.wh -1.25i fM +.nr nL \\n(nl +.ie \\n(gX==1 \{\ +. rm n1 +. bp +.\} +.el \{\ +' bp +.\} +.if \\n(nL>0 \{\ +. if !\\nC \{\ +. nr % 1 +. \} +.\} +.nr gX 0 +.em lM +.. +.nr fW \w\fC0 +.de sW +.nr sW \w\fC\\$1 +.ie \\n(sW>=\\n(fW \{\ +. ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1 +. el .nr sW \\n(sW/\\n(fW +.\} +.el \{\ +. ie \\n(sW>0 .nr sW 1 +. el .nr sW 0 +.\} +.. +.de aW +.nr sW \w\fC\\*(A\\$1 +.ie \\n(sW>=\\n(fW \{\ +. ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1 +. el .nr sW \\n(sW/\\n(fW +.\} +.el \{\ +. ie \\n(sW>0 .nr sW 1 +. el .nr sW 0 +.\} +.. +.de Ql +.if \\n(aC==0 \{\ +. ds mN Ql +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. nr fV \\n(.$ +. fV +.\} +.nr aP \\n(aP+1 +.aW \\n(aP +.nr aP \\n(aP-1 +.if \\n(sW>2 .Li +.if \\n(sW<=2 \{\ +. if (\\n(aP>0) \{\ +. ds A\\n(aP Li +. nr aP \\n(aP -1 +. \} +. if (\\n(aP==0) \{\ +. rm C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 +. rm S1 S2 S3 S4 S5 S6 S7 S8 S9 +. rn A8 A9 +. rn A7 A8 +. rn A6 A7 +. rn A5 A6 +. rn A4 A5 +. rn A3 A4 +. rn A2 A3 +. rn A1 A2 +. ds A1 Li +. nr fV \\n(aC+1 +. nr aC 0 +. fV +. \} +. ds qL \&\\*(sL +. ds qR \&\\*(sR +. En +.\} +.. +.de Sh +.nr nS 0 +.nr sE 0 +.nr iS 0 +'ad +.ie "\\$1"NAME" \{\ +. hK +' in 0 +.\} +.el \{\ +. ie "\\$1"̾Á°" \{\ +. hK +' in 0 +. \} +. el \{\ +. ie "\\$1"̾¾Î" \{\ +. hK +' in 0 +. \} +. el \{\ +. nr nS 0 +. nr nA 0 +. nr nF 0 +. nr nT 0 +. nr nY 0 +. nr oT 0 +. if "\\$1"SYNOPSIS" \{\ +. na +. nr nS 1 +. \} +. if "\\$1"½ñ¼°" \{\ +. na +. nr nS 1 +. \} +. if "\\$1"DESCRIPTION" \{\ +. nr fY 0 +. nr fZ 0 +. nr fB 0 +. nr Fb 0 +. ds Fb +. \} +. if "\\$1"ÀâÌÀ" \{\ +. nr fY 0 +. nr fZ 0 +. nr fB 0 +. nr Fb 0 +. ds Fb +. \} +. if "\\$1"²òÀâ" \{\ +. nr fY 0 +. nr fZ 0 +. nr fB 0 +. nr Fb 0 +. ds Fb +. \} +. if "\\$1"SEE" \{\ +. nr nA 1 +. na +. \} +. if "\\$1"´ØÏ¢¹àÌÜ" \{\ +. nr nA 1 +. na +. \} +. if "\\$1"FILES" .nr nF 1 +. if "\\$1"¥Õ¥¡¥¤¥ë" .nr nF 1 +. if "\\$1"´ØÏ¢¥Õ¥¡¥¤¥ë" .nr nF 1 +. if "\\$1"STANDARDS" .nr nT 1 +. if "\\$1"½àµò" .nr nT 1 +. if "\\$1"µ¬³Ê" .nr nT 1 +. if "\\$1"AUTHORS" .nr nY 1 +. if "\\$1"Ãø¼Ô" .nr nY 1 +. if "\\$1"ºî¼Ô" .nr nY 1 +. if "\\$1"SEE" .nr sE 1 +. if "\\$1"´ØÏ¢¹àÌÜ" .nr sE 1 +. in 0 +. nr aN 0 +. \} +. \} +.\} +.pL +'sp +.ns +.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +.if !\\n(cR .ne 3 +'fi +\&\\*(sH\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9 +\&\fP\s0\& +.in \\n(.iu+\\n(Tiu +.ns +.. --- groff-1.18.1.1.orig/tmac/andocj.tmac +++ groff-1.18.1.1/tmac/andocj.tmac @@ -0,0 +1,12 @@ +.\" Load either tmac.an or tmac.doc. +.if !\n(.g .ab These macros require groff. +.de Dd +.rm Dd +.do mso tmac.docj +\\*(Dd\\ +.. +.de TH +.rm TH +.do mso tmac.an +\\*(TH\\ +.. --- groff-1.18.1.1.orig/contrib/groffer/groffer.sh +++ groff-1.18.1.1/contrib/groffer/groffer.sh @@ -3228,17 +3228,12 @@ do if is_not_empty "$d"; then if obj d is_dir && obj d is_writable; then - _TMP_DIR="${d}/${_PROGRAM_NAME}${_PROCESS_ID}"; - if obj _TMP_DIR is_dir; then - rm -f "${_TMP_DIR}"/*; + _TMP_DIR="$(mktemp -d "${d}/${_PROGRAM_NAME}.XXXXXX")" + if test $? = 0; then break; else - mkdir "${_TMP_DIR}"; - if obj _TMP_DIR is_not_dir; then - _TMP_DIR=''; - continue; - fi; - break; + _TMP_DIR=''; + continue; fi; fi; if obj _TMP_DIR is_not_writable; then --- groff-1.18.1.1.orig/contrib/pic2graph/pic2graph.sh +++ groff-1.18.1.1/contrib/pic2graph/pic2graph.sh @@ -32,7 +32,7 @@ # We don't have complete option coverage on eqn because this is primarily # intended as a pic translator; we can live with eqn defaults. # -# $Id: pic2graph.sh,v 1.2 2002/07/17 04:55:46 wlemb Exp $ +# $Id: pic2graph.sh,v 1.5 2003/10/31 19:32:36 wlemb Exp $ # groffpic_opts="" gs_opts="" @@ -44,7 +44,7 @@ do case $1 in -unsafe) - groffpic_opts="-U" + groffpic_opts="-U";; -format) format=$2 shift;; @@ -68,16 +68,34 @@ eqndelim="delim $eqndelim" fi +# create temporary directory +tmp= +for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp; do + test -z "$d" && continue + + tmp=`(umask 077 && mktemp -d -q "$d/pic2graph-XXXXXX") 2> /dev/null` \ + && test -n "$tmp" && test -d "$tmp" \ + && break + + tmp=$d/pic2graph$$-$RANDOM + (umask 077 && mkdir $tmp) 2> /dev/null \ + && break +done; +if test -z "$tmp"; then + echo "$0: cannot create temporary directory" >&2 + { (exit 1); exit 1; } +fi + +trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 2 15 + # Here goes: # 1. Wrap the input in dummy .PS/PE macros (and add possibly null .EQ/.EN) # 2. Process through eqn and pic to emit troff markup. # 3. Process through groff to emit Postscript. # 4. Use convert(1) to crop the PostScript and turn it into a bitmap. -tmp=/usr/tmp/pic2graph-$$ -trap "rm ${tmp}.*" 0 2 15 (echo ".EQ"; echo $eqndelim; echo ".EN"; echo ".PS"; cat; echo ".PE") | \ - groff -e -p $groffpic_opts -Tps >${tmp}.ps \ - && convert -crop 0x0 $convert_opts ${tmp}.ps ${tmp}.${format} \ - && cat ${tmp}.${format} + groff -e -p $groffpic_opts -Tps -P-pletter > $tmp/pic2graph.ps \ + && convert -crop 0x0 $convert_opts $tmp/pic2graph.ps $tmp/pic2graph.$format \ + && cat $tmp/pic2graph.$format # End --- groff-1.18.1.1.orig/contrib/mom/groff_mom.man +++ groff-1.18.1.1/contrib/mom/groff_mom.man @@ -13,6 +13,10 @@ A copy of the Free Documentation License is included as a file called FDL in the main directory of the groff source package. .. +.ig +A copy of the GNU Free Documentation License is also available in this +Debian package as /usr/share/doc/groff/copyright. +.. . .mso www.tmac . --- groff-1.18.1.1.orig/contrib/eqn2graph/eqn2graph.sh +++ groff-1.18.1.1/contrib/eqn2graph/eqn2graph.sh @@ -32,7 +32,7 @@ # # Thus, we pass -U to groff(1), and everything else to convert(1). # -# $Id: eqn2graph.sh,v 1.2 2002/07/17 04:55:46 wlemb Exp $ +# $Id: eqn2graph.sh,v 1.3 2003/10/28 07:46:23 wlemb Exp $ # groff_opts="" convert_opts="" @@ -58,17 +58,34 @@ shift done +# create temporary directory +tmp= +for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp; do + test -z "$d" && continue + + tmp=`(umask 077 && mktemp -d -q "$d/eqn2graph-XXXXXX") 2> /dev/null` \ + && test -n "$tmp" && test -d "$tmp" \ + && break + + tmp=$d/eqn2graph$$-$RANDOM + (umask 077 && mkdir $tmp) 2> /dev/null && break +done; +if test -z "$tmp"; then + echo "$0: cannot create temporary directory" >&2 + { (exit 1); exit 1; } +fi + +trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 2 15 + # Here goes: # 1. Add .EQ/.EN. # 2. Process through eqn(1) to emit troff markup. # 3. Process through groff(1) to emit Postscript. # 4. Use convert(1) to crop the Postscript and turn it into a bitmap. -tmp=/usr/tmp/eqn2graph-$$ -trap "rm ${tmp}.*" 0 2 15 read equation -(echo ".EQ"; echo 'delim $$'; echo ".EN"; echo '$'"${equation}"'$') | \ - groff -e $groff_opts -Tps >${tmp}.ps \ - && convert -crop 0x0 $convert_opts ${tmp}.ps ${tmp}.${format} \ - && cat ${tmp}.${format} +(echo ".EQ"; echo 'delim $$'; echo ".EN"; echo '$'"$equation"'$') | \ + groff -e $groff_opts -Tps -P-pletter > $tmp/eqn2graph.ps \ + && convert -crop 0x0 $convert_opts $tmp/eqn2graph.ps $tmp/eqn2graph.$format \ + && cat $tmp/eqn2graph.$format # End --- groff-1.18.1.1.orig/stamp-h +++ groff-1.18.1.1/stamp-h @@ -0,0 +1 @@ +timestamp --- groff-1.18.1.1.orig/Makefile.in +++ groff-1.18.1.1/Makefile.in @@ -136,7 +136,11 @@ # directory will be always added. # `troffrc' and `troffrc-end' (and `eqnrc') are searched neither in the # current nor in the home directory. +ifeq (,$(extratmacdirs)) tmacpath=$(systemtmacdir):$(localtmacdir):$(tmacdir) +else +tmacpath=$(systemtmacdir):$(localtmacdir):$(tmacdir):$(extratmacdirs) +endif # `sys_tmac_prefix' is prefix (if any) for system macro packages. sys_tmac_prefix=@sys_tmac_prefix@ @@ -195,6 +199,9 @@ man7ext=7 man7dir=$(manroot)/man$(man7ext) +# DVI file format. +DVIFORMAT=@DVIFORMAT@ + # The configure script checks whether all necessary utility programs for # grohtml are available -- only then we can build the HTML documentation. make_html=@make_html@ @@ -261,6 +268,8 @@ # -DRETSIGTYPE=int if signal handlers return int not void # -DIS_EBCDIC_HOST if the host's encoding is EBCDIC # -DPAGEA4 if the the printer's page size is A4 +# -DENABLE_MULTIBYTE enable multibyte extension +# -DHAVE_LANGINFO_CODESET if you have nl_langinfo(CODESET) DEFINES=@DEFS@ # Include @@ -395,7 +404,8 @@ "PERLPATH=$(PERLPATH)" \ "SH_SCRIPT_SED_CMD=$(SH_SCRIPT_SED_CMD)" \ "PURIFY=$(PURIFY)" \ - "PURIFYCCFLAGS=$(PURIFYCCFLAGS)" + "PURIFYCCFLAGS=$(PURIFYCCFLAGS)" \ + "DVIFORMAT=$(DVIFORMAT)" SHELL=/bin/sh INCDIRS=src/include @@ -437,8 +447,10 @@ font/devhtml ALLTTYDEVDIRS=\ font/devascii \ + font/devascii8 \ font/devlatin1 \ font/devutf8 \ + font/devnippon \ font/devcp1047 OTHERDIRS=\ man \ @@ -483,7 +495,7 @@ fi do=all -dodirs=$(ALLDIRS) dot +dodirs=$(DISTDIRS) # Default target for subdir_Makefile subdir=src/roff/troff --- groff-1.18.1.1.orig/mdate.sh +++ groff-1.18.1.1/mdate.sh @@ -2,41 +2,4 @@ # Print the modification date of $1 `nicely'. -# Don't want foreign dates. - -LANGUAGE= -LC_ALL=C; export LC_ALL - - -(date; -if ls -L /dev/null 1>/dev/null 2>&1; then ls -L -l $1; else ls -l $1; fi -) | awk ' -BEGIN { - full["Jan"] = "January"; number["Jan"] = 1; - full["Feb"] = "February"; number["Feb"] = 2; - full["Mar"] = "March"; number["Mar"] = 3; - full["Apr"] = "April"; number["Apr"] = 4; - full["May"] = "May"; number["May"] = 5; - full["Jun"] = "June"; number["Jun"] = 6; - full["Jul"] = "July"; number["Jul"] = 7; - full["Aug"] = "August"; number["Aug"] = 8; - full["Sep"] = "September"; number["Sep"] = 9; - full["Oct"] = "October"; number["Oct"] = 10; - full["Nov"] = "November"; number["Nov"] = 11; - full["Dec"] = "December"; number["Dec"] = 12; -} - -NR == 1 { - month = $2; - year = $NF; -} - -NR == 2 { - if ($(NF-1) ~ /:/) { - if (number[$(NF-3)] > number[month]) - year--; - } - else - year = $(NF-1); - print $(NF-2), full[$(NF-3)], year -}' +perl -MPOSIX -le 'print strftime("%d %B %Y", localtime((stat $ARGV[0])[9]))' $1 --- groff-1.18.1.1.orig/configure +++ groff-1.18.1.1/configure @@ -305,7 +305,7 @@ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS groff_top_builddir CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX TTYDEVDIRS OTHERDEVDIRS LPR LP LPQ PSPRINT DVIPRINT PERLPATH YACC RANLIB ac_ct_RANLIB INSTALL_INFO INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S SH_SCRIPT_SED_CMD CPP EGREP LIBM LIBOBJS BROKEN_SPOOLER_FLAGS PAGE g sys_tmac_prefix tmac_wrap pnmcut pnmcrop pnmtopng gs psselect make_html make_install_html LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS groff_top_builddir CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX TTYDEVDIRS OTHERDEVDIRS LPR LP LPQ PSPRINT DVIPRINT PERLPATH YACC RANLIB ac_ct_RANLIB INSTALL_INFO INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S SH_SCRIPT_SED_CMD CPP EGREP LIBM LIBOBJS BROKEN_SPOOLER_FLAGS PAGE g sys_tmac_prefix tmac_wrap pnmcut pnmcrop pnmtopng gs psselect make_html make_install_html DVIFORMAT LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -841,6 +841,11 @@ cat <<\_ACEOF +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-multibyte Enable multibyte extension + Some influential environment variables: CC C compiler command CFLAGS C compiler flags @@ -2530,7 +2535,7 @@ echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 groff_cv_ebcdic="no" - TTYDEVDIRS="font/devascii font/devlatin1" + TTYDEVDIRS="font/devascii font/devlatin1 font/devascii8 font/devnippon" OTHERDEVDIRS="font/devlj4 font/devlbp" echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 @@ -5859,6 +5864,84 @@ esac +echo "$as_me:$LINENO: checking whether to enable multibyte extension" >&5 +echo $ECHO_N "checking whether to enable multibyte extension... $ECHO_C" >&6 +# Check whether --enable-multibyte or --disable-multibyte was given. +if test "${enable_multibyte+set}" = set; then + enableval="$enable_multibyte" + multibyte=$enableval +else + multibyte=no +fi; +if test "x$multibyte" != "xno"; then + +cat >>confdefs.h <<\_ACEOF +#define ENABLE_MULTIBYTE 1 +_ACEOF + +fi +echo "$as_me:$LINENO: result: $multibyte" >&5 +echo "${ECHO_T}$multibyte" >&6 + +echo "$as_me:$LINENO: checking japanese dvi file format" >&5 +echo $ECHO_N "checking japanese dvi file format... $ECHO_C" >&6 +if test "x$dvi_format" != "xASCII"; then + DVIFORMAT=NTT +else + DVIFORMAT=ASCII +fi +echo "$as_me:$LINENO: result: $DVIFORMAT" >&5 +echo "${ECHO_T}$DVIFORMAT" >&6 + + +echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 +if test "${groff_cv_langinfo_codeset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +int +main () +{ +char* cs = nl_langinfo(CODESET); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + groff_cv_langinfo_codeset=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +groff_cv_langinfo_codeset=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $groff_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$groff_cv_langinfo_codeset" >&6 + if test $groff_cv_langinfo_codeset = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LANGINFO_CODESET 1 +_ACEOF + + fi + ac_config_files="$ac_config_files stamp-h" ac_config_files="$ac_config_files Makefile doc/Makefile src/xditview/Imakefile" @@ -6497,6 +6580,7 @@ s,@psselect@,$psselect,;t t s,@make_html@,$make_html,;t t s,@make_install_html@,$make_install_html,;t t +s,@DVIFORMAT@,$DVIFORMAT,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF --- groff-1.18.1.1.orig/man/groff_diff.man +++ groff-1.18.1.1/man/groff_diff.man @@ -23,6 +23,10 @@ A copy of the Free Documentation License is included as a file called FDL in the main directory of the groff source package. .. +.ig +A copy of the GNU Free Documentation License is also available in this +Debian package as /usr/share/doc/groff/copyright. +.. . .\" -------------------------------------------------------------------- .\" Setup --- groff-1.18.1.1.orig/man/ditroff.man +++ groff-1.18.1.1/man/ditroff.man @@ -18,6 +18,10 @@ A copy of the Free Documentation License is included as a file called FDL in the main directory of the groff source package. .. +.ig +A copy of the GNU Free Documentation License is also available in this +Debian package as /usr/share/doc/groff/copyright. +.. . .\" -------------------------------------------------------------------- .\" Setup --- groff-1.18.1.1.orig/man/groff.man +++ groff-1.18.1.1/man/groff.man @@ -19,6 +19,10 @@ A copy of the Free Documentation License is included as a file called FDL in the main directory of the groff source package. .. +.ig +A copy of the GNU Free Documentation License is also available in this +Debian package as /usr/share/doc/groff/copyright. +.. . .\" -------------------------------------------------------------------- .\" Setup --- groff-1.18.1.1.orig/man/groff_char.man +++ groff-1.18.1.1/man/groff_char.man @@ -32,6 +32,10 @@ A copy of the Free Documentation License is included as a file called FDL in the main directory of the groff source package. .. +.ig +A copy of the GNU Free Documentation License is also available in this +Debian package as /usr/share/doc/groff/copyright. +.. . .\" -------------------------------------------------------------------- .\" Setup Part 1 --- groff-1.18.1.1.orig/man/groff_out.man +++ groff-1.18.1.1/man/groff_out.man @@ -19,6 +19,10 @@ A copy of the Free Documentation License is included as a file called FDL in the main directory of the groff source package. .. +.ig +A copy of the GNU Free Documentation License is also available in this +Debian package as /usr/share/doc/groff/copyright. +.. . .\" -------------------------------------------------------------------- .\" Setup --- groff-1.18.1.1.orig/man/groff_tmac.man +++ groff-1.18.1.1/man/groff_tmac.man @@ -32,6 +32,10 @@ A copy of the Free Documentation License is included as a file called FDL in the main directory of the groff source package. .. +.ig +A copy of the GNU Free Documentation License is also available in this +Debian package as /usr/share/doc/groff/copyright. +.. . .\" -------------------------------------------------------------------- .\" Setup --- groff-1.18.1.1.orig/man/roff.man +++ groff-1.18.1.1/man/roff.man @@ -18,6 +18,10 @@ A copy of the Free Documentation License is included as a file called FDL in the main directory of the groff source package. .. +.ig +A copy of the GNU Free Documentation License is also available in this +Debian package as /usr/share/doc/groff/copyright. +.. . .\" -------------------------------------------------------------------- .\" Setup --- groff-1.18.1.1.orig/aclocal.m4 +++ groff-1.18.1.1/aclocal.m4 @@ -356,6 +356,19 @@ AC_MSG_RESULT(no);AC_MSG_ERROR([header files do not support C++ (if you are using a version of gcc/g++ earlier than 2.5, you should install libg++)])) AC_LANG_POP(C++)])dnl dnl +dnl Support Multibyte characters, such as Japanese Code (EUC-JP) +dnl +AC_DEFUN(GROFF_MULTIBYTE, +[AC_MSG_CHECKING([whether to enable multibyte extension]) +AC_ARG_ENABLE(multibyte, [ --enable-multibyte Enable multibyte extension], + multibyte=$enableval, multibyte=no) +if test "x$multibyte" != "xno"; then + AC_DEFINE(ENABLE_MULTIBYTE, 1, + [Define if you want to use multibyte extension.]) +fi +AC_MSG_RESULT([$multibyte]) +])dnl +dnl dnl AC_DEFUN(GROFF_TMAC, [AC_MSG_CHECKING([for prefix of system macro packages]) @@ -415,6 +428,33 @@ AC_MSG_RESULT([$tmac_wrap]) AC_SUBST(tmac_wrap)])dnl dnl +dnl codeset.m4 from gettext, by Bruno Haible. +dnl +AC_DEFUN(GROFF_LANGINFO_CODESET, +[AC_CACHE_CHECK([for nl_langinfo and CODESET], groff_cv_langinfo_codeset, + [AC_TRY_LINK([#include ], + [char* cs = nl_langinfo(CODESET);], + groff_cv_langinfo_codeset=yes, + groff_cv_langinfo_codeset=no) + ]) + if test $groff_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET, 1, + [Define if you have and nl_langinfo(CODESET).]) + fi +])dnl +dnl +dnl +AC_DEFUN(GROFF_DVIFORMAT, +[AC_MSG_CHECKING([japanese dvi file format]) +if test "x$dvi_format" != "xASCII"; then + DVIFORMAT=NTT +else + DVIFORMAT=ASCII +fi +AC_MSG_RESULT([$DVIFORMAT]) +AC_SUBST(DVIFORMAT) +])dnl +dnl dnl AC_DEFUN(GROFF_G, [AC_MSG_CHECKING([for existing troff installation]) @@ -481,7 +521,7 @@ AC_DEFINE(IS_EBCDIC_HOST, 1, [Define if the host's encoding is EBCDIC.]), groff_cv_ebcdic="no" - TTYDEVDIRS="font/devascii font/devlatin1" + TTYDEVDIRS="font/devascii font/devlatin1 font/devascii8 font/devnippon" OTHERDEVDIRS="font/devlj4 font/devlbp" AC_MSG_RESULT(no)) AC_SUBST(TTYDEVDIRS) --- groff-1.18.1.1.orig/font/devps/Makefile.sub +++ groff-1.18.1.1/font/devps/Makefile.sub @@ -2,23 +2,23 @@ DISTFILES=text.enc download \ S ZD ZDR SS AB ABI AI AR BMB BMBI BMI BMR \ CB CBI CI CR HB HBI HI HR HNB HNBI HNI HNR \ - NB NBI NI NR PB PBI PI PR TB TBI TI TR ZCMI + NB NBI NI NR PB PBI PI PR TB TBI TI TR ZCMI M G PSFILES=prologue symbolsl.pfa zapfdr.pfa DEVGENFILES=generate/Makefile generate/afmname generate/dingbats.map \ generate/dingbats.rmap generate/lgreekmap generate/symbol.sed \ generate/symbolchars generate/symbolsl.afm generate/textmap DEVFILES=DESC $(PSFILES) $(DISTFILES) $(DEVGENFILES) -CLEANADD=DESC $(PSFILES) +CLEANADD=DESC $(PSFILES) M G DESC: DESC.in -rm -f DESC cat $(srcdir)/DESC.in >DESC echo broken $(BROKEN_SPOOLER_FLAGS) >>DESC if test "$(PAGE)" = A4; then \ - echo "papersize a4" >>DESC; \ + echo "papersize /etc/papersize a4" >>DESC; \ else \ - echo "papersize letter" >>DESC; \ + echo "papersize /etc/papersize letter" >>DESC; \ fi test -z '$(PSPRINT)' || echo print '$(PSPRINT)' >>DESC @@ -33,3 +33,14 @@ $(PSFILES): -rm -f $@ sed -f $(srcdir)/psstrip.sed $? >$@ + +M: M.proto + @echo Making M + @-rm -f M + @cp M.proto M + +G: M + @echo Making G + @-rm -f G + @sed -e 's/name M/name G/' \ + -e 's/internalname Ryumin-Light-EUC-H/internalname GothicBBB-Medium-EUC-H/' M > G --- groff-1.18.1.1.orig/font/devps/M.proto +++ groff-1.18.1.1/font/devps/M.proto @@ -0,0 +1,9 @@ +name M +internalname Ryumin-Light-EUC-H +spacewidth 250 +encodingname EUC-JP +charset +u2E00..u9FFF 1000 3 +uFF00..uFF5F 1000 3 +uFF60..uFF9F 500 3 +uFFA0..uFFEF 1000 3 --- groff-1.18.1.1.orig/font/devps/DESC.in +++ groff-1.18.1.1/font/devps/DESC.in @@ -1,11 +1,33 @@ res 72000 hor 1 vert 1 +lowerwchar 300 +wcharkern 400 sizescale 1000 unitwidth 1000 sizes 1000-10000000 0 styles R I B BI family T -fonts 9 0 0 0 0 0 SS S ZD ZDR +fonts 11 0 0 0 0 0 SS S ZD ZDR M G +fontset B G 2E00..9FFF +fontset AB G 2E00..9FFF +fontset BMB G 2E00..9FFF +fontset CB G 2E00..9FFF +fontset HB G 2E00..9FFF +fontset HNB G 2E00..9FFF +fontset NB G 2E00..9FFF +fontset PB G 2E00..9FFF +fontset TB G 2E00..9FFF +fontset - M 2E00..9FFF +fontset B G FF00..FFEF +fontset AB G FF00..FFEF +fontset BMB G FF00..FFEF +fontset CB G FF00..FFEF +fontset HB G FF00..FFEF +fontset HNB G FF00..FFEF +fontset NB G FF00..FFEF +fontset PB G FF00..FFEF +fontset TB G FF00..FFEF +fontset - M FF00..FFEF tcommand postpro grops --- groff-1.18.1.1.orig/font/devascii/Makefile.sub +++ groff-1.18.1.1/font/devascii/Makefile.sub @@ -12,8 +12,8 @@ @-rm -f $@ @(charwidth=`expr $(RES) / $(CPI)` ; \ sed -e "s/^name [A-Z]*$$/name $@/" \ - -e "s/^\\([^ ]*\\) [0-9]+ /\\1 $$charwidth /" \ - -e "s/^spacewidth [0-9]+$$/spacewidth $$charwidth/" \ + -e "s/^\\([^ ]*\\) [0-9][0-9]* /\\1 $$charwidth /" \ + -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$charwidth/" \ -e "s/^internalname .*$$/internalname $@/" \ -e "/^internalname/s/BI/3/" \ -e "/^internalname/s/B/2/" \ --- groff-1.18.1.1.orig/font/devnippon/Makefile.sub +++ groff-1.18.1.1/font/devnippon/Makefile.sub @@ -0,0 +1,48 @@ +DEV=nippon +FONTS=R I B BI +WFONTS=M G +ALLFONTS=$(FONTS) $(WFONTS) +DEVFILES=$(ALLFONTS) DESC +CLEANADD=$(ALLFONTS) DESC + +RES=240 +CPI=10 +LPI=6 + +$(FONTS): R.proto + @echo Making $@ + @-rm -f $@ + @(charwidth=`expr $(RES) / $(CPI)` ; \ + sed -e "s/^name [A-Z]*$$/name $@/" \ + -e "s/^\\([^ ]*\\) [0-9][0-9]* /\\1 $$charwidth /" \ + -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$charwidth/" \ + -e "s/^internalname .*$$/internalname $@/" \ + -e "/^internalname/s/BI/3/" \ + -e "/^internalname/s/B/2/" \ + -e "/^internalname/s/I/1/" \ + -e "/^internalname .*[^ 0-9]/d" \ + $(srcdir)/R.proto >$@) + +M: M.proto + @echo Making M + @-rm -f M + @(wcharwidth=`expr $(RES) / $(CPI) \* 2` ; \ + spacewidth=`expr $(RES) / $(CPI)` ; \ + sed -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$spacewidth/" \ + -e "s/^u\\([0-9A-F]*\\)..u\\([0-9A-F]*\\) [0-9][0-9]*/u\\1..u\\2 $$wcharwidth/" \ + $(srcdir)/M.proto > $@) + +G: M + @echo Making G + @-rm -f G + @sed -e 's/name M/name G/' \ + -e 's/internalname 4/internalname 5/' M > G + +DESC: DESC.proto + @echo Making $@ + @-rm -f $@ + @sed -e "s/^res .*$$/res $(RES)/" \ + -e "s/^hor .*$$/hor `expr $(RES) / $(CPI)`/" \ + -e "s/^vert .*$$/vert `expr $(RES) / $(LPI)`/" \ + -e "s/^fonts .*$$/fonts `set $(ALLFONTS); echo $$#` $(ALLFONTS)/" \ + $(srcdir)/DESC.proto >$@ --- groff-1.18.1.1.orig/font/devnippon/R.proto +++ groff-1.18.1.1/font/devnippon/R.proto @@ -0,0 +1,167 @@ +name R +internalname 0 +spacewidth 24 +charset +! 24 0 0041 +" 24 0 0042 +dq " +lq " +rq " +# 24 0 0043 +sh " +$ 24 0 0044 +Do " +% 24 0 0045 +& 24 0 0046 +' 24 0 0047 +aa " +fm " +aq " +cq " +( 24 0 0050 +) 24 0 0051 +* 24 0 0052 +** " ++ 24 0 0053 +pl " +, 24 0 0054 +\- 24 0 0055 +hy " +- " +mi " +en " +. 24 0 0056 +/ 24 0 0057 +sl " +f/ " +0 24 0 0060 +1 24 0 0061 +2 24 0 0062 +3 24 0 0063 +4 24 0 0064 +5 24 0 0065 +6 24 0 0066 +7 24 0 0067 +8 24 0 0070 +9 24 0 0071 +: 24 0 0072 +; 24 0 0073 +< 24 0 0074 +la " +fo " += 24 0 0075 +eq " +> 24 0 0076 +ra " +fc " +? 24 0 0077 +@ 24 0 0100 +at " +A 24 0 0101 +*A " +B 24 0 0102 +*B " +C 24 0 0103 +D 24 0 0104 +E 24 0 0105 +*E " +F 24 0 0106 +G 24 0 0107 +H 24 0 0110 +*Y " +I 24 0 0111 +*I " +J 24 0 0112 +K 24 0 0113 +*K " +L 24 0 0114 +M 24 0 0115 +*M " +N 24 0 0116 +*N " +O 24 0 0117 +ci " +*O " +P 24 0 0120 +*R " +Q 24 0 0121 +R 24 0 0122 +S 24 0 0123 +T 24 0 0124 +*T " +U 24 0 0125 +V 24 0 0126 +W 24 0 0127 +X 24 0 0130 +*X " +Y 24 0 0131 +*U " +Z 24 0 0132 +*Z " +[ 24 0 0133 +lB " +\ 24 0 0134 +rs " +] 24 0 0135 +rB " +a^ 24 0 0136 +^ " +ha " +_ 24 0 0137 +ru " +ul " +` 24 0 0140 +oq " +ga " +a 24 0 0141 +b 24 0 0142 +c 24 0 0143 +d 24 0 0144 +e 24 0 0145 +f 24 0 0146 +g 24 0 0147 +h 24 0 0150 +i 24 0 0151 +.i " +j 24 0 0152 +k 24 0 0153 +l 24 0 0154 +m 24 0 0155 +n 24 0 0156 +o 24 0 0157 +*o " +p 24 0 0160 +q 24 0 0161 +r 24 0 0162 +s 24 0 0163 +t 24 0 0164 +u 24 0 0165 +v 24 0 0166 +w 24 0 0167 +x 24 0 0170 +mu " +y 24 0 0171 +z 24 0 0172 +lC 24 0 0173 +{ " +ba 24 0 0174 +or " +bv " +br " +| " +lb " +lc " +lf " +lk " +lt " +rb " +rc " +rf " +rk " +rt " +rC 24 0 0175 +} " +a~ 24 0 0176 +~ " +ap " +ti " --- groff-1.18.1.1.orig/font/devnippon/DESC.proto +++ groff-1.18.1.1/font/devnippon/DESC.proto @@ -0,0 +1,12 @@ +res 240 +hor 24 +vert 40 +unitwidth 10 +sizes 10 0 +fonts 6 R I B BI M G +fontset B G 2E00..9FFF +fontset - M 2E00..9FFF +fontset B G FF00..FFEF +fontset - M FF00..FFEF +tcommand +postpro grotty --- groff-1.18.1.1.orig/font/devnippon/M.proto +++ groff-1.18.1.1/font/devnippon/M.proto @@ -0,0 +1,6 @@ +name M +internalname 4 +spacewidth 48 +charset +u2E00..u9FFF 48 0 +uFF00..uFFEF 48 0 --- groff-1.18.1.1.orig/font/devX100/Makefile.sub +++ groff-1.18.1.1/font/devX100/Makefile.sub @@ -1,2 +1,13 @@ DEV=X100 -DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S +DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S M G +CLEANADD=M G + +M: M.proto + @echo Making M + @-rm -f M + @cat $(srcdir)/M.proto > M + +G: M + @echo Making G + @-rm -f G + @sed -e 's/name M/name G/' M > G --- groff-1.18.1.1.orig/font/devX100/DESC +++ groff-1.18.1.1/font/devX100/DESC @@ -1,5 +1,17 @@ styles R I B BI -fonts 6 0 0 0 0 0 S +fonts 8 0 0 0 0 0 S M G +fontset B G 2E00..9FFF +fontset CB G 2E00..9FFF +fontset HB G 2E00..9FFF +fontset NB G 2E00..9FFF +fontset TB G 2E00..9FFF +fontset - M 2E00..9FFF +fontset B G FF00..FFEF +fontset CB G FF00..FFEF +fontset HB G FF00..FFEF +fontset NB G FF00..FFEF +fontset TB G FF00..FFEF +fontset - M FF00..FFEF sizes 8 10 12 14 18 24 0 res 100 X11 --- groff-1.18.1.1.orig/font/devX100/M.proto +++ groff-1.18.1.1/font/devX100/M.proto @@ -0,0 +1,5 @@ +name M +spacewidth 3 +charset +u2E00..u9FFF 20 0 +uFF00..uFFEF 20 0 --- groff-1.18.1.1.orig/font/devlj4/Makefile.sub +++ groff-1.18.1.1/font/devlj4/Makefile.sub @@ -22,9 +22,9 @@ echo "unitwidth `expr 7620000 / $(LJ4RES)`" >>DESC cat $(srcdir)/DESC.in >>DESC if test "$(PAGE)" = A4; then \ - echo "papersize a4" >>DESC; \ + echo "papersize /etc/papersize a4" >>DESC; \ else \ - echo "papersize letter" >>DESC; \ + echo "papersize /etc/papersize letter" >>DESC; \ fi test -z '$(LJ4PRINT)' || echo print '$(LJ4PRINT)' >>DESC --- groff-1.18.1.1.orig/font/devdvi/Makefile.sub +++ groff-1.18.1.1/font/devdvi/Makefile.sub @@ -3,15 +3,68 @@ TR TI TB TBI CW CWI HR HI HB HBI \ TREC TIEC TBEC TBIEC CWEC CWIEC HREC HIEC HBEC HBIEC \ TRTC TITC TBTC TBITC CWTC CWITC HRTC HITC HBTC HBITC \ - MI S EX SA SB \ + MI S EX SA SB M G \ generate/CompileFonts generate/Makefile \ generate/msam.map generate/msbm.map \ generate/texb.map generate/texex.map generate/texi.map generate/texmi.map \ generate/texr.map generate/texsy.map generate/textt.map \ generate/ec.map generate/tc.map -CLEANADD=DESC +CLEANADD=DESC M G DESC: DESC.in cat $(srcdir)/DESC.in >DESC test -z '$(DVIPRINT)' || echo print '$(DVIPRINT)' >>DESC + +M: M.proto-$(DVIFORMAT) + @echo Making $@ + @-rm -f $@ + cp M.proto-$(DVIFORMAT) M +# @if [ x$(DVIFORMAT) = xNTT ]; then \ +# sed -e 's/ F / 959887,808326,151561 1 /' \ +# -e 's/:0$$/:dmjsy10/' \ +# -e 's/:1$$/:dmjroma10/' \ +# -e 's/:2$$/:dmjhira10/' \ +# -e 's/:3$$/:dmjkata10/' \ +# -e 's/:4$$/:dmjgreek10/' \ +# -e 's/:5$$/:dmjrussian10/' \ +# -e 's/:6$$/:dmjkeisen10/' \ +# -e 's/:a$$/:dmjka10/' \ +# -e 's/:b$$/:dmjkb10/' \ +# -e 's/:c$$/:dmjkc10/' \ +# -e 's/:d$$/:dmjkd10/' \ +# -e 's/:e$$/:dmjke10/' \ +# -e 's/:f$$/:dmjkf10/' \ +# -e 's/:g$$/:dmjkg10/' \ +# -e 's/:h$$/:dmjkh10/' \ +# -e 's/:i$$/:dmjki10/' \ +# -e 's/:j$$/:dmjkj10/' \ +# -e 's/:k$$/:dmjkk10/' \ +# -e 's/:l$$/:dmjkl10/' \ +# -e 's/:m$$/:dmjkm10/' \ +# -e 's/:n$$/:dmjkn10/' \ +# -e 's/:o$$/:dmjko10/' \ +# -e 's/:p$$/:dmjkp10/' \ +# -e 's/:q$$/:dmjkq10/' \ +# -e 's/:r$$/:dmjkr10/' \ +# -e 's/:s$$/:dmjks10/' \ +# -e 's/:t$$/:dmjkt10/' \ +# -e 's/:u$$/:dmjku10/' \ +# -e 's/:v$$/:dmjkv10/' \ +# -e 's/:w$$/:dmjkw10/' \ +# -e 's/:x$$/:dmjkx10/' \ +# -e 's/:y$$/:dmjky10/' \ +# -e 's/:z$$/:dmjkz10/' \ +# < M.proto-NTT > M ;\ +# else \ +# ../devnippon/createM -jis "1006514,815360,145600" 1 < M.proto-ASCII | \ +# sed -f FixMetric.sed > M ;\ +# fi + +G: M + @echo Making $@ + @-rm -f $@ + @sed -e 's/name M/name G/' \ + -e 's/dmj/dgj/' \ + -e 's/internalname min10/internalname goth10/' \ + < M > G --- groff-1.18.1.1.orig/font/devdvi/FixMetric.sed +++ groff-1.18.1.1/font/devdvi/FixMetric.sed @@ -0,0 +1,77 @@ +s/1006514,.*0x212b$/370845,815360,145600 1 0x212b/ +s/1006514,.*0x212c$/370845,815360,145600 1 0x212c/ +s/1006514,.*0x2126$/370845,815360,145600 1 0x2126/ +s/1006514,.*0x2127$/370845,815360,145600 1 0x2127/ +s/1006514,.*0x2128$/370845,815360,145600 1 0x2128/ +s/1006514,.*0x212a$/370845,815360,145600 1 0x212a/ +s/1006514,.*0x212d$/370845,815360,145600 1 0x212d/ +s/1006514,.*0x212e$/370845,815360,145600 1 0x212e/ +s/1006514,.*0x213e$/370845,815360,145600 1 0x213e/ +s/1006514,.*0x2142$/370845,815360,145600 1 0x2142/ +s/1006514,.*0x2143$/370845,815360,145600 1 0x2143/ +s/1006514,.*0x2146$/370845,815360,145600 1 0x2146/ +s/1006514,.*0x2147$/370845,815360,145600 1 0x2147/ +s/1006514,.*0x2124$/370845,815360,145600 1 0x2124/ +s/1006514,.*0x2125$/370845,815360,145600 1 0x2125/ +s/1006514,.*0x214b$/528496,815360,145600 1 0x214b/ +s/1006514,.*0x214d$/528496,815360,145600 1 0x214d/ +s/1006514,.*0x214f$/528496,815360,145600 1 0x214f/ +s/1006514,.*0x2151$/528496,815360,145600 1 0x2151/ +s/1006514,.*0x2153$/528496,815360,145600 1 0x2153/ +s/1006514,.*0x2155$/528496,815360,145600 1 0x2155/ +s/1006514,.*0x2157$/528496,815360,145600 1 0x2157/ +s/1006514,.*0x2159$/528496,815360,145600 1 0x2159/ +s/1006514,.*0x215b$/528496,815360,145600 1 0x215b/ +s/1006514,.*0x2129$/528496,815360,145600 1 0x2129/ +s/1006514,.*0x212f$/528496,815360,145600 1 0x212f/ +s/1006514,.*0x2130$/528496,815360,145600 1 0x2130/ +s/1006514,.*0x2133$/528496,815360,145600 1 0x2133/ +s/1006514,.*0x2135$/528496,815360,145600 1 0x2135/ +s/1006514,.*0x2148$/528496,815360,145600 1 0x2148/ +s/1006514,.*0x2149$/528496,815360,145600 1 0x2149/ +s/1006514,.*0x216b$/528496,815360,145600 1 0x216b/ +s/1006514,.*0x216c$/528496,815360,145600 1 0x216c/ +s/1006514,.*0x216d$/528496,815360,145600 1 0x216d/ +s/1006514,.*0x2178$/528496,815360,145600 1 0x2178/ +s/1006514,.*0x214a$/528496,815360,145600 1 0x214a/ +s/1006514,.*0x214c$/528496,815360,145600 1 0x214c/ +s/1006514,.*0x214e$/528496,815360,145600 1 0x214e/ +s/1006514,.*0x2150$/528496,815360,145600 1 0x2150/ +s/1006514,.*0x2152$/528496,815360,145600 1 0x2152/ +s/1006514,.*0x2154$/528496,815360,145600 1 0x2154/ +s/1006514,.*0x2156$/528496,815360,145600 1 0x2156/ +s/1006514,.*0x2158$/528496,815360,145600 1 0x2158/ +s/1006514,.*0x215a$/528496,815360,145600 1 0x215a/ +s/1006514,.*0x2122$/528496,815360,145600 1 0x2122/ +s/1006514,.*0x2123$/528496,815360,145600 1 0x2123/ +s/1006514,.*0x2136$/783741,815360,145600 1 0x2136/ +s/1006514,.*0x2137$/783741,815360,145600 1 0x2137/ +s/1006514,.*0x2139$/783741,815360,145600 1 0x2139/ +s/1006514,.*0x2168$/783741,815360,145600 1 0x2168/ +s/1006514,.*0x2169$/783741,815360,145600 1 0x2169/ +s/1006514,.*0x216a$/783741,815360,145600 1 0x216a/ +s/1006514,.*0x2170$/783741,815360,145600 1 0x2170/ +s/1006514,.*0x2171$/783741,815360,145600 1 0x2171/ +s/1006514,.*0x2172$/783741,815360,145600 1 0x2172/ +s/1006514,.*0x2421$/783741,815360,145600 1 0x2421/ +s/1006514,.*0x2423$/783741,815360,145600 1 0x2423/ +s/1006514,.*0x2425$/783741,815360,145600 1 0x2425/ +s/1006514,.*0x2427$/783741,815360,145600 1 0x2427/ +s/1006514,.*0x2429$/783741,815360,145600 1 0x2429/ +s/1006514,.*0x2443$/783741,815360,145600 1 0x2443/ +s/1006514,.*0x2463$/783741,815360,145600 1 0x2463/ +s/1006514,.*0x2465$/783741,815360,145600 1 0x2465/ +s/1006514,.*0x2467$/783741,815360,145600 1 0x2467/ +s/1006514,.*0x246e$/783741,815360,145600 1 0x246e/ +s/1006514,.*0x2521$/783741,815360,145600 1 0x2521/ +s/1006514,.*0x2523$/783741,815360,145600 1 0x2523/ +s/1006514,.*0x2525$/783741,815360,145600 1 0x2525/ +s/1006514,.*0x2527$/783741,815360,145600 1 0x2527/ +s/1006514,.*0x2529$/783741,815360,145600 1 0x2529/ +s/1006514,.*0x2543$/783741,815360,145600 1 0x2543/ +s/1006514,.*0x2563$/783741,815360,145600 1 0x2563/ +s/1006514,.*0x2565$/783741,815360,145600 1 0x2565/ +s/1006514,.*0x2567$/783741,815360,145600 1 0x2567/ +s/1006514,.*0x256e$/783741,815360,145600 1 0x256e/ +s/1006514,.*0x2575$/783741,815360,145600 1 0x2575/ +s/1006514,.*0x2576$/783741,815360,145600 1 0x2576/ --- groff-1.18.1.1.orig/font/devdvi/M.proto-NTT +++ groff-1.18.1.1/font/devdvi/M.proto-NTT @@ -0,0 +1,6882 @@ +name M +internalname dmj10 +checksum 0 +designsize 10485760 +charset +¡¡ F 1:0 +¡¢ F 2:0 +¡£ F 3:0 +¡¤ F 4:0 +¡¥ F 5:0 +¡¦ F 6:0 +¡§ F 7:0 +¡¨ F 8:0 +¡© F 9:0 +¡ª F 10:0 +¡« F 11:0 +¡¬ F 12:0 +¡­ F 13:0 +¡® F 14:0 +¡¯ F 15:0 +¡° F 16:0 +¡± F 17:0 +¡² F 18:0 +¡³ F 19:0 +¡´ F 20:0 +¡µ F 21:0 +¡¶ F 22:0 +¡· F 23:0 +¡¸ F 24:0 +¡¹ F 25:0 +¡º F 26:0 +¡» F 27:0 +¡¼ F 28:0 +¡½ F 29:0 +¡¾ F 30:0 +¡¿ F 31:0 +¡À F 32:0 +¡Á F 33:0 +¡Â F 34:0 +¡Ã F 35:0 +¡Ä F 36:0 +¡Å F 37:0 +¡Æ F 38:0 +¡Ç F 39:0 +¡È F 40:0 +¡É F 41:0 +¡Ê F 42:0 +¡Ë F 43:0 +¡Ì F 44:0 +¡Í F 45:0 +¡Î F 46:0 +¡Ï F 47:0 +¡Ð F 48:0 +¡Ñ F 49:0 +¡Ò F 50:0 +¡Ó F 51:0 +¡Ô F 52:0 +¡Õ F 53:0 +¡Ö F 54:0 +¡× F 55:0 +¡Ø F 56:0 +¡Ù F 57:0 +¡Ú F 58:0 +¡Û F 59:0 +¡Ü F 60:0 +¡Ý F 61:0 +¡Þ F 62:0 +¡ß F 63:0 +¡à F 64:0 +¡á F 65:0 +¡â F 66:0 +¡ã F 67:0 +¡ä F 68:0 +¡å F 69:0 +¡æ F 70:0 +¡ç F 71:0 +¡è F 72:0 +¡é F 73:0 +¡ê F 74:0 +¡ë F 75:0 +¡ì F 76:0 +¡í F 77:0 +¡î F 78:0 +¡ï F 79:0 +¡ð F 80:0 +¡ñ F 81:0 +¡ò F 82:0 +¡ó F 83:0 +¡ô F 84:0 +¡õ F 85:0 +¡ö F 86:0 +¡÷ F 87:0 +¡ø F 88:0 +¡ù F 89:0 +¡ú F 90:0 +¡û F 91:0 +¡ü F 92:0 +¡ý F 93:0 +¡þ F 94:0 +¢¡ F 101:0 +¢¢ F 102:0 +¢£ F 103:0 +¢¤ F 104:0 +¢¥ F 105:0 +¢¦ F 106:0 +¢§ F 107:0 +¢¨ F 108:0 +¢© F 109:0 +¢ª F 110:0 +¢« F 111:0 +¢¬ F 112:0 +¢­ F 113:0 +¢® F 114:0 +¢º F 126:0 +¢» F 127:0 +¢¼ F 128:0 +¢½ F 129:0 +¢¾ F 130:0 +¢¿ F 131:0 +¢À F 132:0 +¢Á F 133:0 +¢Ê F 142:0 +¢Ë F 143:0 +¢Ì F 144:0 +¢Í F 145:0 +¢Î F 146:0 +¢Ï F 147:0 +¢Ð F 148:0 +¢Ü F 160:0 +¢Ý F 161:0 +¢Þ F 162:0 +¢ß F 163:0 +¢à F 164:0 +¢á F 165:0 +¢â F 166:0 +¢ã F 167:0 +¢ä F 168:0 +¢å F 169:0 +¢æ F 170:0 +¢ç F 171:0 +¢è F 172:0 +¢é F 173:0 +¢ê F 174:0 +¢ò F 182:0 +¢ó F 183:0 +¢ô F 184:0 +¢õ F 185:0 +¢ö F 186:0 +¢÷ F 187:0 +¢ø F 188:0 +¢ù F 189:0 +¢þ F 194:0 +£° F 48:1 +£± F 49:1 +£² F 50:1 +£³ F 51:1 +£´ F 52:1 +£µ F 53:1 +£¶ F 54:1 +£· F 55:1 +£¸ F 56:1 +£¹ F 57:1 +£Á F 65:1 +£Â F 66:1 +£Ã F 67:1 +£Ä F 68:1 +£Å F 69:1 +£Æ F 70:1 +£Ç F 71:1 +£È F 72:1 +£É F 73:1 +£Ê F 74:1 +£Ë F 75:1 +£Ì F 76:1 +£Í F 77:1 +£Î F 78:1 +£Ï F 79:1 +£Ð F 80:1 +£Ñ F 81:1 +£Ò F 82:1 +£Ó F 83:1 +£Ô F 84:1 +£Õ F 85:1 +£Ö F 86:1 +£× F 87:1 +£Ø F 88:1 +£Ù F 89:1 +£Ú F 90:1 +£á F 97:1 +£â F 98:1 +£ã F 99:1 +£ä F 100:1 +£å F 101:1 +£æ F 102:1 +£ç F 103:1 +£è F 104:1 +£é F 105:1 +£ê F 106:1 +£ë F 107:1 +£ì F 108:1 +£í F 109:1 +£î F 110:1 +£ï F 111:1 +£ð F 112:1 +£ñ F 113:1 +£ò F 114:1 +£ó F 115:1 +£ô F 116:1 +£õ F 117:1 +£ö F 118:1 +£÷ F 119:1 +£ø F 120:1 +£ù F 121:1 +£ú F 122:1 +¤¡ F 1:2 +¤¢ F 2:2 +¤£ F 3:2 +¤¤ F 4:2 +¤¥ F 5:2 +¤¦ F 6:2 +¤§ F 7:2 +¤¨ F 8:2 +¤© F 9:2 +¤ª F 10:2 +¤« F 11:2 +¤¬ F 12:2 +¤­ F 13:2 +¤® F 14:2 +¤¯ F 15:2 +¤° F 16:2 +¤± F 17:2 +¤² F 18:2 +¤³ F 19:2 +¤´ F 20:2 +¤µ F 21:2 +¤¶ F 22:2 +¤· F 23:2 +¤¸ F 24:2 +¤¹ F 25:2 +¤º F 26:2 +¤» F 27:2 +¤¼ F 28:2 +¤½ F 29:2 +¤¾ F 30:2 +¤¿ F 31:2 +¤À F 32:2 +¤Á F 33:2 +¤Â F 34:2 +¤Ã F 35:2 +¤Ä F 36:2 +¤Å F 37:2 +¤Æ F 38:2 +¤Ç F 39:2 +¤È F 40:2 +¤É F 41:2 +¤Ê F 42:2 +¤Ë F 43:2 +¤Ì F 44:2 +¤Í F 45:2 +¤Î F 46:2 +¤Ï F 47:2 +¤Ð F 48:2 +¤Ñ F 49:2 +¤Ò F 50:2 +¤Ó F 51:2 +¤Ô F 52:2 +¤Õ F 53:2 +¤Ö F 54:2 +¤× F 55:2 +¤Ø F 56:2 +¤Ù F 57:2 +¤Ú F 58:2 +¤Û F 59:2 +¤Ü F 60:2 +¤Ý F 61:2 +¤Þ F 62:2 +¤ß F 63:2 +¤à F 64:2 +¤á F 65:2 +¤â F 66:2 +¤ã F 67:2 +¤ä F 68:2 +¤å F 69:2 +¤æ F 70:2 +¤ç F 71:2 +¤è F 72:2 +¤é F 73:2 +¤ê F 74:2 +¤ë F 75:2 +¤ì F 76:2 +¤í F 77:2 +¤î F 78:2 +¤ï F 79:2 +¤ð F 80:2 +¤ñ F 81:2 +¤ò F 82:2 +¤ó F 83:2 +¥¡ F 1:3 +¥¢ F 2:3 +¥£ F 3:3 +¥¤ F 4:3 +¥¥ F 5:3 +¥¦ F 6:3 +¥§ F 7:3 +¥¨ F 8:3 +¥© F 9:3 +¥ª F 10:3 +¥« F 11:3 +¥¬ F 12:3 +¥­ F 13:3 +¥® F 14:3 +¥¯ F 15:3 +¥° F 16:3 +¥± F 17:3 +¥² F 18:3 +¥³ F 19:3 +¥´ F 20:3 +¥µ F 21:3 +¥¶ F 22:3 +¥· F 23:3 +¥¸ F 24:3 +¥¹ F 25:3 +¥º F 26:3 +¥» F 27:3 +¥¼ F 28:3 +¥½ F 29:3 +¥¾ F 30:3 +¥¿ F 31:3 +¥À F 32:3 +¥Á F 33:3 +¥Â F 34:3 +¥Ã F 35:3 +¥Ä F 36:3 +¥Å F 37:3 +¥Æ F 38:3 +¥Ç F 39:3 +¥È F 40:3 +¥É F 41:3 +¥Ê F 42:3 +¥Ë F 43:3 +¥Ì F 44:3 +¥Í F 45:3 +¥Î F 46:3 +¥Ï F 47:3 +¥Ð F 48:3 +¥Ñ F 49:3 +¥Ò F 50:3 +¥Ó F 51:3 +¥Ô F 52:3 +¥Õ F 53:3 +¥Ö F 54:3 +¥× F 55:3 +¥Ø F 56:3 +¥Ù F 57:3 +¥Ú F 58:3 +¥Û F 59:3 +¥Ü F 60:3 +¥Ý F 61:3 +¥Þ F 62:3 +¥ß F 63:3 +¥à F 64:3 +¥á F 65:3 +¥â F 66:3 +¥ã F 67:3 +¥ä F 68:3 +¥å F 69:3 +¥æ F 70:3 +¥ç F 71:3 +¥è F 72:3 +¥é F 73:3 +¥ê F 74:3 +¥ë F 75:3 +¥ì F 76:3 +¥í F 77:3 +¥î F 78:3 +¥ï F 79:3 +¥ð F 80:3 +¥ñ F 81:3 +¥ò F 82:3 +¥ó F 83:3 +¥ô F 84:3 +¥õ F 85:3 +¥ö F 86:3 +¦¡ F 1:4 +¦¢ F 2:4 +¦£ F 3:4 +¦¤ F 4:4 +¦¥ F 5:4 +¦¦ F 6:4 +¦§ F 7:4 +¦¨ F 8:4 +¦© F 9:4 +¦ª F 10:4 +¦« F 11:4 +¦¬ F 12:4 +¦­ F 13:4 +¦® F 14:4 +¦¯ F 15:4 +¦° F 16:4 +¦± F 17:4 +¦² F 18:4 +¦³ F 19:4 +¦´ F 20:4 +¦µ F 21:4 +¦¶ F 22:4 +¦· F 23:4 +¦¸ F 24:4 +¦Á F 33:4 +¦Â F 34:4 +¦Ã F 35:4 +¦Ä F 36:4 +¦Å F 37:4 +¦Æ F 38:4 +¦Ç F 39:4 +¦È F 40:4 +¦É F 41:4 +¦Ê F 42:4 +¦Ë F 43:4 +¦Ì F 44:4 +¦Í F 45:4 +¦Î F 46:4 +¦Ï F 47:4 +¦Ð F 48:4 +¦Ñ F 49:4 +¦Ò F 50:4 +¦Ó F 51:4 +¦Ô F 52:4 +¦Õ F 53:4 +¦Ö F 54:4 +¦× F 55:4 +¦Ø F 56:4 +§¡ F 1:5 +§¢ F 2:5 +§£ F 3:5 +§¤ F 4:5 +§¥ F 5:5 +§¦ F 6:5 +§§ F 7:5 +§¨ F 8:5 +§© F 9:5 +§ª F 10:5 +§« F 11:5 +§¬ F 12:5 +§­ F 13:5 +§® F 14:5 +§¯ F 15:5 +§° F 16:5 +§± F 17:5 +§² F 18:5 +§³ F 19:5 +§´ F 20:5 +§µ F 21:5 +§¶ F 22:5 +§· F 23:5 +§¸ F 24:5 +§¹ F 25:5 +§º F 26:5 +§» F 27:5 +§¼ F 28:5 +§½ F 29:5 +§¾ F 30:5 +§¿ F 31:5 +§À F 32:5 +§Á F 33:5 +§Ñ F 49:5 +§Ò F 50:5 +§Ó F 51:5 +§Ô F 52:5 +§Õ F 53:5 +§Ö F 54:5 +§× F 55:5 +§Ø F 56:5 +§Ù F 57:5 +§Ú F 58:5 +§Û F 59:5 +§Ü F 60:5 +§Ý F 61:5 +§Þ F 62:5 +§ß F 63:5 +§à F 64:5 +§á F 65:5 +§â F 66:5 +§ã F 67:5 +§ä F 68:5 +§å F 69:5 +§æ F 70:5 +§ç F 71:5 +§è F 72:5 +§é F 73:5 +§ê F 74:5 +§ë F 75:5 +§ì F 76:5 +§í F 77:5 +§î F 78:5 +§ï F 79:5 +§ð F 80:5 +§ñ F 81:5 +¨¡ F 1:6 +¨¢ F 2:6 +¨£ F 3:6 +¨¤ F 4:6 +¨¥ F 5:6 +¨¦ F 6:6 +¨§ F 7:6 +¨¨ F 8:6 +¨© F 9:6 +¨ª F 10:6 +¨« F 11:6 +¨¬ F 12:6 +¨­ F 13:6 +¨® F 14:6 +¨¯ F 15:6 +¨° F 16:6 +¨± F 17:6 +¨² F 18:6 +¨³ F 19:6 +¨´ F 20:6 +¨µ F 21:6 +¨¶ F 22:6 +¨· F 23:6 +¨¸ F 24:6 +¨¹ F 25:6 +¨º F 26:6 +¨» F 27:6 +¨¼ F 28:6 +¨½ F 29:6 +¨¾ F 30:6 +¨¿ F 31:6 +¨À F 32:6 +°¡ F 0:a +°¢ F 1:a +°£ F 2:a +°¤ F 3:a +°¥ F 4:a +°¦ F 5:a +°§ F 6:a +°¨ F 7:a +°© F 8:a +°ª F 9:a +°« F 10:a +°¬ F 11:a +°­ F 12:a +°® F 13:a +°¯ F 14:a +°° F 15:a +°± F 16:a +°² F 17:a +°³ F 18:a +°´ F 19:a +°µ F 20:a +°¶ F 21:a +°· F 22:a +°¸ F 23:a +°¹ F 24:a +°º F 25:a +°» F 26:a +°¼ F 27:a +°½ F 28:a +°¾ F 29:a +°¿ F 30:a +°À F 31:a +°Á F 32:a +°Â F 33:a +°Ã F 34:a +°Ä F 35:a +°Å F 36:a +°Æ F 37:a +°Ç F 38:a +°È F 39:a +°É F 40:a +°Ê F 41:a +°Ë F 42:a +°Ì F 43:a +°Í F 44:a +°Î F 45:a +°Ï F 46:a +°Ð F 47:a +°Ñ F 48:a +°Ò F 49:a +°Ó F 50:a +°Ô F 51:a +°Õ F 52:a +°Ö F 53:a +°× F 54:a +°Ø F 55:a +°Ù F 56:a +°Ú F 57:a +°Û F 58:a +°Ü F 59:a +°Ý F 60:a +°Þ F 61:a +°ß F 62:a +°à F 63:a +°á F 64:a +°â F 65:a +°ã F 66:a +°ä F 67:a +°å F 68:a +°æ F 69:a +°ç F 70:a +°è F 71:a +°é F 72:a +°ê F 73:a +°ë F 74:a +°ì F 75:a +°í F 76:a +°î F 77:a +°ï F 78:a +°ð F 79:a +°ñ F 80:a +°ò F 81:a +°ó F 82:a +°ô F 83:a +°õ F 84:a +°ö F 85:a +°÷ F 86:a +°ø F 87:a +°ù F 88:a +°ú F 89:a +°û F 90:a +°ü F 91:a +°ý F 92:a +°þ F 93:a +±¡ F 94:a +±¢ F 95:a +±£ F 96:a +±¤ F 97:a +±¥ F 98:a +±¦ F 99:a +±§ F 100:a +±¨ F 101:a +±© F 102:a +±ª F 103:a +±« F 104:a +±¬ F 105:a +±­ F 106:a +±® F 107:a +±¯ F 108:a +±° F 109:a +±± F 110:a +±² F 111:a +±³ F 112:a +±´ F 113:a +±µ F 114:a +±¶ F 115:a +±· F 116:a +±¸ F 117:a +±¹ F 118:a +±º F 119:a +±» F 120:a +±¼ F 121:a +±½ F 122:a +±¾ F 123:a +±¿ F 124:a +±À F 125:a +±Á F 126:a +±Â F 127:a +±Ã F 128:a +±Ä F 129:a +±Å F 130:a +±Æ F 131:a +±Ç F 132:a +±È F 133:a +±É F 134:a +±Ê F 135:a +±Ë F 136:a +±Ì F 137:a +±Í F 138:a +±Î F 139:a +±Ï F 140:a +±Ð F 141:a +±Ñ F 142:a +±Ò F 143:a +±Ó F 144:a +±Ô F 145:a +±Õ F 146:a +±Ö F 147:a +±× F 148:a +±Ø F 149:a +±Ù F 150:a +±Ú F 151:a +±Û F 152:a +±Ü F 153:a +±Ý F 154:a +±Þ F 155:a +±ß F 156:a +±à F 157:a +±á F 158:a +±â F 159:a +±ã F 160:a +±ä F 161:a +±å F 162:a +±æ F 163:a +±ç F 164:a +±è F 165:a +±é F 166:a +±ê F 167:a +±ë F 168:a +±ì F 169:a +±í F 170:a +±î F 171:a +±ï F 172:a +±ð F 173:a +±ñ F 174:a +±ò F 175:a +±ó F 176:a +±ô F 177:a +±õ F 178:a +±ö F 179:a +±÷ F 180:a +±ø F 181:a +±ù F 182:a +±ú F 183:a +±û F 184:a +±ü F 185:a +±ý F 186:a +±þ F 187:a +²¡ F 188:a +²¢ F 189:a +²£ F 190:a +²¤ F 191:a +²¥ F 192:a +²¦ F 193:a +²§ F 194:a +²¨ F 195:a +²© F 196:a +²ª F 197:a +²« F 198:a +²¬ F 199:a +²­ F 200:a +²® F 201:a +²¯ F 202:a +²° F 203:a +²± F 204:a +²² F 205:a +²³ F 206:a +²´ F 207:a +²µ F 208:a +²¶ F 209:a +²· F 210:a +²¸ F 211:a +²¹ F 212:a +²º F 213:a +²» F 214:a +²¼ F 215:a +²½ F 216:a +²¾ F 217:a +²¿ F 218:a +²À F 219:a +²Á F 220:a +²Â F 221:a +²Ã F 222:a +²Ä F 223:a +²Å F 224:a +²Æ F 225:a +²Ç F 226:a +²È F 227:a +²É F 228:a +²Ê F 229:a +²Ë F 230:a +²Ì F 231:a +²Í F 232:a +²Î F 233:a +²Ï F 234:a +²Ð F 235:a +²Ñ F 236:a +²Ò F 237:a +²Ó F 238:a +²Ô F 239:a +²Õ F 240:a +²Ö F 241:a +²× F 242:a +²Ø F 243:a +²Ù F 244:a +²Ú F 245:a +²Û F 246:a +²Ü F 247:a +²Ý F 248:a +²Þ F 249:a +²ß F 250:a +²à F 251:a +²á F 252:a +²â F 253:a +²ã F 254:a +²ä F 255:a +²å F 0:b +²æ F 1:b +²ç F 2:b +²è F 3:b +²é F 4:b +²ê F 5:b +²ë F 6:b +²ì F 7:b +²í F 8:b +²î F 9:b +²ï F 10:b +²ð F 11:b +²ñ F 12:b +²ò F 13:b +²ó F 14:b +²ô F 15:b +²õ F 16:b +²ö F 17:b +²÷ F 18:b +²ø F 19:b +²ù F 20:b +²ú F 21:b +²û F 22:b +²ü F 23:b +²ý F 24:b +²þ F 25:b +³¡ F 26:b +³¢ F 27:b +³£ F 28:b +³¤ F 29:b +³¥ F 30:b +³¦ F 31:b +³§ F 32:b +³¨ F 33:b +³© F 34:b +³ª F 35:b +³« F 36:b +³¬ F 37:b +³­ F 38:b +³® F 39:b +³¯ F 40:b +³° F 41:b +³± F 42:b +³² F 43:b +³³ F 44:b +³´ F 45:b +³µ F 46:b +³¶ F 47:b +³· F 48:b +³¸ F 49:b +³¹ F 50:b +³º F 51:b +³» F 52:b +³¼ F 53:b +³½ F 54:b +³¾ F 55:b +³¿ F 56:b +³À F 57:b +³Á F 58:b +³Â F 59:b +³Ã F 60:b +³Ä F 61:b +³Å F 62:b +³Æ F 63:b +³Ç F 64:b +³È F 65:b +³É F 66:b +³Ê F 67:b +³Ë F 68:b +³Ì F 69:b +³Í F 70:b +³Î F 71:b +³Ï F 72:b +³Ð F 73:b +³Ñ F 74:b +³Ò F 75:b +³Ó F 76:b +³Ô F 77:b +³Õ F 78:b +³Ö F 79:b +³× F 80:b +³Ø F 81:b +³Ù F 82:b +³Ú F 83:b +³Û F 84:b +³Ü F 85:b +³Ý F 86:b +³Þ F 87:b +³ß F 88:b +³à F 89:b +³á F 90:b +³â F 91:b +³ã F 92:b +³ä F 93:b +³å F 94:b +³æ F 95:b +³ç F 96:b +³è F 97:b +³é F 98:b +³ê F 99:b +³ë F 100:b +³ì F 101:b +³í F 102:b +³î F 103:b +³ï F 104:b +³ð F 105:b +³ñ F 106:b +³ò F 107:b +³ó F 108:b +³ô F 109:b +³õ F 110:b +³ö F 111:b +³÷ F 112:b +³ø F 113:b +³ù F 114:b +³ú F 115:b +³û F 116:b +³ü F 117:b +³ý F 118:b +³þ F 119:b +´¡ F 120:b +´¢ F 121:b +´£ F 122:b +´¤ F 123:b +´¥ F 124:b +´¦ F 125:b +´§ F 126:b +´¨ F 127:b +´© F 128:b +´ª F 129:b +´« F 130:b +´¬ F 131:b +´­ F 132:b +´® F 133:b +´¯ F 134:b +´° F 135:b +´± F 136:b +´² F 137:b +´³ F 138:b +´´ F 139:b +´µ F 140:b +´¶ F 141:b +´· F 142:b +´¸ F 143:b +´¹ F 144:b +´º F 145:b +´» F 146:b +´¼ F 147:b +´½ F 148:b +´¾ F 149:b +´¿ F 150:b +´À F 151:b +´Á F 152:b +´Â F 153:b +´Ã F 154:b +´Ä F 155:b +´Å F 156:b +´Æ F 157:b +´Ç F 158:b +´È F 159:b +´É F 160:b +´Ê F 161:b +´Ë F 162:b +´Ì F 163:b +´Í F 164:b +´Î F 165:b +´Ï F 166:b +´Ð F 167:b +´Ñ F 168:b +´Ò F 169:b +´Ó F 170:b +´Ô F 171:b +´Õ F 172:b +´Ö F 173:b +´× F 174:b +´Ø F 175:b +´Ù F 176:b +´Ú F 177:b +´Û F 178:b +´Ü F 179:b +´Ý F 180:b +´Þ F 181:b +´ß F 182:b +´à F 183:b +´á F 184:b +´â F 185:b +´ã F 186:b +´ä F 187:b +´å F 188:b +´æ F 189:b +´ç F 190:b +´è F 191:b +´é F 192:b +´ê F 193:b +´ë F 194:b +´ì F 195:b +´í F 196:b +´î F 197:b +´ï F 198:b +´ð F 199:b +´ñ F 200:b +´ò F 201:b +´ó F 202:b +´ô F 203:b +´õ F 204:b +´ö F 205:b +´÷ F 206:b +´ø F 207:b +´ù F 208:b +´ú F 209:b +´û F 210:b +´ü F 211:b +´ý F 212:b +´þ F 213:b +µ¡ F 214:b +µ¢ F 215:b +µ£ F 216:b +µ¤ F 217:b +µ¥ F 218:b +µ¦ F 219:b +µ§ F 220:b +µ¨ F 221:b +µ© F 222:b +µª F 223:b +µ« F 224:b +µ¬ F 225:b +µ­ F 226:b +µ® F 227:b +µ¯ F 228:b +µ° F 229:b +µ± F 230:b +µ² F 231:b +µ³ F 232:b +µ´ F 233:b +µµ F 234:b +µ¶ F 235:b +µ· F 236:b +µ¸ F 237:b +µ¹ F 238:b +µº F 239:b +µ» F 240:b +µ¼ F 241:b +µ½ F 242:b +µ¾ F 243:b +µ¿ F 244:b +µÀ F 245:b +µÁ F 246:b +µÂ F 247:b +µÃ F 248:b +µÄ F 249:b +µÅ F 250:b +µÆ F 251:b +µÇ F 252:b +µÈ F 253:b +µÉ F 254:b +µÊ F 255:b +µË F 0:c +µÌ F 1:c +µÍ F 2:c +µÎ F 3:c +µÏ F 4:c +µÐ F 5:c +µÑ F 6:c +µÒ F 7:c +µÓ F 8:c +µÔ F 9:c +µÕ F 10:c +µÖ F 11:c +µ× F 12:c +µØ F 13:c +µÙ F 14:c +µÚ F 15:c +µÛ F 16:c +µÜ F 17:c +µÝ F 18:c +µÞ F 19:c +µß F 20:c +µà F 21:c +µá F 22:c +µâ F 23:c +µã F 24:c +µä F 25:c +µå F 26:c +µæ F 27:c +µç F 28:c +µè F 29:c +µé F 30:c +µê F 31:c +µë F 32:c +µì F 33:c +µí F 34:c +µî F 35:c +µï F 36:c +µð F 37:c +µñ F 38:c +µò F 39:c +µó F 40:c +µô F 41:c +µõ F 42:c +µö F 43:c +µ÷ F 44:c +µø F 45:c +µù F 46:c +µú F 47:c +µû F 48:c +µü F 49:c +µý F 50:c +µþ F 51:c +¶¡ F 52:c +¶¢ F 53:c +¶£ F 54:c +¶¤ F 55:c +¶¥ F 56:c +¶¦ F 57:c +¶§ F 58:c +¶¨ F 59:c +¶© F 60:c +¶ª F 61:c +¶« F 62:c +¶¬ F 63:c +¶­ F 64:c +¶® F 65:c +¶¯ F 66:c +¶° F 67:c +¶± F 68:c +¶² F 69:c +¶³ F 70:c +¶´ F 71:c +¶µ F 72:c +¶¶ F 73:c +¶· F 74:c +¶¸ F 75:c +¶¹ F 76:c +¶º F 77:c +¶» F 78:c +¶¼ F 79:c +¶½ F 80:c +¶¾ F 81:c +¶¿ F 82:c +¶À F 83:c +¶Á F 84:c +¶Â F 85:c +¶Ã F 86:c +¶Ä F 87:c +¶Å F 88:c +¶Æ F 89:c +¶Ç F 90:c +¶È F 91:c +¶É F 92:c +¶Ê F 93:c +¶Ë F 94:c +¶Ì F 95:c +¶Í F 96:c +¶Î F 97:c +¶Ï F 98:c +¶Ð F 99:c +¶Ñ F 100:c +¶Ò F 101:c +¶Ó F 102:c +¶Ô F 103:c +¶Õ F 104:c +¶Ö F 105:c +¶× F 106:c +¶Ø F 107:c +¶Ù F 108:c +¶Ú F 109:c +¶Û F 110:c +¶Ü F 111:c +¶Ý F 112:c +¶Þ F 113:c +¶ß F 114:c +¶à F 115:c +¶á F 116:c +¶â F 117:c +¶ã F 118:c +¶ä F 119:c +¶å F 120:c +¶æ F 121:c +¶ç F 122:c +¶è F 123:c +¶é F 124:c +¶ê F 125:c +¶ë F 126:c +¶ì F 127:c +¶í F 128:c +¶î F 129:c +¶ï F 130:c +¶ð F 131:c +¶ñ F 132:c +¶ò F 133:c +¶ó F 134:c +¶ô F 135:c +¶õ F 136:c +¶ö F 137:c +¶÷ F 138:c +¶ø F 139:c +¶ù F 140:c +¶ú F 141:c +¶û F 142:c +¶ü F 143:c +¶ý F 144:c +¶þ F 145:c +·¡ F 146:c +·¢ F 147:c +·£ F 148:c +·¤ F 149:c +·¥ F 150:c +·¦ F 151:c +·§ F 152:c +·¨ F 153:c +·© F 154:c +·ª F 155:c +·« F 156:c +·¬ F 157:c +·­ F 158:c +·® F 159:c +·¯ F 160:c +·° F 161:c +·± F 162:c +·² F 163:c +·³ F 164:c +·´ F 165:c +·µ F 166:c +·¶ F 167:c +·· F 168:c +·¸ F 169:c +·¹ F 170:c +·º F 171:c +·» F 172:c +·¼ F 173:c +·½ F 174:c +·¾ F 175:c +·¿ F 176:c +·À F 177:c +·Á F 178:c +·Â F 179:c +·Ã F 180:c +·Ä F 181:c +·Å F 182:c +·Æ F 183:c +·Ç F 184:c +·È F 185:c +·É F 186:c +·Ê F 187:c +·Ë F 188:c +·Ì F 189:c +·Í F 190:c +·Î F 191:c +·Ï F 192:c +·Ð F 193:c +·Ñ F 194:c +·Ò F 195:c +·Ó F 196:c +·Ô F 197:c +·Õ F 198:c +·Ö F 199:c +·× F 200:c +·Ø F 201:c +·Ù F 202:c +·Ú F 203:c +·Û F 204:c +·Ü F 205:c +·Ý F 206:c +·Þ F 207:c +·ß F 208:c +·à F 209:c +·á F 210:c +·â F 211:c +·ã F 212:c +·ä F 213:c +·å F 214:c +·æ F 215:c +·ç F 216:c +·è F 217:c +·é F 218:c +·ê F 219:c +·ë F 220:c +·ì F 221:c +·í F 222:c +·î F 223:c +·ï F 224:c +·ð F 225:c +·ñ F 226:c +·ò F 227:c +·ó F 228:c +·ô F 229:c +·õ F 230:c +·ö F 231:c +·÷ F 232:c +·ø F 233:c +·ù F 234:c +·ú F 235:c +·û F 236:c +·ü F 237:c +·ý F 238:c +·þ F 239:c +¸¡ F 240:c +¸¢ F 241:c +¸£ F 242:c +¸¤ F 243:c +¸¥ F 244:c +¸¦ F 245:c +¸§ F 246:c +¸¨ F 247:c +¸© F 248:c +¸ª F 249:c +¸« F 250:c +¸¬ F 251:c +¸­ F 252:c +¸® F 253:c +¸¯ F 254:c +¸° F 255:c +¸± F 0:d +¸² F 1:d +¸³ F 2:d +¸´ F 3:d +¸µ F 4:d +¸¶ F 5:d +¸· F 6:d +¸¸ F 7:d +¸¹ F 8:d +¸º F 9:d +¸» F 10:d +¸¼ F 11:d +¸½ F 12:d +¸¾ F 13:d +¸¿ F 14:d +¸À F 15:d +¸Á F 16:d +¸Â F 17:d +¸Ã F 18:d +¸Ä F 19:d +¸Å F 20:d +¸Æ F 21:d +¸Ç F 22:d +¸È F 23:d +¸É F 24:d +¸Ê F 25:d +¸Ë F 26:d +¸Ì F 27:d +¸Í F 28:d +¸Î F 29:d +¸Ï F 30:d +¸Ð F 31:d +¸Ñ F 32:d +¸Ò F 33:d +¸Ó F 34:d +¸Ô F 35:d +¸Õ F 36:d +¸Ö F 37:d +¸× F 38:d +¸Ø F 39:d +¸Ù F 40:d +¸Ú F 41:d +¸Û F 42:d +¸Ü F 43:d +¸Ý F 44:d +¸Þ F 45:d +¸ß F 46:d +¸à F 47:d +¸á F 48:d +¸â F 49:d +¸ã F 50:d +¸ä F 51:d +¸å F 52:d +¸æ F 53:d +¸ç F 54:d +¸è F 55:d +¸é F 56:d +¸ê F 57:d +¸ë F 58:d +¸ì F 59:d +¸í F 60:d +¸î F 61:d +¸ï F 62:d +¸ð F 63:d +¸ñ F 64:d +¸ò F 65:d +¸ó F 66:d +¸ô F 67:d +¸õ F 68:d +¸ö F 69:d +¸÷ F 70:d +¸ø F 71:d +¸ù F 72:d +¸ú F 73:d +¸û F 74:d +¸ü F 75:d +¸ý F 76:d +¸þ F 77:d +¹¡ F 78:d +¹¢ F 79:d +¹£ F 80:d +¹¤ F 81:d +¹¥ F 82:d +¹¦ F 83:d +¹§ F 84:d +¹¨ F 85:d +¹© F 86:d +¹ª F 87:d +¹« F 88:d +¹¬ F 89:d +¹­ F 90:d +¹® F 91:d +¹¯ F 92:d +¹° F 93:d +¹± F 94:d +¹² F 95:d +¹³ F 96:d +¹´ F 97:d +¹µ F 98:d +¹¶ F 99:d +¹· F 100:d +¹¸ F 101:d +¹¹ F 102:d +¹º F 103:d +¹» F 104:d +¹¼ F 105:d +¹½ F 106:d +¹¾ F 107:d +¹¿ F 108:d +¹À F 109:d +¹Á F 110:d +¹Â F 111:d +¹Ã F 112:d +¹Ä F 113:d +¹Å F 114:d +¹Æ F 115:d +¹Ç F 116:d +¹È F 117:d +¹É F 118:d +¹Ê F 119:d +¹Ë F 120:d +¹Ì F 121:d +¹Í F 122:d +¹Î F 123:d +¹Ï F 124:d +¹Ð F 125:d +¹Ñ F 126:d +¹Ò F 127:d +¹Ó F 128:d +¹Ô F 129:d +¹Õ F 130:d +¹Ö F 131:d +¹× F 132:d +¹Ø F 133:d +¹Ù F 134:d +¹Ú F 135:d +¹Û F 136:d +¹Ü F 137:d +¹Ý F 138:d +¹Þ F 139:d +¹ß F 140:d +¹à F 141:d +¹á F 142:d +¹â F 143:d +¹ã F 144:d +¹ä F 145:d +¹å F 146:d +¹æ F 147:d +¹ç F 148:d +¹è F 149:d +¹é F 150:d +¹ê F 151:d +¹ë F 152:d +¹ì F 153:d +¹í F 154:d +¹î F 155:d +¹ï F 156:d +¹ð F 157:d +¹ñ F 158:d +¹ò F 159:d +¹ó F 160:d +¹ô F 161:d +¹õ F 162:d +¹ö F 163:d +¹÷ F 164:d +¹ø F 165:d +¹ù F 166:d +¹ú F 167:d +¹û F 168:d +¹ü F 169:d +¹ý F 170:d +¹þ F 171:d +º¡ F 172:d +º¢ F 173:d +º£ F 174:d +º¤ F 175:d +º¥ F 176:d +º¦ F 177:d +º§ F 178:d +º¨ F 179:d +º© F 180:d +ºª F 181:d +º« F 182:d +º¬ F 183:d +º­ F 184:d +º® F 185:d +º¯ F 186:d +º° F 187:d +º± F 188:d +º² F 189:d +º³ F 190:d +º´ F 191:d +ºµ F 192:d +º¶ F 193:d +º· F 194:d +º¸ F 195:d +º¹ F 196:d +ºº F 197:d +º» F 198:d +º¼ F 199:d +º½ F 200:d +º¾ F 201:d +º¿ F 202:d +ºÀ F 203:d +ºÁ F 204:d +ºÂ F 205:d +ºÃ F 206:d +ºÄ F 207:d +ºÅ F 208:d +ºÆ F 209:d +ºÇ F 210:d +ºÈ F 211:d +ºÉ F 212:d +ºÊ F 213:d +ºË F 214:d +ºÌ F 215:d +ºÍ F 216:d +ºÎ F 217:d +ºÏ F 218:d +ºÐ F 219:d +ºÑ F 220:d +ºÒ F 221:d +ºÓ F 222:d +ºÔ F 223:d +ºÕ F 224:d +ºÖ F 225:d +º× F 226:d +ºØ F 227:d +ºÙ F 228:d +ºÚ F 229:d +ºÛ F 230:d +ºÜ F 231:d +ºÝ F 232:d +ºÞ F 233:d +ºß F 234:d +ºà F 235:d +ºá F 236:d +ºâ F 237:d +ºã F 238:d +ºä F 239:d +ºå F 240:d +ºæ F 241:d +ºç F 242:d +ºè F 243:d +ºé F 244:d +ºê F 245:d +ºë F 246:d +ºì F 247:d +ºí F 248:d +ºî F 249:d +ºï F 250:d +ºð F 251:d +ºñ F 252:d +ºò F 253:d +ºó F 254:d +ºô F 255:d +ºõ F 0:e +ºö F 1:e +º÷ F 2:e +ºø F 3:e +ºù F 4:e +ºú F 5:e +ºû F 6:e +ºü F 7:e +ºý F 8:e +ºþ F 9:e +»¡ F 10:e +»¢ F 11:e +»£ F 12:e +»¤ F 13:e +»¥ F 14:e +»¦ F 15:e +»§ F 16:e +»¨ F 17:e +»© F 18:e +»ª F 19:e +»« F 20:e +»¬ F 21:e +»­ F 22:e +»® F 23:e +»¯ F 24:e +»° F 25:e +»± F 26:e +»² F 27:e +»³ F 28:e +»´ F 29:e +»µ F 30:e +»¶ F 31:e +»· F 32:e +»¸ F 33:e +»¹ F 34:e +»º F 35:e +»» F 36:e +»¼ F 37:e +»½ F 38:e +»¾ F 39:e +»¿ F 40:e +»À F 41:e +»Á F 42:e +»Â F 43:e +»Ã F 44:e +»Ä F 45:e +»Å F 46:e +»Æ F 47:e +»Ç F 48:e +»È F 49:e +»É F 50:e +»Ê F 51:e +»Ë F 52:e +»Ì F 53:e +»Í F 54:e +»Î F 55:e +»Ï F 56:e +»Ð F 57:e +»Ñ F 58:e +»Ò F 59:e +»Ó F 60:e +»Ô F 61:e +»Õ F 62:e +»Ö F 63:e +»× F 64:e +»Ø F 65:e +»Ù F 66:e +»Ú F 67:e +»Û F 68:e +»Ü F 69:e +»Ý F 70:e +»Þ F 71:e +»ß F 72:e +»à F 73:e +»á F 74:e +»â F 75:e +»ã F 76:e +»ä F 77:e +»å F 78:e +»æ F 79:e +»ç F 80:e +»è F 81:e +»é F 82:e +»ê F 83:e +»ë F 84:e +»ì F 85:e +»í F 86:e +»î F 87:e +»ï F 88:e +»ð F 89:e +»ñ F 90:e +»ò F 91:e +»ó F 92:e +»ô F 93:e +»õ F 94:e +»ö F 95:e +»÷ F 96:e +»ø F 97:e +»ù F 98:e +»ú F 99:e +»û F 100:e +»ü F 101:e +»ý F 102:e +»þ F 103:e +¼¡ F 104:e +¼¢ F 105:e +¼£ F 106:e +¼¤ F 107:e +¼¥ F 108:e +¼¦ F 109:e +¼§ F 110:e +¼¨ F 111:e +¼© F 112:e +¼ª F 113:e +¼« F 114:e +¼¬ F 115:e +¼­ F 116:e +¼® F 117:e +¼¯ F 118:e +¼° F 119:e +¼± F 120:e +¼² F 121:e +¼³ F 122:e +¼´ F 123:e +¼µ F 124:e +¼¶ F 125:e +¼· F 126:e +¼¸ F 127:e +¼¹ F 128:e +¼º F 129:e +¼» F 130:e +¼¼ F 131:e +¼½ F 132:e +¼¾ F 133:e +¼¿ F 134:e +¼À F 135:e +¼Á F 136:e +¼Â F 137:e +¼Ã F 138:e +¼Ä F 139:e +¼Å F 140:e +¼Æ F 141:e +¼Ç F 142:e +¼È F 143:e +¼É F 144:e +¼Ê F 145:e +¼Ë F 146:e +¼Ì F 147:e +¼Í F 148:e +¼Î F 149:e +¼Ï F 150:e +¼Ð F 151:e +¼Ñ F 152:e +¼Ò F 153:e +¼Ó F 154:e +¼Ô F 155:e +¼Õ F 156:e +¼Ö F 157:e +¼× F 158:e +¼Ø F 159:e +¼Ù F 160:e +¼Ú F 161:e +¼Û F 162:e +¼Ü F 163:e +¼Ý F 164:e +¼Þ F 165:e +¼ß F 166:e +¼à F 167:e +¼á F 168:e +¼â F 169:e +¼ã F 170:e +¼ä F 171:e +¼å F 172:e +¼æ F 173:e +¼ç F 174:e +¼è F 175:e +¼é F 176:e +¼ê F 177:e +¼ë F 178:e +¼ì F 179:e +¼í F 180:e +¼î F 181:e +¼ï F 182:e +¼ð F 183:e +¼ñ F 184:e +¼ò F 185:e +¼ó F 186:e +¼ô F 187:e +¼õ F 188:e +¼ö F 189:e +¼÷ F 190:e +¼ø F 191:e +¼ù F 192:e +¼ú F 193:e +¼û F 194:e +¼ü F 195:e +¼ý F 196:e +¼þ F 197:e +½¡ F 198:e +½¢ F 199:e +½£ F 200:e +½¤ F 201:e +½¥ F 202:e +½¦ F 203:e +½§ F 204:e +½¨ F 205:e +½© F 206:e +½ª F 207:e +½« F 208:e +½¬ F 209:e +½­ F 210:e +½® F 211:e +½¯ F 212:e +½° F 213:e +½± F 214:e +½² F 215:e +½³ F 216:e +½´ F 217:e +½µ F 218:e +½¶ F 219:e +½· F 220:e +½¸ F 221:e +½¹ F 222:e +½º F 223:e +½» F 224:e +½¼ F 225:e +½½ F 226:e +½¾ F 227:e +½¿ F 228:e +½À F 229:e +½Á F 230:e +½Â F 231:e +½Ã F 232:e +½Ä F 233:e +½Å F 234:e +½Æ F 235:e +½Ç F 236:e +½È F 237:e +½É F 238:e +½Ê F 239:e +½Ë F 240:e +½Ì F 241:e +½Í F 242:e +½Î F 243:e +½Ï F 244:e +½Ð F 245:e +½Ñ F 246:e +½Ò F 247:e +½Ó F 248:e +½Ô F 249:e +½Õ F 250:e +½Ö F 251:e +½× F 252:e +½Ø F 253:e +½Ù F 254:e +½Ú F 255:e +½Û F 0:f +½Ü F 1:f +½Ý F 2:f +½Þ F 3:f +½ß F 4:f +½à F 5:f +½á F 6:f +½â F 7:f +½ã F 8:f +½ä F 9:f +½å F 10:f +½æ F 11:f +½ç F 12:f +½è F 13:f +½é F 14:f +½ê F 15:f +½ë F 16:f +½ì F 17:f +½í F 18:f +½î F 19:f +½ï F 20:f +½ð F 21:f +½ñ F 22:f +½ò F 23:f +½ó F 24:f +½ô F 25:f +½õ F 26:f +½ö F 27:f +½÷ F 28:f +½ø F 29:f +½ù F 30:f +½ú F 31:f +½û F 32:f +½ü F 33:f +½ý F 34:f +½þ F 35:f +¾¡ F 36:f +¾¢ F 37:f +¾£ F 38:f +¾¤ F 39:f +¾¥ F 40:f +¾¦ F 41:f +¾§ F 42:f +¾¨ F 43:f +¾© F 44:f +¾ª F 45:f +¾« F 46:f +¾¬ F 47:f +¾­ F 48:f +¾® F 49:f +¾¯ F 50:f +¾° F 51:f +¾± F 52:f +¾² F 53:f +¾³ F 54:f +¾´ F 55:f +¾µ F 56:f +¾¶ F 57:f +¾· F 58:f +¾¸ F 59:f +¾¹ F 60:f +¾º F 61:f +¾» F 62:f +¾¼ F 63:f +¾½ F 64:f +¾¾ F 65:f +¾¿ F 66:f +¾À F 67:f +¾Á F 68:f +¾Â F 69:f +¾Ã F 70:f +¾Ä F 71:f +¾Å F 72:f +¾Æ F 73:f +¾Ç F 74:f +¾È F 75:f +¾É F 76:f +¾Ê F 77:f +¾Ë F 78:f +¾Ì F 79:f +¾Í F 80:f +¾Î F 81:f +¾Ï F 82:f +¾Ð F 83:f +¾Ñ F 84:f +¾Ò F 85:f +¾Ó F 86:f +¾Ô F 87:f +¾Õ F 88:f +¾Ö F 89:f +¾× F 90:f +¾Ø F 91:f +¾Ù F 92:f +¾Ú F 93:f +¾Û F 94:f +¾Ü F 95:f +¾Ý F 96:f +¾Þ F 97:f +¾ß F 98:f +¾à F 99:f +¾á F 100:f +¾â F 101:f +¾ã F 102:f +¾ä F 103:f +¾å F 104:f +¾æ F 105:f +¾ç F 106:f +¾è F 107:f +¾é F 108:f +¾ê F 109:f +¾ë F 110:f +¾ì F 111:f +¾í F 112:f +¾î F 113:f +¾ï F 114:f +¾ð F 115:f +¾ñ F 116:f +¾ò F 117:f +¾ó F 118:f +¾ô F 119:f +¾õ F 120:f +¾ö F 121:f +¾÷ F 122:f +¾ø F 123:f +¾ù F 124:f +¾ú F 125:f +¾û F 126:f +¾ü F 127:f +¾ý F 128:f +¾þ F 129:f +¿¡ F 130:f +¿¢ F 131:f +¿£ F 132:f +¿¤ F 133:f +¿¥ F 134:f +¿¦ F 135:f +¿§ F 136:f +¿¨ F 137:f +¿© F 138:f +¿ª F 139:f +¿« F 140:f +¿¬ F 141:f +¿­ F 142:f +¿® F 143:f +¿¯ F 144:f +¿° F 145:f +¿± F 146:f +¿² F 147:f +¿³ F 148:f +¿´ F 149:f +¿µ F 150:f +¿¶ F 151:f +¿· F 152:f +¿¸ F 153:f +¿¹ F 154:f +¿º F 155:f +¿» F 156:f +¿¼ F 157:f +¿½ F 158:f +¿¾ F 159:f +¿¿ F 160:f +¿À F 161:f +¿Á F 162:f +¿Â F 163:f +¿Ã F 164:f +¿Ä F 165:f +¿Å F 166:f +¿Æ F 167:f +¿Ç F 168:f +¿È F 169:f +¿É F 170:f +¿Ê F 171:f +¿Ë F 172:f +¿Ì F 173:f +¿Í F 174:f +¿Î F 175:f +¿Ï F 176:f +¿Ð F 177:f +¿Ñ F 178:f +¿Ò F 179:f +¿Ó F 180:f +¿Ô F 181:f +¿Õ F 182:f +¿Ö F 183:f +¿× F 184:f +¿Ø F 185:f +¿Ù F 186:f +¿Ú F 187:f +¿Û F 188:f +¿Ü F 189:f +¿Ý F 190:f +¿Þ F 191:f +¿ß F 192:f +¿à F 193:f +¿á F 194:f +¿â F 195:f +¿ã F 196:f +¿ä F 197:f +¿å F 198:f +¿æ F 199:f +¿ç F 200:f +¿è F 201:f +¿é F 202:f +¿ê F 203:f +¿ë F 204:f +¿ì F 205:f +¿í F 206:f +¿î F 207:f +¿ï F 208:f +¿ð F 209:f +¿ñ F 210:f +¿ò F 211:f +¿ó F 212:f +¿ô F 213:f +¿õ F 214:f +¿ö F 215:f +¿÷ F 216:f +¿ø F 217:f +¿ù F 218:f +¿ú F 219:f +¿û F 220:f +¿ü F 221:f +¿ý F 222:f +¿þ F 223:f +À¡ F 224:f +À¢ F 225:f +À£ F 226:f +À¤ F 227:f +À¥ F 228:f +À¦ F 229:f +À§ F 230:f +À¨ F 231:f +À© F 232:f +Àª F 233:f +À« F 234:f +À¬ F 235:f +À­ F 236:f +À® F 237:f +À¯ F 238:f +À° F 239:f +À± F 240:f +À² F 241:f +À³ F 242:f +À´ F 243:f +Àµ F 244:f +À¶ F 245:f +À· F 246:f +À¸ F 247:f +À¹ F 248:f +Àº F 249:f +À» F 250:f +À¼ F 251:f +À½ F 252:f +À¾ F 253:f +À¿ F 254:f +ÀÀ F 255:f +ÀÁ F 0:g +À F 1:g +Àà F 2:g +ÀÄ F 3:g +ÀÅ F 4:g +ÀÆ F 5:g +ÀÇ F 6:g +ÀÈ F 7:g +ÀÉ F 8:g +ÀÊ F 9:g +ÀË F 10:g +ÀÌ F 11:g +ÀÍ F 12:g +ÀÎ F 13:g +ÀÏ F 14:g +ÀÐ F 15:g +ÀÑ F 16:g +ÀÒ F 17:g +ÀÓ F 18:g +ÀÔ F 19:g +ÀÕ F 20:g +ÀÖ F 21:g +À× F 22:g +ÀØ F 23:g +ÀÙ F 24:g +ÀÚ F 25:g +ÀÛ F 26:g +ÀÜ F 27:g +ÀÝ F 28:g +ÀÞ F 29:g +Àß F 30:g +Àà F 31:g +Àá F 32:g +Àâ F 33:g +Àã F 34:g +Àä F 35:g +Àå F 36:g +Àæ F 37:g +Àç F 38:g +Àè F 39:g +Àé F 40:g +Àê F 41:g +Àë F 42:g +Àì F 43:g +Àí F 44:g +Àî F 45:g +Àï F 46:g +Àð F 47:g +Àñ F 48:g +Àò F 49:g +Àó F 50:g +Àô F 51:g +Àõ F 52:g +Àö F 53:g +À÷ F 54:g +Àø F 55:g +Àù F 56:g +Àú F 57:g +Àû F 58:g +Àü F 59:g +Àý F 60:g +Àþ F 61:g +Á¡ F 62:g +Á¢ F 63:g +Á£ F 64:g +Á¤ F 65:g +Á¥ F 66:g +Á¦ F 67:g +Á§ F 68:g +Á¨ F 69:g +Á© F 70:g +Áª F 71:g +Á« F 72:g +Á¬ F 73:g +Á­ F 74:g +Á® F 75:g +Á¯ F 76:g +Á° F 77:g +Á± F 78:g +Á² F 79:g +Á³ F 80:g +Á´ F 81:g +Áµ F 82:g +Á¶ F 83:g +Á· F 84:g +Á¸ F 85:g +Á¹ F 86:g +Áº F 87:g +Á» F 88:g +Á¼ F 89:g +Á½ F 90:g +Á¾ F 91:g +Á¿ F 92:g +ÁÀ F 93:g +ÁÁ F 94:g +Á F 95:g +Áà F 96:g +ÁÄ F 97:g +ÁÅ F 98:g +ÁÆ F 99:g +ÁÇ F 100:g +ÁÈ F 101:g +ÁÉ F 102:g +ÁÊ F 103:g +ÁË F 104:g +ÁÌ F 105:g +ÁÍ F 106:g +ÁÎ F 107:g +ÁÏ F 108:g +ÁÐ F 109:g +ÁÑ F 110:g +ÁÒ F 111:g +ÁÓ F 112:g +ÁÔ F 113:g +ÁÕ F 114:g +ÁÖ F 115:g +Á× F 116:g +ÁØ F 117:g +ÁÙ F 118:g +ÁÚ F 119:g +ÁÛ F 120:g +ÁÜ F 121:g +ÁÝ F 122:g +ÁÞ F 123:g +Áß F 124:g +Áà F 125:g +Áá F 126:g +Áâ F 127:g +Áã F 128:g +Áä F 129:g +Áå F 130:g +Áæ F 131:g +Áç F 132:g +Áè F 133:g +Áé F 134:g +Áê F 135:g +Áë F 136:g +Áì F 137:g +Áí F 138:g +Áî F 139:g +Áï F 140:g +Áð F 141:g +Áñ F 142:g +Áò F 143:g +Áó F 144:g +Áô F 145:g +Áõ F 146:g +Áö F 147:g +Á÷ F 148:g +Áø F 149:g +Áù F 150:g +Áú F 151:g +Áû F 152:g +Áü F 153:g +Áý F 154:g +Áþ F 155:g +¡ F 156:g +¢ F 157:g +£ F 158:g +¤ F 159:g +Â¥ F 160:g +¦ F 161:g +§ F 162:g +¨ F 163:g +© F 164:g +ª F 165:g +« F 166:g +¬ F 167:g +­ F 168:g +® F 169:g +¯ F 170:g +° F 171:g +± F 172:g +² F 173:g +³ F 174:g +´ F 175:g +µ F 176:g +¶ F 177:g +· F 178:g +¸ F 179:g +¹ F 180:g +º F 181:g +» F 182:g +¼ F 183:g +½ F 184:g +¾ F 185:g +¿ F 186:g +ÂÀ F 187:g +ÂÁ F 188:g + F 189:g +Âà F 190:g +ÂÄ F 191:g +ÂÅ F 192:g +ÂÆ F 193:g +ÂÇ F 194:g +ÂÈ F 195:g +ÂÉ F 196:g +ÂÊ F 197:g +ÂË F 198:g +ÂÌ F 199:g +ÂÍ F 200:g +ÂÎ F 201:g +ÂÏ F 202:g +ÂÐ F 203:g +ÂÑ F 204:g +ÂÒ F 205:g +ÂÓ F 206:g +ÂÔ F 207:g +ÂÕ F 208:g +ÂÖ F 209:g +Â× F 210:g +ÂØ F 211:g +ÂÙ F 212:g +ÂÚ F 213:g +ÂÛ F 214:g +ÂÜ F 215:g +ÂÝ F 216:g +ÂÞ F 217:g +Âß F 218:g +Âà F 219:g +Âá F 220:g +Ââ F 221:g +Âã F 222:g +Âä F 223:g +Âå F 224:g +Âæ F 225:g +Âç F 226:g +Âè F 227:g +Âé F 228:g +Âê F 229:g +Âë F 230:g +Âì F 231:g +Âí F 232:g +Âî F 233:g +Âï F 234:g +Âð F 235:g +Âñ F 236:g +Âò F 237:g +Âó F 238:g +Âô F 239:g +Âõ F 240:g +Âö F 241:g +Â÷ F 242:g +Âø F 243:g +Âù F 244:g +Âú F 245:g +Âû F 246:g +Âü F 247:g +Âý F 248:g +Âþ F 249:g +á F 250:g +â F 251:g +ã F 252:g +ä F 253:g +Ã¥ F 254:g +æ F 255:g +ç F 0:h +è F 1:h +é F 2:h +ê F 3:h +ë F 4:h +ì F 5:h +í F 6:h +î F 7:h +ï F 8:h +ð F 9:h +ñ F 10:h +ò F 11:h +ó F 12:h +ô F 13:h +õ F 14:h +ö F 15:h +÷ F 16:h +ø F 17:h +ù F 18:h +ú F 19:h +û F 20:h +ü F 21:h +ý F 22:h +þ F 23:h +ÿ F 24:h +ÃÀ F 25:h +ÃÁ F 26:h +àF 27:h +Ãà F 28:h +ÃÄ F 29:h +ÃÅ F 30:h +ÃÆ F 31:h +ÃÇ F 32:h +ÃÈ F 33:h +ÃÉ F 34:h +ÃÊ F 35:h +ÃË F 36:h +ÃÌ F 37:h +ÃÍ F 38:h +ÃÎ F 39:h +ÃÏ F 40:h +ÃÐ F 41:h +ÃÑ F 42:h +ÃÒ F 43:h +ÃÓ F 44:h +ÃÔ F 45:h +ÃÕ F 46:h +ÃÖ F 47:h +Ã× F 48:h +ÃØ F 49:h +ÃÙ F 50:h +ÃÚ F 51:h +ÃÛ F 52:h +ÃÜ F 53:h +ÃÝ F 54:h +ÃÞ F 55:h +Ãß F 56:h +Ãà F 57:h +Ãá F 58:h +Ãâ F 59:h +Ãã F 60:h +Ãä F 61:h +Ãå F 62:h +Ãæ F 63:h +Ãç F 64:h +Ãè F 65:h +Ãé F 66:h +Ãê F 67:h +Ãë F 68:h +Ãì F 69:h +Ãí F 70:h +Ãî F 71:h +Ãï F 72:h +Ãð F 73:h +Ãñ F 74:h +Ãò F 75:h +Ãó F 76:h +Ãô F 77:h +Ãõ F 78:h +Ãö F 79:h +Ã÷ F 80:h +Ãø F 81:h +Ãù F 82:h +Ãú F 83:h +Ãû F 84:h +Ãü F 85:h +Ãý F 86:h +Ãþ F 87:h +Ä¡ F 88:h +Ä¢ F 89:h +Ä£ F 90:h +Ĥ F 91:h +Ä¥ F 92:h +Ħ F 93:h +ħ F 94:h +Ĩ F 95:h +Ä© F 96:h +Ī F 97:h +Ä« F 98:h +Ĭ F 99:h +Ä­ F 100:h +Ä® F 101:h +į F 102:h +Ä° F 103:h +ı F 104:h +IJ F 105:h +ij F 106:h +Ä´ F 107:h +ĵ F 108:h +Ķ F 109:h +Ä· F 110:h +ĸ F 111:h +Ĺ F 112:h +ĺ F 113:h +Ä» F 114:h +ļ F 115:h +Ľ F 116:h +ľ F 117:h +Ä¿ F 118:h +ÄÀ F 119:h +ÄÁ F 120:h +Ä F 121:h +Äà F 122:h +ÄÄ F 123:h +ÄÅ F 124:h +ÄÆ F 125:h +ÄÇ F 126:h +ÄÈ F 127:h +ÄÉ F 128:h +ÄÊ F 129:h +ÄË F 130:h +ÄÌ F 131:h +ÄÍ F 132:h +ÄÎ F 133:h +ÄÏ F 134:h +ÄÐ F 135:h +ÄÑ F 136:h +ÄÒ F 137:h +ÄÓ F 138:h +ÄÔ F 139:h +ÄÕ F 140:h +ÄÖ F 141:h +Ä× F 142:h +ÄØ F 143:h +ÄÙ F 144:h +ÄÚ F 145:h +ÄÛ F 146:h +ÄÜ F 147:h +ÄÝ F 148:h +ÄÞ F 149:h +Äß F 150:h +Äà F 151:h +Äá F 152:h +Äâ F 153:h +Äã F 154:h +Ää F 155:h +Äå F 156:h +Äæ F 157:h +Äç F 158:h +Äè F 159:h +Äé F 160:h +Äê F 161:h +Äë F 162:h +Äì F 163:h +Äí F 164:h +Äî F 165:h +Äï F 166:h +Äð F 167:h +Äñ F 168:h +Äò F 169:h +Äó F 170:h +Äô F 171:h +Äõ F 172:h +Äö F 173:h +Ä÷ F 174:h +Äø F 175:h +Äù F 176:h +Äú F 177:h +Äû F 178:h +Äü F 179:h +Äý F 180:h +Äþ F 181:h +Å¡ F 182:h +Å¢ F 183:h +Å£ F 184:h +Ť F 185:h +Å¥ F 186:h +Ŧ F 187:h +ŧ F 188:h +Ũ F 189:h +Å© F 190:h +Ū F 191:h +Å« F 192:h +Ŭ F 193:h +Å­ F 194:h +Å® F 195:h +ů F 196:h +Å° F 197:h +ű F 198:h +Ų F 199:h +ų F 200:h +Å´ F 201:h +ŵ F 202:h +Ŷ F 203:h +Å· F 204:h +Ÿ F 205:h +Ź F 206:h +ź F 207:h +Å» F 208:h +ż F 209:h +Ž F 210:h +ž F 211:h +Å¿ F 212:h +ÅÀ F 213:h +ÅÁ F 214:h +Å F 215:h +Åà F 216:h +ÅÄ F 217:h +ÅÅ F 218:h +ÅÆ F 219:h +ÅÇ F 220:h +ÅÈ F 221:h +ÅÉ F 222:h +ÅÊ F 223:h +ÅË F 224:h +ÅÌ F 225:h +ÅÍ F 226:h +ÅÎ F 227:h +ÅÏ F 228:h +ÅÐ F 229:h +ÅÑ F 230:h +ÅÒ F 231:h +ÅÓ F 232:h +ÅÔ F 233:h +ÅÕ F 234:h +ÅÖ F 235:h +Å× F 236:h +ÅØ F 237:h +ÅÙ F 238:h +ÅÚ F 239:h +ÅÛ F 240:h +ÅÜ F 241:h +ÅÝ F 242:h +ÅÞ F 243:h +Åß F 244:h +Åà F 245:h +Åá F 246:h +Åâ F 247:h +Åã F 248:h +Åä F 249:h +Åå F 250:h +Åæ F 251:h +Åç F 252:h +Åè F 253:h +Åé F 254:h +Åê F 255:h +Åë F 0:i +Åì F 1:i +Åí F 2:i +Åî F 3:i +Åï F 4:i +Åð F 5:i +Åñ F 6:i +Åò F 7:i +Åó F 8:i +Åô F 9:i +Åõ F 10:i +Åö F 11:i +Å÷ F 12:i +Åø F 13:i +Åù F 14:i +Åú F 15:i +Åû F 16:i +Åü F 17:i +Åý F 18:i +Åþ F 19:i +Æ¡ F 20:i +Æ¢ F 21:i +Æ£ F 22:i +Ƥ F 23:i +Æ¥ F 24:i +Ʀ F 25:i +Ƨ F 26:i +ƨ F 27:i +Æ© F 28:i +ƪ F 29:i +Æ« F 30:i +Ƭ F 31:i +Æ­ F 32:i +Æ® F 33:i +Ư F 34:i +Æ° F 35:i +Ʊ F 36:i +Ʋ F 37:i +Ƴ F 38:i +Æ´ F 39:i +Ƶ F 40:i +ƶ F 41:i +Æ· F 42:i +Ƹ F 43:i +ƹ F 44:i +ƺ F 45:i +Æ» F 46:i +Ƽ F 47:i +ƽ F 48:i +ƾ F 49:i +Æ¿ F 50:i +ÆÀ F 51:i +ÆÁ F 52:i +Æ F 53:i +Æà F 54:i +ÆÄ F 55:i +ÆÅ F 56:i +ÆÆ F 57:i +ÆÇ F 58:i +ÆÈ F 59:i +ÆÉ F 60:i +ÆÊ F 61:i +ÆË F 62:i +ÆÌ F 63:i +ÆÍ F 64:i +ÆÎ F 65:i +ÆÏ F 66:i +ÆÐ F 67:i +ÆÑ F 68:i +ÆÒ F 69:i +ÆÓ F 70:i +ÆÔ F 71:i +ÆÕ F 72:i +ÆÖ F 73:i +Æ× F 74:i +ÆØ F 75:i +ÆÙ F 76:i +ÆÚ F 77:i +ÆÛ F 78:i +ÆÜ F 79:i +ÆÝ F 80:i +ÆÞ F 81:i +Æß F 82:i +Æà F 83:i +Æá F 84:i +Æâ F 85:i +Æã F 86:i +Æä F 87:i +Æå F 88:i +Ææ F 89:i +Æç F 90:i +Æè F 91:i +Æé F 92:i +Æê F 93:i +Æë F 94:i +Æì F 95:i +Æí F 96:i +Æî F 97:i +Æï F 98:i +Æð F 99:i +Æñ F 100:i +Æò F 101:i +Æó F 102:i +Æô F 103:i +Æõ F 104:i +Æö F 105:i +Æ÷ F 106:i +Æø F 107:i +Æù F 108:i +Æú F 109:i +Æû F 110:i +Æü F 111:i +Æý F 112:i +Æþ F 113:i +Ç¡ F 114:i +Ç¢ F 115:i +Ç£ F 116:i +Ǥ F 117:i +Ç¥ F 118:i +Ǧ F 119:i +ǧ F 120:i +Ǩ F 121:i +Ç© F 122:i +Ǫ F 123:i +Ç« F 124:i +Ǭ F 125:i +Ç­ F 126:i +Ç® F 127:i +ǯ F 128:i +Ç° F 129:i +DZ F 130:i +Dz F 131:i +dz F 132:i +Ç´ F 133:i +ǵ F 134:i +Ƕ F 135:i +Ç· F 136:i +Ǹ F 137:i +ǹ F 138:i +Ǻ F 139:i +Ç» F 140:i +Ǽ F 141:i +ǽ F 142:i +Ǿ F 143:i +Ç¿ F 144:i +ÇÀ F 145:i +ÇÁ F 146:i +Ç F 147:i +Çà F 148:i +ÇÄ F 149:i +ÇÅ F 150:i +ÇÆ F 151:i +ÇÇ F 152:i +ÇÈ F 153:i +ÇÉ F 154:i +ÇÊ F 155:i +ÇË F 156:i +ÇÌ F 157:i +ÇÍ F 158:i +ÇÎ F 159:i +ÇÏ F 160:i +ÇÐ F 161:i +ÇÑ F 162:i +ÇÒ F 163:i +ÇÓ F 164:i +ÇÔ F 165:i +ÇÕ F 166:i +ÇÖ F 167:i +Ç× F 168:i +ÇØ F 169:i +ÇÙ F 170:i +ÇÚ F 171:i +ÇÛ F 172:i +ÇÜ F 173:i +ÇÝ F 174:i +ÇÞ F 175:i +Çß F 176:i +Çà F 177:i +Çá F 178:i +Çâ F 179:i +Çã F 180:i +Çä F 181:i +Çå F 182:i +Çæ F 183:i +Çç F 184:i +Çè F 185:i +Çé F 186:i +Çê F 187:i +Çë F 188:i +Çì F 189:i +Çí F 190:i +Çî F 191:i +Çï F 192:i +Çð F 193:i +Çñ F 194:i +Çò F 195:i +Çó F 196:i +Çô F 197:i +Çõ F 198:i +Çö F 199:i +Ç÷ F 200:i +Çø F 201:i +Çù F 202:i +Çú F 203:i +Çû F 204:i +Çü F 205:i +Çý F 206:i +Çþ F 207:i +È¡ F 208:i +È¢ F 209:i +È£ F 210:i +Ȥ F 211:i +È¥ F 212:i +Ȧ F 213:i +ȧ F 214:i +Ȩ F 215:i +È© F 216:i +Ȫ F 217:i +È« F 218:i +Ȭ F 219:i +È­ F 220:i +È® F 221:i +ȯ F 222:i +È° F 223:i +ȱ F 224:i +Ȳ F 225:i +ȳ F 226:i +È´ F 227:i +ȵ F 228:i +ȶ F 229:i +È· F 230:i +ȸ F 231:i +ȹ F 232:i +Ⱥ F 233:i +È» F 234:i +ȼ F 235:i +Ƚ F 236:i +Ⱦ F 237:i +È¿ F 238:i +ÈÀ F 239:i +ÈÁ F 240:i +È F 241:i +Èà F 242:i +ÈÄ F 243:i +ÈÅ F 244:i +ÈÆ F 245:i +ÈÇ F 246:i +ÈÈ F 247:i +ÈÉ F 248:i +ÈÊ F 249:i +ÈË F 250:i +ÈÌ F 251:i +ÈÍ F 252:i +ÈÎ F 253:i +ÈÏ F 254:i +ÈÐ F 255:i +ÈÑ F 0:j +ÈÒ F 1:j +ÈÓ F 2:j +ÈÔ F 3:j +ÈÕ F 4:j +ÈÖ F 5:j +È× F 6:j +ÈØ F 7:j +ÈÙ F 8:j +ÈÚ F 9:j +ÈÛ F 10:j +ÈÜ F 11:j +ÈÝ F 12:j +ÈÞ F 13:j +Èß F 14:j +Èà F 15:j +Èá F 16:j +Èâ F 17:j +Èã F 18:j +Èä F 19:j +Èå F 20:j +Èæ F 21:j +Èç F 22:j +Èè F 23:j +Èé F 24:j +Èê F 25:j +Èë F 26:j +Èì F 27:j +Èí F 28:j +Èî F 29:j +Èï F 30:j +Èð F 31:j +Èñ F 32:j +Èò F 33:j +Èó F 34:j +Èô F 35:j +Èõ F 36:j +Èö F 37:j +È÷ F 38:j +Èø F 39:j +Èù F 40:j +Èú F 41:j +Èû F 42:j +Èü F 43:j +Èý F 44:j +Èþ F 45:j +É¡ F 46:j +É¢ F 47:j +É£ F 48:j +ɤ F 49:j +É¥ F 50:j +ɦ F 51:j +ɧ F 52:j +ɨ F 53:j +É© F 54:j +ɪ F 55:j +É« F 56:j +ɬ F 57:j +É­ F 58:j +É® F 59:j +ɯ F 60:j +É° F 61:j +ɱ F 62:j +ɲ F 63:j +ɳ F 64:j +É´ F 65:j +ɵ F 66:j +ɶ F 67:j +É· F 68:j +ɸ F 69:j +ɹ F 70:j +ɺ F 71:j +É» F 72:j +ɼ F 73:j +ɽ F 74:j +ɾ F 75:j +É¿ F 76:j +ÉÀ F 77:j +ÉÁ F 78:j +É F 79:j +Éà F 80:j +ÉÄ F 81:j +ÉÅ F 82:j +ÉÆ F 83:j +ÉÇ F 84:j +ÉÈ F 85:j +ÉÉ F 86:j +ÉÊ F 87:j +ÉË F 88:j +ÉÌ F 89:j +ÉÍ F 90:j +ÉÎ F 91:j +ÉÏ F 92:j +ÉÐ F 93:j +ÉÑ F 94:j +ÉÒ F 95:j +ÉÓ F 96:j +ÉÔ F 97:j +ÉÕ F 98:j +ÉÖ F 99:j +É× F 100:j +ÉØ F 101:j +ÉÙ F 102:j +ÉÚ F 103:j +ÉÛ F 104:j +ÉÜ F 105:j +ÉÝ F 106:j +ÉÞ F 107:j +Éß F 108:j +Éà F 109:j +Éá F 110:j +Éâ F 111:j +Éã F 112:j +Éä F 113:j +Éå F 114:j +Éæ F 115:j +Éç F 116:j +Éè F 117:j +Éé F 118:j +Éê F 119:j +Éë F 120:j +Éì F 121:j +Éí F 122:j +Éî F 123:j +Éï F 124:j +Éð F 125:j +Éñ F 126:j +Éò F 127:j +Éó F 128:j +Éô F 129:j +Éõ F 130:j +Éö F 131:j +É÷ F 132:j +Éø F 133:j +Éù F 134:j +Éú F 135:j +Éû F 136:j +Éü F 137:j +Éý F 138:j +Éþ F 139:j +Ê¡ F 140:j +Ê¢ F 141:j +Ê£ F 142:j +ʤ F 143:j +Ê¥ F 144:j +ʦ F 145:j +ʧ F 146:j +ʨ F 147:j +Ê© F 148:j +ʪ F 149:j +Ê« F 150:j +ʬ F 151:j +Ê­ F 152:j +Ê® F 153:j +ʯ F 154:j +Ê° F 155:j +ʱ F 156:j +ʲ F 157:j +ʳ F 158:j +Ê´ F 159:j +ʵ F 160:j +ʶ F 161:j +Ê· F 162:j +ʸ F 163:j +ʹ F 164:j +ʺ F 165:j +Ê» F 166:j +ʼ F 167:j +ʽ F 168:j +ʾ F 169:j +Ê¿ F 170:j +ÊÀ F 171:j +ÊÁ F 172:j +Ê F 173:j +Êà F 174:j +ÊÄ F 175:j +ÊÅ F 176:j +ÊÆ F 177:j +ÊÇ F 178:j +ÊÈ F 179:j +ÊÉ F 180:j +ÊÊ F 181:j +ÊË F 182:j +ÊÌ F 183:j +ÊÍ F 184:j +ÊÎ F 185:j +ÊÏ F 186:j +ÊÐ F 187:j +ÊÑ F 188:j +ÊÒ F 189:j +ÊÓ F 190:j +ÊÔ F 191:j +ÊÕ F 192:j +ÊÖ F 193:j +Ê× F 194:j +ÊØ F 195:j +ÊÙ F 196:j +ÊÚ F 197:j +ÊÛ F 198:j +ÊÜ F 199:j +ÊÝ F 200:j +ÊÞ F 201:j +Êß F 202:j +Êà F 203:j +Êá F 204:j +Êâ F 205:j +Êã F 206:j +Êä F 207:j +Êå F 208:j +Êæ F 209:j +Êç F 210:j +Êè F 211:j +Êé F 212:j +Êê F 213:j +Êë F 214:j +Êì F 215:j +Êí F 216:j +Êî F 217:j +Êï F 218:j +Êð F 219:j +Êñ F 220:j +Êò F 221:j +Êó F 222:j +Êô F 223:j +Êõ F 224:j +Êö F 225:j +Ê÷ F 226:j +Êø F 227:j +Êù F 228:j +Êú F 229:j +Êû F 230:j +Êü F 231:j +Êý F 232:j +Êþ F 233:j +Ë¡ F 234:j +Ë¢ F 235:j +Ë£ F 236:j +ˤ F 237:j +Ë¥ F 238:j +˦ F 239:j +˧ F 240:j +˨ F 241:j +Ë© F 242:j +˪ F 243:j +Ë« F 244:j +ˬ F 245:j +Ë­ F 246:j +Ë® F 247:j +˯ F 248:j +Ë° F 249:j +˱ F 250:j +˲ F 251:j +˳ F 252:j +Ë´ F 253:j +˵ F 254:j +˶ F 255:j +Ë· F 0:k +˸ F 1:k +˹ F 2:k +˺ F 3:k +Ë» F 4:k +˼ F 5:k +˽ F 6:k +˾ F 7:k +Ë¿ F 8:k +ËÀ F 9:k +ËÁ F 10:k +Ë F 11:k +Ëà F 12:k +ËÄ F 13:k +ËÅ F 14:k +ËÆ F 15:k +ËÇ F 16:k +ËÈ F 17:k +ËÉ F 18:k +ËÊ F 19:k +ËË F 20:k +ËÌ F 21:k +ËÍ F 22:k +ËÎ F 23:k +ËÏ F 24:k +ËÐ F 25:k +ËÑ F 26:k +ËÒ F 27:k +ËÓ F 28:k +ËÔ F 29:k +ËÕ F 30:k +ËÖ F 31:k +Ë× F 32:k +ËØ F 33:k +ËÙ F 34:k +ËÚ F 35:k +ËÛ F 36:k +ËÜ F 37:k +ËÝ F 38:k +ËÞ F 39:k +Ëß F 40:k +Ëà F 41:k +Ëá F 42:k +Ëâ F 43:k +Ëã F 44:k +Ëä F 45:k +Ëå F 46:k +Ëæ F 47:k +Ëç F 48:k +Ëè F 49:k +Ëé F 50:k +Ëê F 51:k +Ëë F 52:k +Ëì F 53:k +Ëí F 54:k +Ëî F 55:k +Ëï F 56:k +Ëð F 57:k +Ëñ F 58:k +Ëò F 59:k +Ëó F 60:k +Ëô F 61:k +Ëõ F 62:k +Ëö F 63:k +Ë÷ F 64:k +Ëø F 65:k +Ëù F 66:k +Ëú F 67:k +Ëû F 68:k +Ëü F 69:k +Ëý F 70:k +Ëþ F 71:k +Ì¡ F 72:k +Ì¢ F 73:k +Ì£ F 74:k +̤ F 75:k +Ì¥ F 76:k +̦ F 77:k +̧ F 78:k +̨ F 79:k +Ì© F 80:k +̪ F 81:k +Ì« F 82:k +̬ F 83:k +Ì­ F 84:k +Ì® F 85:k +̯ F 86:k +Ì° F 87:k +̱ F 88:k +̲ F 89:k +̳ F 90:k +Ì´ F 91:k +̵ F 92:k +̶ F 93:k +Ì· F 94:k +̸ F 95:k +̹ F 96:k +̺ F 97:k +Ì» F 98:k +̼ F 99:k +̽ F 100:k +̾ F 101:k +Ì¿ F 102:k +ÌÀ F 103:k +ÌÁ F 104:k +Ì F 105:k +Ìà F 106:k +ÌÄ F 107:k +ÌÅ F 108:k +ÌÆ F 109:k +ÌÇ F 110:k +ÌÈ F 111:k +ÌÉ F 112:k +ÌÊ F 113:k +ÌË F 114:k +ÌÌ F 115:k +ÌÍ F 116:k +ÌÎ F 117:k +ÌÏ F 118:k +ÌÐ F 119:k +ÌÑ F 120:k +ÌÒ F 121:k +ÌÓ F 122:k +ÌÔ F 123:k +ÌÕ F 124:k +ÌÖ F 125:k +Ì× F 126:k +ÌØ F 127:k +ÌÙ F 128:k +ÌÚ F 129:k +ÌÛ F 130:k +ÌÜ F 131:k +ÌÝ F 132:k +ÌÞ F 133:k +Ìß F 134:k +Ìà F 135:k +Ìá F 136:k +Ìâ F 137:k +Ìã F 138:k +Ìä F 139:k +Ìå F 140:k +Ìæ F 141:k +Ìç F 142:k +Ìè F 143:k +Ìé F 144:k +Ìê F 145:k +Ìë F 146:k +Ìì F 147:k +Ìí F 148:k +Ìî F 149:k +Ìï F 150:k +Ìð F 151:k +Ìñ F 152:k +Ìò F 153:k +Ìó F 154:k +Ìô F 155:k +Ìõ F 156:k +Ìö F 157:k +Ì÷ F 158:k +Ìø F 159:k +Ìù F 160:k +Ìú F 161:k +Ìû F 162:k +Ìü F 163:k +Ìý F 164:k +Ìþ F 165:k +Í¡ F 166:k +Í¢ F 167:k +Í£ F 168:k +ͤ F 169:k +Í¥ F 170:k +ͦ F 171:k +ͧ F 172:k +ͨ F 173:k +Í© F 174:k +ͪ F 175:k +Í« F 176:k +ͬ F 177:k +Í­ F 178:k +Í® F 179:k +ͯ F 180:k +Í° F 181:k +ͱ F 182:k +Ͳ F 183:k +ͳ F 184:k +Í´ F 185:k +͵ F 186:k +Ͷ F 187:k +Í· F 188:k +͸ F 189:k +͹ F 190:k +ͺ F 191:k +Í» F 192:k +ͼ F 193:k +ͽ F 194:k +; F 195:k +Í¿ F 196:k +ÍÀ F 197:k +ÍÁ F 198:k +Í F 199:k +Íà F 200:k +ÍÄ F 201:k +ÍÅ F 202:k +ÍÆ F 203:k +ÍÇ F 204:k +ÍÈ F 205:k +ÍÉ F 206:k +ÍÊ F 207:k +ÍË F 208:k +ÍÌ F 209:k +ÍÍ F 210:k +ÍÎ F 211:k +ÍÏ F 212:k +ÍÐ F 213:k +ÍÑ F 214:k +ÍÒ F 215:k +ÍÓ F 216:k +ÍÔ F 217:k +ÍÕ F 218:k +ÍÖ F 219:k +Í× F 220:k +ÍØ F 221:k +ÍÙ F 222:k +ÍÚ F 223:k +ÍÛ F 224:k +ÍÜ F 225:k +ÍÝ F 226:k +ÍÞ F 227:k +Íß F 228:k +Íà F 229:k +Íá F 230:k +Íâ F 231:k +Íã F 232:k +Íä F 233:k +Íå F 234:k +Íæ F 235:k +Íç F 236:k +Íè F 237:k +Íé F 238:k +Íê F 239:k +Íë F 240:k +Íì F 241:k +Íí F 242:k +Íî F 243:k +Íï F 244:k +Íð F 245:k +Íñ F 246:k +Íò F 247:k +Íó F 248:k +Íô F 249:k +Íõ F 250:k +Íö F 251:k +Í÷ F 252:k +Íø F 253:k +Íù F 254:k +Íú F 255:k +Íû F 0:l +Íü F 1:l +Íý F 2:l +Íþ F 3:l +Ρ F 4:l +΢ F 5:l +Σ F 6:l +Τ F 7:l +Î¥ F 8:l +Φ F 9:l +Χ F 10:l +Ψ F 11:l +Ω F 12:l +Ϊ F 13:l +Ϋ F 14:l +ά F 15:l +έ F 16:l +ή F 17:l +ί F 18:l +ΰ F 19:l +α F 20:l +β F 21:l +γ F 22:l +δ F 23:l +ε F 24:l +ζ F 25:l +η F 26:l +θ F 27:l +ι F 28:l +κ F 29:l +λ F 30:l +μ F 31:l +ν F 32:l +ξ F 33:l +ο F 34:l +ÎÀ F 35:l +ÎÁ F 36:l +ΠF 37:l +Îà F 38:l +ÎÄ F 39:l +ÎÅ F 40:l +ÎÆ F 41:l +ÎÇ F 42:l +ÎÈ F 43:l +ÎÉ F 44:l +ÎÊ F 45:l +ÎË F 46:l +ÎÌ F 47:l +ÎÍ F 48:l +ÎÎ F 49:l +ÎÏ F 50:l +ÎÐ F 51:l +ÎÑ F 52:l +ÎÒ F 53:l +ÎÓ F 54:l +ÎÔ F 55:l +ÎÕ F 56:l +ÎÖ F 57:l +Î× F 58:l +ÎØ F 59:l +ÎÙ F 60:l +ÎÚ F 61:l +ÎÛ F 62:l +ÎÜ F 63:l +ÎÝ F 64:l +ÎÞ F 65:l +Îß F 66:l +Îà F 67:l +Îá F 68:l +Îâ F 69:l +Îã F 70:l +Îä F 71:l +Îå F 72:l +Îæ F 73:l +Îç F 74:l +Îè F 75:l +Îé F 76:l +Îê F 77:l +Îë F 78:l +Îì F 79:l +Îí F 80:l +Îî F 81:l +Îï F 82:l +Îð F 83:l +Îñ F 84:l +Îò F 85:l +Îó F 86:l +Îô F 87:l +Îõ F 88:l +Îö F 89:l +Î÷ F 90:l +Îø F 91:l +Îù F 92:l +Îú F 93:l +Îû F 94:l +Îü F 95:l +Îý F 96:l +Îþ F 97:l +Ï¡ F 98:l +Ï¢ F 99:l +Ï£ F 100:l +Ϥ F 101:l +Ï¥ F 102:l +Ϧ F 103:l +ϧ F 104:l +Ϩ F 105:l +Ï© F 106:l +Ϫ F 107:l +Ï« F 108:l +Ϭ F 109:l +Ï­ F 110:l +Ï® F 111:l +ϯ F 112:l +Ï° F 113:l +ϱ F 114:l +ϲ F 115:l +ϳ F 116:l +Ï´ F 117:l +ϵ F 118:l +϶ F 119:l +Ï· F 120:l +ϸ F 121:l +Ϲ F 122:l +Ϻ F 123:l +Ï» F 124:l +ϼ F 125:l +Ͻ F 126:l +Ͼ F 127:l +Ï¿ F 128:l +ÏÀ F 129:l +ÏÁ F 130:l +Ï F 131:l +Ïà F 132:l +ÏÄ F 133:l +ÏÅ F 134:l +ÏÆ F 135:l +ÏÇ F 136:l +ÏÈ F 137:l +ÏÉ F 138:l +ÏÊ F 139:l +ÏË F 140:l +ÏÌ F 141:l +ÏÍ F 142:l +ÏÎ F 143:l +ÏÏ F 144:l +ÏÐ F 145:l +ÏÑ F 146:l +ÏÒ F 147:l +ÏÓ F 148:l +С F 0:m +Т F 1:m +У F 2:m +Ф F 3:m +Ð¥ F 4:m +Ц F 5:m +Ч F 6:m +Ш F 7:m +Щ F 8:m +Ъ F 9:m +Ы F 10:m +Ь F 11:m +Э F 12:m +Ю F 13:m +Я F 14:m +а F 15:m +б F 16:m +в F 17:m +г F 18:m +д F 19:m +е F 20:m +ж F 21:m +з F 22:m +и F 23:m +й F 24:m +к F 25:m +л F 26:m +м F 27:m +н F 28:m +о F 29:m +п F 30:m +ÐÀ F 31:m +ÐÁ F 32:m +РF 33:m +Ðà F 34:m +ÐÄ F 35:m +ÐÅ F 36:m +ÐÆ F 37:m +ÐÇ F 38:m +ÐÈ F 39:m +ÐÉ F 40:m +ÐÊ F 41:m +ÐË F 42:m +ÐÌ F 43:m +ÐÍ F 44:m +ÐÎ F 45:m +ÐÏ F 46:m +ÐÐ F 47:m +ÐÑ F 48:m +ÐÒ F 49:m +ÐÓ F 50:m +ÐÔ F 51:m +ÐÕ F 52:m +ÐÖ F 53:m +Ð× F 54:m +ÐØ F 55:m +ÐÙ F 56:m +ÐÚ F 57:m +ÐÛ F 58:m +ÐÜ F 59:m +ÐÝ F 60:m +ÐÞ F 61:m +Ðß F 62:m +Ðà F 63:m +Ðá F 64:m +Ðâ F 65:m +Ðã F 66:m +Ðä F 67:m +Ðå F 68:m +Ðæ F 69:m +Ðç F 70:m +Ðè F 71:m +Ðé F 72:m +Ðê F 73:m +Ðë F 74:m +Ðì F 75:m +Ðí F 76:m +Ðî F 77:m +Ðï F 78:m +Ðð F 79:m +Ðñ F 80:m +Ðò F 81:m +Ðó F 82:m +Ðô F 83:m +Ðõ F 84:m +Ðö F 85:m +Ð÷ F 86:m +Ðø F 87:m +Ðù F 88:m +Ðú F 89:m +Ðû F 90:m +Ðü F 91:m +Ðý F 92:m +Ðþ F 93:m +Ñ¡ F 94:m +Ñ¢ F 95:m +Ñ£ F 96:m +Ѥ F 97:m +Ñ¥ F 98:m +Ѧ F 99:m +ѧ F 100:m +Ѩ F 101:m +Ñ© F 102:m +Ѫ F 103:m +Ñ« F 104:m +Ѭ F 105:m +Ñ­ F 106:m +Ñ® F 107:m +ѯ F 108:m +Ñ° F 109:m +ѱ F 110:m +Ѳ F 111:m +ѳ F 112:m +Ñ´ F 113:m +ѵ F 114:m +Ѷ F 115:m +Ñ· F 116:m +Ѹ F 117:m +ѹ F 118:m +Ѻ F 119:m +Ñ» F 120:m +Ѽ F 121:m +ѽ F 122:m +Ѿ F 123:m +Ñ¿ F 124:m +ÑÀ F 125:m +ÑÁ F 126:m +Ñ F 127:m +Ñà F 128:m +ÑÄ F 129:m +ÑÅ F 130:m +ÑÆ F 131:m +ÑÇ F 132:m +ÑÈ F 133:m +ÑÉ F 134:m +ÑÊ F 135:m +ÑË F 136:m +ÑÌ F 137:m +ÑÍ F 138:m +ÑÎ F 139:m +ÑÏ F 140:m +ÑÐ F 141:m +ÑÑ F 142:m +ÑÒ F 143:m +ÑÓ F 144:m +ÑÔ F 145:m +ÑÕ F 146:m +ÑÖ F 147:m +Ñ× F 148:m +ÑØ F 149:m +ÑÙ F 150:m +ÑÚ F 151:m +ÑÛ F 152:m +ÑÜ F 153:m +ÑÝ F 154:m +ÑÞ F 155:m +Ñß F 156:m +Ñà F 157:m +Ñá F 158:m +Ñâ F 159:m +Ñã F 160:m +Ñä F 161:m +Ñå F 162:m +Ñæ F 163:m +Ñç F 164:m +Ñè F 165:m +Ñé F 166:m +Ñê F 167:m +Ñë F 168:m +Ñì F 169:m +Ñí F 170:m +Ñî F 171:m +Ñï F 172:m +Ñð F 173:m +Ññ F 174:m +Ñò F 175:m +Ñó F 176:m +Ñô F 177:m +Ñõ F 178:m +Ñö F 179:m +Ñ÷ F 180:m +Ñø F 181:m +Ñù F 182:m +Ñú F 183:m +Ñû F 184:m +Ñü F 185:m +Ñý F 186:m +Ñþ F 187:m +Ò¡ F 188:m +Ò¢ F 189:m +Ò£ F 190:m +Ò¤ F 191:m +Ò¥ F 192:m +Ò¦ F 193:m +Ò§ F 194:m +Ò¨ F 195:m +Ò© F 196:m +Òª F 197:m +Ò« F 198:m +Ò¬ F 199:m +Ò­ F 200:m +Ò® F 201:m +Ò¯ F 202:m +Ò° F 203:m +Ò± F 204:m +Ò² F 205:m +Ò³ F 206:m +Ò´ F 207:m +Òµ F 208:m +Ò¶ F 209:m +Ò· F 210:m +Ò¸ F 211:m +Ò¹ F 212:m +Òº F 213:m +Ò» F 214:m +Ò¼ F 215:m +Ò½ F 216:m +Ò¾ F 217:m +Ò¿ F 218:m +ÒÀ F 219:m +ÒÁ F 220:m +Ò F 221:m +Òà F 222:m +ÒÄ F 223:m +ÒÅ F 224:m +ÒÆ F 225:m +ÒÇ F 226:m +ÒÈ F 227:m +ÒÉ F 228:m +ÒÊ F 229:m +ÒË F 230:m +ÒÌ F 231:m +ÒÍ F 232:m +ÒÎ F 233:m +ÒÏ F 234:m +ÒÐ F 235:m +ÒÑ F 236:m +ÒÒ F 237:m +ÒÓ F 238:m +ÒÔ F 239:m +ÒÕ F 240:m +ÒÖ F 241:m +Ò× F 242:m +ÒØ F 243:m +ÒÙ F 244:m +ÒÚ F 245:m +ÒÛ F 246:m +ÒÜ F 247:m +ÒÝ F 248:m +ÒÞ F 249:m +Òß F 250:m +Òà F 251:m +Òá F 252:m +Òâ F 253:m +Òã F 254:m +Òä F 255:m +Òå F 0:n +Òæ F 1:n +Òç F 2:n +Òè F 3:n +Òé F 4:n +Òê F 5:n +Òë F 6:n +Òì F 7:n +Òí F 8:n +Òî F 9:n +Òï F 10:n +Òð F 11:n +Òñ F 12:n +Òò F 13:n +Òó F 14:n +Òô F 15:n +Òõ F 16:n +Òö F 17:n +Ò÷ F 18:n +Òø F 19:n +Òù F 20:n +Òú F 21:n +Òû F 22:n +Òü F 23:n +Òý F 24:n +Òþ F 25:n +Ó¡ F 26:n +Ó¢ F 27:n +Ó£ F 28:n +Ó¤ F 29:n +Ó¥ F 30:n +Ó¦ F 31:n +Ó§ F 32:n +Ó¨ F 33:n +Ó© F 34:n +Óª F 35:n +Ó« F 36:n +Ó¬ F 37:n +Ó­ F 38:n +Ó® F 39:n +Ó¯ F 40:n +Ó° F 41:n +Ó± F 42:n +Ó² F 43:n +Ó³ F 44:n +Ó´ F 45:n +Óµ F 46:n +Ó¶ F 47:n +Ó· F 48:n +Ó¸ F 49:n +Ó¹ F 50:n +Óº F 51:n +Ó» F 52:n +Ó¼ F 53:n +Ó½ F 54:n +Ó¾ F 55:n +Ó¿ F 56:n +ÓÀ F 57:n +ÓÁ F 58:n +Ó F 59:n +Óà F 60:n +ÓÄ F 61:n +ÓÅ F 62:n +ÓÆ F 63:n +ÓÇ F 64:n +ÓÈ F 65:n +ÓÉ F 66:n +ÓÊ F 67:n +ÓË F 68:n +ÓÌ F 69:n +ÓÍ F 70:n +ÓÎ F 71:n +ÓÏ F 72:n +ÓÐ F 73:n +ÓÑ F 74:n +ÓÒ F 75:n +ÓÓ F 76:n +ÓÔ F 77:n +ÓÕ F 78:n +ÓÖ F 79:n +Ó× F 80:n +ÓØ F 81:n +ÓÙ F 82:n +ÓÚ F 83:n +ÓÛ F 84:n +ÓÜ F 85:n +ÓÝ F 86:n +ÓÞ F 87:n +Óß F 88:n +Óà F 89:n +Óá F 90:n +Óâ F 91:n +Óã F 92:n +Óä F 93:n +Óå F 94:n +Óæ F 95:n +Óç F 96:n +Óè F 97:n +Óé F 98:n +Óê F 99:n +Óë F 100:n +Óì F 101:n +Óí F 102:n +Óî F 103:n +Óï F 104:n +Óð F 105:n +Óñ F 106:n +Óò F 107:n +Óó F 108:n +Óô F 109:n +Óõ F 110:n +Óö F 111:n +Ó÷ F 112:n +Óø F 113:n +Óù F 114:n +Óú F 115:n +Óû F 116:n +Óü F 117:n +Óý F 118:n +Óþ F 119:n +Ô¡ F 120:n +Ô¢ F 121:n +Ô£ F 122:n +Ô¤ F 123:n +Ô¥ F 124:n +Ô¦ F 125:n +Ô§ F 126:n +Ô¨ F 127:n +Ô© F 128:n +Ôª F 129:n +Ô« F 130:n +Ô¬ F 131:n +Ô­ F 132:n +Ô® F 133:n +Ô¯ F 134:n +Ô° F 135:n +Ô± F 136:n +Ô² F 137:n +Ô³ F 138:n +Ô´ F 139:n +Ôµ F 140:n +Ô¶ F 141:n +Ô· F 142:n +Ô¸ F 143:n +Ô¹ F 144:n +Ôº F 145:n +Ô» F 146:n +Ô¼ F 147:n +Ô½ F 148:n +Ô¾ F 149:n +Ô¿ F 150:n +ÔÀ F 151:n +ÔÁ F 152:n +Ô F 153:n +Ôà F 154:n +ÔÄ F 155:n +ÔÅ F 156:n +ÔÆ F 157:n +ÔÇ F 158:n +ÔÈ F 159:n +ÔÉ F 160:n +ÔÊ F 161:n +ÔË F 162:n +ÔÌ F 163:n +ÔÍ F 164:n +ÔÎ F 165:n +ÔÏ F 166:n +ÔÐ F 167:n +ÔÑ F 168:n +ÔÒ F 169:n +ÔÓ F 170:n +ÔÔ F 171:n +ÔÕ F 172:n +ÔÖ F 173:n +Ô× F 174:n +ÔØ F 175:n +ÔÙ F 176:n +ÔÚ F 177:n +ÔÛ F 178:n +ÔÜ F 179:n +ÔÝ F 180:n +ÔÞ F 181:n +Ôß F 182:n +Ôà F 183:n +Ôá F 184:n +Ôâ F 185:n +Ôã F 186:n +Ôä F 187:n +Ôå F 188:n +Ôæ F 189:n +Ôç F 190:n +Ôè F 191:n +Ôé F 192:n +Ôê F 193:n +Ôë F 194:n +Ôì F 195:n +Ôí F 196:n +Ôî F 197:n +Ôï F 198:n +Ôð F 199:n +Ôñ F 200:n +Ôò F 201:n +Ôó F 202:n +Ôô F 203:n +Ôõ F 204:n +Ôö F 205:n +Ô÷ F 206:n +Ôø F 207:n +Ôù F 208:n +Ôú F 209:n +Ôû F 210:n +Ôü F 211:n +Ôý F 212:n +Ôþ F 213:n +Õ¡ F 214:n +Õ¢ F 215:n +Õ£ F 216:n +Õ¤ F 217:n +Õ¥ F 218:n +Õ¦ F 219:n +Õ§ F 220:n +Õ¨ F 221:n +Õ© F 222:n +Õª F 223:n +Õ« F 224:n +Õ¬ F 225:n +Õ­ F 226:n +Õ® F 227:n +Õ¯ F 228:n +Õ° F 229:n +Õ± F 230:n +Õ² F 231:n +Õ³ F 232:n +Õ´ F 233:n +Õµ F 234:n +Õ¶ F 235:n +Õ· F 236:n +Õ¸ F 237:n +Õ¹ F 238:n +Õº F 239:n +Õ» F 240:n +Õ¼ F 241:n +Õ½ F 242:n +Õ¾ F 243:n +Õ¿ F 244:n +ÕÀ F 245:n +ÕÁ F 246:n +Õ F 247:n +Õà F 248:n +ÕÄ F 249:n +ÕÅ F 250:n +ÕÆ F 251:n +ÕÇ F 252:n +ÕÈ F 253:n +ÕÉ F 254:n +ÕÊ F 255:n +ÕË F 0:o +ÕÌ F 1:o +ÕÍ F 2:o +ÕÎ F 3:o +ÕÏ F 4:o +ÕÐ F 5:o +ÕÑ F 6:o +ÕÒ F 7:o +ÕÓ F 8:o +ÕÔ F 9:o +ÕÕ F 10:o +ÕÖ F 11:o +Õ× F 12:o +ÕØ F 13:o +ÕÙ F 14:o +ÕÚ F 15:o +ÕÛ F 16:o +ÕÜ F 17:o +ÕÝ F 18:o +ÕÞ F 19:o +Õß F 20:o +Õà F 21:o +Õá F 22:o +Õâ F 23:o +Õã F 24:o +Õä F 25:o +Õå F 26:o +Õæ F 27:o +Õç F 28:o +Õè F 29:o +Õé F 30:o +Õê F 31:o +Õë F 32:o +Õì F 33:o +Õí F 34:o +Õî F 35:o +Õï F 36:o +Õð F 37:o +Õñ F 38:o +Õò F 39:o +Õó F 40:o +Õô F 41:o +Õõ F 42:o +Õö F 43:o +Õ÷ F 44:o +Õø F 45:o +Õù F 46:o +Õú F 47:o +Õû F 48:o +Õü F 49:o +Õý F 50:o +Õþ F 51:o +Ö¡ F 52:o +Ö¢ F 53:o +Ö£ F 54:o +Ö¤ F 55:o +Ö¥ F 56:o +Ö¦ F 57:o +Ö§ F 58:o +Ö¨ F 59:o +Ö© F 60:o +Öª F 61:o +Ö« F 62:o +Ö¬ F 63:o +Ö­ F 64:o +Ö® F 65:o +Ö¯ F 66:o +Ö° F 67:o +Ö± F 68:o +Ö² F 69:o +Ö³ F 70:o +Ö´ F 71:o +Öµ F 72:o +Ö¶ F 73:o +Ö· F 74:o +Ö¸ F 75:o +Ö¹ F 76:o +Öº F 77:o +Ö» F 78:o +Ö¼ F 79:o +Ö½ F 80:o +Ö¾ F 81:o +Ö¿ F 82:o +ÖÀ F 83:o +ÖÁ F 84:o +Ö F 85:o +Öà F 86:o +ÖÄ F 87:o +ÖÅ F 88:o +ÖÆ F 89:o +ÖÇ F 90:o +ÖÈ F 91:o +ÖÉ F 92:o +ÖÊ F 93:o +ÖË F 94:o +ÖÌ F 95:o +ÖÍ F 96:o +ÖÎ F 97:o +ÖÏ F 98:o +ÖÐ F 99:o +ÖÑ F 100:o +ÖÒ F 101:o +ÖÓ F 102:o +ÖÔ F 103:o +ÖÕ F 104:o +ÖÖ F 105:o +Ö× F 106:o +ÖØ F 107:o +ÖÙ F 108:o +ÖÚ F 109:o +ÖÛ F 110:o +ÖÜ F 111:o +ÖÝ F 112:o +ÖÞ F 113:o +Öß F 114:o +Öà F 115:o +Öá F 116:o +Öâ F 117:o +Öã F 118:o +Öä F 119:o +Öå F 120:o +Öæ F 121:o +Öç F 122:o +Öè F 123:o +Öé F 124:o +Öê F 125:o +Öë F 126:o +Öì F 127:o +Öí F 128:o +Öî F 129:o +Öï F 130:o +Öð F 131:o +Öñ F 132:o +Öò F 133:o +Öó F 134:o +Öô F 135:o +Öõ F 136:o +Öö F 137:o +Ö÷ F 138:o +Öø F 139:o +Öù F 140:o +Öú F 141:o +Öû F 142:o +Öü F 143:o +Öý F 144:o +Öþ F 145:o +ס F 146:o +×¢ F 147:o +×£ F 148:o +פ F 149:o +×¥ F 150:o +צ F 151:o +ק F 152:o +ר F 153:o +ש F 154:o +ת F 155:o +׫ F 156:o +׬ F 157:o +×­ F 158:o +×® F 159:o +ׯ F 160:o +×° F 161:o +×± F 162:o +ײ F 163:o +׳ F 164:o +×´ F 165:o +×µ F 166:o +׶ F 167:o +×· F 168:o +׸ F 169:o +×¹ F 170:o +׺ F 171:o +×» F 172:o +×¼ F 173:o +×½ F 174:o +×¾ F 175:o +׿ F 176:o +×À F 177:o +×Á F 178:o +× F 179:o +×à F 180:o +×Ä F 181:o +×Å F 182:o +×Æ F 183:o +×Ç F 184:o +×È F 185:o +×É F 186:o +×Ê F 187:o +×Ë F 188:o +×Ì F 189:o +×Í F 190:o +×Î F 191:o +×Ï F 192:o +×Ð F 193:o +×Ñ F 194:o +×Ò F 195:o +×Ó F 196:o +×Ô F 197:o +×Õ F 198:o +×Ö F 199:o +×× F 200:o +×Ø F 201:o +×Ù F 202:o +×Ú F 203:o +×Û F 204:o +×Ü F 205:o +×Ý F 206:o +×Þ F 207:o +×ß F 208:o +×à F 209:o +×á F 210:o +×â F 211:o +×ã F 212:o +×ä F 213:o +×å F 214:o +×æ F 215:o +×ç F 216:o +×è F 217:o +×é F 218:o +×ê F 219:o +×ë F 220:o +×ì F 221:o +×í F 222:o +×î F 223:o +×ï F 224:o +×ð F 225:o +×ñ F 226:o +×ò F 227:o +×ó F 228:o +×ô F 229:o +×õ F 230:o +×ö F 231:o +×÷ F 232:o +×ø F 233:o +×ù F 234:o +×ú F 235:o +×û F 236:o +×ü F 237:o +×ý F 238:o +×þ F 239:o +Ø¡ F 240:o +Ø¢ F 241:o +Ø£ F 242:o +ؤ F 243:o +Ø¥ F 244:o +ئ F 245:o +ا F 246:o +ب F 247:o +Ø© F 248:o +ت F 249:o +Ø« F 250:o +ج F 251:o +Ø­ F 252:o +Ø® F 253:o +د F 254:o +Ø° F 255:o +ر F 0:p +ز F 1:p +س F 2:p +Ø´ F 3:p +ص F 4:p +ض F 5:p +Ø· F 6:p +ظ F 7:p +ع F 8:p +غ F 9:p +Ø» F 10:p +ؼ F 11:p +ؽ F 12:p +ؾ F 13:p +Ø¿ F 14:p +ØÀ F 15:p +ØÁ F 16:p +Ø F 17:p +Øà F 18:p +ØÄ F 19:p +ØÅ F 20:p +ØÆ F 21:p +ØÇ F 22:p +ØÈ F 23:p +ØÉ F 24:p +ØÊ F 25:p +ØË F 26:p +ØÌ F 27:p +ØÍ F 28:p +ØÎ F 29:p +ØÏ F 30:p +ØÐ F 31:p +ØÑ F 32:p +ØÒ F 33:p +ØÓ F 34:p +ØÔ F 35:p +ØÕ F 36:p +ØÖ F 37:p +Ø× F 38:p +ØØ F 39:p +ØÙ F 40:p +ØÚ F 41:p +ØÛ F 42:p +ØÜ F 43:p +ØÝ F 44:p +ØÞ F 45:p +Øß F 46:p +Øà F 47:p +Øá F 48:p +Øâ F 49:p +Øã F 50:p +Øä F 51:p +Øå F 52:p +Øæ F 53:p +Øç F 54:p +Øè F 55:p +Øé F 56:p +Øê F 57:p +Øë F 58:p +Øì F 59:p +Øí F 60:p +Øî F 61:p +Øï F 62:p +Øð F 63:p +Øñ F 64:p +Øò F 65:p +Øó F 66:p +Øô F 67:p +Øõ F 68:p +Øö F 69:p +Ø÷ F 70:p +Øø F 71:p +Øù F 72:p +Øú F 73:p +Øû F 74:p +Øü F 75:p +Øý F 76:p +Øþ F 77:p +Ù¡ F 78:p +Ù¢ F 79:p +Ù£ F 80:p +Ù¤ F 81:p +Ù¥ F 82:p +Ù¦ F 83:p +Ù§ F 84:p +Ù¨ F 85:p +Ù© F 86:p +Ùª F 87:p +Ù« F 88:p +Ù¬ F 89:p +Ù­ F 90:p +Ù® F 91:p +Ù¯ F 92:p +Ù° F 93:p +Ù± F 94:p +Ù² F 95:p +Ù³ F 96:p +Ù´ F 97:p +Ùµ F 98:p +Ù¶ F 99:p +Ù· F 100:p +Ù¸ F 101:p +Ù¹ F 102:p +Ùº F 103:p +Ù» F 104:p +Ù¼ F 105:p +Ù½ F 106:p +Ù¾ F 107:p +Ù¿ F 108:p +ÙÀ F 109:p +ÙÁ F 110:p +Ù F 111:p +Ùà F 112:p +ÙÄ F 113:p +ÙÅ F 114:p +ÙÆ F 115:p +ÙÇ F 116:p +ÙÈ F 117:p +ÙÉ F 118:p +ÙÊ F 119:p +ÙË F 120:p +ÙÌ F 121:p +ÙÍ F 122:p +ÙÎ F 123:p +ÙÏ F 124:p +ÙÐ F 125:p +ÙÑ F 126:p +ÙÒ F 127:p +ÙÓ F 128:p +ÙÔ F 129:p +ÙÕ F 130:p +ÙÖ F 131:p +Ù× F 132:p +ÙØ F 133:p +ÙÙ F 134:p +ÙÚ F 135:p +ÙÛ F 136:p +ÙÜ F 137:p +ÙÝ F 138:p +ÙÞ F 139:p +Ùß F 140:p +Ùà F 141:p +Ùá F 142:p +Ùâ F 143:p +Ùã F 144:p +Ùä F 145:p +Ùå F 146:p +Ùæ F 147:p +Ùç F 148:p +Ùè F 149:p +Ùé F 150:p +Ùê F 151:p +Ùë F 152:p +Ùì F 153:p +Ùí F 154:p +Ùî F 155:p +Ùï F 156:p +Ùð F 157:p +Ùñ F 158:p +Ùò F 159:p +Ùó F 160:p +Ùô F 161:p +Ùõ F 162:p +Ùö F 163:p +Ù÷ F 164:p +Ùø F 165:p +Ùù F 166:p +Ùú F 167:p +Ùû F 168:p +Ùü F 169:p +Ùý F 170:p +Ùþ F 171:p +Ú¡ F 172:p +Ú¢ F 173:p +Ú£ F 174:p +Ú¤ F 175:p +Ú¥ F 176:p +Ú¦ F 177:p +Ú§ F 178:p +Ú¨ F 179:p +Ú© F 180:p +Úª F 181:p +Ú« F 182:p +Ú¬ F 183:p +Ú­ F 184:p +Ú® F 185:p +Ú¯ F 186:p +Ú° F 187:p +Ú± F 188:p +Ú² F 189:p +Ú³ F 190:p +Ú´ F 191:p +Úµ F 192:p +Ú¶ F 193:p +Ú· F 194:p +Ú¸ F 195:p +Ú¹ F 196:p +Úº F 197:p +Ú» F 198:p +Ú¼ F 199:p +Ú½ F 200:p +Ú¾ F 201:p +Ú¿ F 202:p +ÚÀ F 203:p +ÚÁ F 204:p +Ú F 205:p +Úà F 206:p +ÚÄ F 207:p +ÚÅ F 208:p +ÚÆ F 209:p +ÚÇ F 210:p +ÚÈ F 211:p +ÚÉ F 212:p +ÚÊ F 213:p +ÚË F 214:p +ÚÌ F 215:p +ÚÍ F 216:p +ÚÎ F 217:p +ÚÏ F 218:p +ÚÐ F 219:p +ÚÑ F 220:p +ÚÒ F 221:p +ÚÓ F 222:p +ÚÔ F 223:p +ÚÕ F 224:p +ÚÖ F 225:p +Ú× F 226:p +ÚØ F 227:p +ÚÙ F 228:p +ÚÚ F 229:p +ÚÛ F 230:p +ÚÜ F 231:p +ÚÝ F 232:p +ÚÞ F 233:p +Úß F 234:p +Úà F 235:p +Úá F 236:p +Úâ F 237:p +Úã F 238:p +Úä F 239:p +Úå F 240:p +Úæ F 241:p +Úç F 242:p +Úè F 243:p +Úé F 244:p +Úê F 245:p +Úë F 246:p +Úì F 247:p +Úí F 248:p +Úî F 249:p +Úï F 250:p +Úð F 251:p +Úñ F 252:p +Úò F 253:p +Úó F 254:p +Úô F 255:p +Úõ F 0:q +Úö F 1:q +Ú÷ F 2:q +Úø F 3:q +Úù F 4:q +Úú F 5:q +Úû F 6:q +Úü F 7:q +Úý F 8:q +Úþ F 9:q +Û¡ F 10:q +Û¢ F 11:q +Û£ F 12:q +Û¤ F 13:q +Û¥ F 14:q +Û¦ F 15:q +Û§ F 16:q +Û¨ F 17:q +Û© F 18:q +Ûª F 19:q +Û« F 20:q +Û¬ F 21:q +Û­ F 22:q +Û® F 23:q +Û¯ F 24:q +Û° F 25:q +Û± F 26:q +Û² F 27:q +Û³ F 28:q +Û´ F 29:q +Ûµ F 30:q +Û¶ F 31:q +Û· F 32:q +Û¸ F 33:q +Û¹ F 34:q +Ûº F 35:q +Û» F 36:q +Û¼ F 37:q +Û½ F 38:q +Û¾ F 39:q +Û¿ F 40:q +ÛÀ F 41:q +ÛÁ F 42:q +Û F 43:q +Ûà F 44:q +ÛÄ F 45:q +ÛÅ F 46:q +ÛÆ F 47:q +ÛÇ F 48:q +ÛÈ F 49:q +ÛÉ F 50:q +ÛÊ F 51:q +ÛË F 52:q +ÛÌ F 53:q +ÛÍ F 54:q +ÛÎ F 55:q +ÛÏ F 56:q +ÛÐ F 57:q +ÛÑ F 58:q +ÛÒ F 59:q +ÛÓ F 60:q +ÛÔ F 61:q +ÛÕ F 62:q +ÛÖ F 63:q +Û× F 64:q +ÛØ F 65:q +ÛÙ F 66:q +ÛÚ F 67:q +ÛÛ F 68:q +ÛÜ F 69:q +ÛÝ F 70:q +ÛÞ F 71:q +Ûß F 72:q +Ûà F 73:q +Ûá F 74:q +Ûâ F 75:q +Ûã F 76:q +Ûä F 77:q +Ûå F 78:q +Ûæ F 79:q +Ûç F 80:q +Ûè F 81:q +Ûé F 82:q +Ûê F 83:q +Ûë F 84:q +Ûì F 85:q +Ûí F 86:q +Ûî F 87:q +Ûï F 88:q +Ûð F 89:q +Ûñ F 90:q +Ûò F 91:q +Ûó F 92:q +Ûô F 93:q +Ûõ F 94:q +Ûö F 95:q +Û÷ F 96:q +Ûø F 97:q +Ûù F 98:q +Ûú F 99:q +Ûû F 100:q +Ûü F 101:q +Ûý F 102:q +Ûþ F 103:q +Ü¡ F 104:q +Ü¢ F 105:q +Ü£ F 106:q +ܤ F 107:q +Ü¥ F 108:q +ܦ F 109:q +ܧ F 110:q +ܨ F 111:q +Ü© F 112:q +ܪ F 113:q +Ü« F 114:q +ܬ F 115:q +Ü­ F 116:q +Ü® F 117:q +ܯ F 118:q +Ü° F 119:q +ܱ F 120:q +ܲ F 121:q +ܳ F 122:q +Ü´ F 123:q +ܵ F 124:q +ܶ F 125:q +Ü· F 126:q +ܸ F 127:q +ܹ F 128:q +ܺ F 129:q +Ü» F 130:q +ܼ F 131:q +ܽ F 132:q +ܾ F 133:q +Ü¿ F 134:q +ÜÀ F 135:q +ÜÁ F 136:q +Ü F 137:q +Üà F 138:q +ÜÄ F 139:q +ÜÅ F 140:q +ÜÆ F 141:q +ÜÇ F 142:q +ÜÈ F 143:q +ÜÉ F 144:q +ÜÊ F 145:q +ÜË F 146:q +ÜÌ F 147:q +ÜÍ F 148:q +ÜÎ F 149:q +ÜÏ F 150:q +ÜÐ F 151:q +ÜÑ F 152:q +ÜÒ F 153:q +ÜÓ F 154:q +ÜÔ F 155:q +ÜÕ F 156:q +ÜÖ F 157:q +Ü× F 158:q +ÜØ F 159:q +ÜÙ F 160:q +ÜÚ F 161:q +ÜÛ F 162:q +ÜÜ F 163:q +ÜÝ F 164:q +ÜÞ F 165:q +Üß F 166:q +Üà F 167:q +Üá F 168:q +Üâ F 169:q +Üã F 170:q +Üä F 171:q +Üå F 172:q +Üæ F 173:q +Üç F 174:q +Üè F 175:q +Üé F 176:q +Üê F 177:q +Üë F 178:q +Üì F 179:q +Üí F 180:q +Üî F 181:q +Üï F 182:q +Üð F 183:q +Üñ F 184:q +Üò F 185:q +Üó F 186:q +Üô F 187:q +Üõ F 188:q +Üö F 189:q +Ü÷ F 190:q +Üø F 191:q +Üù F 192:q +Üú F 193:q +Üû F 194:q +Üü F 195:q +Üý F 196:q +Üþ F 197:q +Ý¡ F 198:q +Ý¢ F 199:q +Ý£ F 200:q +ݤ F 201:q +Ý¥ F 202:q +ݦ F 203:q +ݧ F 204:q +ݨ F 205:q +Ý© F 206:q +ݪ F 207:q +Ý« F 208:q +ݬ F 209:q +Ý­ F 210:q +Ý® F 211:q +ݯ F 212:q +Ý° F 213:q +ݱ F 214:q +ݲ F 215:q +ݳ F 216:q +Ý´ F 217:q +ݵ F 218:q +ݶ F 219:q +Ý· F 220:q +ݸ F 221:q +ݹ F 222:q +ݺ F 223:q +Ý» F 224:q +ݼ F 225:q +ݽ F 226:q +ݾ F 227:q +Ý¿ F 228:q +ÝÀ F 229:q +ÝÁ F 230:q +Ý F 231:q +Ýà F 232:q +ÝÄ F 233:q +ÝÅ F 234:q +ÝÆ F 235:q +ÝÇ F 236:q +ÝÈ F 237:q +ÝÉ F 238:q +ÝÊ F 239:q +ÝË F 240:q +ÝÌ F 241:q +ÝÍ F 242:q +ÝÎ F 243:q +ÝÏ F 244:q +ÝÐ F 245:q +ÝÑ F 246:q +ÝÒ F 247:q +ÝÓ F 248:q +ÝÔ F 249:q +ÝÕ F 250:q +ÝÖ F 251:q +Ý× F 252:q +ÝØ F 253:q +ÝÙ F 254:q +ÝÚ F 255:q +ÝÛ F 0:r +ÝÜ F 1:r +ÝÝ F 2:r +ÝÞ F 3:r +Ýß F 4:r +Ýà F 5:r +Ýá F 6:r +Ýâ F 7:r +Ýã F 8:r +Ýä F 9:r +Ýå F 10:r +Ýæ F 11:r +Ýç F 12:r +Ýè F 13:r +Ýé F 14:r +Ýê F 15:r +Ýë F 16:r +Ýì F 17:r +Ýí F 18:r +Ýî F 19:r +Ýï F 20:r +Ýð F 21:r +Ýñ F 22:r +Ýò F 23:r +Ýó F 24:r +Ýô F 25:r +Ýõ F 26:r +Ýö F 27:r +Ý÷ F 28:r +Ýø F 29:r +Ýù F 30:r +Ýú F 31:r +Ýû F 32:r +Ýü F 33:r +Ýý F 34:r +Ýþ F 35:r +Þ¡ F 36:r +Þ¢ F 37:r +Þ£ F 38:r +Þ¤ F 39:r +Þ¥ F 40:r +Þ¦ F 41:r +Þ§ F 42:r +Þ¨ F 43:r +Þ© F 44:r +Þª F 45:r +Þ« F 46:r +Þ¬ F 47:r +Þ­ F 48:r +Þ® F 49:r +Þ¯ F 50:r +Þ° F 51:r +Þ± F 52:r +Þ² F 53:r +Þ³ F 54:r +Þ´ F 55:r +Þµ F 56:r +Þ¶ F 57:r +Þ· F 58:r +Þ¸ F 59:r +Þ¹ F 60:r +Þº F 61:r +Þ» F 62:r +Þ¼ F 63:r +Þ½ F 64:r +Þ¾ F 65:r +Þ¿ F 66:r +ÞÀ F 67:r +ÞÁ F 68:r +Þ F 69:r +Þà F 70:r +ÞÄ F 71:r +ÞÅ F 72:r +ÞÆ F 73:r +ÞÇ F 74:r +ÞÈ F 75:r +ÞÉ F 76:r +ÞÊ F 77:r +ÞË F 78:r +ÞÌ F 79:r +ÞÍ F 80:r +ÞÎ F 81:r +ÞÏ F 82:r +ÞÐ F 83:r +ÞÑ F 84:r +ÞÒ F 85:r +ÞÓ F 86:r +ÞÔ F 87:r +ÞÕ F 88:r +ÞÖ F 89:r +Þ× F 90:r +ÞØ F 91:r +ÞÙ F 92:r +ÞÚ F 93:r +ÞÛ F 94:r +ÞÜ F 95:r +ÞÝ F 96:r +ÞÞ F 97:r +Þß F 98:r +Þà F 99:r +Þá F 100:r +Þâ F 101:r +Þã F 102:r +Þä F 103:r +Þå F 104:r +Þæ F 105:r +Þç F 106:r +Þè F 107:r +Þé F 108:r +Þê F 109:r +Þë F 110:r +Þì F 111:r +Þí F 112:r +Þî F 113:r +Þï F 114:r +Þð F 115:r +Þñ F 116:r +Þò F 117:r +Þó F 118:r +Þô F 119:r +Þõ F 120:r +Þö F 121:r +Þ÷ F 122:r +Þø F 123:r +Þù F 124:r +Þú F 125:r +Þû F 126:r +Þü F 127:r +Þý F 128:r +Þþ F 129:r +ß¡ F 130:r +ߢ F 131:r +ߣ F 132:r +ߤ F 133:r +ߥ F 134:r +ߦ F 135:r +ߧ F 136:r +ߨ F 137:r +ß© F 138:r +ߪ F 139:r +ß« F 140:r +߬ F 141:r +ß­ F 142:r +ß® F 143:r +߯ F 144:r +ß° F 145:r +ß± F 146:r +ß² F 147:r +ß³ F 148:r +ß´ F 149:r +ßµ F 150:r +߶ F 151:r +ß· F 152:r +߸ F 153:r +ß¹ F 154:r +ߺ F 155:r +ß» F 156:r +ß¼ F 157:r +ß½ F 158:r +ß¾ F 159:r +ß¿ F 160:r +ßÀ F 161:r +ßÁ F 162:r +ß F 163:r +ßà F 164:r +ßÄ F 165:r +ßÅ F 166:r +ßÆ F 167:r +ßÇ F 168:r +ßÈ F 169:r +ßÉ F 170:r +ßÊ F 171:r +ßË F 172:r +ßÌ F 173:r +ßÍ F 174:r +ßÎ F 175:r +ßÏ F 176:r +ßÐ F 177:r +ßÑ F 178:r +ßÒ F 179:r +ßÓ F 180:r +ßÔ F 181:r +ßÕ F 182:r +ßÖ F 183:r +ß× F 184:r +ßØ F 185:r +ßÙ F 186:r +ßÚ F 187:r +ßÛ F 188:r +ßÜ F 189:r +ßÝ F 190:r +ßÞ F 191:r +ßß F 192:r +ßà F 193:r +ßá F 194:r +ßâ F 195:r +ßã F 196:r +ßä F 197:r +ßå F 198:r +ßæ F 199:r +ßç F 200:r +ßè F 201:r +ßé F 202:r +ßê F 203:r +ßë F 204:r +ßì F 205:r +ßí F 206:r +ßî F 207:r +ßï F 208:r +ßð F 209:r +ßñ F 210:r +ßò F 211:r +ßó F 212:r +ßô F 213:r +ßõ F 214:r +ßö F 215:r +ß÷ F 216:r +ßø F 217:r +ßù F 218:r +ßú F 219:r +ßû F 220:r +ßü F 221:r +ßý F 222:r +ßþ F 223:r +à¡ F 224:r +ࢠF 225:r +࣠F 226:r +ठF 227:r +ॠF 228:r +ঠF 229:r +ৠF 230:r +ਠF 231:r +à© F 232:r +ઠF 233:r +à« F 234:r +ଠF 235:r +à­ F 236:r +à® F 237:r +௠F 238:r +à° F 239:r +à± F 240:r +ಠF 241:r +à³ F 242:r +à´ F 243:r +ൠF 244:r +චF 245:r +à· F 246:r +ภF 247:r +๠F 248:r +ຠF 249:r +à» F 250:r +༠F 251:r +འF 252:r +ྠF 253:r +à¿ F 254:r +àÀ F 255:r +àÁ F 0:s +à F 1:s +àà F 2:s +àÄ F 3:s +àÅ F 4:s +àÆ F 5:s +àÇ F 6:s +àÈ F 7:s +àÉ F 8:s +àÊ F 9:s +àË F 10:s +àÌ F 11:s +àÍ F 12:s +àÎ F 13:s +àÏ F 14:s +àÐ F 15:s +àÑ F 16:s +àÒ F 17:s +àÓ F 18:s +àÔ F 19:s +àÕ F 20:s +àÖ F 21:s +à× F 22:s +àØ F 23:s +àÙ F 24:s +àÚ F 25:s +àÛ F 26:s +àÜ F 27:s +àÝ F 28:s +àÞ F 29:s +àß F 30:s +àà F 31:s +àá F 32:s +àâ F 33:s +àã F 34:s +àä F 35:s +àå F 36:s +àæ F 37:s +àç F 38:s +àè F 39:s +àé F 40:s +àê F 41:s +àë F 42:s +àì F 43:s +àí F 44:s +àî F 45:s +àï F 46:s +àð F 47:s +àñ F 48:s +àò F 49:s +àó F 50:s +àô F 51:s +àõ F 52:s +àö F 53:s +à÷ F 54:s +àø F 55:s +àù F 56:s +àú F 57:s +àû F 58:s +àü F 59:s +àý F 60:s +àþ F 61:s +á¡ F 62:s +ᢠF 63:s +ᣠF 64:s +ᤠF 65:s +ᥠF 66:s +ᦠF 67:s +᧠F 68:s +ᨠF 69:s +á© F 70:s +᪠F 71:s +á« F 72:s +ᬠF 73:s +á­ F 74:s +á® F 75:s +ᯠF 76:s +á° F 77:s +á± F 78:s +á² F 79:s +á³ F 80:s +á´ F 81:s +áµ F 82:s +ᶠF 83:s +á· F 84:s +ḠF 85:s +á¹ F 86:s +ẠF 87:s +á» F 88:s +á¼ F 89:s +á½ F 90:s +á¾ F 91:s +á¿ F 92:s +áÀ F 93:s +áÁ F 94:s +á F 95:s +áà F 96:s +áÄ F 97:s +áÅ F 98:s +áÆ F 99:s +áÇ F 100:s +áÈ F 101:s +áÉ F 102:s +áÊ F 103:s +áË F 104:s +áÌ F 105:s +áÍ F 106:s +áÎ F 107:s +áÏ F 108:s +áÐ F 109:s +áÑ F 110:s +áÒ F 111:s +áÓ F 112:s +áÔ F 113:s +áÕ F 114:s +áÖ F 115:s +á× F 116:s +áØ F 117:s +áÙ F 118:s +áÚ F 119:s +áÛ F 120:s +áÜ F 121:s +áÝ F 122:s +áÞ F 123:s +áß F 124:s +áà F 125:s +áá F 126:s +áâ F 127:s +áã F 128:s +áä F 129:s +áå F 130:s +áæ F 131:s +áç F 132:s +áè F 133:s +áé F 134:s +áê F 135:s +áë F 136:s +áì F 137:s +áí F 138:s +áî F 139:s +áï F 140:s +áð F 141:s +áñ F 142:s +áò F 143:s +áó F 144:s +áô F 145:s +áõ F 146:s +áö F 147:s +á÷ F 148:s +áø F 149:s +áù F 150:s +áú F 151:s +áû F 152:s +áü F 153:s +áý F 154:s +áþ F 155:s +â¡ F 156:s +⢠F 157:s +⣠F 158:s +⤠F 159:s +⥠F 160:s +⦠F 161:s +⧠F 162:s +⨠F 163:s +â© F 164:s +⪠F 165:s +â« F 166:s +⬠F 167:s +â­ F 168:s +â® F 169:s +⯠F 170:s +â° F 171:s +â± F 172:s +â² F 173:s +â³ F 174:s +â´ F 175:s +âµ F 176:s +ⶠF 177:s +â· F 178:s +⸠F 179:s +â¹ F 180:s +⺠F 181:s +â» F 182:s +â¼ F 183:s +â½ F 184:s +â¾ F 185:s +â¿ F 186:s +âÀ F 187:s +âÁ F 188:s +â F 189:s +âà F 190:s +âÄ F 191:s +âÅ F 192:s +âÆ F 193:s +âÇ F 194:s +âÈ F 195:s +âÉ F 196:s +âÊ F 197:s +âË F 198:s +âÌ F 199:s +âÍ F 200:s +âÎ F 201:s +âÏ F 202:s +âÐ F 203:s +âÑ F 204:s +âÒ F 205:s +âÓ F 206:s +âÔ F 207:s +âÕ F 208:s +âÖ F 209:s +â× F 210:s +âØ F 211:s +âÙ F 212:s +âÚ F 213:s +âÛ F 214:s +âÜ F 215:s +âÝ F 216:s +âÞ F 217:s +âß F 218:s +âà F 219:s +âá F 220:s +ââ F 221:s +âã F 222:s +âä F 223:s +âå F 224:s +âæ F 225:s +âç F 226:s +âè F 227:s +âé F 228:s +âê F 229:s +âë F 230:s +âì F 231:s +âí F 232:s +âî F 233:s +âï F 234:s +âð F 235:s +âñ F 236:s +âò F 237:s +âó F 238:s +âô F 239:s +âõ F 240:s +âö F 241:s +â÷ F 242:s +âø F 243:s +âù F 244:s +âú F 245:s +âû F 246:s +âü F 247:s +âý F 248:s +âþ F 249:s +ã¡ F 250:s +㢠F 251:s +㣠F 252:s +㤠F 253:s +㥠F 254:s +㦠F 255:s +㧠F 0:t +㨠F 1:t +ã© F 2:t +㪠F 3:t +ã« F 4:t +㬠F 5:t +ã­ F 6:t +ã® F 7:t +㯠F 8:t +ã° F 9:t +ã± F 10:t +ã² F 11:t +ã³ F 12:t +ã´ F 13:t +ãµ F 14:t +㶠F 15:t +ã· F 16:t +㸠F 17:t +ã¹ F 18:t +㺠F 19:t +ã» F 20:t +ã¼ F 21:t +ã½ F 22:t +ã¾ F 23:t +ã¿ F 24:t +ãÀ F 25:t +ãÁ F 26:t +ã F 27:t +ãà F 28:t +ãÄ F 29:t +ãÅ F 30:t +ãÆ F 31:t +ãÇ F 32:t +ãÈ F 33:t +ãÉ F 34:t +ãÊ F 35:t +ãË F 36:t +ãÌ F 37:t +ãÍ F 38:t +ãÎ F 39:t +ãÏ F 40:t +ãÐ F 41:t +ãÑ F 42:t +ãÒ F 43:t +ãÓ F 44:t +ãÔ F 45:t +ãÕ F 46:t +ãÖ F 47:t +ã× F 48:t +ãØ F 49:t +ãÙ F 50:t +ãÚ F 51:t +ãÛ F 52:t +ãÜ F 53:t +ãÝ F 54:t +ãÞ F 55:t +ãß F 56:t +ãà F 57:t +ãá F 58:t +ãâ F 59:t +ãã F 60:t +ãä F 61:t +ãå F 62:t +ãæ F 63:t +ãç F 64:t +ãè F 65:t +ãé F 66:t +ãê F 67:t +ãë F 68:t +ãì F 69:t +ãí F 70:t +ãî F 71:t +ãï F 72:t +ãð F 73:t +ãñ F 74:t +ãò F 75:t +ãó F 76:t +ãô F 77:t +ãõ F 78:t +ãö F 79:t +ã÷ F 80:t +ãø F 81:t +ãù F 82:t +ãú F 83:t +ãû F 84:t +ãü F 85:t +ãý F 86:t +ãþ F 87:t +ä¡ F 88:t +ä¢ F 89:t +ä£ F 90:t +ä¤ F 91:t +ä¥ F 92:t +ä¦ F 93:t +ä§ F 94:t +ä¨ F 95:t +ä© F 96:t +äª F 97:t +ä« F 98:t +ä¬ F 99:t +ä­ F 100:t +ä® F 101:t +ä¯ F 102:t +ä° F 103:t +ä± F 104:t +ä² F 105:t +ä³ F 106:t +ä´ F 107:t +äµ F 108:t +ä¶ F 109:t +ä· F 110:t +ä¸ F 111:t +ä¹ F 112:t +äº F 113:t +ä» F 114:t +ä¼ F 115:t +ä½ F 116:t +ä¾ F 117:t +ä¿ F 118:t +äÀ F 119:t +äÁ F 120:t +ä F 121:t +äà F 122:t +äÄ F 123:t +äÅ F 124:t +äÆ F 125:t +äÇ F 126:t +äÈ F 127:t +äÉ F 128:t +äÊ F 129:t +äË F 130:t +äÌ F 131:t +äÍ F 132:t +äÎ F 133:t +äÏ F 134:t +äÐ F 135:t +äÑ F 136:t +äÒ F 137:t +äÓ F 138:t +äÔ F 139:t +äÕ F 140:t +äÖ F 141:t +ä× F 142:t +äØ F 143:t +äÙ F 144:t +äÚ F 145:t +äÛ F 146:t +äÜ F 147:t +äÝ F 148:t +äÞ F 149:t +äß F 150:t +äà F 151:t +äá F 152:t +äâ F 153:t +äã F 154:t +ää F 155:t +äå F 156:t +äæ F 157:t +äç F 158:t +äè F 159:t +äé F 160:t +äê F 161:t +äë F 162:t +äì F 163:t +äí F 164:t +äî F 165:t +äï F 166:t +äð F 167:t +äñ F 168:t +äò F 169:t +äó F 170:t +äô F 171:t +äõ F 172:t +äö F 173:t +ä÷ F 174:t +äø F 175:t +äù F 176:t +äú F 177:t +äû F 178:t +äü F 179:t +äý F 180:t +äþ F 181:t +å¡ F 182:t +å¢ F 183:t +å£ F 184:t +å¤ F 185:t +å¥ F 186:t +å¦ F 187:t +å§ F 188:t +å¨ F 189:t +å© F 190:t +åª F 191:t +å« F 192:t +å¬ F 193:t +å­ F 194:t +å® F 195:t +å¯ F 196:t +å° F 197:t +å± F 198:t +å² F 199:t +å³ F 200:t +å´ F 201:t +åµ F 202:t +å¶ F 203:t +å· F 204:t +å¸ F 205:t +å¹ F 206:t +åº F 207:t +å» F 208:t +å¼ F 209:t +å½ F 210:t +å¾ F 211:t +å¿ F 212:t +åÀ F 213:t +åÁ F 214:t +å F 215:t +åà F 216:t +åÄ F 217:t +åÅ F 218:t +åÆ F 219:t +åÇ F 220:t +åÈ F 221:t +åÉ F 222:t +åÊ F 223:t +åË F 224:t +åÌ F 225:t +åÍ F 226:t +åÎ F 227:t +åÏ F 228:t +åÐ F 229:t +åÑ F 230:t +åÒ F 231:t +åÓ F 232:t +åÔ F 233:t +åÕ F 234:t +åÖ F 235:t +å× F 236:t +åØ F 237:t +åÙ F 238:t +åÚ F 239:t +åÛ F 240:t +åÜ F 241:t +åÝ F 242:t +åÞ F 243:t +åß F 244:t +åà F 245:t +åá F 246:t +åâ F 247:t +åã F 248:t +åä F 249:t +åå F 250:t +åæ F 251:t +åç F 252:t +åè F 253:t +åé F 254:t +åê F 255:t +åë F 0:u +åì F 1:u +åí F 2:u +åî F 3:u +åï F 4:u +åð F 5:u +åñ F 6:u +åò F 7:u +åó F 8:u +åô F 9:u +åõ F 10:u +åö F 11:u +å÷ F 12:u +åø F 13:u +åù F 14:u +åú F 15:u +åû F 16:u +åü F 17:u +åý F 18:u +åþ F 19:u +æ¡ F 20:u +æ¢ F 21:u +æ£ F 22:u +æ¤ F 23:u +æ¥ F 24:u +æ¦ F 25:u +æ§ F 26:u +æ¨ F 27:u +æ© F 28:u +æª F 29:u +æ« F 30:u +æ¬ F 31:u +æ­ F 32:u +æ® F 33:u +æ¯ F 34:u +æ° F 35:u +æ± F 36:u +æ² F 37:u +æ³ F 38:u +æ´ F 39:u +æµ F 40:u +æ¶ F 41:u +æ· F 42:u +æ¸ F 43:u +æ¹ F 44:u +æº F 45:u +æ» F 46:u +æ¼ F 47:u +æ½ F 48:u +æ¾ F 49:u +æ¿ F 50:u +æÀ F 51:u +æÁ F 52:u +æ F 53:u +æà F 54:u +æÄ F 55:u +æÅ F 56:u +æÆ F 57:u +æÇ F 58:u +æÈ F 59:u +æÉ F 60:u +æÊ F 61:u +æË F 62:u +æÌ F 63:u +æÍ F 64:u +æÎ F 65:u +æÏ F 66:u +æÐ F 67:u +æÑ F 68:u +æÒ F 69:u +æÓ F 70:u +æÔ F 71:u +æÕ F 72:u +æÖ F 73:u +æ× F 74:u +æØ F 75:u +æÙ F 76:u +æÚ F 77:u +æÛ F 78:u +æÜ F 79:u +æÝ F 80:u +æÞ F 81:u +æß F 82:u +æà F 83:u +æá F 84:u +æâ F 85:u +æã F 86:u +æä F 87:u +æå F 88:u +ææ F 89:u +æç F 90:u +æè F 91:u +æé F 92:u +æê F 93:u +æë F 94:u +æì F 95:u +æí F 96:u +æî F 97:u +æï F 98:u +æð F 99:u +æñ F 100:u +æò F 101:u +æó F 102:u +æô F 103:u +æõ F 104:u +æö F 105:u +æ÷ F 106:u +æø F 107:u +æù F 108:u +æú F 109:u +æû F 110:u +æü F 111:u +æý F 112:u +æþ F 113:u +ç¡ F 114:u +ç¢ F 115:u +ç£ F 116:u +ç¤ F 117:u +ç¥ F 118:u +ç¦ F 119:u +ç§ F 120:u +ç¨ F 121:u +ç© F 122:u +çª F 123:u +ç« F 124:u +ç¬ F 125:u +ç­ F 126:u +ç® F 127:u +ç¯ F 128:u +ç° F 129:u +ç± F 130:u +ç² F 131:u +ç³ F 132:u +ç´ F 133:u +çµ F 134:u +ç¶ F 135:u +ç· F 136:u +ç¸ F 137:u +ç¹ F 138:u +çº F 139:u +ç» F 140:u +ç¼ F 141:u +ç½ F 142:u +ç¾ F 143:u +ç¿ F 144:u +çÀ F 145:u +çÁ F 146:u +ç F 147:u +çà F 148:u +çÄ F 149:u +çÅ F 150:u +çÆ F 151:u +çÇ F 152:u +çÈ F 153:u +çÉ F 154:u +çÊ F 155:u +çË F 156:u +çÌ F 157:u +çÍ F 158:u +çÎ F 159:u +çÏ F 160:u +çÐ F 161:u +çÑ F 162:u +çÒ F 163:u +çÓ F 164:u +çÔ F 165:u +çÕ F 166:u +çÖ F 167:u +ç× F 168:u +çØ F 169:u +çÙ F 170:u +çÚ F 171:u +çÛ F 172:u +çÜ F 173:u +çÝ F 174:u +çÞ F 175:u +çß F 176:u +çà F 177:u +çá F 178:u +çâ F 179:u +çã F 180:u +çä F 181:u +çå F 182:u +çæ F 183:u +çç F 184:u +çè F 185:u +çé F 186:u +çê F 187:u +çë F 188:u +çì F 189:u +çí F 190:u +çî F 191:u +çï F 192:u +çð F 193:u +çñ F 194:u +çò F 195:u +çó F 196:u +çô F 197:u +çõ F 198:u +çö F 199:u +ç÷ F 200:u +çø F 201:u +çù F 202:u +çú F 203:u +çû F 204:u +çü F 205:u +çý F 206:u +çþ F 207:u +è¡ F 208:u +è¢ F 209:u +è£ F 210:u +è¤ F 211:u +è¥ F 212:u +è¦ F 213:u +è§ F 214:u +è¨ F 215:u +è© F 216:u +èª F 217:u +è« F 218:u +è¬ F 219:u +è­ F 220:u +è® F 221:u +è¯ F 222:u +è° F 223:u +è± F 224:u +è² F 225:u +è³ F 226:u +è´ F 227:u +èµ F 228:u +è¶ F 229:u +è· F 230:u +è¸ F 231:u +è¹ F 232:u +èº F 233:u +è» F 234:u +è¼ F 235:u +è½ F 236:u +è¾ F 237:u +è¿ F 238:u +èÀ F 239:u +èÁ F 240:u +è F 241:u +èà F 242:u +èÄ F 243:u +èÅ F 244:u +èÆ F 245:u +èÇ F 246:u +èÈ F 247:u +èÉ F 248:u +èÊ F 249:u +èË F 250:u +èÌ F 251:u +èÍ F 252:u +èÎ F 253:u +èÏ F 254:u +èÐ F 255:u +èÑ F 0:v +èÒ F 1:v +èÓ F 2:v +èÔ F 3:v +èÕ F 4:v +èÖ F 5:v +è× F 6:v +èØ F 7:v +èÙ F 8:v +èÚ F 9:v +èÛ F 10:v +èÜ F 11:v +èÝ F 12:v +èÞ F 13:v +èß F 14:v +èà F 15:v +èá F 16:v +èâ F 17:v +èã F 18:v +èä F 19:v +èå F 20:v +èæ F 21:v +èç F 22:v +èè F 23:v +èé F 24:v +èê F 25:v +èë F 26:v +èì F 27:v +èí F 28:v +èî F 29:v +èï F 30:v +èð F 31:v +èñ F 32:v +èò F 33:v +èó F 34:v +èô F 35:v +èõ F 36:v +èö F 37:v +è÷ F 38:v +èø F 39:v +èù F 40:v +èú F 41:v +èû F 42:v +èü F 43:v +èý F 44:v +èþ F 45:v +é¡ F 46:v +é¢ F 47:v +é£ F 48:v +é¤ F 49:v +é¥ F 50:v +é¦ F 51:v +é§ F 52:v +é¨ F 53:v +é© F 54:v +éª F 55:v +é« F 56:v +é¬ F 57:v +é­ F 58:v +é® F 59:v +é¯ F 60:v +é° F 61:v +é± F 62:v +é² F 63:v +é³ F 64:v +é´ F 65:v +éµ F 66:v +é¶ F 67:v +é· F 68:v +é¸ F 69:v +é¹ F 70:v +éº F 71:v +é» F 72:v +é¼ F 73:v +é½ F 74:v +é¾ F 75:v +é¿ F 76:v +éÀ F 77:v +éÁ F 78:v +é F 79:v +éà F 80:v +éÄ F 81:v +éÅ F 82:v +éÆ F 83:v +éÇ F 84:v +éÈ F 85:v +éÉ F 86:v +éÊ F 87:v +éË F 88:v +éÌ F 89:v +éÍ F 90:v +éÎ F 91:v +éÏ F 92:v +éÐ F 93:v +éÑ F 94:v +éÒ F 95:v +éÓ F 96:v +éÔ F 97:v +éÕ F 98:v +éÖ F 99:v +é× F 100:v +éØ F 101:v +éÙ F 102:v +éÚ F 103:v +éÛ F 104:v +éÜ F 105:v +éÝ F 106:v +éÞ F 107:v +éß F 108:v +éà F 109:v +éá F 110:v +éâ F 111:v +éã F 112:v +éä F 113:v +éå F 114:v +éæ F 115:v +éç F 116:v +éè F 117:v +éé F 118:v +éê F 119:v +éë F 120:v +éì F 121:v +éí F 122:v +éî F 123:v +éï F 124:v +éð F 125:v +éñ F 126:v +éò F 127:v +éó F 128:v +éô F 129:v +éõ F 130:v +éö F 131:v +é÷ F 132:v +éø F 133:v +éù F 134:v +éú F 135:v +éû F 136:v +éü F 137:v +éý F 138:v +éþ F 139:v +ê¡ F 140:v +ê¢ F 141:v +ê£ F 142:v +ê¤ F 143:v +ê¥ F 144:v +ê¦ F 145:v +ê§ F 146:v +ê¨ F 147:v +ê© F 148:v +êª F 149:v +ê« F 150:v +ê¬ F 151:v +ê­ F 152:v +ê® F 153:v +ê¯ F 154:v +ê° F 155:v +ê± F 156:v +ê² F 157:v +ê³ F 158:v +ê´ F 159:v +êµ F 160:v +ê¶ F 161:v +ê· F 162:v +ê¸ F 163:v +ê¹ F 164:v +êº F 165:v +ê» F 166:v +ê¼ F 167:v +ê½ F 168:v +ê¾ F 169:v +ê¿ F 170:v +êÀ F 171:v +êÁ F 172:v +ê F 173:v +êà F 174:v +êÄ F 175:v +êÅ F 176:v +êÆ F 177:v +êÇ F 178:v +êÈ F 179:v +êÉ F 180:v +êÊ F 181:v +êË F 182:v +êÌ F 183:v +êÍ F 184:v +êÎ F 185:v +êÏ F 186:v +êÐ F 187:v +êÑ F 188:v +êÒ F 189:v +êÓ F 190:v +êÔ F 191:v +êÕ F 192:v +êÖ F 193:v +ê× F 194:v +êØ F 195:v +êÙ F 196:v +êÚ F 197:v +êÛ F 198:v +êÜ F 199:v +êÝ F 200:v +êÞ F 201:v +êß F 202:v +êà F 203:v +êá F 204:v +êâ F 205:v +êã F 206:v +êä F 207:v +êå F 208:v +êæ F 209:v +êç F 210:v +êè F 211:v +êé F 212:v +êê F 213:v +êë F 214:v +êì F 215:v +êí F 216:v +êî F 217:v +êï F 218:v +êð F 219:v +êñ F 220:v +êò F 221:v +êó F 222:v +êô F 223:v +êõ F 224:v +êö F 225:v +ê÷ F 226:v +êø F 227:v +êù F 228:v +êú F 229:v +êû F 230:v +êü F 231:v +êý F 232:v +êþ F 233:v +ë¡ F 234:v +ë¢ F 235:v +ë£ F 236:v +ë¤ F 237:v +ë¥ F 238:v +ë¦ F 239:v +ë§ F 240:v +ë¨ F 241:v +ë© F 242:v +ëª F 243:v +ë« F 244:v +ë¬ F 245:v +ë­ F 246:v +ë® F 247:v +ë¯ F 248:v +ë° F 249:v +ë± F 250:v +ë² F 251:v +ë³ F 252:v +ë´ F 253:v +ëµ F 254:v +ë¶ F 255:v +ë· F 0:w +ë¸ F 1:w +ë¹ F 2:w +ëº F 3:w +ë» F 4:w +ë¼ F 5:w +ë½ F 6:w +ë¾ F 7:w +ë¿ F 8:w +ëÀ F 9:w +ëÁ F 10:w +ë F 11:w +ëà F 12:w +ëÄ F 13:w +ëÅ F 14:w +ëÆ F 15:w +ëÇ F 16:w +ëÈ F 17:w +ëÉ F 18:w +ëÊ F 19:w +ëË F 20:w +ëÌ F 21:w +ëÍ F 22:w +ëÎ F 23:w +ëÏ F 24:w +ëÐ F 25:w +ëÑ F 26:w +ëÒ F 27:w +ëÓ F 28:w +ëÔ F 29:w +ëÕ F 30:w +ëÖ F 31:w +ë× F 32:w +ëØ F 33:w +ëÙ F 34:w +ëÚ F 35:w +ëÛ F 36:w +ëÜ F 37:w +ëÝ F 38:w +ëÞ F 39:w +ëß F 40:w +ëà F 41:w +ëá F 42:w +ëâ F 43:w +ëã F 44:w +ëä F 45:w +ëå F 46:w +ëæ F 47:w +ëç F 48:w +ëè F 49:w +ëé F 50:w +ëê F 51:w +ëë F 52:w +ëì F 53:w +ëí F 54:w +ëî F 55:w +ëï F 56:w +ëð F 57:w +ëñ F 58:w +ëò F 59:w +ëó F 60:w +ëô F 61:w +ëõ F 62:w +ëö F 63:w +ë÷ F 64:w +ëø F 65:w +ëù F 66:w +ëú F 67:w +ëû F 68:w +ëü F 69:w +ëý F 70:w +ëþ F 71:w +ì¡ F 72:w +ì¢ F 73:w +ì£ F 74:w +ì¤ F 75:w +ì¥ F 76:w +ì¦ F 77:w +ì§ F 78:w +ì¨ F 79:w +ì© F 80:w +ìª F 81:w +ì« F 82:w +ì¬ F 83:w +ì­ F 84:w +ì® F 85:w +ì¯ F 86:w +ì° F 87:w +ì± F 88:w +ì² F 89:w +ì³ F 90:w +ì´ F 91:w +ìµ F 92:w +ì¶ F 93:w +ì· F 94:w +ì¸ F 95:w +ì¹ F 96:w +ìº F 97:w +ì» F 98:w +ì¼ F 99:w +ì½ F 100:w +ì¾ F 101:w +ì¿ F 102:w +ìÀ F 103:w +ìÁ F 104:w +ì F 105:w +ìà F 106:w +ìÄ F 107:w +ìÅ F 108:w +ìÆ F 109:w +ìÇ F 110:w +ìÈ F 111:w +ìÉ F 112:w +ìÊ F 113:w +ìË F 114:w +ìÌ F 115:w +ìÍ F 116:w +ìÎ F 117:w +ìÏ F 118:w +ìÐ F 119:w +ìÑ F 120:w +ìÒ F 121:w +ìÓ F 122:w +ìÔ F 123:w +ìÕ F 124:w +ìÖ F 125:w +ì× F 126:w +ìØ F 127:w +ìÙ F 128:w +ìÚ F 129:w +ìÛ F 130:w +ìÜ F 131:w +ìÝ F 132:w +ìÞ F 133:w +ìß F 134:w +ìà F 135:w +ìá F 136:w +ìâ F 137:w +ìã F 138:w +ìä F 139:w +ìå F 140:w +ìæ F 141:w +ìç F 142:w +ìè F 143:w +ìé F 144:w +ìê F 145:w +ìë F 146:w +ìì F 147:w +ìí F 148:w +ìî F 149:w +ìï F 150:w +ìð F 151:w +ìñ F 152:w +ìò F 153:w +ìó F 154:w +ìô F 155:w +ìõ F 156:w +ìö F 157:w +ì÷ F 158:w +ìø F 159:w +ìù F 160:w +ìú F 161:w +ìû F 162:w +ìü F 163:w +ìý F 164:w +ìþ F 165:w +í¡ F 166:w +í¢ F 167:w +í£ F 168:w +í¤ F 169:w +í¥ F 170:w +í¦ F 171:w +í§ F 172:w +í¨ F 173:w +í© F 174:w +íª F 175:w +í« F 176:w +í¬ F 177:w +í­ F 178:w +í® F 179:w +í¯ F 180:w +í° F 181:w +í± F 182:w +í² F 183:w +í³ F 184:w +í´ F 185:w +íµ F 186:w +í¶ F 187:w +í· F 188:w +í¸ F 189:w +í¹ F 190:w +íº F 191:w +í» F 192:w +í¼ F 193:w +í½ F 194:w +í¾ F 195:w +í¿ F 196:w +íÀ F 197:w +íÁ F 198:w +í F 199:w +íà F 200:w +íÄ F 201:w +íÅ F 202:w +íÆ F 203:w +íÇ F 204:w +íÈ F 205:w +íÉ F 206:w +íÊ F 207:w +íË F 208:w +íÌ F 209:w +íÍ F 210:w +íÎ F 211:w +íÏ F 212:w +íÐ F 213:w +íÑ F 214:w +íÒ F 215:w +íÓ F 216:w +íÔ F 217:w +íÕ F 218:w +íÖ F 219:w +í× F 220:w +íØ F 221:w +íÙ F 222:w +íÚ F 223:w +íÛ F 224:w +íÜ F 225:w +íÝ F 226:w +íÞ F 227:w +íß F 228:w +íà F 229:w +íá F 230:w +íâ F 231:w +íã F 232:w +íä F 233:w +íå F 234:w +íæ F 235:w +íç F 236:w +íè F 237:w +íé F 238:w +íê F 239:w +íë F 240:w +íì F 241:w +íí F 242:w +íî F 243:w +íï F 244:w +íð F 245:w +íñ F 246:w +íò F 247:w +íó F 248:w +íô F 249:w +íõ F 250:w +íö F 251:w +í÷ F 252:w +íø F 253:w +íù F 254:w +íú F 255:w +íû F 0:x +íü F 1:x +íý F 2:x +íþ F 3:x +î¡ F 4:x +î¢ F 5:x +î£ F 6:x +î¤ F 7:x +î¥ F 8:x +î¦ F 9:x +î§ F 10:x +î¨ F 11:x +î© F 12:x +îª F 13:x +î« F 14:x +î¬ F 15:x +î­ F 16:x +î® F 17:x +î¯ F 18:x +î° F 19:x +î± F 20:x +î² F 21:x +î³ F 22:x +î´ F 23:x +îµ F 24:x +î¶ F 25:x +î· F 26:x +î¸ F 27:x +î¹ F 28:x +îº F 29:x +î» F 30:x +î¼ F 31:x +î½ F 32:x +î¾ F 33:x +î¿ F 34:x +îÀ F 35:x +îÁ F 36:x +î F 37:x +îà F 38:x +îÄ F 39:x +îÅ F 40:x +îÆ F 41:x +îÇ F 42:x +îÈ F 43:x +îÉ F 44:x +îÊ F 45:x +îË F 46:x +îÌ F 47:x +îÍ F 48:x +îÎ F 49:x +îÏ F 50:x +îÐ F 51:x +îÑ F 52:x +îÒ F 53:x +îÓ F 54:x +îÔ F 55:x +îÕ F 56:x +îÖ F 57:x +î× F 58:x +îØ F 59:x +îÙ F 60:x +îÚ F 61:x +îÛ F 62:x +îÜ F 63:x +îÝ F 64:x +îÞ F 65:x +îß F 66:x +îà F 67:x +îá F 68:x +îâ F 69:x +îã F 70:x +îä F 71:x +îå F 72:x +îæ F 73:x +îç F 74:x +îè F 75:x +îé F 76:x +îê F 77:x +îë F 78:x +îì F 79:x +îí F 80:x +îî F 81:x +îï F 82:x +îð F 83:x +îñ F 84:x +îò F 85:x +îó F 86:x +îô F 87:x +îõ F 88:x +îö F 89:x +î÷ F 90:x +îø F 91:x +îù F 92:x +îú F 93:x +îû F 94:x +îü F 95:x +îý F 96:x +îþ F 97:x +ï¡ F 98:x +ï¢ F 99:x +ï£ F 100:x +ï¤ F 101:x +ï¥ F 102:x +ï¦ F 103:x +ï§ F 104:x +ï¨ F 105:x +ï© F 106:x +ïª F 107:x +ï« F 108:x +ï¬ F 109:x +ï­ F 110:x +ï® F 111:x +ï¯ F 112:x +ï° F 113:x +ï± F 114:x +ï² F 115:x +ï³ F 116:x +ï´ F 117:x +ïµ F 118:x +ï¶ F 119:x +ï· F 120:x +ï¸ F 121:x +ï¹ F 122:x +ïº F 123:x +ï» F 124:x +ï¼ F 125:x +ï½ F 126:x +ï¾ F 127:x +ï¿ F 128:x +ïÀ F 129:x +ïÁ F 130:x +ï F 131:x +ïà F 132:x +ïÄ F 133:x +ïÅ F 134:x +ïÆ F 135:x +ïÇ F 136:x +ïÈ F 137:x +ïÉ F 138:x +ïÊ F 139:x +ïË F 140:x +ïÌ F 141:x +ïÍ F 142:x +ïÎ F 143:x +ïÏ F 144:x +ïÐ F 145:x +ïÑ F 146:x +ïÒ F 147:x +ïÓ F 148:x +ïÔ F 149:x +ïÕ F 150:x +ïÖ F 151:x +ï× F 152:x +ïØ F 153:x +ïÙ F 154:x +ïÚ F 155:x +ïÛ F 156:x +ïÜ F 157:x +ïÝ F 158:x +ïÞ F 159:x +ïß F 160:x +ïà F 161:x +ïá F 162:x +ïâ F 163:x +ïã F 164:x +ïä F 165:x +ïå F 166:x +ïæ F 167:x +ïç F 168:x +ïè F 169:x +ïé F 170:x +ïê F 171:x +ïë F 172:x +ïì F 173:x +ïí F 174:x +ïî F 175:x +ïï F 176:x +ïð F 177:x +ïñ F 178:x +ïò F 179:x +ïó F 180:x +ïô F 181:x +ïõ F 182:x +ïö F 183:x +ï÷ F 184:x +ïø F 185:x +ïù F 186:x +ïú F 187:x +ïû F 188:x +ïü F 189:x +ïý F 190:x +ïþ F 191:x +ð¡ F 192:x +ð¢ F 193:x +ð£ F 194:x +ð¤ F 195:x +ð¥ F 196:x +ð¦ F 197:x +ð§ F 198:x +ð¨ F 199:x +ð© F 200:x +ðª F 201:x +ð« F 202:x +ð¬ F 203:x +ð­ F 204:x +ð® F 205:x +ð¯ F 206:x +ð° F 207:x +ð± F 208:x +ð² F 209:x +ð³ F 210:x +ð´ F 211:x +ðµ F 212:x +ð¶ F 213:x +ð· F 214:x +ð¸ F 215:x +ð¹ F 216:x +ðº F 217:x +ð» F 218:x +ð¼ F 219:x +ð½ F 220:x +ð¾ F 221:x +ð¿ F 222:x +ðÀ F 223:x +ðÁ F 224:x +ð F 225:x +ðà F 226:x +ðÄ F 227:x +ðÅ F 228:x +ðÆ F 229:x +ðÇ F 230:x +ðÈ F 231:x +ðÉ F 232:x +ðÊ F 233:x +ðË F 234:x +ðÌ F 235:x +ðÍ F 236:x +ðÎ F 237:x +ðÏ F 238:x +ðÐ F 239:x +ðÑ F 240:x +ðÒ F 241:x +ðÓ F 242:x +ðÔ F 243:x +ðÕ F 244:x +ðÖ F 245:x +ð× F 246:x +ðØ F 247:x +ðÙ F 248:x +ðÚ F 249:x +ðÛ F 250:x +ðÜ F 251:x +ðÝ F 252:x +ðÞ F 253:x +ðß F 254:x +ðà F 255:x +ðá F 0:y +ðâ F 1:y +ðã F 2:y +ðä F 3:y +ðå F 4:y +ðæ F 5:y +ðç F 6:y +ðè F 7:y +ðé F 8:y +ðê F 9:y +ðë F 10:y +ðì F 11:y +ðí F 12:y +ðî F 13:y +ðï F 14:y +ðð F 15:y +ðñ F 16:y +ðò F 17:y +ðó F 18:y +ðô F 19:y +ðõ F 20:y +ðö F 21:y +ð÷ F 22:y +ðø F 23:y +ðù F 24:y +ðú F 25:y +ðû F 26:y +ðü F 27:y +ðý F 28:y +ðþ F 29:y +ñ¡ F 30:y +ñ¢ F 31:y +ñ£ F 32:y +ñ¤ F 33:y +ñ¥ F 34:y +ñ¦ F 35:y +ñ§ F 36:y +ñ¨ F 37:y +ñ© F 38:y +ñª F 39:y +ñ« F 40:y +ñ¬ F 41:y +ñ­ F 42:y +ñ® F 43:y +ñ¯ F 44:y +ñ° F 45:y +ñ± F 46:y +ñ² F 47:y +ñ³ F 48:y +ñ´ F 49:y +ñµ F 50:y +ñ¶ F 51:y +ñ· F 52:y +ñ¸ F 53:y +ñ¹ F 54:y +ñº F 55:y +ñ» F 56:y +ñ¼ F 57:y +ñ½ F 58:y +ñ¾ F 59:y +ñ¿ F 60:y +ñÀ F 61:y +ñÁ F 62:y +ñ F 63:y +ñà F 64:y +ñÄ F 65:y +ñÅ F 66:y +ñÆ F 67:y +ñÇ F 68:y +ñÈ F 69:y +ñÉ F 70:y +ñÊ F 71:y +ñË F 72:y +ñÌ F 73:y +ñÍ F 74:y +ñÎ F 75:y +ñÏ F 76:y +ñÐ F 77:y +ñÑ F 78:y +ñÒ F 79:y +ñÓ F 80:y +ñÔ F 81:y +ñÕ F 82:y +ñÖ F 83:y +ñ× F 84:y +ñØ F 85:y +ñÙ F 86:y +ñÚ F 87:y +ñÛ F 88:y +ñÜ F 89:y +ñÝ F 90:y +ñÞ F 91:y +ñß F 92:y +ñà F 93:y +ñá F 94:y +ñâ F 95:y +ñã F 96:y +ñä F 97:y +ñå F 98:y +ñæ F 99:y +ñç F 100:y +ñè F 101:y +ñé F 102:y +ñê F 103:y +ñë F 104:y +ñì F 105:y +ñí F 106:y +ñî F 107:y +ñï F 108:y +ñð F 109:y +ññ F 110:y +ñò F 111:y +ñó F 112:y +ñô F 113:y +ñõ F 114:y +ñö F 115:y +ñ÷ F 116:y +ñø F 117:y +ñù F 118:y +ñú F 119:y +ñû F 120:y +ñü F 121:y +ñý F 122:y +ñþ F 123:y +ò¡ F 124:y +ò¢ F 125:y +ò£ F 126:y +ò¤ F 127:y +ò¥ F 128:y +ò¦ F 129:y +ò§ F 130:y +ò¨ F 131:y +ò© F 132:y +òª F 133:y +ò« F 134:y +ò¬ F 135:y +ò­ F 136:y +ò® F 137:y +ò¯ F 138:y +ò° F 139:y +ò± F 140:y +ò² F 141:y +ò³ F 142:y +ò´ F 143:y +òµ F 144:y +ò¶ F 145:y +ò· F 146:y +ò¸ F 147:y +ò¹ F 148:y +òº F 149:y +ò» F 150:y +ò¼ F 151:y +ò½ F 152:y +ò¾ F 153:y +ò¿ F 154:y +òÀ F 155:y +òÁ F 156:y +ò F 157:y +òà F 158:y +òÄ F 159:y +òÅ F 160:y +òÆ F 161:y +òÇ F 162:y +òÈ F 163:y +òÉ F 164:y +òÊ F 165:y +òË F 166:y +òÌ F 167:y +òÍ F 168:y +òÎ F 169:y +òÏ F 170:y +òÐ F 171:y +òÑ F 172:y +òÒ F 173:y +òÓ F 174:y +òÔ F 175:y +òÕ F 176:y +òÖ F 177:y +ò× F 178:y +òØ F 179:y +òÙ F 180:y +òÚ F 181:y +òÛ F 182:y +òÜ F 183:y +òÝ F 184:y +òÞ F 185:y +òß F 186:y +òà F 187:y +òá F 188:y +òâ F 189:y +òã F 190:y +òä F 191:y +òå F 192:y +òæ F 193:y +òç F 194:y +òè F 195:y +òé F 196:y +òê F 197:y +òë F 198:y +òì F 199:y +òí F 200:y +òî F 201:y +òï F 202:y +òð F 203:y +òñ F 204:y +òò F 205:y +òó F 206:y +òô F 207:y +òõ F 208:y +òö F 209:y +ò÷ F 210:y +òø F 211:y +òù F 212:y +òú F 213:y +òû F 214:y +òü F 215:y +òý F 216:y +òþ F 217:y +ó¡ F 218:y +ó¢ F 219:y +ó£ F 220:y +ó¤ F 221:y +ó¥ F 222:y +ó¦ F 223:y +ó§ F 224:y +ó¨ F 225:y +ó© F 226:y +óª F 227:y +ó« F 228:y +ó¬ F 229:y +ó­ F 230:y +ó® F 231:y +ó¯ F 232:y +ó° F 233:y +ó± F 234:y +ó² F 235:y +ó³ F 236:y +ó´ F 237:y +óµ F 238:y +ó¶ F 239:y +ó· F 240:y +ó¸ F 241:y +ó¹ F 242:y +óº F 243:y +ó» F 244:y +ó¼ F 245:y +ó½ F 246:y +ó¾ F 247:y +ó¿ F 248:y +óÀ F 249:y +óÁ F 250:y +ó F 251:y +óà F 252:y +óÄ F 253:y +óÅ F 254:y +óÆ F 255:y +óÇ F 0:z +óÈ F 1:z +óÉ F 2:z +óÊ F 3:z +óË F 4:z +óÌ F 5:z +óÍ F 6:z +óÎ F 7:z +óÏ F 8:z +óÐ F 9:z +óÑ F 10:z +óÒ F 11:z +óÓ F 12:z +óÔ F 13:z +óÕ F 14:z +óÖ F 15:z +ó× F 16:z +óØ F 17:z +óÙ F 18:z +óÚ F 19:z +óÛ F 20:z +óÜ F 21:z +óÝ F 22:z +óÞ F 23:z +óß F 24:z +óà F 25:z +óá F 26:z +óâ F 27:z +óã F 28:z +óä F 29:z +óå F 30:z +óæ F 31:z +óç F 32:z +óè F 33:z +óé F 34:z +óê F 35:z +óë F 36:z +óì F 37:z +óí F 38:z +óî F 39:z +óï F 40:z +óð F 41:z +óñ F 42:z +óò F 43:z +óó F 44:z +óô F 45:z +óõ F 46:z +óö F 47:z +ó÷ F 48:z +óø F 49:z +óù F 50:z +óú F 51:z +óû F 52:z +óü F 53:z +óý F 54:z +óþ F 55:z +ô¡ F 56:z +ô¢ F 57:z +ô£ F 58:z +ô¤ F 59:z --- groff-1.18.1.1.orig/font/devdvi/M.proto-ASCII +++ groff-1.18.1.1/font/devdvi/M.proto-ASCII @@ -0,0 +1,4 @@ +name M +internalname min10 +checksum -375402250 +designsize 10485760 --- groff-1.18.1.1.orig/font/devdvi/DESC.in +++ groff-1.18.1.1/font/devdvi/DESC.in @@ -6,6 +6,10 @@ sizes 500-1000000 0 styles R I B BI family T -fonts 13 0 0 0 0 0 0 0 0 0 MI S EX CW +fonts 15 0 0 0 0 0 0 0 0 0 MI S EX CW M G +fontset B G 100..FFFF +fontset HB G 100..FFFF +fontset SB G 100..FFFF +fontset - M 100..FFFF tcommand postpro grodvi --- groff-1.18.1.1.orig/font/devlbp/Makefile.sub +++ groff-1.18.1.1/font/devlbp/Makefile.sub @@ -13,9 +13,9 @@ -rm -f DESC cat $(srcdir)/DESC.in >>DESC if test "$(PAGE)" = A4; then \ - echo "papersize a4" >>DESC; \ + echo "papersize /etc/papersize a4" >>DESC; \ else \ - echo "papersize letter" >>DESC; \ + echo "papersize /etc/papersize letter" >>DESC; \ fi test -z '$(LBPPRINT)' || echo print '$(LBPPRINT)' >>DESC --- groff-1.18.1.1.orig/font/devhtml/Makefile.sub +++ groff-1.18.1.1/font/devhtml/Makefile.sub @@ -1,8 +1,10 @@ DEV=html PROTOFONTS=R I B BI CR CI CB CBI FONTS=$(PROTOFONTS) S -DEVFILES=$(FONTS) DESC -CLEANADD=$(FONTS) DESC +WFONTS=M G +ALLFONTS=$(FONTS) $(WFONTS) +DEVFILES=$(ALLFONTS) DESC +CLEANADD=$(ALLFONTS) DESC RES=240 CPI=10 @@ -13,8 +15,8 @@ @-rm -f $@ @(charwidth=`expr $(RES) / $(CPI)` ; \ sed -e "s/^name [A-Z]*$$/name $@/" \ - -e "s/^\\([^ ]*\\) [0-9]+ /\\1 $$charwidth /" \ - -e "s/^spacewidth [0-9]+$$/spacewidth $$charwidth/" \ + -e "s/^\\([^ ]*\\) [0-9][0-9]* /\\1 $$charwidth /" \ + -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$charwidth/" \ -e "s/^internalname .*$$/internalname $@/" \ -e "/^internalname/s/CR/4/" \ -e "/^internalname/s/BI/3/" \ @@ -29,6 +31,19 @@ @sed -e "s/^res .*$$/res $(RES)/" \ -e "s/^hor .*$$/hor `expr $(RES) / $(CPI)`/" \ -e "s/^vert .*$$/vert `expr $(RES) / $(LPI)`/" \ - -e "s/^fonts .*$$/fonts `set $(FONTS); echo $$#` $(FONTS)/" \ + -e "s/^fonts .*$$/fonts `set $(ALLFONTS); echo $$#` $(ALLFONTS)/" \ $(srcdir)/DESC.proto >$@ +M: M.proto + @echo Making M + @-rm -f M + @(wcharwidth=`expr $(RES) / $(CPI) \* 2`; \ + spacewidth=`expr $(RES) / $(CPI)`; \ + sed -e "s/^u\\([0-9A-F]*\\)..u\\([0-9A-F]*\\) [0-9][0-9]*/u\\1..u\\2 $$wcharwidth/" \ + -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$spacewidth/" \ + $(srcdir)/M.proto > $@) + +G: M + @echo Making G + @-rm -f G + @sed -e 's/name M/name G/' M > G --- groff-1.18.1.1.orig/font/devhtml/DESC.proto +++ groff-1.18.1.1/font/devhtml/DESC.proto @@ -3,7 +3,11 @@ vert 40 unitwidth 10 sizes 6 8 10 12 14 16 18 0 -fonts 9 R I B BI CR CI CB CBI S +fonts 11 R I B BI CR CI CB CBI S M G +fontset B G 2E00..9FFF +fontset - M 2E00..9FFF +fontset B G FF00..FFEF +fontset - M FF00..FFEF tcommand html postpro post-grohtml --- groff-1.18.1.1.orig/font/devhtml/M.proto +++ groff-1.18.1.1/font/devhtml/M.proto @@ -0,0 +1,5 @@ +name M +spacewidth 16 +charset +u2E00..u9FFF 16,14,2 0 +uFF00..uFFEF 16,14,2 0 --- groff-1.18.1.1.orig/font/devascii8/Makefile.sub +++ groff-1.18.1.1/font/devascii8/Makefile.sub @@ -0,0 +1,31 @@ +DEV=ascii8 +FONTS=R I B BI +DEVFILES=$(FONTS) DESC +CLEANADD=$(FONTS) DESC + +RES=240 +CPI=10 +LPI=6 + +$(FONTS): R.proto + @echo Making $@ + @-rm -f $@ + @(charwidth=`expr $(RES) / $(CPI)` ; \ + sed -e "s/^name [A-Z]*$$/name $@/" \ + -e "s/^\\([^ ]*\\) [0-9][0-9]* /\\1 $$charwidth /" \ + -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$charwidth/" \ + -e "s/^internalname .*$$/internalname $@/" \ + -e "/^internalname/s/BI/3/" \ + -e "/^internalname/s/B/2/" \ + -e "/^internalname/s/I/1/" \ + -e "/^internalname .*[^ 0-9]/d" \ + $(srcdir)/R.proto >$@) + +DESC: DESC.proto + @echo Making $@ + @-rm -f $@ + @sed -e "s/^res .*$$/res $(RES)/" \ + -e "s/^hor .*$$/hor `expr $(RES) / $(CPI)`/" \ + -e "s/^vert .*$$/vert `expr $(RES) / $(LPI)`/" \ + -e "s/^fonts .*$$/fonts `set $(FONTS); echo $$#` $(FONTS)/" \ + $(srcdir)/DESC.proto >$@ --- groff-1.18.1.1.orig/font/devascii8/R.proto +++ groff-1.18.1.1/font/devascii8/R.proto @@ -0,0 +1,262 @@ +name R +internalname 0 +spacewidth 24 +charset +! 24 0 0041 +" 24 0 0042 +dq " +lq " +rq " +# 24 0 0043 +sh " +$ 24 0 0044 +Do " +% 24 0 0045 +& 24 0 0046 +' 24 0 0047 +aa " +fm " +aq " +cq " +( 24 0 0050 +) 24 0 0051 +* 24 0 0052 +** " ++ 24 0 0053 +pl " +, 24 0 0054 +\- 24 0 0055 +hy " +- " +mi " +en " +. 24 0 0056 +/ 24 0 0057 +sl " +f/ " +0 24 0 0060 +1 24 0 0061 +2 24 0 0062 +3 24 0 0063 +4 24 0 0064 +5 24 0 0065 +6 24 0 0066 +7 24 0 0067 +8 24 0 0070 +9 24 0 0071 +: 24 0 0072 +; 24 0 0073 +< 24 0 0074 +la " +fo " += 24 0 0075 +eq " +> 24 0 0076 +ra " +fc " +? 24 0 0077 +@ 24 0 0100 +at " +A 24 0 0101 +*A " +B 24 0 0102 +*B " +C 24 0 0103 +D 24 0 0104 +E 24 0 0105 +*E " +F 24 0 0106 +G 24 0 0107 +H 24 0 0110 +*Y " +I 24 0 0111 +*I " +J 24 0 0112 +K 24 0 0113 +*K " +L 24 0 0114 +M 24 0 0115 +*M " +N 24 0 0116 +*N " +O 24 0 0117 +ci " +*O " +P 24 0 0120 +*R " +Q 24 0 0121 +R 24 0 0122 +S 24 0 0123 +T 24 0 0124 +*T " +U 24 0 0125 +V 24 0 0126 +W 24 0 0127 +X 24 0 0130 +*X " +Y 24 0 0131 +*U " +Z 24 0 0132 +*Z " +[ 24 0 0133 +lB " +\ 24 0 0134 +rs " +] 24 0 0135 +rB " +a^ 24 0 0136 +^ " +ha " +_ 24 0 0137 +ru " +ul " +` 24 0 0140 +oq " +ga " +a 24 0 0141 +b 24 0 0142 +c 24 0 0143 +d 24 0 0144 +e 24 0 0145 +f 24 0 0146 +g 24 0 0147 +h 24 0 0150 +i 24 0 0151 +.i " +j 24 0 0152 +k 24 0 0153 +l 24 0 0154 +m 24 0 0155 +n 24 0 0156 +o 24 0 0157 +*o " +p 24 0 0160 +q 24 0 0161 +r 24 0 0162 +s 24 0 0163 +t 24 0 0164 +u 24 0 0165 +v 24 0 0166 +w 24 0 0167 +x 24 0 0170 +mu " +y 24 0 0171 +z 24 0 0172 +lC 24 0 0173 +{ " +ba 24 0 0174 +or " +bv " +br " +| " +lb " +lc " +lf " +lk " +lt " +rb " +rc " +rf " +rk " +rt " +rC 24 0 0175 +} " +a~ 24 0 0176 +~ " +ap " +ti " +char161 24 0 0241 +char162 24 0 0242 +char163 24 0 0243 +char164 24 0 0244 +char165 24 0 0245 +char166 24 0 0246 +char167 24 0 0247 +char168 24 0 0250 +char169 24 0 0251 +char170 24 0 0252 +char171 24 0 0253 +char172 24 0 0254 +char173 24 0 0255 +char174 24 0 0256 +char175 24 0 0257 +char176 24 0 0260 +char177 24 0 0261 +char178 24 0 0262 +char179 24 0 0263 +char180 24 0 0264 +char181 24 0 0265 +char182 24 0 0266 +char183 24 0 0267 +char184 24 0 0270 +char185 24 0 0271 +char186 24 0 0272 +char187 24 0 0273 +char188 24 0 0274 +char189 24 0 0275 +char190 24 0 0276 +char191 24 0 0277 +char192 24 0 0300 +char193 24 0 0301 +char194 24 0 0302 +char195 24 0 0303 +char196 24 0 0304 +char197 24 0 0305 +char198 24 0 0306 +char199 24 0 0307 +char200 24 0 0310 +char201 24 0 0311 +char202 24 0 0312 +char203 24 0 0313 +char204 24 0 0314 +char205 24 0 0315 +char206 24 0 0316 +char207 24 0 0317 +char208 24 0 0320 +char209 24 0 0321 +char210 24 0 0322 +char211 24 0 0323 +char212 24 0 0324 +char213 24 0 0325 +char214 24 0 0326 +char215 24 0 0327 +char216 24 0 0330 +char217 24 0 0331 +char218 24 0 0332 +char219 24 0 0333 +char220 24 0 0334 +char221 24 0 0335 +char222 24 0 0336 +char223 24 0 0337 +char224 24 0 0340 +char225 24 0 0341 +char226 24 0 0342 +char227 24 0 0343 +char228 24 0 0344 +char229 24 0 0345 +char230 24 0 0346 +char231 24 0 0347 +char232 24 0 0350 +char233 24 0 0351 +char234 24 0 0352 +char235 24 0 0353 +char236 24 0 0354 +char237 24 0 0355 +char238 24 0 0356 +char239 24 0 0357 +char240 24 0 0360 +char241 24 0 0361 +char242 24 0 0362 +char243 24 0 0363 +char244 24 0 0364 +char245 24 0 0365 +char246 24 0 0366 +char247 24 0 0367 +char248 24 0 0370 +char249 24 0 0371 +char250 24 0 0372 +char251 24 0 0373 +char252 24 0 0374 +char253 24 0 0375 +char254 24 0 0376 +char255 24 0 0377 --- groff-1.18.1.1.orig/font/devascii8/DESC.proto +++ groff-1.18.1.1/font/devascii8/DESC.proto @@ -0,0 +1,8 @@ +res 240 +hor 24 +vert 40 +unitwidth 10 +sizes 10 0 +fonts 4 R I B BI +tcommand +postpro grotty --- groff-1.18.1.1.orig/font/devX75/Makefile.sub +++ groff-1.18.1.1/font/devX75/Makefile.sub @@ -1,2 +1,13 @@ DEV=X75 -DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S +DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S M G +CLEANADD=M G + +M: M.proto + @echo Making M + @-rm -f M + @cat $(srcdir)/M.proto > M + +G: M + @echo Making G + @-rm -f G + @sed -e 's/name M/name G/' M > G --- groff-1.18.1.1.orig/font/devX75/DESC +++ groff-1.18.1.1/font/devX75/DESC @@ -1,5 +1,17 @@ styles R I B BI -fonts 6 0 0 0 0 0 S +fonts 8 0 0 0 0 0 S M G +fontset B G 2E00..9FFF +fontset CB G 2E00..9FFF +fontset HB G 2E00..9FFF +fontset NB G 2E00..9FFF +fontset TB G 2E00..9FFF +fontset - M 2E00..9FFF +fontset B G FF00..FFEF +fontset CB G FF00..FFEF +fontset HB G FF00..FFEF +fontset NB G FF00..FFEF +fontset TB G FF00..FFEF +fontset - M FF00..FFEF sizes 8 10 12 14 18 24 0 res 75 X11 --- groff-1.18.1.1.orig/font/devX75/M.proto +++ groff-1.18.1.1/font/devX75/M.proto @@ -0,0 +1,6 @@ +name M +spacewidth 2 +charset +u2E00..u9FFF 10 0 +uFF00..uFFEF 10 0 + --- groff-1.18.1.1.orig/font/devX75-12/Makefile.sub +++ groff-1.18.1.1/font/devX75-12/Makefile.sub @@ -1,2 +1,13 @@ DEV=X75-12 -DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S +DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S M G +CLEANADD=M G + +M: M.proto + @echo Making M + @-rm -f M + @cat $(srcdir)/M.proto > M + +G: M + @echo Making G + @-rm -f G + @sed -e 's/name M/name G/' M > G --- groff-1.18.1.1.orig/font/devX75-12/DESC +++ groff-1.18.1.1/font/devX75-12/DESC @@ -1,5 +1,17 @@ styles R I B BI -fonts 6 0 0 0 0 0 S +fonts 8 0 0 0 0 0 S M G +fontset B G 2E00..9FFF +fontset CB G 2E00..9FFF +fontset HB G 2E00..9FFF +fontset NB G 2E00..9FFF +fontset TB G 2E00..9FFF +fontset - M 2E00..9FFF +fontset B G FF00..FFEF +fontset CB G FF00..FFEF +fontset HB G FF00..FFEF +fontset NB G FF00..FFEF +fontset TB G FF00..FFEF +fontset - M FF00..FFEF sizes 8 10 12 14 18 24 0 res 75 X11 --- groff-1.18.1.1.orig/font/devX75-12/M.proto +++ groff-1.18.1.1/font/devX75-12/M.proto @@ -0,0 +1,5 @@ +name M +spacewidth 2 +charset +u2E00..u9FFF 12 0 +uFF00..uFFEF 12 0 --- groff-1.18.1.1.orig/font/devutf8/Makefile.sub +++ groff-1.18.1.1/font/devutf8/Makefile.sub @@ -1,7 +1,8 @@ DEV=utf8 FONTS=R I B BI -DEVFILES=$(FONTS) DESC -CLEANADD=$(FONTS) DESC +WFONTS=M G +DEVFILES=$(FONTS) $(WFONTS) DESC +CLEANADD=$(FONTS) $(WFONTS) DESC RES=240 CPI=10 @@ -12,8 +13,8 @@ @-rm -f $@ @(charwidth=`expr $(RES) / $(CPI)` ; \ sed -e "s/^name [A-Z]*$$/name $@/" \ - -e "s/^\\([^ ]*\\) [0-9]+ /\\1 $$charwidth /" \ - -e "s/^spacewidth [0-9]+$$/spacewidth $$charwidth/" \ + -e "s/^\\([^ ]*\\) [0-9][0-9]* /\\1 $$charwidth /" \ + -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$charwidth/" \ -e "s/^internalname .*$$/internalname $@/" \ -e "/^internalname/s/BI/3/" \ -e "/^internalname/s/B/2/" \ @@ -21,12 +22,27 @@ -e "/^internalname .*[^ 0-9]/d" \ $(srcdir)/R.proto >$@) +M: M.proto + @echo Making M + @-rm -f M + (wcharwidth=`expr $(RES) / $(CPI) \* 2` ; \ + spacewidth=`expr $(RES) / $(CPI)` ; \ + sed -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$spacewidth/" \ + -e "s/^u\\([0-9A-F]*\\)..u\\([0-9A-F]*\\) [0-9][0-9]*/u\\1..u\\2 $$wcharwidth/" \ + $(srcdir)/M.proto > $@) + +G: M + @echo Making G + @-rm -f G + @sed -e 's/name M/name G/' \ + -e 's/internalname 4/internalname 5/' M > G + DESC: DESC.proto @echo Making $@ @-rm -f $@ @sed -e "s/^res .*$$/res $(RES)/" \ -e "s/^hor .*$$/hor `expr $(RES) / $(CPI)`/" \ -e "s/^vert .*$$/vert `expr $(RES) / $(LPI)`/" \ - -e "s/^fonts .*$$/fonts `set $(FONTS); echo $$#` $(FONTS)/" \ + -e "s/^fonts .*$$/fonts `set $(FONTS) $(WFONTS); echo $$#` $(FONTS) $(WFONTS)/" \ $(srcdir)/DESC.proto >$@ --- groff-1.18.1.1.orig/font/devutf8/DESC.proto +++ groff-1.18.1.1/font/devutf8/DESC.proto @@ -3,6 +3,10 @@ vert 40 unitwidth 10 sizes 10 0 -fonts 4 R I B BI +fonts 6 R I B BI M G +fontset B G 2E00..9FFF +fontset B G FF00..FFEF +fontset - M 2E00..9FFF +fontset - M FF00..FFEF tcommand postpro grotty --- groff-1.18.1.1.orig/font/devutf8/M.proto +++ groff-1.18.1.1/font/devutf8/M.proto @@ -0,0 +1,6 @@ +name M +internalname 4 +spacewidth 48 +charset +u2E00..u9FFF 48 0 +uFF00..uFFEF 48 0 --- groff-1.18.1.1.orig/font/devX100-12/Makefile.sub +++ groff-1.18.1.1/font/devX100-12/Makefile.sub @@ -1,2 +1,14 @@ DEV=X100-12 -DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S +DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S M G +CLEANADD=M G + +M: M.proto + @echo Making M + @-rm -f M + @cat $(srcdir)/M.proto > M + +G: M + @echo Making G + @-rm -f G + @sed -e 's/name M/name G/' M > G + --- groff-1.18.1.1.orig/font/devX100-12/DESC +++ groff-1.18.1.1/font/devX100-12/DESC @@ -1,5 +1,17 @@ styles R I B BI -fonts 6 0 0 0 0 0 S +fonts 8 0 0 0 0 0 S M G +fontset B G 2E00..9FFF +fontset CB G 2E00..9FFF +fontset HB G 2E00..9FFF +fontset NB G 2E00..9FFF +fontset TB G 2E00..9FFF +fontset - M 2E00..9FFF +fontset B G FF00..FFEF +fontset CB G FF00..FFEF +fontset HB G FF00..FFEF +fontset NB G FF00..FFEF +fontset TB G FF00..FFEF +fontset - M FF00..FFEF sizes 8 10 12 14 18 24 0 res 100 X11 --- groff-1.18.1.1.orig/font/devX100-12/M.proto +++ groff-1.18.1.1/font/devX100-12/M.proto @@ -0,0 +1,5 @@ +name M +spacewidth 4 +charset +u2E00..u9FFF 20 0 +uFF00..uFFEF 20 0 --- groff-1.18.1.1.orig/TODO.jp +++ groff-1.18.1.1/TODO.jp @@ -0,0 +1,19 @@ +TODO lists + +- configure + nl_langinfo() + iconv() + +- font/devdvi + G,M -- NTT and/or ASCII +- src/devices + grohtml + grodvi + grolbp + grolj4 +- src/xditview + +- command line option to specify input/output encoding +- font code? + can we assume wchar code == font code? + [to simplify indexing]