summaryrefslogtreecommitdiff
path: root/gfx/graphite2/src/inc/TtfUtil.h
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/graphite2/src/inc/TtfUtil.h')
-rw-r--r--gfx/graphite2/src/inc/TtfUtil.h206
1 files changed, 0 insertions, 206 deletions
diff --git a/gfx/graphite2/src/inc/TtfUtil.h b/gfx/graphite2/src/inc/TtfUtil.h
deleted file mode 100644
index fe1c2a585..000000000
--- a/gfx/graphite2/src/inc/TtfUtil.h
+++ /dev/null
@@ -1,206 +0,0 @@
-/* GRAPHITE2 LICENSING
-
- Copyright 2010, SIL International
- All rights reserved.
-
- This library is free software; you can redistribute it and/or modify
- it under the terms of the GNU Lesser General Public License as published
- by the Free Software Foundation; either version 2.1 of License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should also have received a copy of the GNU Lesser General Public
- License along with this library in the file named "LICENSE".
- If not, write to the Free Software Foundation, 51 Franklin Street,
- Suite 500, Boston, MA 02110-1335, USA or visit their web page on the
- internet at http://www.fsf.org/licenses/lgpl.html.
-
-Alternatively, the contents of this file may be used under the terms of the
-Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
-License, as published by the Free Software Foundation, either version 2
-of the License or (at your option) any later version.
-*/
-#pragma once
-/*--------------------------------------------------------------------*//*:Ignore this sentence.
-
-File: TtfUtil.h
-Responsibility: Alan Ward
-Last reviewed: Not yet.
-
-Description:
- Utility class for handling TrueType font files.
-----------------------------------------------------------------------------------------------*/
-
-
-#include <cstddef>
-
-namespace graphite2
-{
-namespace TtfUtil
-{
-
-typedef long fontTableId32;
-typedef unsigned short gid16;
-
-#define TTF_TAG(a,b,c,d) ((a << 24UL) + (b << 16UL) + (c << 8UL) + (d))
-
-// Enumeration used to specify a table in a TTF file
-class Tag
-{
- unsigned long _v;
-public:
- Tag(const char n[5]) throw() : _v(TTF_TAG(n[0],n[1],n[2],n[3])) {}
- Tag(const unsigned long tag) throw() : _v(tag) {}
-
- operator unsigned long () const throw () { return _v; }
-
- enum
- {
- Feat = TTF_TAG('F','e','a','t'),
- Glat = TTF_TAG('G','l','a','t'),
- Gloc = TTF_TAG('G','l','o','c'),
- Sile = TTF_TAG('S','i','l','e'),
- Silf = TTF_TAG('S','i','l','f'),
- Sill = TTF_TAG('S','i','l','l'),
- cmap = TTF_TAG('c','m','a','p'),
- cvt = TTF_TAG('c','v','t',' '),
- cryp = TTF_TAG('c','r','y','p'),
- head = TTF_TAG('h','e','a','d'),
- fpgm = TTF_TAG('f','p','g','m'),
- gdir = TTF_TAG('g','d','i','r'),
- glyf = TTF_TAG('g','l','y','f'),
- hdmx = TTF_TAG('h','d','m','x'),
- hhea = TTF_TAG('h','h','e','a'),
- hmtx = TTF_TAG('h','m','t','x'),
- loca = TTF_TAG('l','o','c','a'),
- kern = TTF_TAG('k','e','r','n'),
- LTSH = TTF_TAG('L','T','S','H'),
- maxp = TTF_TAG('m','a','x','p'),
- name = TTF_TAG('n','a','m','e'),
- OS_2 = TTF_TAG('O','S','/','2'),
- post = TTF_TAG('p','o','s','t'),
- prep = TTF_TAG('p','r','e','p')
- };
-};
-
-/*----------------------------------------------------------------------------------------------
- Class providing utility methods to parse a TrueType font file (TTF).
- Callling application handles all file input and memory allocation.
- Assumes minimal knowledge of TTF file format.
-----------------------------------------------------------------------------------------------*/
- ////////////////////////////////// tools to find & check TTF tables
- bool GetHeaderInfo(size_t & lOffset, size_t & lSize);
- bool CheckHeader(const void * pHdr);
- bool GetTableDirInfo(const void * pHdr, size_t & lOffset, size_t & lSize);
- bool GetTableInfo(const Tag TableTag, const void * pHdr, const void * pTableDir,
- size_t & lOffset, size_t & lSize);
- bool CheckTable(const Tag TableId, const void * pTable, size_t lTableSize);
-
- ////////////////////////////////// simple font wide info
- size_t GlyphCount(const void * pMaxp);
-#ifdef ALL_TTFUTILS
- size_t MaxCompositeComponentCount(const void * pMaxp);
- size_t MaxCompositeLevelCount(const void * pMaxp);
- size_t LocaGlyphCount(size_t lLocaSize, const void * pHead); // throw (std::domain_error);
-#endif
- int DesignUnits(const void * pHead);
-#ifdef ALL_TTFUTILS
- int HeadTableCheckSum(const void * pHead);
- void HeadTableCreateTime(const void * pHead, unsigned int * pnDateBC, unsigned int * pnDateAD);
- void HeadTableModifyTime(const void * pHead, unsigned int * pnDateBC, unsigned int * pnDateAD);
- bool IsItalic(const void * pHead);
- int FontAscent(const void * pOs2);
- int FontDescent(const void * pOs2);
- bool FontOs2Style(const void *pOs2, bool & fBold, bool & fItalic);
- bool Get31EngFamilyInfo(const void * pName, size_t & lOffset, size_t & lSize);
- bool Get31EngFullFontInfo(const void * pName, size_t & lOffset, size_t & lSize);
- bool Get30EngFamilyInfo(const void * pName, size_t & lOffset, size_t & lSize);
- bool Get30EngFullFontInfo(const void * pName, size_t & lOffset, size_t & lSize);
- int PostLookup(const void * pPost, size_t lPostSize, const void * pMaxp,
- const char * pPostName);
-#endif
-
- ////////////////////////////////// utility methods helpful for name table
- bool GetNameInfo(const void * pName, int nPlatformId, int nEncodingId,
- int nLangId, int nNameId, size_t & lOffset, size_t & lSize);
- //size_t NameTableLength(const byte * pTable);
-#ifdef ALL_TTFUTILS
- int GetLangsForNames(const void * pName, int nPlatformId, int nEncodingId,
- int *nameIdList, int cNameIds, short *langIdList);
- void SwapWString(void * pWStr, size_t nSize = 0); // throw (std::invalid_argument);
-#endif
-
- ////////////////////////////////// cmap lookup tools
- const void * FindCmapSubtable(const void * pCmap, int nPlatformId = 3,
- int nEncodingId = 1, size_t length = 0);
- bool CheckCmapSubtable4(const void * pCmap31, const void * pCmapEnd /*, unsigned int maxgid*/);
- gid16 CmapSubtable4Lookup(const void * pCmapSubtabel4, unsigned int nUnicodeId, int rangeKey = 0);
- unsigned int CmapSubtable4NextCodepoint(const void *pCmap31, unsigned int nUnicodeId,
- int * pRangeKey = 0);
- bool CheckCmapSubtable12(const void *pCmap310, const void * pCmapEnd /*, unsigned int maxgid*/);
- gid16 CmapSubtable12Lookup(const void * pCmap310, unsigned int uUnicodeId, int rangeKey = 0);
- unsigned int CmapSubtable12NextCodepoint(const void *pCmap310, unsigned int nUnicodeId,
- int * pRangeKey = 0);
-
- ///////////////////////////////// horizontal metric data for a glyph
- bool HorMetrics(gid16 nGlyphId, const void * pHmtx, size_t lHmtxSize,
- const void * pHhea, int & nLsb, unsigned int & nAdvWid);
-
- ////////////////////////////////// primitives for loca and glyf lookup
- size_t LocaLookup(gid16 nGlyphId, const void * pLoca, size_t lLocaSize,
- const void * pHead); // throw (std::out_of_range);
- void * GlyfLookup(const void * pGlyf, size_t lGlyfOffset, size_t lTableLen);
-
- ////////////////////////////////// primitves for simple glyph data
- bool GlyfBox(const void * pSimpleGlyf, int & xMin, int & yMin,
- int & xMax, int & yMax);
-
-#ifdef ALL_TTFUTILS
- int GlyfContourCount(const void * pSimpleGlyf);
- bool GlyfContourEndPoints(const void * pSimpleGlyf, int * prgnContourEndPoint,
- int cnPointsTotal, size_t & cnPoints);
- bool GlyfPoints(const void * pSimpleGlyf, int * prgnX, int * prgnY,
- char * prgbFlag, int cnPointsTotal, int & cnPoints);
-
- // primitive to find the glyph ids in a composite glyph
- bool GetComponentGlyphIds(const void * pSimpleGlyf, int * prgnCompId,
- size_t cnCompIdTotal, size_t & cnCompId);
- // primitive to find the placement data for a component in a composite glyph
- bool GetComponentPlacement(const void * pSimpleGlyf, int nCompId,
- bool fOffset, int & a, int & b);
- // primitive to find the transform data for a component in a composite glyph
- bool GetComponentTransform(const void * pSimpleGlyf, int nCompId,
- float & flt11, float & flt12, float & flt21, float & flt22, bool & fTransOffset);
-#endif
-
- ////////////////////////////////// operate on composite or simple glyph (auto glyf lookup)
- void * GlyfLookup(gid16 nGlyphId, const void * pGlyf, const void * pLoca,
- size_t lGlyfSize, size_t lLocaSize, const void * pHead); // primitive used by below methods
-
-#ifdef ALL_TTFUTILS
- // below are primary user methods for handling glyf data
- bool IsSpace(gid16 nGlyphId, const void * pLoca, size_t lLocaSize, const void * pHead);
- bool IsDeepComposite(gid16 nGlyphId, const void * pGlyf, const void * pLoca,
- size_t lGlyfSize, size_t lLocaSize, const void * pHead);
-
- bool GlyfBox(gid16 nGlyphId, const void * pGlyf, const void * pLoca, size_t lGlyfSize, size_t lLocaSize,
- const void * pHead, int & xMin, int & yMin, int & xMax, int & yMax);
- bool GlyfContourCount(gid16 nGlyphId, const void * pGlyf, const void * pLoca,
- size_t lGlyfSize, size_t lLocaSize, const void *pHead, size_t & cnContours);
- bool GlyfContourEndPoints(gid16 nGlyphId, const void * pGlyf, const void * pLoca,
- size_t lGlyfSize, size_t lLocaSize, const void * pHead, int * prgnContourEndPoint, size_t cnPoints);
- bool GlyfPoints(gid16 nGlyphId, const void * pGlyf, const void * pLoca,
- size_t lGlyfSize, size_t lLocaSize, const void * pHead, const int * prgnContourEndPoint, size_t cnEndPoints,
- int * prgnX, int * prgnY, bool * prgfOnCurve, size_t cnPoints);
-
- // utitily method used by high-level GlyfPoints
- bool SimplifyFlags(char * prgbFlags, int cnPoints);
- bool CalcAbsolutePoints(int * prgnX, int * prgnY, int cnPoints);
-#endif
-
-} // end of namespace TtfUtil
-} // end of namespace graphite2