Xref: utzoo comp.windows.x:30080 sci.lang.japan:2517 Path: utzoo!censor!geac!torsqnt!news-server.csri.toronto.edu!cs.utexas.edu!sdd.hp.com!zaphod.mps.ohio-state.edu!maverick.ksu.ksu.edu!unmvax!ariel.unm.edu!nmsu!opus!mleisher From: mleisher@nmsu.edu (Mark Leisher) Newsgroups: comp.windows.x,sci.lang.japan Subject: kinput patch for EUC encoded fonts Message-ID: Date: 30 Nov 90 04:44:13 GMT Sender: news@NMSU.Edu Followup-To: comp.windows.x Distribution: comp.windows.x,sci.lang.japan Organization: Computing Research Lab Lines: 121 $@max_byte1 > 0) || ((f)->max_char_or_byte2 > 255)) + #define HighEncoding(f) ((f)->min_char_or_byte2 > 0x80) XWSGC XtWSGetGCSet(w, mask, values, fontG0, fontG1, fontG2, fontG3) *************** *** 57,62 **** --- 58,65 ---- gcset->fe[i].flag = GCCREAT; if (IS2B(gcset->fe[i].font)) gcset->fe[i].flag |= TWOB; + if (HighEncoding(gcset->fe[i].font)) + gcset->fe[i].flag |= HIGHENCODING; } else { gcset->fe[i].gc = NULL; } *** xwstr.c.ORIG Thu Nov 29 18:18:55 1990 --- xwstr.c Thu Nov 29 18:29:25 1990 *************** *** 79,84 **** --- 79,85 ---- #define G3MASK 0x8000 #define IS2B(f) (((f)->max_byte1 > 0) || ((f)->max_char_or_byte2 > 255)) + #define HighEncoding(f) ((f)->min_char_or_byte2 > 0x80) #define MIN(a, b) ((a) > (b) ? (b) : (a)) #define MAX(a, b) ((a) > (b) ? (a) : (b)) *************** *** 125,130 **** --- 126,133 ---- gcset->fe[i].flag = FONTQUERY; if (IS2B(font)) gcset->fe[i].flag = TWOB; + if (HighEncoding(font)) + gcset->fe[i].flag |= HIGHENCODING; } } *************** *** 428,433 **** --- 431,437 ---- int gmask, gset; FontEnt *fe; int is2b; + unsigned char encoding_mask; while (wstr < wstr1) { gmask = *wstr & 0x8080; *************** *** 449,454 **** --- 453,462 ---- fe = &gcset->fe[gset]; is2b = fe->flag & TWOB; + if (fe->flag & HIGHENCODING) + encoding_mask = 0xff; + else + encoding_mask = 0x7f; cp = buf; if (fe->gc == NULL) { *************** *** 463,470 **** cp = buf; } if (is2b) ! *cp++ = (c >> 8) & 0x7f; ! *cp++ = c & 0x7f; wstr++; } /* flush */ --- 471,478 ---- cp = buf; } if (is2b) ! *cp++ = (c >> 8) & encoding_mask; ! *cp++ = c & encoding_mask; wstr++; } /* flush */ ----------------------------------------------------------------------------- mleisher@nmsu.edu "I laughed. Mark Leisher I cried. Computing Research Lab I fell down. New Mexico State University It changed my life." Las Cruces, NM - Rich [Cowboy Feng's Space Bar and Grille]