Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
GNOME
pango
Commits
a7a71548
Commit
a7a71548
authored
May 24, 2009
by
Behdad Esfahbod
Browse files
[HB] Remove old code!
Goodbye 16 thousand lines of ten-year old code!
parent
4b90aa82
Changes
22
Expand all
Hide whitespace changes
Inline
Side-by-side
pango/opentype/harfbuzz-dump-main.c
deleted
100644 → 0
View file @
4b90aa82
/*
* Copyright (C) 2000 Red Hat, Inc.
*
* This is part of HarfBuzz, an OpenType Layout engine library.
*
* Permission is hereby granted, without written agreement and without
* license or royalty fees, to use, copy, modify, and distribute this
* software and its documentation for any purpose, provided that the
* above copyright notice and the following two paragraphs appear in
* all copies of this software.
*
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
* Red Hat Author(s): Owen Taylor
*/
#include <stdio.h>
#include <stdlib.h>
#include "harfbuzz.h"
#include "harfbuzz-dump.h"
#define N_ELEMENTS(arr) (sizeof(arr)/ sizeof((arr)[0]))
static
int
croak
(
const
char
*
situation
,
HB_Error
error
)
{
fprintf
(
stderr
,
"%s: Error %d
\n
"
,
situation
,
error
);
exit
(
1
);
}
int
main
(
int
argc
,
char
**
argv
)
{
HB_Error
error
;
FT_Library
library
;
HB_Font
font
;
HB_GSUB
gsub
;
HB_GPOS
gpos
;
if
(
argc
!=
2
)
{
fprintf
(
stderr
,
"Usage: harfbuzz-dump MYFONT.TTF
\n
"
);
exit
(
1
);
}
if
((
error
=
FT_Init_FreeType
(
&
library
)))
croak
(
"FT_Init_FreeType"
,
error
);
if
((
error
=
FT_New_Face
(
library
,
argv
[
1
],
0
,
&
font
)))
croak
(
"FT_New_Face"
,
error
);
printf
(
"<?xml version=
\"
1.0
\"
?>
\n
"
);
printf
(
"<OpenType>
\n
"
);
if
(
!
(
error
=
HB_Load_GSUB_Table
(
font
,
&
gsub
,
NULL
)))
{
HB_Dump_GSUB_Table
(
gsub
,
stdout
);
if
((
error
=
HB_Done_GSUB_Table
(
gsub
)))
croak
(
"HB_Done_GSUB_Table"
,
error
);
}
else
if
(
error
!=
HB_Err_Not_Covered
)
fprintf
(
stderr
,
"HB_Load_GSUB_Table: error 0x%x
\n
"
,
error
);
if
(
!
(
error
=
HB_Load_GPOS_Table
(
font
,
&
gpos
,
NULL
)))
{
HB_Dump_GPOS_Table
(
gpos
,
stdout
);
if
((
error
=
HB_Done_GPOS_Table
(
gpos
)))
croak
(
"HB_Done_GPOS_Table"
,
error
);
}
else
if
(
error
!=
HB_Err_Not_Covered
)
fprintf
(
stderr
,
"HB_Load_GPOS_Table: error 0x%x
\n
"
,
error
);
printf
(
"</OpenType>
\n
"
);
if
((
error
=
FT_Done_Face
(
font
)))
croak
(
"FT_Done_Face"
,
error
);
if
((
error
=
FT_Done_FreeType
(
library
)))
croak
(
"FT_Done_FreeType"
,
error
);
return
0
;
}
pango/opentype/harfbuzz-dump.c
deleted
100644 → 0
View file @
4b90aa82
This diff is collapsed.
Click to expand it.
pango/opentype/harfbuzz-dump.h
deleted
100644 → 0
View file @
4b90aa82
/*
* Copyright (C) 2000, 2007 Red Hat, Inc.
*
* This is part of HarfBuzz, an OpenType Layout engine library.
*
* Permission is hereby granted, without written agreement and without
* license or royalty fees, to use, copy, modify, and distribute this
* software and its documentation for any purpose, provided that the
* above copyright notice and the following two paragraphs appear in
* all copies of this software.
*
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
* Red Hat Author(s): Owen Taylor, Behdad Esfahbod
*/
#ifndef HARFBUZZ_DUMP_H
#define HARFBUZZ_DUMP_H
#include <stdio.h>
#include "harfbuzz-gsub.h"
#include "harfbuzz-gpos.h"
HB_BEGIN_HEADER
void
HB_Dump_GSUB_Table
(
HB_GSUB
gsub
,
FILE
*
stream
);
void
HB_Dump_GPOS_Table
(
HB_GPOS
gpos
,
FILE
*
stream
);
HB_END_HEADER
#endif
/* HARFBUZZ_DUMP_H */
pango/opentype/harfbuzz-gdef-private.h
deleted
100644 → 0
View file @
4b90aa82
/*
* Copyright (C) 1998-2004 David Turner and Werner Lemberg
* Copyright (C) 2006 Behdad Esfahbod
*
* This is part of HarfBuzz, an OpenType Layout engine library.
*
* Permission is hereby granted, without written agreement and without
* license or royalty fees, to use, copy, modify, and distribute this
* software and its documentation for any purpose, provided that the
* above copyright notice and the following two paragraphs appear in
* all copies of this software.
*
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*/
#ifndef HARFBUZZ_GDEF_PRIVATE_H
#define HARFBUZZ_GDEF_PRIVATE_H
#include "harfbuzz-impl.h"
#include "harfbuzz-stream-private.h"
#include "harfbuzz-buffer-private.h"
#include "harfbuzz-gdef.h"
HB_BEGIN_HEADER
/* Attachment related structures */
struct
HB_AttachPoint_
{
HB_UShort
PointCount
;
/* size of the PointIndex array */
HB_UShort
*
PointIndex
;
/* array of contour points */
};
/* Ligature Caret related structures */
struct
HB_CaretValueFormat1_
{
HB_Short
Coordinate
;
/* x or y value (in design units) */
};
typedef
struct
HB_CaretValueFormat1_
HB_CaretValueFormat1
;
struct
HB_CaretValueFormat2_
{
HB_UShort
CaretValuePoint
;
/* contour point index on glyph */
};
typedef
struct
HB_CaretValueFormat2_
HB_CaretValueFormat2
;
struct
HB_CaretValueFormat3_
{
HB_Short
Coordinate
;
/* x or y value (in design units) */
HB_Device
Device
;
/* Device table for x or y value */
};
typedef
struct
HB_CaretValueFormat3_
HB_CaretValueFormat3
;
struct
HB_CaretValueFormat4_
{
HB_UShort
IdCaretValue
;
/* metric ID */
};
typedef
struct
HB_CaretValueFormat4_
HB_CaretValueFormat4
;
struct
HB_CaretValue_
{
HB_UShort
CaretValueFormat
;
/* 1, 2, 3, or 4 */
union
{
HB_CaretValueFormat1
cvf1
;
HB_CaretValueFormat2
cvf2
;
HB_CaretValueFormat3
cvf3
;
HB_CaretValueFormat4
cvf4
;
}
cvf
;
};
typedef
struct
HB_CaretValue_
HB_CaretValue
;
struct
HB_LigGlyph_
{
HB_Bool
loaded
;
HB_UShort
CaretCount
;
/* number of caret values */
HB_CaretValue
*
CaretValue
;
/* array of caret values */
};
HB_INTERNAL
HB_Error
_HB_GDEF_Add_Glyph_Property
(
HB_GDEFHeader
*
gdef
,
HB_UShort
glyphID
,
HB_UShort
properties
);
HB_INTERNAL
HB_Error
_HB_GDEF_Check_Property
(
HB_GDEFHeader
*
gdef
,
HB_GlyphItem
item
,
HB_UShort
flags
,
HB_UShort
*
properties
);
HB_INTERNAL
HB_Error
_HB_GDEF_LoadMarkAttachClassDef_From_LookupFlags
(
HB_GDEFHeader
*
gdef
,
HB_Stream
input
,
HB_Lookup
*
lo
,
HB_UShort
num_lookups
);
HB_END_HEADER
#endif
/* HARFBUZZ_GDEF_PRIVATE_H */
pango/opentype/harfbuzz-gdef.c
deleted
100644 → 0
View file @
4b90aa82
This diff is collapsed.
Click to expand it.
pango/opentype/harfbuzz-gdef.h
deleted
100644 → 0
View file @
4b90aa82
/*
* Copyright (C) 1998-2004 David Turner and Werner Lemberg
* Copyright (C) 2006 Behdad Esfahbod
*
* This is part of HarfBuzz, an OpenType Layout engine library.
*
* Permission is hereby granted, without written agreement and without
* license or royalty fees, to use, copy, modify, and distribute this
* software and its documentation for any purpose, provided that the
* above copyright notice and the following two paragraphs appear in
* all copies of this software.
*
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*/
#ifndef HARFBUZZ_GDEF_H
#define HARFBUZZ_GDEF_H
#include "harfbuzz-open.h"
HB_BEGIN_HEADER
/* GDEF glyph properties. Note that HB_GDEF_COMPONENT has no corresponding
* flag in the LookupFlag field. */
#define HB_GDEF_BASE_GLYPH 0x0002
#define HB_GDEF_LIGATURE 0x0004
#define HB_GDEF_MARK 0x0008
#define HB_GDEF_COMPONENT 0x0010
typedef
struct
HB_AttachPoint_
HB_AttachPoint
;
struct
HB_AttachList_
{
HB_Bool
loaded
;
HB_Coverage
Coverage
;
/* Coverage table */
HB_UShort
GlyphCount
;
/* number of glyphs with
attachments */
HB_AttachPoint
*
AttachPoint
;
/* array of AttachPoint tables */
};
typedef
struct
HB_AttachList_
HB_AttachList
;
typedef
struct
HB_LigGlyph_
HB_LigGlyph
;
struct
HB_LigCaretList_
{
HB_Bool
loaded
;
HB_Coverage
Coverage
;
/* Coverage table */
HB_UShort
LigGlyphCount
;
/* number of ligature glyphs */
HB_LigGlyph
*
LigGlyph
;
/* array of LigGlyph tables */
};
typedef
struct
HB_LigCaretList_
HB_LigCaretList
;
/* The `NewGlyphClasses' field is not defined in the TTO specification.
We use it for fonts with a constructed `GlyphClassDef' structure
(i.e., which don't have a GDEF table) to collect glyph classes
assigned during the lookup process. The number of arrays in this
pointer array is GlyphClassDef->cd.cd2.ClassRangeCount+1; the nth
array then contains the glyph class values of the glyphs not covered
by the ClassRangeRecords structures with index n-1 and n. We store
glyph class values for four glyphs in a single array element.
`LastGlyph' is identical to the number of glyphs minus one in the
font; we need it only if `NewGlyphClasses' is not NULL (to have an
upper bound for the last array).
Note that we first store the file offset to the `MarkAttachClassDef'
field (which has been introduced in OpenType 1.2) -- since the
`Version' field value hasn't been increased to indicate that we have
one more field for some obscure reason, we must parse the GSUB table
to find out whether class values refer to this table. Only then we
can finally load the MarkAttachClassDef structure if necessary. */
struct
HB_GDEFHeader_
{
HB_UInt
offset
;
HB_16Dot16
Version
;
HB_ClassDefinition
GlyphClassDef
;
HB_AttachList
AttachList
;
HB_LigCaretList
LigCaretList
;
HB_UInt
MarkAttachClassDef_offset
;
HB_ClassDefinition
MarkAttachClassDef
;
/* new in OT 1.2 */
HB_UShort
LastGlyph
;
HB_UShort
**
NewGlyphClasses
;
};
typedef
struct
HB_GDEFHeader_
HB_GDEFHeader
;
typedef
struct
HB_GDEFHeader_
*
HB_GDEF
;
HB_Error
HB_New_GDEF_Table
(
HB_GDEFHeader
**
retptr
);
HB_Error
HB_Load_GDEF_Table
(
HB_Font
font
,
HB_GDEFHeader
**
gdef
);
HB_Error
HB_Done_GDEF_Table
(
HB_GDEFHeader
*
gdef
);
HB_Error
HB_GDEF_Get_Glyph_Property
(
HB_GDEFHeader
*
gdef
,
HB_UShort
glyphID
,
HB_UShort
*
properties
);
HB_Error
HB_GDEF_Build_ClassDefinition
(
HB_GDEFHeader
*
gdef
,
HB_UShort
num_glyphs
,
HB_UShort
glyph_count
,
HB_UShort
*
glyph_array
,
HB_UShort
*
class_array
);
HB_END_HEADER
#endif
/* HARFBUZZ_GDEF_H */
pango/opentype/harfbuzz-global.h
deleted
100644 → 0
View file @
4b90aa82
/*
* Copyright (C) 2007 Trolltech ASA
* Copyright (C) 2007 Red Hat, Inc.
*
* This is part of HarfBuzz, an OpenType Layout engine library.
*
* Permission is hereby granted, without written agreement and without
* license or royalty fees, to use, copy, modify, and distribute this
* software and its documentation for any purpose, provided that the
* above copyright notice and the following two paragraphs appear in
* all copies of this software.
*
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
* Red Hat Author(s): Behdad Esfahbod
*/
#ifndef HARFBUZZ_GLOBAL_H
#define HARFBUZZ_GLOBAL_H
/* XXX */
#include "hb-ot-layout.h"
#include <ft2build.h>
#include FT_FREETYPE_H
#ifdef __cplusplus
#define HB_BEGIN_HEADER extern "C" {
#define HB_END_HEADER }
#else
#define HB_BEGIN_HEADER
/* nothing */
#define HB_END_HEADER
/* nothing */
#endif
HB_BEGIN_HEADER
#define HB_MAKE_TAG(a,b,c,d) FT_MAKE_TAG(a,b,c,d)
typedef
FT_Pos
HB_Fixed
;
/* 26.6 */
typedef
FT_Fixed
HB_16Dot16
;
/* 16.6 */
typedef
FT_Face
HB_Font
;
typedef
unsigned
char
HB_Byte
;
typedef
signed
char
HB_Char
;
typedef
unsigned
short
HB_UShort
;
typedef
signed
short
HB_Short
;
typedef
unsigned
int
HB_UInt
;
typedef
signed
int
HB_Int
;
typedef
int
HB_Bool
;
typedef
void
*
HB_Pointer
;
typedef
enum
{
/* no error */
HB_Err_Ok
=
0x0000
,
HB_Err_Not_Covered
=
0xFFFF
,
/* _hb_err() is called whenever returning the following errors,
* and in a couple places for HB_Err_Not_Covered too. */
/* programmer error */
HB_Err_Invalid_Argument
=
0x1A66
,
/* font error */
HB_Err_Invalid_SubTable_Format
=
0x157F
,
HB_Err_Invalid_SubTable
=
0x1570
,
HB_Err_Read_Error
=
0x6EAD
,
/* system error */
HB_Err_Out_Of_Memory
=
0xDEAD
}
HB_Error
;
HB_END_HEADER
#endif
pango/opentype/harfbuzz-gpos-private.h
deleted
100644 → 0
View file @
4b90aa82
This diff is collapsed.
Click to expand it.
pango/opentype/harfbuzz-gpos.c
deleted
100644 → 0
View file @
4b90aa82
This diff is collapsed.
Click to expand it.
pango/opentype/harfbuzz-gpos.h
deleted
100644 → 0
View file @
4b90aa82
/*
* Copyright (C) 1998-2004 David Turner and Werner Lemberg
* Copyright (C) 2006 Behdad Esfahbod
*
* This is part of HarfBuzz, an OpenType Layout engine library.
*
* Permission is hereby granted, without written agreement and without
* license or royalty fees, to use, copy, modify, and distribute this
* software and its documentation for any purpose, provided that the
* above copyright notice and the following two paragraphs appear in
* all copies of this software.
*
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*/
#ifndef HARFBUZZ_GPOS_H
#define HARFBUZZ_GPOS_H
#include "harfbuzz-open.h"
#include "harfbuzz-buffer.h"
HB_BEGIN_HEADER
/* Lookup types for glyph positioning */
#define HB_GPOS_LOOKUP_SINGLE 1
#define HB_GPOS_LOOKUP_PAIR 2
#define HB_GPOS_LOOKUP_CURSIVE 3
#define HB_GPOS_LOOKUP_MARKBASE 4
#define HB_GPOS_LOOKUP_MARKLIG 5
#define HB_GPOS_LOOKUP_MARKMARK 6
#define HB_GPOS_LOOKUP_CONTEXT 7
#define HB_GPOS_LOOKUP_CHAIN 8
#define HB_GPOS_LOOKUP_EXTENSION 9
/* A pointer to a function which loads a glyph. Its parameters are
the same as in a call to Load_Glyph() -- if no glyph loading
function will be registered with HB_GPOS_Register_Glyph_Function(),
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. */
typedef
HB_Error
(
*
HB_GlyphFunction
)(
HB_Font
font
,
HB_UInt
glyphIndex
,
HB_Int
loadFlags
);
/* A pointer to a function which accesses the PostScript interpreter.
Multiple Master fonts need this interface to convert a metric ID
(as stored in an OpenType font version 1.2 or higher) `metric_id'
into a metric value (returned in `metric_value').
`data' points to the user-defined structure specified during a
call to HB_GPOS_Register_MM_Function().
`metric_value' must be returned as a scaled value (but shouldn't
be rounded). */
typedef
HB_Error
(
*
HB_MMFunction
)(
HB_Font
font
,
HB_UShort
metric_id
,
HB_Fixed
*
metric_value
,
void
*
data
);
struct
HB_GPOSHeader_
{
HB_16Dot16
Version
;
HB_ScriptList
ScriptList
;
HB_FeatureList
FeatureList
;
HB_LookupList
LookupList
;
hb_ot_layout_t
*
layout
;
/* the next field is used for a callback function to get the
glyph outline. */
HB_GlyphFunction
gfunc
;
/* this is OpenType 1.2 -- Multiple Master fonts need this
callback function to get various metric values from the
PostScript interpreter. */
HB_MMFunction
mmfunc
;
void
*
data
;
};
typedef
struct
HB_GPOSHeader_
HB_GPOSHeader
;
typedef
HB_GPOSHeader
*
HB_GPOS
;
HB_Error
HB_Load_GPOS_Table
(
HB_Font
font
,
HB_GPOSHeader
**
gpos
,
hb_ot_layout_t
*
layout
);
HB_Error
HB_Done_GPOS_Table
(
HB_GPOSHeader
*
gpos
);
HB_Error
HB_GPOS_Select_Script
(
HB_GPOSHeader
*
gpos
,
HB_UInt
script_tag
,
HB_UShort
*
script_index
);
HB_Error
HB_GPOS_Select_Language
(
HB_GPOSHeader
*
gpos
,
HB_UInt
language_tag
,
HB_UShort
script_index
,
HB_UShort
*
language_index
,
HB_UShort
*
req_feature_index
);
HB_Error
HB_GPOS_Select_Feature
(
HB_GPOSHeader
*
gpos
,
HB_UInt
feature_tag
,
HB_UShort
script_index
,
HB_UShort
language_index
,
HB_UShort
*
feature_index
);
HB_Error
HB_GPOS_Query_Scripts
(
HB_GPOSHeader
*
gpos
,
HB_UInt
**
script_tag_list
);