//======================================================================== // // UnicodeRemapping.h // // Sparse remapping of Unicode characters. // // Copyright 2018 Glyph & Cog, LLC // //======================================================================== #ifndef UNICODEREMAPPING_H #define UNICODEREMAPPING_H #include #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 . void addRemapping(Unicode in, Unicode *out, int len); // Add entries from the specified file to this UnicodeRemapping. void parseFile(GString *fileName); // Map to zero or more (up to ) output characters in // . 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