--- README.I18N +++ README.I18N 2005-05-23 17:45:33.000000000 +0000 @@ -0,0 +1,28 @@ +GV I18N Fontset Patch for Japanese + Keio University in Japan + 1998 Yasuyuki Furukawa + +This patch make gv to support Japanese NLS. + + if you can not see Japanese GV, please install + 10/12pt kanji fonts to X Window System, or edit + file `$(SRC)/src/gv_font_res-I18N_mb.dat' and + recompile. + +NEED: + Xaw3d 1.4, 1.5 has a fatal bug in MultiSrc.c line 735-740. + This GV's patch need Xaw3d library patched follow: + +diff -Ncr xc/lib/Xaw3d/MultiSrc.c xc-fix/lib/Xaw3d/MultiSrc.c +*** xc/lib/Xaw3d/MultiSrc.c Fri May 15 04:03:23 1998 +--- xc-fix/lib/Xaw3d/MultiSrc.c Fri Dec 18 09:59:52 1998 +*** 735,740 **** +--- 735,741 ---- + + if ( string_set || (old_src->multi_src.type != src->multi_src.type) ) { + RemoveOldStringOrFile(old_src, string_set); ++ src->multi_src.allocated_string = old_src->multi_src.allocated_string; + file = InitStringOrFile(src, string_set); + + /* Load pieces does this logic for us, but it shouldn't. Its messy.*/ + --- src/Makefile.am +++ src/Makefile.am 2010-02-24 12:15:17.160125983 +0000 @@ -14,7 +14,7 @@ appdefaultsdir = $(pkgdatadir) appdefaults_DATA = ../GV -EXTRA_DIST=ad2c gv_font_res.dat gv_layout_res.dat gv_misc_res.dat Aaa_bison.yacc \ +EXTRA_DIST=ad2c gv_font_res.dat gv_font_res-I18N_mb.dat gv_layout_res.dat gv_misc_res.dat Aaa_bison.yacc \ gv_current.xbm gv_doc.xbm gv_empty.xbm gv_even.xbm gv_icon.xbm gv_odd.xbm \ gv_selected.xbm gv_unmark.xbm @@ -217,7 +217,7 @@ gv_class.h : gv_class.ad @echo "creating gv_class.h" @sh $(srcdir)/ad2c gv_class.ad > gv_class.h -gv_class.ad : $(srcdir)/gv_font_res.dat $(srcdir)/gv_layout_res.dat gv_make_res.dat $(srcdir)/gv_misc_res.dat $(srcdir)/gv_user_res.dat gv_intern_res_unix.dat +gv_class.ad : $(srcdir)/gv_font_res.dat $(srcdir)/gv_font_res-I18N_mb.dat $(srcdir)/gv_layout_res.dat gv_make_res.dat $(srcdir)/gv_misc_res.dat $(srcdir)/gv_user_res.dat gv_intern_res_unix.dat @echo "creating gv_class.ad" cp $(srcdir)/gv_copyright.dat gv_class.ad chmod u+w gv_class.ad @@ -231,6 +231,7 @@ gv_class.ad : $(srcdir)/gv_font_res.dat @cat $(srcdir)/gv_user_res.dat >> gv_class.ad @cat gv_intern_res_unix.dat >> gv_class.ad @cat gv_make_res.dat >> gv_class.ad + @cat $(srcdir)/gv_font_res-I18N_mb.dat >> gv_class.ad @cat $(srcdir)/gv_font_res.dat >> gv_class.ad @cat $(srcdir)/gv_misc_res.dat >> gv_class.ad @cat $(srcdir)/gv_layout_res.dat >> gv_class.ad @@ -278,3 +279,14 @@ if USE_MEMDEBUG_CODE gv_SOURCES += d_mem.c d_mem.h d_xtmem.c d_xtmem.h endif +install-nls: + @for LNG in ja_JP.UTF-8 ko_KR.UTF-8; do \ + test -f gv_nls_$$LNG.dat || continue; \ + cat $(srcdir)/GV.ad > $(srcdir)/GV_$$LNG.ad; \ + cat $(srcdir)/gv_nls_$$LNG.dat >> $(srcdir)/GV_$$LNG.ad; \ + test -d $(DESTDIR)$(datadir)/X11/$$LNG/app-defaults || \ + $(mkdir_p) $(DESTDIR)$(datadir)/X11/$$LNG/app-defaults; \ + $(INSTALL) $(INSTALLFLAGS) \ + $(srcdir)/GV_$$LNG.ad $(DESTDIR)$(datadir)/X11/$$LNG/app-defaults/GV; \ + done + --- src/dialog.c +++ src/dialog.c 2010-02-24 13:05:21.608126304 +0000 @@ -31,6 +31,7 @@ #include "ac_config.h" #include "config.h" +#include "VlistP.h" #include @@ -272,20 +273,27 @@ void DialogPopupSetText(s) Arg args[10]; Cardinal n; Widget response; + VlistWidget vw; Dimension width; # define DIALOG_POPUP_FREE_SPACE 50 # define DIALOG_POPUP_TEXT_MIN_WIDTH 100 String os; Dimension lm,rm,bw,nw; + XFontSet fontset; XFontStruct *font; BEGINMESSAGE(DialogPopupSetText) if (!s) {INFMESSAGE(no text) ENDMESSAGE(DialogPopupSetText) return;} if (!dialogPopupCreated) makeDialogPopup(); response = XtNameToWidget(DIALOG_POPUP, "*dialog_text"); + vw = (VlistWidget)response; n=0; - XtSetArg(args[n], XtNfont, &font); n++; + if( vw->simple.international == True ) { + XtSetArg(args[n], XtNfontSet, &fontset); n++; + } else { + XtSetArg(args[n], XtNfont, &font); n++; + } XtSetArg(args[n], XtNleftMargin, &lm); n++; XtSetArg(args[n], XtNrightMargin, &rm); n++; XtSetArg(args[n], XtNborderWidth, &bw); n++; @@ -293,8 +301,12 @@ void DialogPopupSetText(s) XtSetArg(args[n], XtNwidth, &width); n++; XtGetValues(response, args, n); n=0; - nw= ((font->max_bounds.width+font->min_bounds.width)*((Dimension)strlen(s))+1)/2 - +lm+rm+DIALOG_POPUP_FREE_SPACE+2*bw; + if( vw->simple.international == True ) + nw= XmbTextEscapement( fontset, s, strlen(s)); + else + nw= ((font->max_bounds.width+font->min_bounds.width)*((Dimension)strlen(s))+1)/2; + nw += lm+rm+DIALOG_POPUP_FREE_SPACE+2*bw; + if (nwwidth) { INFIMESSAGE(new width,nw) --- src/gv_font_res-I18N_mb.dat +++ src/gv_font_res-I18N_mb.dat 2010-02-24 12:16:33.728125910 +0000 @@ -0,0 +1,55 @@ + +!########## gv_font_res_linux.dat + +GV*international: True + +!##### FontSets + +GV*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*SmeBSB.fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*Button.fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV.?.processButton.fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV.?.Label*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV.?.Button*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV.?.locator*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV.?.dateButton*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV.?.titleButton*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optiongvPopup*infoVerboseButton.fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV.?.infoVerboseButton*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV.?.prevPage*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV.?.nextPage*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*newtoc.fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*fileSel*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*fileSel*button1.fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*fileSel*button2.fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*fileSel*button3.fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*fileSel*button4.fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*fileSel*pathtext*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optionsetupPopup*Label*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optionsetupPopup*confirmButton.fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optionsetupPopup*Switch*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optionsetupPopup*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optionsetupPopup*Button.fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optiongvPopup*Label*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optiongvPopup*Switch*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optiongvPopup*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optiongvPopup*Button.fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optionfsPopup*Label*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optionfsPopup*Switch*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optionfsPopup*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optionfsPopup*Button.fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optiongsPopup*Label*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optiongsPopup*Switch*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optiongsPopup*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*optiongsPopup*Button.fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*dialogPopup*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*dialogPopup*Button.fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*dialogPopup*message*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*notePopup*Button.fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*notePopup*message*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*confirmPopup*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*confirmPopup*Button.fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*versionPopup*Label*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*versionPopup*versionTexta*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*versionPopup*versionTextb*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* +GV*infoPopup*Text*fontSet: -efont-biwidth-medium-r-normal--16-*-*-*-*-*-iso10646-1,-gnu-unifont-medium-r-normal--16-*-*-*-*-*-iso10646-1,-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-*-*,-jis-fixed-medium-r-*--16-*-*-*-*-*-jisx0208.1983-0,-*-*-medium-r-*--16-*-*-*-*-*-*-*,* --- src/gv_misc_res.dat +++ src/gv_misc_res.dat 2005-05-23 17:45:33.000000000 +0000 @@ -220,6 +220,10 @@ GV*optionsetupPopup*scalesFrame.forcedWi GV*optionsetupPopup*mediasFrame.forcedWidth: 240 GV*optionsetupPopup*mediasFrame.forcedHeight: 400 +!##### FileSet Popup + +GV*fileSelPopup.title: Open File + !##### Panner GV*pannerFrame.frameType: sunken @@ -321,6 +325,7 @@ GV*checkFile.label: Check File GV*filters.label: Filters: GV*dirs.label: Directories GV*button1.label: Cancel +GV*button2.label: Open File GV*rescan.label: Rescan Directory GV*screenSizeLabel.label: Screen Size (mm) --- src/gv_nls_ja_JP.UTF-8.dat +++ src/gv_nls_ja_JP.UTF-8.dat 2008-03-27 15:17:51.000000000 +0000 @@ -0,0 +1,202 @@ +! +!** Copyright (C) 1995, 1996, 1997 Johannes Plass +! +! This program 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 of the License, or +! (at your option) any later version. +! +! This program 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., 675 Mass Ave, Cambridge, MA 02139, USA. +! +! Author: Johannes Plass (plass@thep.physik.uni-mainz.de) +! Department of Physics +! Johannes Gutenberg-University +! Mainz, Germany +! +! +! gv_ja_JP.eucJP.ad +! Japanese NLS label for gv by +! 1998 Yasuyuki Furukawa (yasu@on.cs.keio.ac.jp) +! + + +!##### Zoom Popup + +GV*zoomPopup.title: GV - 拡大画面 + +!##### Info Popup + +GV*infoPopup.title: GhostScriptメッセージ + +!##### Dialog Popup + +GV*dialogPopup.title: ダイアログ + +!##### Note Popup + +GV*notePopup.title: メッセージ + +!##### Confirm Popup + +GV*confirmPopup.title: 確認 + +!##### OptionsSetup Popup + +GV*optionfsPopup.title: ファイル選択オプション + +!##### OptionsGS Popup + +GV*optiongsPopup.title: Ghostscriptオプション + +!##### OptionsGV Popup + +GV*optiongvPopup.title: GVオプション + +!##### OptionsSetup Popup + +GV*optionsetupPopup.title: セットアップオプション + +!##### FileSet Popup + +GV*fileSelPopup.title: ファイルを開く + +!################################################ +!##### Labels +!################################################ + +GV*cancel.Label: キャンセル +GV*dismiss.Label: 閉じる +GV*apply.label: 適用 +GV*copyright.Label: 著作権 +GV*quit.Label: 終了 +GV*fileButton.Label: ファイル +GV*open.Label: 開く ... +GV*reopen.Label: 再オープン +GV*update.Label: 更新 +GV*printAllPages.Label: 文章印刷 ... +GV*printMarkedPages.Label: マークしたページの印刷... +GV*saveAllPages.Label: 文章保存 ... +GV*saveMarkedPages.Label: マークしたページの保存... +GV*stateButton.Label: 環境設定 +GV*stop.Label: 割り込み停止 +GV*dsc.Label: 文書構造によるスペクト調整 +GV*eof.Label: EOFコメントを無視 +GV*antialias.Label: アンチエイリアス +GV*watchFile.Label: 自動ファイル更新 +GV*showTitle.Label: タイトル表示 +GV*pixmap.Label: Backing Pixmap +GV*size.Label: 自動サイズ変更 +GV*watch.Label: 自動ファイル更新 +GV*optionsgv.Label: GVオプション... +GV*optionsfs.Label: ファイル選択オプション... +GV*optionsgs.Label: Ghostscriptオプション... +GV*optionssetup.Label: セットアップオプション... +GV*pageButton.Label: ページ +GV*next.Label: 次へ +GV*show.Label: 再表示 +GV*prev.Label: 前へ +GV*center.Label: 中央 +GV*pageButton*current.Label: 現在のページをマーク/解除 +GV*pageButton*even.Label: 偶数ページをマーク/解除 +GV*pageButton*odd.Label: 奇数ページをマーク/解除 +GV*pageButton*unmark.Label: 全マーク解除 +GV*processButton.Label: \ 実行 +GV*mark.Label: マーク +GV*prevPage.Label: << +GV*nextPage.Label: >> +GV*unmark.Label: マーク解除 +GV*automatic.Label: 自動 +GV*portrait.Label: ポートレート +GV*landscape.Label: ランドスケープ +GV*upsidedown.Label: 上下反転 +GV*seascape.Label: 逆ランドスケープ +GV*swap.Label: ランドスケープ変換 +GV*toggleCurrent.label: 現在のページマーク/解除 +GV*toggleEven.label: 偶数ページマーク/解除 +GV*toggleOdd.label: 奇数ページマーク/解除 +GV*unmarkAll.label: 全マーク解除 +GV*printAll.label: 全印刷 +GV*printMarked.label: マーク部分印刷 +GV*saveAll.label: 全保存 +GV*saveMarked.label: マーク部分保存 +GV*openFile.label: 開く +GV*redisplay.label: 再表示 +GV*updateFile.label: ファイル更新 +GV*checkFile.label: ファイルチェック + +GV*filters.label: フィルタ: +GV*dirs.label: ディレクトリ +GV*button1.label: キャンセル +GV*button2.label: ファイルを開く +GV*rescan.label: ディレクトリ再読込 +GV*screenSizeLabel.label: 画面サイズ[mm] + +GV*versionPopup*versionDone*label: 閉じる +GV*dialogPopup*cancel.label: キャンセル +GV*notePopup*done.label: 了解 + +GV*confirmPopup*cancel.label: キャンセル +GV*confirmPopup*done.label: 終了 +GV*save.label: 保存 + +GV*optiongvPopup*mediaLabel.label: \ 用紙サイズ \ +GV*optiongvPopup*fmediaLabel.label: 判別不明時の用紙サイズ +GV*optiongvPopup*orientLabel.label: \ 用紙の向き \ +GV*optiongvPopup*forientLabel.label: 判別不明時の用紙向き +GV*optiongvPopup*magLabel.label: 拡大縮小 +GV*optiongvPopup*antialias.label: アンチエイリアス +GV*optiongvPopup*respectDSC.label: DSCを有効 +GV*optiongvPopup*eof.label: EOFを無視 +GV*optiongvPopup*autoResize.label: 可変サイズ +GV*optiongvPopup*swapLandscape.label: ランドスケープ変換 +GV*optiongvPopup*scalesLabel.label: \ スケール \ + +GV*miscmenuLabel.label: その他メニューエントリ +GV*magmenuLabel.label: 拡大メニューエントリ +GV*mediasLabel.label: メディアの大きさ +GV*confirmLabel.label: 終了時の確認 +GV*misc.label: その他 +GV*scrolling.label: スクロール反転 +GV*eyeGuide.label: スクロールガイド +GV*confirmPrint.label: 印刷時の確認 +GV*uncompressLabel.label: 圧縮展開 +GV*autoCenter.label: 自動的に中央へ +GV*printCommandLabel.label: 印刷コマンド +GV*scratchDirLabel.label: スクラッチディレクトリ +GV*saveDirLabel.label: 保存ディレクトリ +GV*scalesLabel.label: スケール +GV*scaleBaseLabel.label: スケールベース + +GV*safer.label: より安全に +GV*quiet.label: 終了 +GV*defaults.label: システム標準値 +GV*scanLabel.label: PDF読み込み +GV*convLabel.label: PDF変換 +GV*gsLabel.label: Postscriptエンジン +GV*x11devLabel.label: デバイス +GV*x11alphadevLabel.label: アンチエイリアスデバイス +GV*argumentsLabel.label: 引数 + +GV*filtersLabel.label: ファイル選択フィルタ +GV*dirsLabel.label: ファイル選択ディレクトリ +GV*filterLabel.label: 標準フィルタ + +GV*miscMenu.update.label: ファイル更新 +GV*miscMenu.redisplay.label: 再表示 +GV*miscMenu.stop.label: 割り込み停止 +GV*miscMenu.toggle_current.label: 現在のページマーク/解除 +GV*miscMenu.toggle_odd.label: 奇数ページマーク/解除 +GV*miscMenu.toggle_even.label: 偶数ページマーク/解除 +GV*miscMenu.unmark.label: 全マーク解除 +GV*miscMenu.print_all.label: 全印刷 +GV*miscMenu.print_marked.label: マーク部分印刷 +GV*miscMenu.save_all.label: 全保存 +GV*miscMenu.save_marked.label: マーク部分保存 + --- src/gv_nls_ko_KR.UTF-8.dat +++ src/gv_nls_ko_KR.UTF-8.dat 2008-03-27 15:41:29.000000000 +0000 @@ -0,0 +1,202 @@ +! +!** Copyright (C) 1995, 1996, 1997 Johannes Plass +! +! This program 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 of the License, or +! (at your option) any later version. +! +! This program 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., 675 Mass Ave, Cambridge, MA 02139, USA. +! +! Author: Johannes Plass (plass@thep.physik.uni-mainz.de) +! Department of Physics +! Johannes Gutenberg-University +! Mainz, Germany +! +! +! gv_euc-kr.ad +! Korean NLS label for gv by +! 1999 Sang-Jin Hwang, (hsjlinux@netian.com) +! + + +!##### Zoom Popup + +GV*zoomPopup.title: GV - 확대 + +!##### Info Popup + +GV*infoPopup.title: 고스트 스크립트 메시지 + +!##### Dialog Popup + +GV*dialogPopup.title: 다이알로그 + +!##### Note Popup + +GV*notePopup.title: 메시지 + +!##### Confirm Popup + +GV*confirmPopup.title: 확인 + +!##### OptionsSetup Popup + +GV*optionfsPopup.title: 파일 선택 옵션 + +!##### OptionsGS Popup + +GV*optiongsPopup.title: 고스트 스크립트 옵션 + +!##### OptionsGV Popup + +GV*optiongvPopup.title: GV 옵션 + +!##### OptionsSetup Popup + +GV*optionsetupPopup.title: 설정 옵션 + +!##### FileSet Popup + +GV*fileSelPopup.title: 파일 열기 + +!################################################ +!##### Labels +!################################################ + +GV*cancel.Label: 취소 +GV*dismiss.Label: 닫기 +GV*apply.label: 적용 +GV*copyright.Label: 저작권 +GV*quit.Label: 종료 +GV*fileButton.Label: 파일 +GV*open.Label: 열기 ... +GV*reopen.Label: 재열기 +GV*update.Label: 경신 +GV*printAllPages.Label: 문서 인쇄 ... +GV*printMarkedPages.Label: 마크한 페이지 인쇄 ... +GV*saveAllPages.Label: 문서 저장 ... +GV*saveMarkedPages.Label: 마크한 페이지 저장 ... +GV*stateButton.Label: 환경 설정 +GV*stop.Label: 중지 +GV*dsc.Label: 문서 구조화 +GV*eof.Label: EOF 주석 무시 +GV*antialias.Label: 매끄러운 화면 처리 +GV*watchFile.Label: 자동 파일경신 +GV*showTitle.Label: 타이틀 표시 +GV*pixmap.Label: Backing Pixmap +GV*size.Label: 자동 크기 조절 +GV*watch.Label: 자동 파일경신 +GV*optionsgv.Label: GV 옵션 ... +GV*optionsfs.Label: 파일 선택 옵션 ... +GV*optionsgs.Label: 고스트 스크립트 옵션 ... +GV*optionssetup.Label: 설정 옵션 ... +GV*pageButton.Label: 페이지 +GV*next.Label: 다음 +GV*show.Label: 화면 재시작 +GV*prev.Label: 이전 +GV*center.Label: 중간 +GV*pageButton*current.Label: 현재페이지 마크/해제 +GV*pageButton*even.Label: 짝수페이지 마크/해제 +GV*pageButton*odd.Label: 홀수페이지 마크/해제 +GV*pageButton*unmark.Label: 전 마크 해제 +GV*processButton.Label: \ 진행중 +GV*mark.Label: 마크 +GV*prevPage.Label: << +GV*nextPage.Label: >> +GV*unmark.Label: 표시 안함 +GV*automatic.Label: 자동 +GV*portrait.Label: Portrait +GV*landscape.Label: Landscape +GV*upsidedown.Label: 상하 반전 +GV*seascape.Label: Seascape +GV*swap.Label: Landscape변환 +GV*toggleCurrent.label: 현재페이지 마크/해제 +GV*toggleEven.label: 짝수페이지 마크/해제 +GV*toggleOdd.label: 홀수페이지 마크/해제 +GV*unmarkAll.label: 모두 표시 안함 +GV*printAll.label: 모두 인쇄 +GV*printMarked.label: 마크부분 인쇄 +GV*saveAll.label: 모두 저장 +GV*saveMarked.label: 표시 저장 +GV*openFile.label: 열기 +GV*redisplay.label: 화면 재시작 +GV*updateFile.label: 파일경신 +GV*checkFile.label: 파일 확인 + +GV*filters.label: 필터 +GV*dirs.label: 디렉토리 +GV*button1.label: 취소 +GV*button2.label: 파일 열기 +GV*rescan.label: 디렉토리 검색 +GV*screenSizeLabel.label: 회면 사이즈mm] + +GV*versionPopup*versionDone*label: 취소 +GV*dialogPopup*cancel.label: 취소 +GV*notePopup*done.label: 예 + +GV*confirmPopup*cancel.label: 취소 +GV*confirmPopup*done.label: 종료 +GV*save.label: 저장 + +GV*optiongvPopup*mediaLabel.label: \ 용지 사이즈 \ +GV*optiongvPopup*fmediaLabel.label: 불판명시의 용지 사이즈 +GV*optiongvPopup*orientLabel.label: \ 원 상태 \ +GV*optiongvPopup*forientLabel.label: 윈 상태로 복귀 +GV*optiongvPopup*magLabel.label: 확대축소 +GV*optiongvPopup*antialias.label: 다듬기 +GV*optiongvPopup*respectDSC.label: DSC를 유효 +GV*optiongvPopup*eof.label: EOF를 무시 +GV*optiongvPopup*autoResize.label: 가변 사이즈 +GV*optiongvPopup*swapLandscape.label: Landscape변환 +GV*optiongvPopup*scalesLabel.label: \ 스케일 \ + +GV*miscmenuLabel.label: 기타 메뉴 +GV*magmenuLabel.label: 확대 메뉴 목록 +GV*mediasLabel.label: 미디어 크기 +GV*confirmLabel.label: 확인 종료 +GV*misc.label: 기타 +GV*scrolling.label: 스크롤 반전 +GV*eyeGuide.label: 스크롤 가이드 +GV*confirmPrint.label: 인쇄시 확인 +GV*uncompressLabel.label: 압축 전개 +GV*autoCenter.label: 자동적으로 중앙으로 +GV*printCommandLabel.label: 인쇄 명령어 +GV*scratchDirLabel.label: 스크레치 디렉토리 +GV*saveDirLabel.label: 디렉토리 저장 +GV*scalesLabel.label: 스케일 +GV*scaleBaseLabel.label: 기본 스케일 + +GV*safer.label: 보다 안전하게 +GV*quiet.label: 종료 +GV*defaults.label: 시스템 표준값 +GV*scanLabel.label: PDF 검색 +GV*convLabel.label: PDF 변환 +GV*gsLabel.label: Postscript인터럽트 +GV*x11devLabel.label: 디바이스 +GV*x11alphadevLabel.label: 디바이스 조정 +GV*argumentsLabel.label: 인수 + +GV*filtersLabel.label: 파일 선택 필터 +GV*dirsLabel.label: 파일 선택 디렉토리 +GV*filterLabel.label: 기본 필터 + +GV*miscMenu.update.label: 파일경신 +GV*miscMenu.redisplay.label: 화면 재조정 +GV*miscMenu.stop.label: 인터럽트 중지 +GV*miscMenu.toggle_current.label: 현재페이지 마크/해제 +GV*miscMenu.toggle_odd.label: 홀수페이지 마크/해제 +GV*miscMenu.toggle_even.label: 짝수페이지 마크/해제 +GV*miscMenu.unmark.label: 모두 표시 안함 +GV*miscMenu.print_all.label: 모두 인쇄 +GV*miscMenu.print_marked.label: 마크 부분 인쇄 +GV*miscMenu.save_all.label: 모두 저장 +GV*miscMenu.save_marked.label: 표시 저장 + --- src/info.c +++ src/info.c 2008-03-27 14:58:14.000000000 +0000 @@ -36,6 +36,7 @@ #include "message.h" #include "config.h" +#include "VlistP.h" #include #include @@ -70,6 +71,20 @@ static Bool infoPopupCreated = False; static Bool infoPopupVisible = False; static int info_length; +static int FontSetWidth( XFontSet fnt ) { + XRectangle ink_array_return, logical_array_return; + XRectangle overall_ink_return, overall_logical_return; + int num_chars_return; + XmbTextPerCharExtents( fnt, "A", 1, + &ink_array_return, + &logical_array_return, 1, + &num_chars_return, + &overall_ink_return, + &overall_logical_return ); + return( overall_logical_return.width ); +} +#define FontSetHeight(fnt) (XExtentsOfFontSet(fnt)->max_logical_extent.height) + /*############################################################################### cb_popupInfoPopup ###############################################################################*/ @@ -193,7 +208,9 @@ void makeInfoPopup(void) Cardinal n; Dimension bottomMargin, leftMargin, rightMargin, topMargin; Dimension width, height; + XFontSet fontset; XFontStruct *font; + VlistWidget vw; BEGINMESSAGE(makeInfoPopup) @@ -221,20 +238,30 @@ void makeInfoPopup(void) XtSetArg(args[n], XtNleft, XtChainLeft); n++; XtSetArg(args[n], XtNright, XtChainRight); n++; infodismiss = XtCreateManagedWidget("dismiss", buttonWidgetClass,infoform,args,n); + vw = (VlistWidget)infodismiss; XtAddCallback(infodismiss, XtNcallback, cb_popdownInfoPopup,NULL); XtInstallAccelerators(infoform, infodismiss); XtInstallAccelerators(infotext, infodismiss); n=0; - XtSetArg(args[n], XtNfont, &font); n++; + if( vw->simple.international == True ) { + XtSetArg(args[n], XtNfontSet, &fontset); n++; + } else { + XtSetArg(args[n], XtNfont, &font); n++; + } XtSetArg(args[n], XtNbottomMargin, &bottomMargin); n++; XtSetArg(args[n], XtNleftMargin, &leftMargin); n++; XtSetArg(args[n], XtNrightMargin, &rightMargin); n++; XtSetArg(args[n], XtNtopMargin, &topMargin); n++; XtGetValues(infotext,args,n); - width = font->max_bounds.width * 80 + leftMargin + rightMargin; - height = (font->ascent + font->descent) * 22 + topMargin + bottomMargin; + if( vw->simple.international == True ) { + width = FontSetWidth(fontset) * 80 + leftMargin + rightMargin; + height = FontSetHeight(fontset) * 22 + topMargin + bottomMargin; + } else { + width = font->max_bounds.width * 80 + leftMargin + rightMargin; + height = (font->ascent + font->descent) * 22 + topMargin + bottomMargin; + } n=0; XtSetArg(args[0], XtNwidth, width); n++; --- src/main.c +++ src/main.c 2008-03-27 14:58:53.000000000 +0000 @@ -408,6 +408,32 @@ int main(argc, argv) /*### initializing toolkit and the application context ########*/ + /* + Make sure that LC_NUMERIC is POSIX. + LC_NUMERIC must not use locales like de_DE.UTF-8 or de_DE@eurowhere + the decimal separator is ',' or gv will fail with the + message "**** Unable to open the initial device, quitting." + */ + if (getenv("LC_ALL")) { + char *locale; + locale = getenv("LC_ALL"); + unsetenv("LC_ALL"); + setenv("LC_CTYPE", locale, 1); + setenv("LC_NUMERIC", locale, 1); + setenv("LC_TIME", locale, 1); + setenv("LC_COLLATE", locale, 1); + setenv("LC_MONETARY", locale, 1); + setenv("LC_MESSAGES", locale, 1); + setenv("LC_PAPER", locale, 1); + setenv("LC_NAME", locale, 1); + setenv("LC_ADDRESS", locale, 1); + setenv("LC_TELEPHONE", locale, 1); + setenv("LC_MEASUREMENT", locale, 1); + setenv("LC_IDENTIFICATION", locale, 1); + } + setenv("LC_NUMERIC", "POSIX", 1); + XtSetLanguageProc(NULL, NULL, NULL); + INFMESSAGE(initializing toolkit and the application context) XtToolkitInitialize(); app_con = XtCreateApplicationContext(); --- src/misc_private.c +++ src/misc_private.c 2010-02-24 13:11:25.712127659 +0000 @@ -48,6 +48,7 @@ #include "types.h" #include "misc_private.h" +#include "VlistP.h" /*############################################################*/ /* update_label */ @@ -59,6 +60,7 @@ update_label(widget,text) char *text; { LabelWidget w = (LabelWidget) widget; + VlistWidget vw = (VlistWidget) widget; int shadow; BEGINMESSAGE1(update_label) @@ -78,26 +80,41 @@ update_label(widget,text) if (text) { /* most of the following comes from X11/Xaw/Label.c */ Position x,y; INFSMESSAGE(update_label,text) - y = w->label.label_y + w->label.font->max_bounds.ascent; + if( vw->simple.international == True ) { + y = w->label.label_y - XExtentsOfFontSet(w->label.fontset)->max_logical_extent.y; + } else { + y = w->label.label_y + w->label.font->max_bounds.ascent; + } if (w->label.justify == XtJustifyCenter) { unsigned int width; int len = (int) strlen(text); - XFontStruct *fs = w->label.font; - if (w->label.encoding) width = XTextWidth16 (fs, (XChar2b*)text, (int)(len/2) ); - else width = XTextWidth (fs, text , (int)(len) ); + if( vw->simple.international == True ) { + XFontSet fs = w->label.fontset; + width = XmbTextEscapement(fs, text, (int)len ); + } else { + XFontStruct *fs = w->label.font; + if (w->label.encoding) width = XTextWidth16 (fs, (XChar2b*)text, (int)(len/2) ); + else width = XTextWidth (fs, text , (int)(len) ); + } x = (Position) ((w->core.width-width)/2); } else { x = w->label.internal_width + w->threeD.shadow_width; } - if (w->label.encoding) { - XDrawString16(XtDisplay(widget), XtWindow(widget), - w->label.normal_GC, - x, y,(XChar2b*)text, (int)(strlen(text))); + if( vw->simple.international == True ) { + XmbDrawString(XtDisplay(widget), XtWindow(widget), + w->label.fontset, w->label.normal_GC, + x, y, text, (int)(strlen(text))); } else { - XDrawString(XtDisplay(widget), XtWindow(widget), + if (w->label.encoding) { + XDrawString16(XtDisplay(widget), XtWindow(widget), + w->label.normal_GC, + x, y,(XChar2b*)text, (int)(strlen(text))); + } else { + XDrawString(XtDisplay(widget), XtWindow(widget), w->label.normal_GC, x, y, text, (int)(strlen(text))); + } } }