]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/test/letest/PortableFontInstance.h
ICU-66108.tar.gz
[apple/icu.git] / icuSources / test / letest / PortableFontInstance.h
index 0375d15136996620c02649078778a41360d8dcc7..a8d86348883d9c1871c34db31de1739a6422973d 100644 (file)
@@ -1,8 +1,10 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
 
 /*
  *******************************************************************************
  *
- *   Copyright (C) 1999-2003, International Business Machines
+ *   Copyright (C) 1999-2015, International Business Machines
  *   Corporation and others.  All Rights Reserved.
  *
  *******************************************************************************
@@ -30,11 +32,12 @@ class PortableFontInstance : public LEFontInstance, protected FontTableCache
 private:
     FILE *fFile;
 
-    float    fPointSize;
-    le_int32 fUnitsPerEM;
-    le_int32 fAscent;
-    le_int32 fDescent;
-    le_int32 fLeading;
+    float     fPointSize;
+    le_int32  fUnitsPerEM;
+    le_uint32 fFontChecksum;
+    le_int32  fAscent;
+    le_int32  fDescent;
+    le_int32  fLeading;
 
     const SFNTDirectory *fDirectory;
     le_uint16 fDirPower;
@@ -43,6 +46,10 @@ private:
     float fDeviceScaleX;
     float fDeviceScaleY;
 
+    const NAMETable *fNAMETable;
+    le_uint16 fNameCount;
+    le_uint16 fNameStringOffset;
+
     CMAPMapper *fCMAPMapper;
 
     const HMTXTable *fHMTXTable;
@@ -53,69 +60,62 @@ private:
 
     const DirectoryEntry *findTable(LETag tag) const;
     const void *readTable(LETag tag, le_uint32 *length) const;
-    void deleteTable(const void *table) const;
     void getMetrics();
 
     CMAPMapper *findUnicodeMapper();
 
 protected:
-    const void *readFontTable(LETag tableTag) const;
+    const void *readFontTable(LETag tableTag) const { size_t ignored; return readFontTable(tableTag, ignored); }
+    const void *readFontTable(LETag tableTag, size_t &length) const;
 
 public:
-    PortableFontInstance(char *fileName, float pointSize, LEErrorCode &status);
+    PortableFontInstance(const char *fileName, float pointSize, LEErrorCode &status);
 
     virtual ~PortableFontInstance();
 
-    virtual const void *getFontTable(LETag tableTag) const;
+    virtual const void *getFontTable(LETag tableTag, size_t &length) const;
+
+    virtual const char *getNameString(le_uint16 nameID, le_uint16 platform, le_uint16 encoding, le_uint16 language) const;
+
+    virtual const LEUnicode16 *getUnicodeNameString(le_uint16 nameID, le_uint16 platform, le_uint16 encoding, le_uint16 language) const;
+
+    virtual void deleteNameString(const char *name) const;
+
+    virtual void deleteNameString(const LEUnicode16 *name) const;
+
+    virtual le_int32 getUnitsPerEM() const;
 
-    virtual le_int32 getUnitsPerEM() const
-    {
-        return fUnitsPerEM;
-    };
+    virtual le_uint32 getFontChecksum() const;
 
-    virtual le_int32 getAscent() const
-    {
-        return fAscent;
-    }
+    virtual le_uint32 getRawChecksum() const;
 
-    virtual le_int32 getDescent() const
-    {
-        return fDescent;
-    }
+    virtual le_int32 getAscent() const;
 
-    virtual le_int32 getLeading() const
-    {
-        return fLeading;
-    }
+    virtual le_int32 getDescent() const;
 
-    virtual LEGlyphID mapCharToGlyph(LEUnicode32 ch) const
-    {
-        return fCMAPMapper->unicodeToGlyph(ch);
-    }
+    virtual le_int32 getLeading() const;
+
+    // We really want to inherit this method from the superclass, but some compilers
+    // issue a warning if we don't implement it...
+    virtual LEGlyphID mapCharToGlyph(LEUnicode32 ch, const LECharMapper *mapper, le_bool filterZeroWidth) const;
+    
+    // We really want to inherit this method from the superclass, but some compilers
+    // issue a warning if we don't implement it...
+    virtual LEGlyphID mapCharToGlyph(LEUnicode32 ch, const LECharMapper *mapper) const;
+
+    virtual LEGlyphID mapCharToGlyph(LEUnicode32 ch) const;
 
     virtual void getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const;
 
     virtual le_bool getGlyphPoint(LEGlyphID glyph, le_int32 pointNumber, LEPoint &point) const;
 
-    float getXPixelsPerEm() const
-    {
-        return fPointSize;
-    };
-
-    float getYPixelsPerEm() const
-    {
-        return fPointSize;
-    };
-
-    float getScaleFactorX() const
-    {
-        return 1.0;
-    }
-
-    float getScaleFactorY() const
-    {
-        return 1.0;
-    }
+    float getXPixelsPerEm() const;
+
+    float getYPixelsPerEm() const;
+
+    float getScaleFactorX() const;
+
+    float getScaleFactorY() const;
 
 };