aboutsummaryrefslogtreecommitdiff
path: root/xpdf/UnicodeRemapping.h
diff options
context:
space:
mode:
Diffstat (limited to 'xpdf/UnicodeRemapping.h')
-rw-r--r--xpdf/UnicodeRemapping.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/xpdf/UnicodeRemapping.h b/xpdf/UnicodeRemapping.h
new file mode 100644
index 0000000..dbf435e
--- /dev/null
+++ b/xpdf/UnicodeRemapping.h
@@ -0,0 +1,53 @@
+//========================================================================
+//
+// UnicodeRemapping.h
+//
+// Sparse remapping of Unicode characters.
+//
+// Copyright 2018 Glyph & Cog, LLC
+//
+//========================================================================
+
+#ifndef UNICODEREMAPPING_H
+#define UNICODEREMAPPING_H
+
+#include <aconf.h>
+
+#ifdef USE_GCC_PRAGMAS
+#pragma interface
+#endif
+
+#include "CharTypes.h"
+
+struct UnicodeRemappingString;
+
+//------------------------------------------------------------------------
+
+class UnicodeRemapping {
+public:
+
+ // Create an empty (i.e., identity) remapping.
+ UnicodeRemapping();
+
+ ~UnicodeRemapping();
+
+ // Add a remapping for <in>.
+ void addRemapping(Unicode in, Unicode *out, int len);
+
+ // Add entries from the specified file to this UnicodeRemapping.
+ void parseFile(GString *fileName);
+
+ // Map <in> to zero or more (up to <size>) output characters in
+ // <out>. Returns the number of output characters.
+ int map(Unicode in, Unicode *out, int size);
+
+private:
+
+ int findSMap(Unicode u);
+
+ Unicode page0[256];
+ UnicodeRemappingString *sMap;
+ int sMapLen, sMapSize;
+};
+
+#endif