Index: src/header.c
===================================================================
--- src/header.c	(revision 871)
+++ src/header.c	(working copy)
@@ -1798,6 +1798,7 @@
     unsigned long usedByteLen = 0;
     UniChar uniStr[256];
     unsigned long cfResult;
+    unsigned int i;
 
     cfResult = CFStringEncodingBytesToUnicode(kCFStringEncodingUTF8,
                                               flags,
@@ -1808,6 +1809,38 @@
                                               255,
                                               &unicodeChars);
     if (cfResult == 0) {
+        /* vender-specific character conversion
+           http://www.ingrid.org/java/i18n/unicode.html */
+        for (i=0; i<255; i+=2) {
+            if (uniStr[i] == 0x20 && uniStr[i+1] == 0x3e) {
+                /* OVERLINE -> FULLWIDTH MACRON */
+                uniStr[i] = 0xff; uniStr[i+1] = 0xe3;
+            } else if (uniStr[i] == 0x20 && uniStr[i+1] == 0x14) {
+                /* EM DASH -> HORIZONTAL BAR */
+                uniStr[i] = 0x20; uniStr[i+1] = 0x15;
+            } else if (uniStr[i] == 0x30 && uniStr[i+1] == 0x1c) {
+                /* WAVE DASH -> FULLWIDTH TILDE */
+                uniStr[i] = 0xff; uniStr[i+1] = 0x5e;
+            } else if (uniStr[i] == 0x20 && uniStr[i+1] == 0x16) {
+                /* DOUBLE VERTICAL LINE -> PARALLEL TO */
+                uniStr[i] = 0x22; uniStr[i+1] = 0x25;
+            } else if (uniStr[i] == 0x22 && uniStr[i+1] == 0xef) {
+                /* MIDLINE HORIZONTAL ELLIPSIS -> HORIZONTAL ELLIPSIS */
+                uniStr[i] = 0x20; uniStr[i+1] = 0x26;
+            } else if (uniStr[i] == 0x22 && uniStr[i+1] == 0x12) {
+                /* MINUS SIGN -> FULLWIDTH HYPHEN-MINUS */
+                uniStr[i] = 0xff; uniStr[i+1] = 0x0d;
+            } else if (uniStr[i] == 0x00 && uniStr[i+1] == 0xa2) {
+                /* CENT SIGN -> FULLWIDTH CENT SIGN */
+                uniStr[i] = 0xff; uniStr[i+1] = 0xe0;
+            } else if (uniStr[i] == 0x00 && uniStr[i+1] == 0xa3) {
+                /* POUND SIGN -> FULLWIDTH POUND SIGN */
+                uniStr[i] = 0xff; uniStr[i+1] = 0xe1;
+            } else if (uniStr[i] == 0x00 && uniStr[i+1] == 0xac) {
+                /* NOT SIGN -> FULLWIDTH NOT SIGN */
+                uniStr[i] = 0xff; uniStr[i+1] = 0xe2;
+            }
+        }
         cfResult = CFStringEncodingUnicodeToBytes(scriptEncoding,
                                                   flags,
                                                   uniStr,