fixed divide by zero bug
added CFF/OpenType driver source (not working for now)
diff --git a/src/cff/t2gload.h b/src/cff/t2gload.h
new file mode 100644
index 0000000..012b7ac
--- /dev/null
+++ b/src/cff/t2gload.h
@@ -0,0 +1,140 @@
+/***************************************************************************/
+/* */
+/* t2gload.h */
+/* */
+/* OpenType Glyph Loader (specification). */
+/* */
+/* Copyright 1996-1999 by */
+/* David Turner, Robert Wilhelm, and Werner Lemberg. */
+/* */
+/* This file is part of the FreeType project, and may only be used */
+/* modified and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#ifndef T2GLOAD_H
+#define T2GLOAD_H
+
+#include <t2objs.h>
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+ typedef struct T2_Loader_
+ {
+ T2_Face face;
+ T2_Size size;
+ T2_GlyphSlot glyph;
+
+ FT_ULong load_flags;
+ FT_UInt glyph_index;
+
+ FT_Stream stream;
+ FT_Int byte_len;
+ FT_Int left_points;
+ FT_Int left_contours;
+
+ FT_BBox bbox;
+ FT_Int left_bearing;
+ FT_Int advance;
+ FT_Bool preserve_pps;
+ FT_Vector pp1;
+ FT_Vector pp2;
+
+ FT_ULong glyf_offset;
+
+ /* the zone where we load our glyphs */
+ FT_GlyphZone base;
+ FT_GlyphZone zone;
+
+ } T2_Loader;
+
+
+#if 0
+ /*************************************************************************/
+ /* */
+ /* <Function> */
+ /* T2_Get_Metrics */
+ /* */
+ /* <Description> */
+ /* Returns the horizontal or vertical metrics in font units for a */
+ /* given glyph. The metrics are the left side bearing (resp. top */
+ /* side bearing) and advance width (resp. advance height). */
+ /* */
+ /* <Input> */
+ /* header :: A pointer to either the horizontal or vertical metrics */
+ /* structure. */
+ /* */
+ /* index :: The glyph index. */
+ /* */
+ /* <Output> */
+ /* bearing :: The bearing, either left side or top side. */
+ /* */
+ /* advance :: The advance width resp. advance height. */
+ /* */
+ /* <Note> */
+ /* This function will much probably move to another component in the */
+ /* near future, but I haven't decided which yet. */
+ /* */
+ LOCAL_DEF
+ void T2_Get_Metrics( TT_HoriHeader* header,
+ FT_UInt index,
+ FT_Short* bearing,
+ FT_UShort* advance );
+
+
+ /*************************************************************************/
+ /* */
+ /* <Function> */
+ /* T2_Load_Glyph */
+ /* */
+ /* <Description> */
+ /* A function used to load a single glyph within a given glyph slot, */
+ /* for a given size. */
+ /* */
+ /* <Input> */
+ /* glyph :: A handle to a target slot object where the glyph */
+ /* will be loaded. */
+ /* */
+ /* size :: A handle to the source face size at which the glyph */
+ /* must be scaled/loaded. */
+ /* */
+ /* glyph_index :: The index of the glyph in the font file. */
+ /* */
+ /* load_flags :: A flag indicating what to load for this glyph. The */
+ /* FT_LOAD_XXX constants can be used to control the */
+ /* glyph loading process (e.g., whether the outline */
+ /* should be scaled, whether to load bitmaps or not, */
+ /* whether to hint the outline, etc). */
+ /* <Output> */
+ /* result :: A set of bit flags indicating the type of data that */
+ /* was loaded in the glyph slot (outline or bitmap, */
+ /* etc). */
+ /* */
+ /* You can set this field to 0 if you don't want this */
+ /* information. */
+ /* */
+ /* <Return> */
+ /* FreeType error code. 0 means success. */
+ /* */
+ LOCAL_DEF
+ FT_Error T2_Load_Glyph( T2_Size size,
+ T2_GlyphSlot glyph,
+ FT_UShort glyph_index,
+ FT_UInt load_flags );
+#endif
+
+#ifdef __cplusplus
+ }
+#endif
+
+
+#endif /* T2GLOAD_H */
+
+
+/* END */