--- groff-1.20.1-japanese.patch.old 2009-10-30 00:51:42.000000000 +0900 +++ groff-1.20.1-japanese.patch 2009-10-30 09:07:02.800481459 +0900 @@ -1625,7 +1625,7 @@ set_color(env->col); int code = f->get_code(g); +#ifdef NIPPON -+ const char *sf = f->get_subfont_name(g); ++ const char *sf = f->get_subfont_name(g->index); + if (env->size != cur_point_size || f != cur_font || + (sf != cur_subfont && strcmp(sf, cur_subfont))) { +#else @@ -3001,7 +3001,7 @@ +#ifdef NIPPON + else if (strcmp(p, "fixedkanji") == 0) { + font_char_metric metric; -+ int last_index; ++ glyph *last_glyph = NULL; + + had_fixedkanji = 1; + @@ -3046,9 +3046,9 @@ + + for (encoding->wchar_iter_first(&wc); encoding->wchar_iter_next(&wc);) { + metric.code = wc; -+ last_index = wchar_index(wc); -+ add_entry(last_index, metric); -+ copy_entry(number_to_index(metric.code), last_index); ++ last_glyph = number_to_glyph(wchar_index(wc)); ++ last_glyph->index = wchar_index(wc); ++ add_entry(last_glyph, metric); + } + } +#endif @@ -3219,7 +3219,7 @@ + int i = 1; + wchar wc = encoding->make_wchar(s[0], (const unsigned char *)s, &i); + if (encoding->is_wchar_code(wc)) { -+ return indexer.wchar_index(wc); ++ return indexer.numbered_char_glyph(indexer.wchar_index(wc)); + } + } +#endif @@ -4258,7 +4258,7 @@ +#ifdef NIPPON +int font::wchar_index(wchar wc) +{ -+ return(wcharset_table_entry(wc)->get_index()); ++ return(wcharset_table_entry(wc)->as_glyph()->index); +} +#endif diff -Naur groff-1.20.1.orig/src/roff/troff/node.cpp groff-1.20.1/src/roff/troff/node.cpp