From 72f72d64a422d6628c4796f5c0bf2e508f134214 Mon Sep 17 00:00:00 2001 From: Tatsuya Kinoshita Date: Wed, 4 May 2011 16:05:14 +0900 Subject: Adding upstream version 0.5.1 --- entity.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 entity.c (limited to 'entity.c') diff --git a/entity.c b/entity.c new file mode 100644 index 0000000..fdd8f64 --- /dev/null +++ b/entity.c @@ -0,0 +1,66 @@ +/* $Id: entity.c,v 1.7 2003/09/24 18:48:59 ukai Exp $ */ +#ifdef DUMMY +#include "Str.h" +#define NBSP " " +#define UseAltEntity 1 +#undef USE_M17N +#else /* DUMMY */ +#include "fm.h" +#ifdef USE_M17N +#ifdef USE_UNICODE +#include "ucs.h" +#include "utf8.h" +#endif +#endif +#endif /* DUMMY */ + +/* *INDENT-OFF* */ +static char *alt_latin1[ 96 ] = { + NBSP, "!", "-c-", "-L-", "CUR", "=Y=", "|", "S:", + "\"", "(C)", "-a", "<<", "NOT", "-", "(R)", "-", + "DEG", "+-", "^2", "^3", "'", "u", "P:", ".", + ",", "^1", "-o", ">>", "1/4", "1/2", "3/4", "?", + "A`", "A'", "A^", "A~", "A:", "AA", "AE", "C,", + "E`", "E'", "E^", "E:", "I`", "I'", "I^", "I:", + "D-", "N~", "O`", "O'", "O^", "O~", "O:", "x", + "O/", "U`", "U'", "U^", "U:", "Y'", "TH", "ss", + "a`", "a'", "a^", "a~", "a:", "aa", "ae", "c,", + "e`", "e'", "e^", "e:", "i`", "i'", "i^", "i:", + "d-", "n~", "o`", "o'", "o^", "o~", "o:", "-:", + "o/", "u`", "u'", "u^", "u:", "y'", "th", "y:" +}; +/* *INDENT-ON* */ + +char * +conv_entity(unsigned int c) +{ + char b = c & 0xff; + + if (c < 0x20) /* C0 */ + return " "; + if (c < 0x7f) /* ASCII */ + return Strnew_charp_n(&b, 1)->ptr; + if (c < 0xa0) /* DEL, C1 */ + return " "; + if (c == 0xa0) + return NBSP; + if (c < 0x100) { /* Latin1 (ISO 8859-1) */ + if (UseAltEntity) + return alt_latin1[c - 0xa0]; +#ifdef USE_M17N + return wc_conv_n(&b, 1, WC_CES_ISO_8859_1, InnerCharset)->ptr; +#else + return Strnew_charp_n(&b, 1)->ptr; +#endif + } +#ifdef USE_M17N +#ifdef USE_UNICODE + if (c <= WC_C_UCS4_END) { /* Unicode */ + wc_uchar utf8[7]; + wc_ucs_to_utf8(c, utf8); + return wc_conv((char *)utf8, WC_CES_UTF_8, InnerCharset)->ptr; + } +#endif +#endif + return "?"; +} -- cgit v1.2.3