w3m

Unnamed repository; edit this file to name it for gitweb.
git clone https://logand.com/git/w3m.git/
Log | Files | Refs | README

entity.c (1731B)


      1 /* $Id$ */
      2 #ifdef DUMMY
      3 #include "Str.h"
      4 #define NBSP " "
      5 #define UseAltEntity 1
      6 #undef USE_M17N
      7 #else				/* DUMMY */
      8 #include "fm.h"
      9 #ifdef USE_M17N
     10 #ifdef USE_UNICODE
     11 #include "ucs.h"
     12 #include "utf8.h"
     13 #endif
     14 #endif
     15 #endif				/* DUMMY */
     16 
     17 /* *INDENT-OFF* */
     18 static char *alt_latin1[ 96 ] = {
     19     NBSP,  "!",   "-c-", "-L-", "CUR", "=Y=",  "|",  "S:",
     20     "\"",  "(C)", "-a",  "<<",  "NOT", "-",   "(R)", "-",
     21     "DEG", "+-",  "^2",  "^3",   "'",  "u",   "P:",  ".",
     22     ",",   "^1",  "-o",  ">>",  "1/4", "1/2", "3/4", "?", 
     23     "A`",  "A'",  "A^",  "A~",  "A:",  "AA",  "AE",  "C,",
     24     "E`",  "E'",  "E^",  "E:",  "I`",  "I'",  "I^",  "I:",
     25     "D-",  "N~",  "O`",  "O'",  "O^",  "O~",  "O:",  "x",
     26     "O/",  "U`",  "U'",  "U^",  "U:",  "Y'",  "TH",  "ss",
     27     "a`",  "a'",  "a^",  "a~",  "a:",  "aa",  "ae",  "c,", 
     28     "e`",  "e'",  "e^",  "e:",  "i`",  "i'",  "i^",  "i:",
     29     "d-",  "n~",  "o`",  "o'",  "o^",  "o~",  "o:",  "-:",
     30     "o/",  "u`",  "u'",  "u^",  "u:",  "y'",  "th",  "y:"
     31 };
     32 /* *INDENT-ON* */
     33 
     34 char *
     35 conv_entity(unsigned int c)
     36 {
     37     char b = c & 0xff;
     38 
     39     if (c < 0x20)		/* C0 */
     40 	return " ";
     41     if (c < 0x7f)		/* ASCII */
     42 	return Strnew_charp_n(&b, 1)->ptr;
     43     if (c < 0xa0)		/* DEL, C1 */
     44 	return " ";
     45     if (c == 0xa0)
     46 	return NBSP;
     47     if (c < 0x100) {		/* Latin1 (ISO 8859-1) */
     48 	if (UseAltEntity)
     49 	    return alt_latin1[c - 0xa0];
     50 #ifdef USE_M17N
     51 	return wc_conv_n(&b, 1, WC_CES_ISO_8859_1, InnerCharset)->ptr;
     52 #else
     53 	return Strnew_charp_n(&b, 1)->ptr;
     54 #endif
     55     }
     56 #ifdef USE_M17N
     57 #ifdef USE_UNICODE
     58     if (c <= WC_C_UCS4_END) {	/* Unicode */
     59 	wc_uchar utf8[7];
     60 	wc_ucs_to_utf8(c, utf8);
     61 	return wc_conv((char *)utf8, WC_CES_UTF_8, InnerCharset)->ptr;
     62     }
     63 #endif
     64 #endif
     65     return "?";
     66 }