mirror of
https://github.com/harfbuzz/harfbuzz.git
synced 2025-04-13 00:32:59 +00:00
Use namespace for OpenType tables
Avoids USHORT, SHORT, ULONG, LONG clashes with Windows API.
This commit is contained in:
parent
dc5df5af6b
commit
7c8e844d92
17 changed files with 117 additions and 65 deletions
|
@ -589,10 +589,10 @@ _hb_face_for_data_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void
|
|||
if (tag == HB_TAG_NONE)
|
||||
return hb_blob_reference (data->blob);
|
||||
|
||||
const OpenTypeFontFile &ot_file = *Sanitizer<OpenTypeFontFile>::lock_instance (data->blob);
|
||||
const OpenTypeFontFace &ot_face = ot_file.get_face (data->index);
|
||||
const OT::OpenTypeFontFile &ot_file = *OT::Sanitizer<OT::OpenTypeFontFile>::lock_instance (data->blob);
|
||||
const OT::OpenTypeFontFace &ot_face = ot_file.get_face (data->index);
|
||||
|
||||
const OpenTypeTable &table = ot_face.get_table_by_tag (tag);
|
||||
const OT::OpenTypeTable &table = ot_face.get_table_by_tag (tag);
|
||||
|
||||
hb_blob_t *blob = hb_blob_create_sub_blob (data->blob, table.offset, table.length);
|
||||
|
||||
|
@ -608,7 +608,7 @@ hb_face_create (hb_blob_t *blob,
|
|||
if (unlikely (!blob || !hb_blob_get_length (blob)))
|
||||
return hb_face_get_empty ();
|
||||
|
||||
hb_face_for_data_closure_t *closure = _hb_face_for_data_closure_create (Sanitizer<OpenTypeFontFile>::sanitize (hb_blob_reference (blob)), index);
|
||||
hb_face_for_data_closure_t *closure = _hb_face_for_data_closure_create (OT::Sanitizer<OT::OpenTypeFontFile>::sanitize (hb_blob_reference (blob)), index);
|
||||
|
||||
if (unlikely (!closure))
|
||||
return hb_face_get_empty ();
|
||||
|
@ -740,8 +740,8 @@ hb_face_get_upem (hb_face_t *face)
|
|||
void
|
||||
hb_face_t::load_upem (void) const
|
||||
{
|
||||
hb_blob_t *head_blob = Sanitizer<head>::sanitize (reference_table (HB_OT_TAG_head));
|
||||
const head *head_table = Sanitizer<head>::lock_instance (head_blob);
|
||||
hb_blob_t *head_blob = OT::Sanitizer<OT::head>::sanitize (reference_table (HB_OT_TAG_head));
|
||||
const OT::head *head_table = OT::Sanitizer<OT::head>::lock_instance (head_blob);
|
||||
upem = head_table->get_upem ();
|
||||
hb_blob_destroy (head_blob);
|
||||
}
|
||||
|
|
|
@ -32,6 +32,8 @@
|
|||
#include "hb-open-type-private.hh"
|
||||
|
||||
|
||||
namespace OT {
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
|
@ -253,5 +255,7 @@ struct OpenTypeFontFile
|
|||
};
|
||||
|
||||
|
||||
} // namespace OT
|
||||
|
||||
|
||||
#endif /* HB_OPEN_FILE_PRIVATE_HH */
|
||||
|
|
|
@ -34,6 +34,8 @@
|
|||
#include "hb-blob.h"
|
||||
|
||||
|
||||
namespace OT {
|
||||
|
||||
|
||||
/*
|
||||
* Casts
|
||||
|
@ -382,11 +384,6 @@ struct IntType
|
|||
DEFINE_SIZE_STATIC (sizeof (Type));
|
||||
};
|
||||
|
||||
/* Typedef these to avoid clash with windows.h */
|
||||
#define USHORT HB_USHORT
|
||||
#define SHORT HB_SHORT
|
||||
#define ULONG HB_ULONG
|
||||
#define LONG HB_LONG
|
||||
typedef IntType<uint16_t> USHORT; /* 16-bit unsigned integer. */
|
||||
typedef IntType<int16_t> SHORT; /* 16-bit signed integer. */
|
||||
typedef IntType<uint32_t> ULONG; /* 32-bit unsigned integer. */
|
||||
|
@ -714,5 +711,7 @@ struct SortedArrayOf : ArrayOf<Type> {
|
|||
};
|
||||
|
||||
|
||||
} // namespace OT
|
||||
|
||||
|
||||
#endif /* HB_OPEN_TYPE_PRIVATE_HH */
|
||||
|
|
|
@ -32,6 +32,8 @@
|
|||
#include "hb-open-type-private.hh"
|
||||
|
||||
|
||||
namespace OT {
|
||||
|
||||
|
||||
/*
|
||||
* head -- Font Header
|
||||
|
@ -141,5 +143,7 @@ struct head
|
|||
};
|
||||
|
||||
|
||||
} // namespace OT
|
||||
|
||||
|
||||
#endif /* HB_OT_HEAD_TABLE_HH */
|
||||
|
|
|
@ -30,6 +30,8 @@
|
|||
#include "hb-open-type-private.hh"
|
||||
|
||||
|
||||
namespace OT {
|
||||
|
||||
|
||||
/*
|
||||
* hhea -- The Horizontal Header Table
|
||||
|
@ -89,4 +91,7 @@ struct hhea
|
|||
};
|
||||
|
||||
|
||||
} // namespace OT
|
||||
|
||||
|
||||
#endif /* HB_OT_HHEA_TABLE_HH */
|
||||
|
|
|
@ -30,6 +30,8 @@
|
|||
#include "hb-open-type-private.hh"
|
||||
|
||||
|
||||
namespace OT {
|
||||
|
||||
|
||||
/*
|
||||
* hmtx -- The Horizontal Metrics Table
|
||||
|
@ -83,4 +85,8 @@ struct hmtx
|
|||
DEFINE_SIZE_ARRAY2 (0, longHorMetric, leftSideBearingX);
|
||||
};
|
||||
|
||||
|
||||
} // namespace OT
|
||||
|
||||
|
||||
#endif /* HB_OT_HMTX_TABLE_HH */
|
||||
|
|
|
@ -34,6 +34,9 @@
|
|||
#include "hb-set-private.hh"
|
||||
|
||||
|
||||
namespace OT {
|
||||
|
||||
|
||||
#define NOT_COVERED ((unsigned int) -1)
|
||||
#define MAX_NESTING_LEVEL 8
|
||||
|
||||
|
@ -763,5 +766,7 @@ struct Device
|
|||
};
|
||||
|
||||
|
||||
} // namespace OT
|
||||
|
||||
|
||||
#endif /* HB_OT_LAYOUT_COMMON_PRIVATE_HH */
|
||||
|
|
|
@ -34,6 +34,8 @@
|
|||
#include "hb-font-private.hh"
|
||||
|
||||
|
||||
namespace OT {
|
||||
|
||||
|
||||
/*
|
||||
* Attachment List Table
|
||||
|
@ -421,5 +423,7 @@ struct GDEF
|
|||
};
|
||||
|
||||
|
||||
} // namespace OT
|
||||
|
||||
|
||||
#endif /* HB_OT_LAYOUT_GDEF_TABLE_HH */
|
||||
|
|
|
@ -32,6 +32,8 @@
|
|||
#include "hb-ot-layout-gsubgpos-private.hh"
|
||||
|
||||
|
||||
namespace OT {
|
||||
|
||||
|
||||
/* buffer **position** var allocations */
|
||||
#define attach_lookback() var.u16[0] /* number of glyphs to go back to attach this glyph to its base */
|
||||
|
@ -1713,5 +1715,7 @@ static inline bool position_lookup (hb_apply_context_t *c, unsigned int lookup_i
|
|||
#undef cursive_chain
|
||||
|
||||
|
||||
} // namespace OT
|
||||
|
||||
|
||||
#endif /* HB_OT_LAYOUT_GPOS_TABLE_HH */
|
||||
|
|
|
@ -32,6 +32,8 @@
|
|||
#include "hb-ot-layout-gsubgpos-private.hh"
|
||||
|
||||
|
||||
namespace OT {
|
||||
|
||||
|
||||
struct SingleSubstFormat1
|
||||
{
|
||||
|
@ -1410,5 +1412,7 @@ static inline bool substitute_lookup (hb_apply_context_t *c, unsigned int lookup
|
|||
}
|
||||
|
||||
|
||||
} // namespace OT
|
||||
|
||||
|
||||
#endif /* HB_OT_LAYOUT_GSUB_TABLE_HH */
|
||||
|
|
|
@ -34,6 +34,8 @@
|
|||
#include "hb-set-private.hh"
|
||||
|
||||
|
||||
namespace OT {
|
||||
|
||||
|
||||
#ifndef HB_DEBUG_CLOSURE
|
||||
#define HB_DEBUG_CLOSURE (HB_DEBUG+0)
|
||||
|
@ -1682,5 +1684,7 @@ struct GSUBGPOS
|
|||
};
|
||||
|
||||
|
||||
} // namespace OT
|
||||
|
||||
|
||||
#endif /* HB_OT_LAYOUT_GSUBGPOS_PRIVATE_HH */
|
||||
|
|
|
@ -185,15 +185,21 @@ hb_ot_layout_position_finish (hb_font_t *font,
|
|||
* hb_ot_layout_t
|
||||
*/
|
||||
|
||||
namespace OT {
|
||||
struct GDEF;
|
||||
struct GSUB;
|
||||
struct GPOS;
|
||||
}
|
||||
|
||||
struct hb_ot_layout_t
|
||||
{
|
||||
hb_blob_t *gdef_blob;
|
||||
hb_blob_t *gsub_blob;
|
||||
hb_blob_t *gpos_blob;
|
||||
|
||||
const struct GDEF *gdef;
|
||||
const struct GSUB *gsub;
|
||||
const struct GPOS *gpos;
|
||||
const struct OT::GDEF *gdef;
|
||||
const struct OT::GSUB *gsub;
|
||||
const struct OT::GPOS *gpos;
|
||||
|
||||
unsigned int gsub_lookup_count;
|
||||
unsigned int gpos_lookup_count;
|
||||
|
|
|
@ -35,7 +35,6 @@
|
|||
#include "hb-ot-layout-gpos-table.hh"
|
||||
#include "hb-ot-maxp-table.hh"
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
@ -49,14 +48,14 @@ _hb_ot_layout_create (hb_face_t *face)
|
|||
if (unlikely (!layout))
|
||||
return NULL;
|
||||
|
||||
layout->gdef_blob = Sanitizer<GDEF>::sanitize (face->reference_table (HB_OT_TAG_GDEF));
|
||||
layout->gdef = Sanitizer<GDEF>::lock_instance (layout->gdef_blob);
|
||||
layout->gdef_blob = OT::Sanitizer<OT::GDEF>::sanitize (face->reference_table (HB_OT_TAG_GDEF));
|
||||
layout->gdef = OT::Sanitizer<OT::GDEF>::lock_instance (layout->gdef_blob);
|
||||
|
||||
layout->gsub_blob = Sanitizer<GSUB>::sanitize (face->reference_table (HB_OT_TAG_GSUB));
|
||||
layout->gsub = Sanitizer<GSUB>::lock_instance (layout->gsub_blob);
|
||||
layout->gsub_blob = OT::Sanitizer<OT::GSUB>::sanitize (face->reference_table (HB_OT_TAG_GSUB));
|
||||
layout->gsub = OT::Sanitizer<OT::GSUB>::lock_instance (layout->gsub_blob);
|
||||
|
||||
layout->gpos_blob = Sanitizer<GPOS>::sanitize (face->reference_table (HB_OT_TAG_GPOS));
|
||||
layout->gpos = Sanitizer<GPOS>::lock_instance (layout->gpos_blob);
|
||||
layout->gpos_blob = OT::Sanitizer<OT::GPOS>::sanitize (face->reference_table (HB_OT_TAG_GPOS));
|
||||
layout->gpos = OT::Sanitizer<OT::GPOS>::lock_instance (layout->gpos_blob);
|
||||
|
||||
layout->gsub_lookup_count = layout->gsub->get_lookup_count ();
|
||||
layout->gpos_lookup_count = layout->gpos->get_lookup_count ();
|
||||
|
@ -92,22 +91,22 @@ _hb_ot_layout_destroy (hb_ot_layout_t *layout)
|
|||
free (layout);
|
||||
}
|
||||
|
||||
static inline const GDEF&
|
||||
static inline const OT::GDEF&
|
||||
_get_gdef (hb_face_t *face)
|
||||
{
|
||||
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(GDEF);
|
||||
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return OT::Null(OT::GDEF);
|
||||
return *hb_ot_layout_from_face (face)->gdef;
|
||||
}
|
||||
static inline const GSUB&
|
||||
static inline const OT::GSUB&
|
||||
_get_gsub (hb_face_t *face)
|
||||
{
|
||||
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(GSUB);
|
||||
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return OT::Null(OT::GSUB);
|
||||
return *hb_ot_layout_from_face (face)->gsub;
|
||||
}
|
||||
static inline const GPOS&
|
||||
static inline const OT::GPOS&
|
||||
_get_gpos (hb_face_t *face)
|
||||
{
|
||||
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(GPOS);
|
||||
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return OT::Null(OT::GPOS);
|
||||
return *hb_ot_layout_from_face (face)->gpos;
|
||||
}
|
||||
|
||||
|
@ -149,14 +148,14 @@ hb_ot_layout_get_ligature_carets (hb_font_t *font,
|
|||
* GSUB/GPOS
|
||||
*/
|
||||
|
||||
static const GSUBGPOS&
|
||||
static const OT::GSUBGPOS&
|
||||
get_gsubgpos_table (hb_face_t *face,
|
||||
hb_tag_t table_tag)
|
||||
{
|
||||
switch (table_tag) {
|
||||
case HB_OT_TAG_GSUB: return _get_gsub (face);
|
||||
case HB_OT_TAG_GPOS: return _get_gpos (face);
|
||||
default: return Null(GSUBGPOS);
|
||||
default: return OT::Null(OT::GSUBGPOS);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -168,7 +167,7 @@ hb_ot_layout_table_get_script_tags (hb_face_t *face,
|
|||
unsigned int *script_count /* IN/OUT */,
|
||||
hb_tag_t *script_tags /* OUT */)
|
||||
{
|
||||
const GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||
const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||
|
||||
return g.get_script_tags (start_offset, script_count, script_tags);
|
||||
}
|
||||
|
@ -179,8 +178,8 @@ hb_ot_layout_table_find_script (hb_face_t *face,
|
|||
hb_tag_t script_tag,
|
||||
unsigned int *script_index)
|
||||
{
|
||||
ASSERT_STATIC (Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_NO_SCRIPT_INDEX);
|
||||
const GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||
ASSERT_STATIC (OT::Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_NO_SCRIPT_INDEX);
|
||||
const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||
|
||||
if (g.find_script_index (script_tag, script_index))
|
||||
return true;
|
||||
|
@ -205,8 +204,8 @@ hb_ot_layout_table_choose_script (hb_face_t *face,
|
|||
unsigned int *script_index,
|
||||
hb_tag_t *chosen_script)
|
||||
{
|
||||
ASSERT_STATIC (Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_NO_SCRIPT_INDEX);
|
||||
const GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||
ASSERT_STATIC (OT::Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_NO_SCRIPT_INDEX);
|
||||
const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||
|
||||
while (*script_tags)
|
||||
{
|
||||
|
@ -254,7 +253,7 @@ hb_ot_layout_table_get_feature_tags (hb_face_t *face,
|
|||
unsigned int *feature_count /* IN/OUT */,
|
||||
hb_tag_t *feature_tags /* OUT */)
|
||||
{
|
||||
const GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||
const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||
|
||||
return g.get_feature_tags (start_offset, feature_count, feature_tags);
|
||||
}
|
||||
|
@ -268,7 +267,7 @@ hb_ot_layout_script_get_language_tags (hb_face_t *face,
|
|||
unsigned int *language_count /* IN/OUT */,
|
||||
hb_tag_t *language_tags /* OUT */)
|
||||
{
|
||||
const Script &s = get_gsubgpos_table (face, table_tag).get_script (script_index);
|
||||
const OT::Script &s = get_gsubgpos_table (face, table_tag).get_script (script_index);
|
||||
|
||||
return s.get_lang_sys_tags (start_offset, language_count, language_tags);
|
||||
}
|
||||
|
@ -280,8 +279,8 @@ hb_ot_layout_script_find_language (hb_face_t *face,
|
|||
hb_tag_t language_tag,
|
||||
unsigned int *language_index)
|
||||
{
|
||||
ASSERT_STATIC (Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX);
|
||||
const Script &s = get_gsubgpos_table (face, table_tag).get_script (script_index);
|
||||
ASSERT_STATIC (OT::Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX);
|
||||
const OT::Script &s = get_gsubgpos_table (face, table_tag).get_script (script_index);
|
||||
|
||||
if (s.find_lang_sys_index (language_tag, language_index))
|
||||
return true;
|
||||
|
@ -301,7 +300,7 @@ hb_ot_layout_language_get_required_feature_index (hb_face_t *face,
|
|||
unsigned int language_index,
|
||||
unsigned int *feature_index)
|
||||
{
|
||||
const LangSys &l = get_gsubgpos_table (face, table_tag).get_script (script_index).get_lang_sys (language_index);
|
||||
const OT::LangSys &l = get_gsubgpos_table (face, table_tag).get_script (script_index).get_lang_sys (language_index);
|
||||
|
||||
if (feature_index) *feature_index = l.get_required_feature_index ();
|
||||
|
||||
|
@ -317,8 +316,8 @@ hb_ot_layout_language_get_feature_indexes (hb_face_t *face,
|
|||
unsigned int *feature_count /* IN/OUT */,
|
||||
unsigned int *feature_indexes /* OUT */)
|
||||
{
|
||||
const GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||
const LangSys &l = g.get_script (script_index).get_lang_sys (language_index);
|
||||
const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||
const OT::LangSys &l = g.get_script (script_index).get_lang_sys (language_index);
|
||||
|
||||
return l.get_feature_indexes (start_offset, feature_count, feature_indexes);
|
||||
}
|
||||
|
@ -332,8 +331,8 @@ hb_ot_layout_language_get_feature_tags (hb_face_t *face,
|
|||
unsigned int *feature_count /* IN/OUT */,
|
||||
hb_tag_t *feature_tags /* OUT */)
|
||||
{
|
||||
const GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||
const LangSys &l = g.get_script (script_index).get_lang_sys (language_index);
|
||||
const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||
const OT::LangSys &l = g.get_script (script_index).get_lang_sys (language_index);
|
||||
|
||||
ASSERT_STATIC (sizeof (unsigned int) == sizeof (hb_tag_t));
|
||||
unsigned int ret = l.get_feature_indexes (start_offset, feature_count, (unsigned int *) feature_tags);
|
||||
|
@ -356,9 +355,9 @@ hb_ot_layout_language_find_feature (hb_face_t *face,
|
|||
hb_tag_t feature_tag,
|
||||
unsigned int *feature_index)
|
||||
{
|
||||
ASSERT_STATIC (Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_NO_FEATURE_INDEX);
|
||||
const GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||
const LangSys &l = g.get_script (script_index).get_lang_sys (language_index);
|
||||
ASSERT_STATIC (OT::Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_NO_FEATURE_INDEX);
|
||||
const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||
const OT::LangSys &l = g.get_script (script_index).get_lang_sys (language_index);
|
||||
|
||||
unsigned int num_features = l.get_feature_count ();
|
||||
for (unsigned int i = 0; i < num_features; i++) {
|
||||
|
@ -382,21 +381,21 @@ hb_ot_layout_feature_get_lookup_indexes (hb_face_t *face,
|
|||
unsigned int *lookup_count /* IN/OUT */,
|
||||
unsigned int *lookup_indexes /* OUT */)
|
||||
{
|
||||
const GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||
const Feature &f = g.get_feature (feature_index);
|
||||
const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||
const OT::Feature &f = g.get_feature (feature_index);
|
||||
|
||||
return f.get_lookup_indexes (start_offset, lookup_count, lookup_indexes);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* GSUB
|
||||
* OT::GSUB
|
||||
*/
|
||||
|
||||
hb_bool_t
|
||||
hb_ot_layout_has_substitution (hb_face_t *face)
|
||||
{
|
||||
return &_get_gsub (face) != &Null(GSUB);
|
||||
return &_get_gsub (face) != &OT::Null(OT::GSUB);
|
||||
}
|
||||
|
||||
hb_bool_t
|
||||
|
@ -418,14 +417,14 @@ hb_ot_layout_would_substitute_lookup_fast (hb_face_t *face,
|
|||
hb_bool_t zero_context)
|
||||
{
|
||||
if (unlikely (lookup_index >= hb_ot_layout_from_face (face)->gsub_lookup_count)) return false;
|
||||
hb_would_apply_context_t c (face, glyphs, glyphs_length, zero_context, &hb_ot_layout_from_face (face)->gsub_digests[lookup_index]);
|
||||
OT::hb_would_apply_context_t c (face, glyphs, glyphs_length, zero_context, &hb_ot_layout_from_face (face)->gsub_digests[lookup_index]);
|
||||
return hb_ot_layout_from_face (face)->gsub->would_substitute_lookup (&c, lookup_index);
|
||||
}
|
||||
|
||||
void
|
||||
hb_ot_layout_substitute_start (hb_font_t *font, hb_buffer_t *buffer)
|
||||
{
|
||||
GSUB::substitute_start (font, buffer);
|
||||
OT::GSUB::substitute_start (font, buffer);
|
||||
}
|
||||
|
||||
hb_bool_t
|
||||
|
@ -435,14 +434,14 @@ hb_ot_layout_substitute_lookup (hb_font_t *font,
|
|||
hb_mask_t mask)
|
||||
{
|
||||
if (unlikely (lookup_index >= hb_ot_layout_from_face (font->face)->gsub_lookup_count)) return false;
|
||||
hb_apply_context_t c (font, buffer, mask, &hb_ot_layout_from_face (font->face)->gsub_digests[lookup_index]);
|
||||
OT::hb_apply_context_t c (font, buffer, mask, &hb_ot_layout_from_face (font->face)->gsub_digests[lookup_index]);
|
||||
return hb_ot_layout_from_face (font->face)->gsub->substitute_lookup (&c, lookup_index);
|
||||
}
|
||||
|
||||
void
|
||||
hb_ot_layout_substitute_finish (hb_font_t *font, hb_buffer_t *buffer)
|
||||
{
|
||||
GSUB::substitute_finish (font, buffer);
|
||||
OT::GSUB::substitute_finish (font, buffer);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -450,24 +449,24 @@ hb_ot_layout_substitute_closure_lookup (hb_face_t *face,
|
|||
unsigned int lookup_index,
|
||||
hb_set_t *glyphs)
|
||||
{
|
||||
hb_closure_context_t c (face, glyphs);
|
||||
OT::hb_closure_context_t c (face, glyphs);
|
||||
_get_gsub (face).closure_lookup (&c, lookup_index);
|
||||
}
|
||||
|
||||
/*
|
||||
* GPOS
|
||||
* OT::GPOS
|
||||
*/
|
||||
|
||||
hb_bool_t
|
||||
hb_ot_layout_has_positioning (hb_face_t *face)
|
||||
{
|
||||
return &_get_gpos (face) != &Null(GPOS);
|
||||
return &_get_gpos (face) != &OT::Null(OT::GPOS);
|
||||
}
|
||||
|
||||
void
|
||||
hb_ot_layout_position_start (hb_font_t *font, hb_buffer_t *buffer)
|
||||
{
|
||||
GPOS::position_start (font, buffer);
|
||||
OT::GPOS::position_start (font, buffer);
|
||||
}
|
||||
|
||||
hb_bool_t
|
||||
|
@ -477,12 +476,12 @@ hb_ot_layout_position_lookup (hb_font_t *font,
|
|||
hb_mask_t mask)
|
||||
{
|
||||
if (unlikely (lookup_index >= hb_ot_layout_from_face (font->face)->gpos_lookup_count)) return false;
|
||||
hb_apply_context_t c (font, buffer, mask, &hb_ot_layout_from_face (font->face)->gpos_digests[lookup_index]);
|
||||
OT::hb_apply_context_t c (font, buffer, mask, &hb_ot_layout_from_face (font->face)->gpos_digests[lookup_index]);
|
||||
return hb_ot_layout_from_face (font->face)->gpos->position_lookup (&c, lookup_index);
|
||||
}
|
||||
|
||||
void
|
||||
hb_ot_layout_position_finish (hb_font_t *font, hb_buffer_t *buffer, hb_bool_t zero_width_attached_marks)
|
||||
{
|
||||
GPOS::position_finish (font, buffer, zero_width_attached_marks);
|
||||
OT::GPOS::position_finish (font, buffer, zero_width_attached_marks);
|
||||
}
|
||||
|
|
|
@ -30,6 +30,8 @@
|
|||
#include "hb-open-type-private.hh"
|
||||
|
||||
|
||||
namespace OT {
|
||||
|
||||
|
||||
/*
|
||||
* maxp -- The Maximum Profile Table
|
||||
|
@ -61,5 +63,7 @@ struct maxp
|
|||
};
|
||||
|
||||
|
||||
} // namespace OT
|
||||
|
||||
|
||||
#endif /* HB_OT_MAXP_TABLE_HH */
|
||||
|
|
|
@ -30,6 +30,8 @@
|
|||
#include "hb-open-type-private.hh"
|
||||
|
||||
|
||||
namespace OT {
|
||||
|
||||
|
||||
/*
|
||||
* name -- The Naming Table
|
||||
|
@ -124,5 +126,7 @@ struct name
|
|||
};
|
||||
|
||||
|
||||
} // namespace OT
|
||||
|
||||
|
||||
#endif /* HB_OT_NAME_TABLE_HH */
|
||||
|
|
|
@ -33,8 +33,6 @@
|
|||
#include <windows.h>
|
||||
#include <usp10.h>
|
||||
|
||||
typedef ULONG WIN_ULONG;
|
||||
|
||||
#include "hb-uniscribe.h"
|
||||
|
||||
#include "hb-ot-name-table.hh"
|
||||
|
@ -121,8 +119,8 @@ populate_log_font (LOGFONTW *lf,
|
|||
lf->lfHeight = -font->y_scale;
|
||||
lf->lfCharSet = DEFAULT_CHARSET;
|
||||
|
||||
hb_blob_t *blob = Sanitizer<name>::sanitize (hb_face_reference_table (font->face, HB_TAG ('n','a','m','e')));
|
||||
const name *name_table = Sanitizer<name>::lock_instance (blob);
|
||||
hb_blob_t *blob = OT::Sanitizer<OT::name>::sanitize (hb_face_reference_table (font->face, HB_TAG ('n','a','m','e')));
|
||||
const OT::name *name_table = OT::Sanitizer<OT::name>::lock_instance (blob);
|
||||
unsigned int len = name_table->get_name (3, 1, 0x409, 4,
|
||||
lf->lfFaceName,
|
||||
sizeof (lf->lfFaceName[0]) * LF_FACESIZE)
|
||||
|
@ -305,7 +303,7 @@ retry:
|
|||
SCRIPT_ITEM items[MAX_ITEMS + 1];
|
||||
SCRIPT_CONTROL bidi_control = {0};
|
||||
SCRIPT_STATE bidi_state = {0};
|
||||
WIN_ULONG script_tags[MAX_ITEMS];
|
||||
ULONG script_tags[MAX_ITEMS];
|
||||
int item_count;
|
||||
|
||||
/* MinGW32 doesn't define fMergeNeutralItems, so we bruteforce */
|
||||
|
|
|
@ -36,6 +36,8 @@
|
|||
#include <stdio.h>
|
||||
|
||||
|
||||
using namespace OT;
|
||||
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
|
|
Loading…
Add table
Reference in a new issue