diff options
author | Owen Taylor <otaylor@redhat.com> | 2000-12-20 04:41:36 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2000-12-20 04:41:36 +0000 |
commit | 6ffa65f461d8a78d9190c0d9903a9ecd7273774a (patch) | |
tree | f4245e3e7e13771b62224fbdf473edd96d7e7765 /pango/pango-ot.h | |
parent | 1a603d00f370167b75a965416080f45824d5b515 (diff) | |
download | pango-6ffa65f461d8a78d9190c0d9903a9ecd7273774a.tar.gz |
Since Xft may only be available statically without shlib deps, check for
Tue Dec 19 22:47:16 2000 Owen Taylor <otaylor@redhat.com>
* configure.in pango-config.in pangoxft.pc.in
modules/basic/Makefile.am: Since Xft may only be available
statically without shlib deps, check for FreeType libs explicitly
and include them when linking, otherwise things won't work. Also,
define FREETYPE_CFLAGS from freetype-config --cflags.
* modules/basic/basic-xft.c pango/pangoxft-font{,map}.c: Fool
Xft into not converting glyph indices by loading the
face unencoded then calling FT_Set_Charmap ourselves.
* pango/Makefile.am pango/pango-ot.h pango/opentype/* :Add start
of opentype handling - most of the actually meat of the code here
is the OpenType layout code from FreeType 1 ported to freetype2
and adapted slighlty for our purposes. Also, includes a
incomplete OpenType-table-dumping code useful for figuring
out what is going on.
* pango/pangoxft.h pango/pangoxft-font.h: Add calls for
getting FT_Face and PangoOTInfo from PangoXftFont.
* modules/arabic/{Makefile.am,arabic-ot.[ch],arabic-xft.c}:
Initial support for rendering Arabic with OpenType fonts.
Diffstat (limited to 'pango/pango-ot.h')
-rw-r--r-- | pango/pango-ot.h | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/pango/pango-ot.h b/pango/pango-ot.h new file mode 100644 index 00000000..85788cc6 --- /dev/null +++ b/pango/pango-ot.h @@ -0,0 +1,130 @@ +/* Pango + * pango-ot.h: + * + * Copyright (C) 2000 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_OT_H__ +#define __PANGO_OT_H__ + +#include <freetype/freetype.h> +#include <pango/pango-glyph.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +typedef guint32 PangoOTTag; + +typedef struct _PangoOTInfo PangoOTInfo; +typedef struct _PangoOTRuleset PangoOTRuleset; + +typedef enum +{ + PANGO_OT_TABLE_GSUB, + PANGO_OT_TABLE_GPOS +} PangoOTTableType; + +PangoOTInfo *pango_ot_info_new (FT_Face face); + +gboolean pango_ot_info_find_script (PangoOTInfo *info, + PangoOTTableType table_type, + PangoOTTag script_tag, + guint *script_index); +gboolean pango_ot_info_find_language (PangoOTInfo *info, + PangoOTTableType table_type, + guint script_index, + PangoOTTag language_tag, + guint *language_index, + guint *required_feature_index); +gboolean pango_ot_info_find_feature (PangoOTInfo *info, + PangoOTTableType table_type, + PangoOTTag feature_tag, + guint script_index, + guint language_index, + guint *feature_index); + +PangoOTTag *pango_ot_info_list_scripts (PangoOTInfo *info, + PangoOTTableType table_type); +PangoOTTag *pango_ot_info_list_languages (PangoOTInfo *info, + PangoOTTableType table_type, + guint script_index, + PangoOTTag language_tag); +PangoOTTag *pango_ot_info_list_features (PangoOTInfo *info, + PangoOTTableType table_type, + PangoOTTag tag, + guint script_index, + guint language_index); + + /* A pointer to a function which loads a glyph. Its parameters are + * the same as in a call to TT_Load_Glyph() -- if no glyph loading + * function will be registered with pango_ot_set_glyph_loader(), + * TT_Load_Glyph() will be called indeed. The purpose of this function + * pointer is to provide a hook for caching glyph outlines and sbits + * (using the instance's generic pointer to hold the data). + * + * If for some reason no outline data is available (e.g. for an + * embedded bitmap glyph), _glyph->outline.n_points should be set to + * zero. _glyph can be computed with + * + * _glyph = HANDLE_Glyph( glyph ) + */ +typedef FT_Error (*PangoOTGlyphLoader) (FT_Face face, + FT_UInt glyphIndex, + FT_Int loadFlags, + gpointer data); + + /* A pointer to a function which selects the alternate glyph. `pos' is + * the position of the glyph with index `glyphID', `num_alternates' + * gives the number of alternates in the `alternates' array. `data' + * points to the user-defined structure specified during a call to + * TT_GSUB_Register_Alternate_Function(). The function must return an + * index into the `alternates' array. + */ +typedef FT_UShort (*PangoOTAlternateFunc) (FT_ULong pos, + FT_UShort glyphID, + FT_UShort num_alternates, + FT_UShort* alternates, + gpointer data); + + +PangoOTRuleset *pango_ot_ruleset_new (PangoOTInfo *info); + +void pango_ot_ruleset_set_glyph_loader (PangoOTRuleset *ruleset, + PangoOTGlyphLoader func, + gpointer data, + GDestroyNotify notify); +void pango_ot_ruleset_set_alternate_func (PangoOTRuleset *ruleset, + PangoOTAlternateFunc func, + gpointer data, + GDestroyNotify notify); + +void pango_ot_ruleset_add_feature (PangoOTRuleset *ruleset, + PangoOTTableType table_type, + guint feature_index, + gulong property_bit); +void pango_ot_ruleset_shape (PangoOTRuleset *ruleset, + PangoGlyphString *glyphs, + gulong *properties); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + + +#endif /* __PANGO_OT_H__ */ |