summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/mfluadir/otfcc/lib/font/caryll-font.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/mfluadir/otfcc/lib/font/caryll-font.c')
-rw-r--r--Build/source/texk/web2c/mfluadir/otfcc/lib/font/caryll-font.c168
1 files changed, 168 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/mfluadir/otfcc/lib/font/caryll-font.c b/Build/source/texk/web2c/mfluadir/otfcc/lib/font/caryll-font.c
new file mode 100644
index 00000000000..1e32f867cf4
--- /dev/null
+++ b/Build/source/texk/web2c/mfluadir/otfcc/lib/font/caryll-font.c
@@ -0,0 +1,168 @@
+#include "support/util.h"
+#include "otfcc/font.h"
+#include "table/all.h"
+#include "otfcc/sfnt-builder.h"
+#include "consolidate/consolidate.h"
+
+#define OTFCC_CHR(a,b,c,d) ( ((a)<<24) | ((b)<<16) | ((c)<<8) | (d) )
+
+static void *createFontTable(otfcc_Font *font, const uint32_t tag) {
+ switch (tag) {
+ case OTFCC_CHR('n','a','m','e'):
+ return table_iName.create();
+ case OTFCC_CHR('G','S','U','B'):
+ case OTFCC_CHR('G','P','O','S'):
+ return table_iOTL.create();
+ default:
+ return NULL;
+ }
+}
+
+static void deleteFontTable(otfcc_Font *font, const uint32_t tag) {
+ switch (tag) {
+ case OTFCC_CHR('h','e','a','d'):
+ if (font->head) DELETE(table_iHead.free, font->head);
+ return;
+ case OTFCC_CHR('h','h','e','a'):
+ if (font->hhea) DELETE(table_iHhea.free, font->hhea);
+ return;
+ case OTFCC_CHR('m','a','x','p'):
+ if (font->maxp) DELETE(table_iMaxp.free, font->maxp);
+ return;
+ case OTFCC_CHR('O','S','_','2'):
+ case OTFCC_CHR('O','S','/','2'):
+ if (font->OS_2) DELETE(table_iOS_2.free, font->OS_2);
+ return;
+ case OTFCC_CHR('n','a','m','e'):
+ if (font->name) DELETE(table_iName.free, font->name);
+ return;
+ case OTFCC_CHR('m','e','t','a'):
+ if (font->meta) DELETE(table_iMeta.free, font->meta);
+ return;
+ case OTFCC_CHR('h','m','t','x'):
+ if (font->hmtx) DELETE(table_iHmtx.free, font->hmtx);
+ return;
+ case OTFCC_CHR('v','m','t','x'):
+ if (font->vmtx) DELETE(table_iVmtx.free, font->vmtx);
+ return;
+ case OTFCC_CHR('p','o','s','t'):
+ if (font->post) DELETE(iTable_post.free, font->post);
+ return;
+#if 0
+ case OTFCC_CHR('h','d','m','x'):
+ if (font->hdmx) DELETE(otfcc_deleteHdmx, font->hdmx);
+ return;
+#endif
+ case OTFCC_CHR('v','h','e','a'):
+ if (font->vhea) DELETE(table_iVhea.free, font->vhea);
+ return;
+ case OTFCC_CHR('f','p','g','m'):
+ if (font->fpgm) DELETE(table_iFpgm_prep.free, font->fpgm);
+ return;
+ case OTFCC_CHR('p','r','e','p'):
+ if (font->prep) DELETE(table_iFpgm_prep.free, font->prep);
+ return;
+ case OTFCC_CHR('c','v','t','_'):
+ case OTFCC_CHR('c','v','t',' '):
+ if (font->cvt_) DELETE(table_iCvt.free, font->cvt_);
+ return;
+ case OTFCC_CHR('g','a','s','p'):
+ if (font->gasp) DELETE(table_iGasp.free, font->gasp);
+ return;
+ case OTFCC_CHR('C','F','F','_'):
+ case OTFCC_CHR('C','F','F',' '):
+ if (font->CFF_) DELETE(table_iCFF.free, font->CFF_);
+ return;
+ case OTFCC_CHR('g','l','y','f'):
+ if (font->glyf) DELETE(table_iGlyf.free, font->glyf);
+ return;
+ case OTFCC_CHR('c','m','a','p'):
+ if (font->cmap) DELETE(table_iCmap.free, font->cmap);
+ return;
+ case OTFCC_CHR('L','T','S','H'):
+ if (font->LTSH) DELETE(table_iLTSH.free, font->LTSH);
+ return;
+ case OTFCC_CHR('G','S','U','B'):
+ if (font->GSUB) DELETE(table_iOTL.free, font->GSUB);
+ return;
+ case OTFCC_CHR('G','P','O','S'):
+ if (font->GPOS) DELETE(table_iOTL.free, font->GPOS);
+ return;
+ case OTFCC_CHR('G','D','E','F'):
+ if (font->GDEF) DELETE(table_iGDEF.free, font->GDEF);
+ return;
+ case OTFCC_CHR('B','A','S','E'):
+ if (font->BASE) DELETE(table_iBASE.free, font->BASE);
+ return;
+ case OTFCC_CHR('V','O','R','G'):
+ if (font->VORG) DELETE(table_iVORG.free, font->VORG);
+ return;
+ case OTFCC_CHR('C','P','A','L'):
+ if (font->CPAL) DELETE(table_iCPAL.free, font->CPAL);
+ return;
+ case OTFCC_CHR('C','O','L','R'):
+ if (font->COLR) DELETE(table_iCOLR.free, font->COLR);
+ return;
+ case OTFCC_CHR('S','V','G',' '):
+ case OTFCC_CHR('S','V','G','_'):
+ if (font->SVG_) DELETE(table_iSVG.free, font->SVG_);
+ return;
+ case OTFCC_CHR('T','S','I','0'):
+ case OTFCC_CHR('T','S','I','1'):
+ if (font->TSI_01) DELETE(table_iTSI.free, font->TSI_01);
+ return;
+ case OTFCC_CHR('T','S','I','2'):
+ case OTFCC_CHR('T','S','I','3'):
+ if (font->TSI_23) DELETE(table_iTSI.free, font->TSI_23);
+ return;
+ case OTFCC_CHR('T','S','I','5'):
+ if (font->TSI5) DELETE(otl_iClassDef.free, font->TSI5);
+ return;
+ }
+}
+
+static INLINE void initFont(otfcc_Font *font) {
+ memset(font, 0, sizeof(*font));
+}
+static INLINE void disposeFont(otfcc_Font *font) {
+ deleteFontTable(font, OTFCC_CHR('h','e','a','d'));
+ deleteFontTable(font, OTFCC_CHR('h','h','e','a'));
+ deleteFontTable(font, OTFCC_CHR('m','a','x','p'));
+ deleteFontTable(font, OTFCC_CHR('O','S','_','2'));
+ deleteFontTable(font, OTFCC_CHR('n','a','m','e'));
+ deleteFontTable(font, OTFCC_CHR('m','e','t','a'));
+ deleteFontTable(font, OTFCC_CHR('h','m','t','x'));
+ deleteFontTable(font, OTFCC_CHR('v','m','t','x'));
+ deleteFontTable(font, OTFCC_CHR('p','o','s','t'));
+ deleteFontTable(font, OTFCC_CHR('h','d','m','x'));
+ deleteFontTable(font, OTFCC_CHR('v','h','e','a'));
+ deleteFontTable(font, OTFCC_CHR('f','p','g','m'));
+ deleteFontTable(font, OTFCC_CHR('p','r','e','p'));
+ deleteFontTable(font, OTFCC_CHR('c','v','t','_'));
+ deleteFontTable(font, OTFCC_CHR('g','a','s','p'));
+ deleteFontTable(font, OTFCC_CHR('C','F','F','_'));
+ deleteFontTable(font, OTFCC_CHR('g','l','y','f'));
+ deleteFontTable(font, OTFCC_CHR('c','m','a','p'));
+ deleteFontTable(font, OTFCC_CHR('L','T','S','H'));
+ deleteFontTable(font, OTFCC_CHR('G','S','U','B'));
+ deleteFontTable(font, OTFCC_CHR('G','P','O','S'));
+ deleteFontTable(font, OTFCC_CHR('G','D','E','F'));
+ deleteFontTable(font, OTFCC_CHR('B','A','S','E'));
+ deleteFontTable(font, OTFCC_CHR('V','O','R','G'));
+ deleteFontTable(font, OTFCC_CHR('C','P','A','L'));
+ deleteFontTable(font, OTFCC_CHR('C','O','L','R'));
+ deleteFontTable(font, OTFCC_CHR('S','V','G','_'));
+ deleteFontTable(font, OTFCC_CHR('T','S','I','0'));
+ deleteFontTable(font, OTFCC_CHR('T','S','I','2'));
+ deleteFontTable(font, OTFCC_CHR('T','S','I','5'));
+
+ GlyphOrder.free(font->glyph_order);
+}
+caryll_standardRefTypeFn(otfcc_Font, initFont, disposeFont);
+
+caryll_ElementInterfaceOf(otfcc_Font) otfcc_iFont = {
+ caryll_standardRefTypeMethods(otfcc_Font),
+ .createTable = createFontTable,
+ .deleteTable = deleteFontTable,
+ .consolidate = otfcc_consolidateFont,
+};