1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- /*
- ******************************************************************************
- *
- * © 2016 and later: Unicode, Inc. and others.
- * License & terms of use: http://www.unicode.org/copyright.html#License
- *
- ******************************************************************************
- ****************************************************************************** *
- *
- * Copyright (C) 1999-2003, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- ****************************************************************************** *
- * file name: cmaps.h
- *
- * created on: ??/??/2001
- * created by: Eric R. Mader
- */
- #ifndef __CMAPS_H
- #define __CMAPS_H
- #include "layout/LETypes.h"
- #include "sfnt.h"
- class CMAPMapper
- {
- public:
- virtual LEGlyphID unicodeToGlyph(LEUnicode32 unicode32) const = 0;
- virtual ~CMAPMapper();
- static CMAPMapper *createUnicodeMapper(const CMAPTable *cmap);
- protected:
- CMAPMapper(const CMAPTable *cmap);
- CMAPMapper() {};
- private:
- const CMAPTable *fcmap;
- };
- class CMAPFormat4Mapper : public CMAPMapper
- {
- public:
- CMAPFormat4Mapper(const CMAPTable *cmap, const CMAPFormat4Encoding *header);
- virtual ~CMAPFormat4Mapper();
- virtual LEGlyphID unicodeToGlyph(LEUnicode32 unicode32) const;
- protected:
- CMAPFormat4Mapper() {};
- private:
- le_uint16 fEntrySelector;
- le_uint16 fRangeShift;
- const le_uint16 *fEndCodes;
- const le_uint16 *fStartCodes;
- const le_uint16 *fIdDelta;
- const le_uint16 *fIdRangeOffset;
- };
- class CMAPGroupMapper : public CMAPMapper
- {
- public:
- CMAPGroupMapper(const CMAPTable *cmap, const CMAPGroup *groups, le_uint32 nGroups);
- virtual ~CMAPGroupMapper();
- virtual LEGlyphID unicodeToGlyph(LEUnicode32 unicode32) const;
- protected:
- CMAPGroupMapper() {};
- private:
- le_int32 fPower;
- le_int32 fRangeOffset;
- const CMAPGroup *fGroups;
- };
- inline CMAPMapper::CMAPMapper(const CMAPTable *cmap)
- : fcmap(cmap)
- {
- // nothing else to do
- }
- inline CMAPMapper::~CMAPMapper()
- {
- LE_DELETE_ARRAY(fcmap);
- }
- #endif
|