Merge branch 'master' into cff-subset
This commit is contained in:
commit
9ae954f43a
|
@ -22,28 +22,28 @@ jobs:
|
|||
- run: make -j4
|
||||
- run: make check || .ci/fail.sh
|
||||
|
||||
# macos-llvm-gcc-4.2:
|
||||
# macos:
|
||||
# xcode: "8.3.3"
|
||||
# steps:
|
||||
# - checkout
|
||||
# - run: HOMEBREW_NO_AUTO_UPDATE=1 brew install wget pkg-config libtool ragel freetype glib cairo
|
||||
# - run: wget https://packages.macports.org/llvm-gcc42/llvm-gcc42-2336.11_3+universal.darwin_15.i386-x86_64.tbz2 && tar zxvf llvm-gcc42-2336.11_3+universal.darwin_15.i386-x86_64.tbz2
|
||||
# - run: CC=$PWD/opt/local/bin/llvm-gcc-4.2 CXX=$PWD/opt/local/bin/llvm-g++-4.2 ./autogen.sh --with-freetype --with-glib --with-gobject --with-cairo
|
||||
# # Ignoring assembler complains, https://stackoverflow.com/a/39867021
|
||||
# - run: make 2>&1 | grep -v -e '^/var/folders/*' -e '^[[:space:]]*\.section' -e '^[[:space:]]*\^[[:space:]]*~*'
|
||||
# - run: make check || .ci/fail.sh
|
||||
macos-llvm-gcc-4.2:
|
||||
macos:
|
||||
xcode: "8.3.3"
|
||||
steps:
|
||||
- checkout
|
||||
- run: HOMEBREW_NO_AUTO_UPDATE=1 brew install wget pkg-config libtool ragel freetype glib cairo
|
||||
- run: wget https://packages.macports.org/llvm-gcc42/llvm-gcc42-2336.11_3+universal.darwin_15.i386-x86_64.tbz2 && tar zxvf llvm-gcc42-2336.11_3+universal.darwin_15.i386-x86_64.tbz2
|
||||
- run: CC=$PWD/opt/local/bin/llvm-gcc-4.2 CXX=$PWD/opt/local/bin/llvm-g++-4.2 ./autogen.sh --with-freetype --with-glib --with-gobject --with-cairo
|
||||
# Ignoring assembler complains, https://stackoverflow.com/a/39867021
|
||||
- run: make 2>&1 | grep -v -e '^/var/folders/*' -e '^[[:space:]]*\.section' -e '^[[:space:]]*\^[[:space:]]*~*'
|
||||
- run: make check || .ci/fail.sh
|
||||
|
||||
# macos-notest-apple-gcc-i686-4.2:
|
||||
# macos:
|
||||
# xcode: "8.3.3"
|
||||
# steps:
|
||||
# - checkout
|
||||
# - run: HOMEBREW_NO_AUTO_UPDATE=1 brew install wget pkg-config libtool ragel
|
||||
# - run: wget https://packages.macports.org/apple-gcc42/apple-gcc42-5666.3_15+universal.darwin_15.i386-x86_64.tbz2 && tar zxvf apple-gcc42-5666.3_15+universal.darwin_15.i386-x86_64.tbz2
|
||||
# - run: CPP=$PWD/opt/local/bin/i686-apple-darwin15-cpp-apple-4.2.1 CC=$PWD/opt/local/bin/i686-apple-darwin15-gcc-apple-4.2.1 CXX=$PWD/opt/local/bin/i686-apple-darwin15-g++-apple-4.2.1 ./autogen.sh
|
||||
# # Ignoring assembler complains, https://stackoverflow.com/a/39867021
|
||||
# - run: make 2>&1 | grep -v -e '^/var/folders/*' -e '^[[:space:]]*\.section' -e '^[[:space:]]*\^[[:space:]]*~*'
|
||||
macos-notest-apple-gcc-i686-4.2:
|
||||
macos:
|
||||
xcode: "8.3.3"
|
||||
steps:
|
||||
- checkout
|
||||
- run: HOMEBREW_NO_AUTO_UPDATE=1 brew install wget pkg-config libtool ragel
|
||||
- run: wget https://packages.macports.org/apple-gcc42/apple-gcc42-5666.3_15+universal.darwin_15.i386-x86_64.tbz2 && tar zxvf apple-gcc42-5666.3_15+universal.darwin_15.i386-x86_64.tbz2
|
||||
- run: CPP=$PWD/opt/local/bin/i686-apple-darwin15-cpp-apple-4.2.1 CC=$PWD/opt/local/bin/i686-apple-darwin15-gcc-apple-4.2.1 CXX=$PWD/opt/local/bin/i686-apple-darwin15-g++-apple-4.2.1 ./autogen.sh
|
||||
# Ignoring assembler complains, https://stackoverflow.com/a/39867021
|
||||
- run: make 2>&1 | grep -v -e '^/var/folders/*' -e '^[[:space:]]*\.section' -e '^[[:space:]]*\^[[:space:]]*~*'
|
||||
|
||||
macos-notest-ios:
|
||||
macos:
|
||||
|
@ -321,8 +321,8 @@ workflows:
|
|||
# macOS
|
||||
- macos-10.12.6-aat-fonts
|
||||
- macos-10.13.6-aat-fonts
|
||||
#- macos-llvm-gcc-4.2
|
||||
#- macos-notest-apple-gcc-i686-4.2
|
||||
- macos-llvm-gcc-4.2
|
||||
- macos-notest-apple-gcc-i686-4.2
|
||||
- macos-notest-ios
|
||||
|
||||
# both autotools and cmake
|
||||
|
|
35
NEWS
35
NEWS
|
@ -1,3 +1,38 @@
|
|||
Overview of changes leading to 2.2.0
|
||||
Thursday, November 29, 2018
|
||||
====================================
|
||||
- Misc shaping bug fixes.
|
||||
- Add font variations named-instance API.
|
||||
- Deprecate font variations axis enumeration API and add replacement.
|
||||
- AAT shaping improvements:
|
||||
o Fixed 'kern' table Format 2 implementation.
|
||||
o Implement 'feat' table API for feature detection.
|
||||
o Blacklist 'GSUB' table of fonts from 'MUTF' foundry that also have 'morx'.
|
||||
|
||||
New API:
|
||||
+hb_aat_layout_feature_type_t
|
||||
+hb_aat_layout_feature_selector_t
|
||||
+hb_aat_layout_get_feature_types()
|
||||
+hb_aat_layout_feature_type_get_name_id
|
||||
+hb_aat_layout_feature_selector_info_t
|
||||
+HB_AAT_LAYOUT_NO_SELECTOR_INDEX
|
||||
+hb_aat_layout_feature_type_get_selector_infos()
|
||||
+hb_ot_var_axis_flags_t
|
||||
+hb_ot_var_axis_info_t
|
||||
+hb_ot_var_get_axis_infos()
|
||||
+hb_ot_var_find_axis_info()
|
||||
+hb_ot_var_get_named_instance_count()
|
||||
+hb_ot_var_named_instance_get_subfamily_name_id()
|
||||
+hb_ot_var_named_instance_get_postscript_name_id()
|
||||
+hb_ot_var_named_instance_get_design_coords()
|
||||
|
||||
Deprecated API:
|
||||
+HB_OT_VAR_NO_AXIS_INDEX
|
||||
+hb_ot_var_axis_t
|
||||
+hb_ot_var_get_axes()
|
||||
+hb_ot_var_find_axis()
|
||||
|
||||
|
||||
Overview of changes leading to 2.1.3
|
||||
Friday, November 16, 2018
|
||||
====================================
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
AC_PREREQ([2.64])
|
||||
AC_INIT([HarfBuzz],
|
||||
[2.1.3],
|
||||
[2.2.0],
|
||||
[https://github.com/harfbuzz/harfbuzz/issues/new],
|
||||
[harfbuzz],
|
||||
[http://harfbuzz.org/])
|
||||
|
|
|
@ -196,6 +196,7 @@ HB_OT_headers = \
|
|||
hb-aat-layout.h \
|
||||
hb-ot.h \
|
||||
hb-ot-color.h \
|
||||
hb-ot-deprecated.h \
|
||||
hb-ot-font.h \
|
||||
hb-ot-layout.h \
|
||||
hb-ot-math.h \
|
||||
|
|
|
@ -58,7 +58,7 @@ typedef LArrayOf<Anchor> GlyphAnchors;
|
|||
|
||||
struct ankr
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_AAT_TAG_ankr;
|
||||
enum { tableTag = HB_AAT_TAG_ankr };
|
||||
|
||||
inline const Anchor &get_anchor (hb_codepoint_t glyph_id,
|
||||
unsigned int i,
|
||||
|
|
|
@ -116,7 +116,7 @@ struct BaselineTableFormat3Part
|
|||
|
||||
struct bsln
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_AAT_TAG_bsln;
|
||||
enum { tableTag = HB_AAT_TAG_bsln };
|
||||
|
||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||
{
|
||||
|
|
|
@ -675,7 +675,7 @@ struct ClassTable
|
|||
|
||||
struct ObsoleteTypes
|
||||
{
|
||||
static const bool extended = false;
|
||||
enum { extended = false };
|
||||
typedef HBUINT16 HBUINT;
|
||||
typedef HBUINT8 HBUSHORT;
|
||||
typedef ClassTable<HBUINT8> ClassTypeNarrow;
|
||||
|
@ -705,7 +705,7 @@ struct ObsoleteTypes
|
|||
};
|
||||
struct ExtendedTypes
|
||||
{
|
||||
static const bool extended = true;
|
||||
enum { extended = true };
|
||||
typedef HBUINT32 HBUINT;
|
||||
typedef HBUINT16 HBUSHORT;
|
||||
typedef Lookup<HBUINT16> ClassTypeNarrow;
|
||||
|
|
|
@ -155,7 +155,7 @@ struct FeatureName
|
|||
|
||||
struct feat
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_AAT_TAG_feat;
|
||||
enum { tableTag = HB_AAT_TAG_feat };
|
||||
|
||||
inline bool has_data (void) const { return version.to_int (); }
|
||||
|
||||
|
|
|
@ -382,7 +382,7 @@ struct JustificationHeader
|
|||
|
||||
struct just
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_AAT_TAG_just;
|
||||
enum { tableTag = HB_AAT_TAG_just };
|
||||
|
||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||
{
|
||||
|
|
|
@ -211,7 +211,7 @@ struct KerxSubTableFormat1
|
|||
|
||||
struct driver_context_t
|
||||
{
|
||||
static const bool in_place = true;
|
||||
enum { in_place = true };
|
||||
enum
|
||||
{
|
||||
DontAdvance = Format1EntryT::DontAdvance,
|
||||
|
@ -472,7 +472,7 @@ struct KerxSubTableFormat4
|
|||
|
||||
struct driver_context_t
|
||||
{
|
||||
static const bool in_place = true;
|
||||
enum { in_place = true };
|
||||
enum Flags
|
||||
{
|
||||
Mark = 0x8000, /* If set, remember this glyph as the marked glyph. */
|
||||
|
@ -947,7 +947,7 @@ struct KerxTable
|
|||
{
|
||||
TRACE_SANITIZE (this);
|
||||
if (unlikely (!thiz()->version.sanitize (c) ||
|
||||
thiz()->version < T::minVersion ||
|
||||
(unsigned) thiz()->version < (unsigned) T::minVersion ||
|
||||
!thiz()->tableCount.sanitize (c)))
|
||||
return_trace (false);
|
||||
|
||||
|
@ -982,8 +982,8 @@ struct kerx : KerxTable<kerx>
|
|||
{
|
||||
friend struct KerxTable<kerx>;
|
||||
|
||||
static const hb_tag_t tableTag = HB_AAT_TAG_kerx;
|
||||
static const uint16_t minVersion = 2;
|
||||
enum { tableTag = HB_AAT_TAG_kerx };
|
||||
enum { minVersion = 2u };
|
||||
|
||||
typedef KerxSubTableHeader SubTableHeader;
|
||||
typedef SubTableHeader::Types Types;
|
||||
|
|
|
@ -40,7 +40,7 @@ typedef ArrayOf<HBINT16> LigCaretClassEntry;
|
|||
|
||||
struct lcar
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_AAT_TAG_lcar;
|
||||
enum { tableTag = HB_AAT_TAG_lcar };
|
||||
|
||||
inline unsigned int get_lig_carets (hb_font_t *font,
|
||||
hb_direction_t direction,
|
||||
|
|
|
@ -54,7 +54,7 @@ struct RearrangementSubtable
|
|||
|
||||
struct driver_context_t
|
||||
{
|
||||
static const bool in_place = true;
|
||||
enum { in_place = true };
|
||||
enum Flags
|
||||
{
|
||||
MarkFirst = 0x8000, /* If set, make the current glyph the first
|
||||
|
@ -204,7 +204,7 @@ struct ContextualSubtable
|
|||
|
||||
struct driver_context_t
|
||||
{
|
||||
static const bool in_place = true;
|
||||
enum { in_place = true };
|
||||
enum Flags
|
||||
{
|
||||
SetMark = 0x8000, /* If set, make the current glyph the marked glyph. */
|
||||
|
@ -249,7 +249,7 @@ struct ContextualSubtable
|
|||
{
|
||||
if (entry->data.markIndex != 0xFFFF)
|
||||
{
|
||||
const Lookup<GlyphID> &lookup = subs[entry->data.markIndex];
|
||||
const Lookup<GlyphID> &lookup = subs[(unsigned) entry->data.markIndex];
|
||||
replacement = lookup.get_value (buffer->info[mark].codepoint, driver->num_glyphs);
|
||||
}
|
||||
}
|
||||
|
@ -274,7 +274,7 @@ struct ContextualSubtable
|
|||
{
|
||||
if (entry->data.currentIndex != 0xFFFF)
|
||||
{
|
||||
const Lookup<GlyphID> &lookup = subs[entry->data.currentIndex];
|
||||
const Lookup<GlyphID> &lookup = subs[(unsigned) entry->data.currentIndex];
|
||||
replacement = lookup.get_value (buffer->info[idx].codepoint, driver->num_glyphs);
|
||||
}
|
||||
}
|
||||
|
@ -424,7 +424,7 @@ struct LigatureSubtable
|
|||
|
||||
struct driver_context_t
|
||||
{
|
||||
static const bool in_place = false;
|
||||
enum { in_place = false };
|
||||
enum
|
||||
{
|
||||
DontAdvance = LigatureEntryT::DontAdvance,
|
||||
|
@ -660,7 +660,7 @@ struct InsertionSubtable
|
|||
|
||||
struct driver_context_t
|
||||
{
|
||||
static const bool in_place = false;
|
||||
enum { in_place = false };
|
||||
enum Flags
|
||||
{
|
||||
SetMark = 0x8000, /* If set, mark the current glyph. */
|
||||
|
@ -1096,7 +1096,7 @@ struct Chain
|
|||
template <typename Types>
|
||||
struct mortmorx
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_AAT_TAG_morx;
|
||||
enum { tableTag = HB_AAT_TAG_morx };
|
||||
|
||||
inline bool has_data (void) const { return version != 0; }
|
||||
|
||||
|
@ -1158,11 +1158,11 @@ struct mortmorx
|
|||
|
||||
struct morx : mortmorx<ExtendedTypes>
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_AAT_TAG_morx;
|
||||
enum { tableTag = HB_AAT_TAG_morx };
|
||||
};
|
||||
struct mort : mortmorx<ObsoleteTypes>
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_AAT_TAG_mort;
|
||||
enum { tableTag = HB_AAT_TAG_mort };
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -166,7 +166,7 @@ struct TrackData
|
|||
|
||||
struct trak
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_AAT_TAG_trak;
|
||||
enum { tableTag = HB_AAT_TAG_trak };
|
||||
|
||||
inline bool has_data (void) const { return version.to_int (); }
|
||||
|
||||
|
|
|
@ -318,7 +318,7 @@ _hb_aat_language_get (hb_face_t *face,
|
|||
*
|
||||
* Return value: Number of all available feature types.
|
||||
*
|
||||
* Since: REPLACEME
|
||||
* Since: 2.2.0
|
||||
*/
|
||||
unsigned int
|
||||
hb_aat_layout_get_feature_types (hb_face_t *face,
|
||||
|
@ -336,7 +336,7 @@ hb_aat_layout_get_feature_types (hb_face_t *face,
|
|||
*
|
||||
* Return value: Name ID index
|
||||
*
|
||||
* Since: REPLACEME
|
||||
* Since: 2.2.0
|
||||
*/
|
||||
hb_ot_name_id_t
|
||||
hb_aat_layout_feature_type_get_name_id (hb_face_t *face,
|
||||
|
@ -358,7 +358,7 @@ hb_aat_layout_feature_type_get_name_id (hb_face_t *face,
|
|||
*
|
||||
* Return value: Number of all available feature selectors.
|
||||
*
|
||||
* Since: REPLACEME
|
||||
* Since: 2.2.0
|
||||
*/
|
||||
unsigned int
|
||||
hb_aat_layout_feature_type_get_selector_infos (hb_face_t *face,
|
||||
|
|
|
@ -39,7 +39,7 @@ HB_BEGIN_DECLS
|
|||
* hb_aat_layout_feature_type_t:
|
||||
*
|
||||
*
|
||||
* Since: REPLACEME
|
||||
* Since: 2.2.0
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
|
@ -92,7 +92,7 @@ typedef enum
|
|||
* hb_aat_layout_feature_selector_t:
|
||||
*
|
||||
*
|
||||
* Since: REPLACEME
|
||||
* Since: 2.2.0
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
|
|
|
@ -60,7 +60,7 @@ struct FTStringRange
|
|||
|
||||
struct ltag
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_AAT_TAG_ltag;
|
||||
enum { tableTag = HB_AAT_TAG_ltag };
|
||||
|
||||
inline hb_language_t get_language (unsigned int i) const
|
||||
{
|
||||
|
|
|
@ -598,7 +598,7 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan,
|
|||
} else {
|
||||
active_feature_t *feature = active_features.find (&event->feature);
|
||||
if (feature)
|
||||
active_features.remove (feature - active_features);
|
||||
active_features.remove (feature - active_features.arrayZ ());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,6 +52,7 @@ HB_BEGIN_DECLS
|
|||
|
||||
#ifndef HB_DISABLE_DEPRECATED
|
||||
|
||||
|
||||
#define HB_SCRIPT_CANADIAN_ABORIGINAL HB_SCRIPT_CANADIAN_SYLLABICS
|
||||
|
||||
#define HB_BUFFER_FLAGS_DEFAULT HB_BUFFER_FLAG_DEFAULT
|
||||
|
@ -217,66 +218,6 @@ hb_font_get_glyph_kerning_for_direction (hb_font_t *font,
|
|||
hb_direction_t direction,
|
||||
hb_position_t *x, hb_position_t *y);
|
||||
|
||||
/* Like hb_ot_layout_table_find_script, but takes zero-terminated array of scripts to test */
|
||||
HB_EXTERN HB_DEPRECATED_FOR (hb_ot_layout_table_select_script) hb_bool_t
|
||||
hb_ot_layout_table_choose_script (hb_face_t *face,
|
||||
hb_tag_t table_tag,
|
||||
const hb_tag_t *script_tags,
|
||||
unsigned int *script_index,
|
||||
hb_tag_t *chosen_script);
|
||||
|
||||
HB_EXTERN HB_DEPRECATED_FOR (hb_ot_layout_script_select_language) hb_bool_t
|
||||
hb_ot_layout_script_find_language (hb_face_t *face,
|
||||
hb_tag_t table_tag,
|
||||
unsigned int script_index,
|
||||
hb_tag_t language_tag,
|
||||
unsigned int *language_index);
|
||||
|
||||
HB_EXTERN HB_DEPRECATED_FOR (hb_ot_tags_from_script_and_language) void
|
||||
hb_ot_tags_from_script (hb_script_t script,
|
||||
hb_tag_t *script_tag_1,
|
||||
hb_tag_t *script_tag_2);
|
||||
|
||||
HB_EXTERN HB_DEPRECATED_FOR (hb_ot_tags_from_script_and_language) hb_tag_t
|
||||
hb_ot_tag_from_language (hb_language_t language);
|
||||
|
||||
|
||||
typedef unsigned int hb_ot_name_id_t; /* Since is in hb-ot.h */
|
||||
|
||||
/**
|
||||
* HB_OT_VAR_NO_AXIS_INDEX:
|
||||
*
|
||||
* Since: 1.4.2
|
||||
* Deprecated: REPLACEME
|
||||
*/
|
||||
#define HB_OT_VAR_NO_AXIS_INDEX 0xFFFFFFFFu
|
||||
|
||||
/**
|
||||
* hb_ot_var_axis_t:
|
||||
*
|
||||
* Since: 1.4.2
|
||||
* Deprecated: REPLACEME
|
||||
*/
|
||||
typedef struct hb_ot_var_axis_t
|
||||
{
|
||||
hb_tag_t tag;
|
||||
hb_ot_name_id_t name_id;
|
||||
float min_value;
|
||||
float default_value;
|
||||
float max_value;
|
||||
} hb_ot_var_axis_t;
|
||||
|
||||
HB_EXTERN HB_DEPRECATED_FOR (hb_ot_var_get_axis_infos) unsigned int
|
||||
hb_ot_var_get_axes (hb_face_t *face,
|
||||
unsigned int start_offset,
|
||||
unsigned int *axes_count /* IN/OUT */,
|
||||
hb_ot_var_axis_t *axes_array /* OUT */);
|
||||
|
||||
HB_EXTERN HB_DEPRECATED_FOR (hb_ot_var_find_axis_info) hb_bool_t
|
||||
hb_ot_var_find_axis (hb_face_t *face,
|
||||
hb_tag_t axis_tag,
|
||||
unsigned int *axis_index,
|
||||
hb_ot_var_axis_t *axis_info);
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -735,26 +735,26 @@ inline hb_sorted_array_t<T> hb_sorted_array (T *array, unsigned int len)
|
|||
|
||||
struct HbOpOr
|
||||
{
|
||||
static const bool passthru_left = true;
|
||||
static const bool passthru_right = true;
|
||||
enum { passthru_left = true };
|
||||
enum { passthru_right = true };
|
||||
template <typename T> static void process (T &o, const T &a, const T &b) { o = a | b; }
|
||||
};
|
||||
struct HbOpAnd
|
||||
{
|
||||
static const bool passthru_left = false;
|
||||
static const bool passthru_right = false;
|
||||
enum { passthru_left = false };
|
||||
enum { passthru_right = false };
|
||||
template <typename T> static void process (T &o, const T &a, const T &b) { o = a & b; }
|
||||
};
|
||||
struct HbOpMinus
|
||||
{
|
||||
static const bool passthru_left = true;
|
||||
static const bool passthru_right = false;
|
||||
enum { passthru_left = true };
|
||||
enum { passthru_right = false };
|
||||
template <typename T> static void process (T &o, const T &a, const T &b) { o = a & ~b; }
|
||||
};
|
||||
struct HbOpXor
|
||||
{
|
||||
static const bool passthru_left = true;
|
||||
static const bool passthru_right = true;
|
||||
enum { passthru_left = true };
|
||||
enum { passthru_right = true };
|
||||
template <typename T> static void process (T &o, const T &a, const T &b) { o = a ^ b; }
|
||||
};
|
||||
|
||||
|
|
|
@ -647,8 +647,8 @@ _hb_face_builder_data_reference_blob (hb_face_builder_data_t *data)
|
|||
bool is_cff = data->tables.lsearch (HB_TAG ('C','F','F',' ')) || data->tables.lsearch (HB_TAG ('C','F','F','2'));
|
||||
hb_tag_t sfnt_tag = is_cff ? OT::OpenTypeFontFile::CFFTag : OT::OpenTypeFontFile::TrueTypeTag;
|
||||
|
||||
Supplier<hb_tag_t> tags_supplier (&data->tables[0].tag, table_count, sizeof (data->tables[0]));
|
||||
Supplier<hb_blob_t *> blobs_supplier (&data->tables[0].blob, table_count, sizeof (data->tables[0]));
|
||||
Supplier<hb_tag_t> tags_supplier (&data->tables[0u].tag, table_count, data->tables.item_size);
|
||||
Supplier<hb_blob_t *> blobs_supplier (&data->tables[0u].blob, table_count, data->tables.item_size);
|
||||
bool ret = f->serialize_single (&c,
|
||||
sfnt_tag,
|
||||
tags_supplier,
|
||||
|
|
|
@ -65,7 +65,8 @@ hb_icu_script_from_script (hb_script_t script)
|
|||
if (unlikely (script == HB_SCRIPT_INVALID))
|
||||
return USCRIPT_INVALID_CODE;
|
||||
|
||||
for (unsigned int i = 0; i < USCRIPT_CODE_LIMIT; i++)
|
||||
unsigned int numScriptCode = 1 + u_getIntPropertyMaxValue (UCHAR_SCRIPT);
|
||||
for (unsigned int i = 0; i < numScriptCode; i++)
|
||||
if (unlikely (hb_icu_script_to_script ((UScriptCode) i) == script))
|
||||
return (UScriptCode) i;
|
||||
|
||||
|
|
|
@ -117,8 +117,8 @@ static inline Type& StructAfter(TObject &X)
|
|||
enum { min_size = (size) }
|
||||
|
||||
#define DEFINE_SIZE_ARRAY(size, array) \
|
||||
DEFINE_COMPILES_ASSERTION ((void) (array)[0].static_size) \
|
||||
DEFINE_INSTANCE_ASSERTION (sizeof (*this) == (size) + VAR * sizeof ((array)[0])) \
|
||||
DEFINE_COMPILES_ASSERTION ((void) (array)[0u].static_size) \
|
||||
DEFINE_INSTANCE_ASSERTION (sizeof (*this) == (size) + VAR * sizeof ((array)[0u])) \
|
||||
enum { null_size = (size) }; \
|
||||
enum { min_size = (size) }
|
||||
|
||||
|
@ -658,7 +658,7 @@ struct Supplier
|
|||
}
|
||||
inline Supplier (const hb_vector_t<Type> *v)
|
||||
{
|
||||
head = *v;
|
||||
head = (const Type *) *v;
|
||||
len = v->len;
|
||||
stride = sizeof (Type);
|
||||
}
|
||||
|
@ -721,7 +721,7 @@ struct BEInt<Type, 2>
|
|||
}
|
||||
inline operator Type (void) const
|
||||
{
|
||||
#if defined(__GNUC__) || defined(__clang__)
|
||||
#if (defined(__GNUC__) && __GNUC__ >= 5) || defined(__clang__)
|
||||
/* Spoon-feed the compiler a big-endian integer with alignment 1.
|
||||
* https://github.com/harfbuzz/harfbuzz/pull/1398 */
|
||||
struct __attribute__((packed)) packed_uint16_t { uint16_t v; };
|
||||
|
|
|
@ -168,7 +168,7 @@ struct hb_map_t
|
|||
inline hb_codepoint_t operator [] (unsigned int key) const
|
||||
{ return get (key); }
|
||||
|
||||
static const hb_codepoint_t INVALID = HB_MAP_VALUE_INVALID;
|
||||
enum { INVALID = HB_MAP_VALUE_INVALID };
|
||||
|
||||
inline void clear (void)
|
||||
{
|
||||
|
|
|
@ -77,6 +77,7 @@ struct hb_static_size
|
|||
/*
|
||||
* Null()
|
||||
*/
|
||||
|
||||
extern HB_INTERNAL
|
||||
hb_vector_size_impl_t const _hb_NullPool[(HB_NULL_POOL_SIZE + sizeof (hb_vector_size_impl_t) - 1) / sizeof (hb_vector_size_impl_t)];
|
||||
|
||||
|
@ -86,7 +87,13 @@ static inline Type const & Null (void) {
|
|||
static_assert (hb_null_size (Type) <= HB_NULL_POOL_SIZE, "Increase HB_NULL_POOL_SIZE.");
|
||||
return *reinterpret_cast<Type const *> (_hb_NullPool);
|
||||
}
|
||||
#define Null(Type) Null<typename hb_remove_const (typename hb_remove_reference (Type))> ()
|
||||
template <typename QType>
|
||||
struct NullHelper
|
||||
{
|
||||
typedef typename hb_remove_const (typename hb_remove_reference (QType)) Type;
|
||||
static inline const Type & get_null (void) { return Null<Type> (); }
|
||||
};
|
||||
#define Null(Type) NullHelper<Type>::get_null ()
|
||||
|
||||
/* Specializations for arbitrary-content Null objects expressed in bytes. */
|
||||
#define DECLARE_NULL_NAMESPACE_BYTES(Namespace, Type) \
|
||||
|
@ -129,17 +136,23 @@ static inline Type& Crap (void) {
|
|||
memcpy (obj, &Null(Type), sizeof (*obj));
|
||||
return *obj;
|
||||
}
|
||||
#define Crap(Type) Crap<typename hb_remove_const (typename hb_remove_reference (Type))> ()
|
||||
template <typename QType>
|
||||
struct CrapHelper
|
||||
{
|
||||
typedef typename hb_remove_const (typename hb_remove_reference (QType)) Type;
|
||||
static inline Type & get_crap (void) { return Crap<Type> (); }
|
||||
};
|
||||
#define Crap(Type) CrapHelper<Type>::get_crap ()
|
||||
|
||||
template <typename Type>
|
||||
struct CrapOrNull {
|
||||
struct CrapOrNullHelper {
|
||||
static inline Type & get (void) { return Crap(Type); }
|
||||
};
|
||||
template <typename Type>
|
||||
struct CrapOrNull<const Type> {
|
||||
static inline Type const & get (void) { return Null(Type); }
|
||||
struct CrapOrNullHelper<const Type> {
|
||||
static inline const Type & get (void) { return Null(Type); }
|
||||
};
|
||||
#define CrapOrNull(Type) CrapOrNull<Type>::get ()
|
||||
#define CrapOrNull(Type) CrapOrNullHelper<Type>::get ()
|
||||
|
||||
|
||||
/*
|
||||
|
|
|
@ -495,7 +495,8 @@ struct CmapSubtableLongSegmented
|
|||
{
|
||||
TRACE_SERIALIZE (this);
|
||||
if (unlikely (!c->extend_min (*this))) return_trace (false);
|
||||
Supplier<CmapSubtableLongGroup> supplier (group_data, group_data.len);
|
||||
Supplier<CmapSubtableLongGroup> supplier ((const OT::CmapSubtableLongGroup*) group_data,
|
||||
group_data.len);
|
||||
if (unlikely (!groups.serialize (c, supplier, group_data.len))) return_trace (false);
|
||||
return true;
|
||||
}
|
||||
|
@ -842,7 +843,7 @@ struct EncodingRecord
|
|||
|
||||
struct cmap
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_cmap;
|
||||
enum { tableTag = HB_OT_TAG_cmap };
|
||||
|
||||
struct subset_plan
|
||||
{
|
||||
|
|
|
@ -332,7 +332,7 @@ struct CBLC
|
|||
{
|
||||
friend struct CBDT;
|
||||
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_CBLC;
|
||||
enum { tableTag = HB_OT_TAG_CBLC };
|
||||
|
||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||
{
|
||||
|
@ -378,7 +378,7 @@ struct CBLC
|
|||
|
||||
struct CBDT
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_CBDT;
|
||||
enum { tableTag = HB_OT_TAG_CBDT };
|
||||
|
||||
struct accelerator_t
|
||||
{
|
||||
|
|
|
@ -87,7 +87,7 @@ struct BaseGlyphRecord
|
|||
|
||||
struct COLR
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_COLR;
|
||||
enum { tableTag = HB_OT_TAG_COLR };
|
||||
|
||||
inline bool has_data (void) const { return numBaseGlyphs; }
|
||||
|
||||
|
|
|
@ -110,12 +110,12 @@ typedef HBUINT32 BGRAColor;
|
|||
|
||||
struct CPAL
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_CPAL;
|
||||
enum { tableTag = HB_OT_TAG_CPAL };
|
||||
|
||||
inline bool has_data (void) const { return numPalettes; }
|
||||
|
||||
inline unsigned int get_size (void) const
|
||||
{ return min_size + numPalettes * sizeof (colorRecordIndicesZ[0]); }
|
||||
{ return min_size + numPalettes * sizeof (colorRecordIndicesZ[0u]); }
|
||||
|
||||
inline unsigned int get_palette_count () const { return numPalettes; }
|
||||
inline unsigned int get_color_count () const { return numColors; }
|
||||
|
|
|
@ -130,7 +130,7 @@ struct SBIXStrike
|
|||
|
||||
struct sbix
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_sbix;
|
||||
enum { tableTag = HB_OT_TAG_sbix };
|
||||
|
||||
inline bool has_data (void) const { return version; }
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ struct SVGDocumentIndexEntry
|
|||
|
||||
struct SVG
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_SVG;
|
||||
enum { tableTag = HB_OT_TAG_SVG };
|
||||
|
||||
inline bool has_data (void) const { return svgDocEntries; }
|
||||
|
||||
|
|
|
@ -0,0 +1,107 @@
|
|||
/*
|
||||
* Copyright © 2018 Google, Inc.
|
||||
*
|
||||
* This is part of HarfBuzz, a text shaping 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.
|
||||
*
|
||||
* Google Author(s): Behdad Esfahbod
|
||||
*/
|
||||
|
||||
#ifndef HB_OT_H_IN
|
||||
#error "Include <hb-ot.h> instead."
|
||||
#endif
|
||||
|
||||
#ifndef HB_OT_DEPRECATED_H
|
||||
#define HB_OT_DEPRECATED_H
|
||||
|
||||
#include "hb.h"
|
||||
#include "hb-ot-name.h"
|
||||
|
||||
|
||||
HB_BEGIN_DECLS
|
||||
|
||||
#ifndef HB_DISABLE_DEPRECATED
|
||||
|
||||
|
||||
/* Like hb_ot_layout_table_find_script, but takes zero-terminated array of scripts to test */
|
||||
HB_EXTERN HB_DEPRECATED_FOR (hb_ot_layout_table_select_script) hb_bool_t
|
||||
hb_ot_layout_table_choose_script (hb_face_t *face,
|
||||
hb_tag_t table_tag,
|
||||
const hb_tag_t *script_tags,
|
||||
unsigned int *script_index,
|
||||
hb_tag_t *chosen_script);
|
||||
|
||||
HB_EXTERN HB_DEPRECATED_FOR (hb_ot_layout_script_select_language) hb_bool_t
|
||||
hb_ot_layout_script_find_language (hb_face_t *face,
|
||||
hb_tag_t table_tag,
|
||||
unsigned int script_index,
|
||||
hb_tag_t language_tag,
|
||||
unsigned int *language_index);
|
||||
|
||||
HB_EXTERN HB_DEPRECATED_FOR (hb_ot_tags_from_script_and_language) void
|
||||
hb_ot_tags_from_script (hb_script_t script,
|
||||
hb_tag_t *script_tag_1,
|
||||
hb_tag_t *script_tag_2);
|
||||
|
||||
HB_EXTERN HB_DEPRECATED_FOR (hb_ot_tags_from_script_and_language) hb_tag_t
|
||||
hb_ot_tag_from_language (hb_language_t language);
|
||||
|
||||
|
||||
/**
|
||||
* HB_OT_VAR_NO_AXIS_INDEX:
|
||||
*
|
||||
* Since: 1.4.2
|
||||
* Deprecated: 2.2.0
|
||||
*/
|
||||
#define HB_OT_VAR_NO_AXIS_INDEX 0xFFFFFFFFu
|
||||
|
||||
/**
|
||||
* hb_ot_var_axis_t:
|
||||
*
|
||||
* Since: 1.4.2
|
||||
* Deprecated: 2.2.0
|
||||
*/
|
||||
typedef struct hb_ot_var_axis_t
|
||||
{
|
||||
hb_tag_t tag;
|
||||
hb_ot_name_id_t name_id;
|
||||
float min_value;
|
||||
float default_value;
|
||||
float max_value;
|
||||
} hb_ot_var_axis_t;
|
||||
|
||||
HB_EXTERN HB_DEPRECATED_FOR (hb_ot_var_get_axis_infos) unsigned int
|
||||
hb_ot_var_get_axes (hb_face_t *face,
|
||||
unsigned int start_offset,
|
||||
unsigned int *axes_count /* IN/OUT */,
|
||||
hb_ot_var_axis_t *axes_array /* OUT */);
|
||||
|
||||
HB_EXTERN HB_DEPRECATED_FOR (hb_ot_var_find_axis_info) hb_bool_t
|
||||
hb_ot_var_find_axis (hb_face_t *face,
|
||||
hb_tag_t axis_tag,
|
||||
unsigned int *axis_index,
|
||||
hb_ot_var_axis_t *axis_info);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
HB_END_DECLS
|
||||
|
||||
#endif /* HB_OT_DEPRECATED_H */
|
|
@ -45,7 +45,7 @@ struct loca
|
|||
{
|
||||
friend struct glyf;
|
||||
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_loca;
|
||||
enum { tableTag = HB_OT_TAG_loca };
|
||||
|
||||
inline bool sanitize (hb_sanitize_context_t *c HB_UNUSED) const
|
||||
{
|
||||
|
@ -71,7 +71,7 @@ struct loca
|
|||
|
||||
struct glyf
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_glyf;
|
||||
enum { tableTag = HB_OT_TAG_glyf };
|
||||
|
||||
inline bool sanitize (hb_sanitize_context_t *c HB_UNUSED) const
|
||||
{
|
||||
|
|
|
@ -123,7 +123,7 @@ struct DeviceRecord
|
|||
|
||||
struct hdmx
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_hdmx;
|
||||
enum { tableTag = HB_OT_TAG_hdmx };
|
||||
|
||||
inline unsigned int get_size (void) const
|
||||
{
|
||||
|
|
|
@ -45,7 +45,7 @@ struct head
|
|||
{
|
||||
friend struct OffsetTable;
|
||||
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_head;
|
||||
enum { tableTag = HB_OT_TAG_head };
|
||||
|
||||
inline unsigned int get_upem (void) const
|
||||
{
|
||||
|
|
|
@ -86,10 +86,10 @@ struct _hea
|
|||
};
|
||||
|
||||
struct hhea : _hea<hhea> {
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_hhea;
|
||||
enum { tableTag = HB_OT_TAG_hhea };
|
||||
};
|
||||
struct vhea : _hea<vhea> {
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_vhea;
|
||||
enum { tableTag = HB_OT_TAG_vhea };
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -192,7 +192,7 @@ struct hmtxvmtx
|
|||
default_advance = default_advance_ ? default_advance_ : hb_face_get_upem (face);
|
||||
|
||||
bool got_font_extents = false;
|
||||
if (T::os2Tag)
|
||||
if (T::os2Tag != HB_TAG_NONE)
|
||||
{
|
||||
#define USE_TYPO_METRICS (1u<<7)
|
||||
if (0 != (face->table.OS2->fsSelection & USE_TYPO_METRICS))
|
||||
|
@ -327,14 +327,14 @@ struct hmtxvmtx
|
|||
};
|
||||
|
||||
struct hmtx : hmtxvmtx<hmtx, hhea> {
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_hmtx;
|
||||
static const hb_tag_t variationsTag = HB_OT_TAG_HVAR;
|
||||
static const hb_tag_t os2Tag = HB_OT_TAG_OS2;
|
||||
enum { tableTag = HB_OT_TAG_hmtx };
|
||||
enum { variationsTag = HB_OT_TAG_HVAR };
|
||||
enum { os2Tag = HB_OT_TAG_OS2 };
|
||||
};
|
||||
struct vmtx : hmtxvmtx<vmtx, vhea> {
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_vmtx;
|
||||
static const hb_tag_t variationsTag = HB_OT_TAG_VVAR;
|
||||
static const hb_tag_t os2Tag = HB_TAG_NONE;
|
||||
enum { tableTag = HB_OT_TAG_vmtx };
|
||||
enum { variationsTag = HB_OT_TAG_VVAR };
|
||||
enum { os2Tag = HB_TAG_NONE };
|
||||
};
|
||||
|
||||
struct hmtx_accelerator_t : hmtx::accelerator_t {};
|
||||
|
|
|
@ -56,7 +56,7 @@ struct KernSubTableFormat3
|
|||
if (unlikely (leftC >= leftClassCount || rightC >= rightClassCount))
|
||||
return 0;
|
||||
unsigned int i = leftC * rightClassCount + rightC;
|
||||
return kernValue[kernIndex[i]];
|
||||
return kernValue[(unsigned) kernIndex[i]];
|
||||
}
|
||||
|
||||
inline bool apply (AAT::hb_aat_apply_context_t *c) const
|
||||
|
@ -160,7 +160,7 @@ struct KernSubTable
|
|||
|
||||
struct KernOTSubTableHeader
|
||||
{
|
||||
static const bool apple = false;
|
||||
enum { apple = false };
|
||||
typedef AAT::ObsoleteTypes Types;
|
||||
|
||||
inline unsigned int tuple_count (void) const { return 0; }
|
||||
|
@ -197,8 +197,8 @@ struct KernOT : AAT::KerxTable<KernOT>
|
|||
{
|
||||
friend struct AAT::KerxTable<KernOT>;
|
||||
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_kern;
|
||||
static const uint16_t minVersion = 0;
|
||||
enum { tableTag = HB_OT_TAG_kern };
|
||||
enum { minVersion = 0u };
|
||||
|
||||
typedef KernOTSubTableHeader SubTableHeader;
|
||||
typedef SubTableHeader::Types Types;
|
||||
|
@ -215,7 +215,7 @@ struct KernOT : AAT::KerxTable<KernOT>
|
|||
|
||||
struct KernAATSubTableHeader
|
||||
{
|
||||
static const bool apple = true;
|
||||
enum { apple = true };
|
||||
typedef AAT::ObsoleteTypes Types;
|
||||
|
||||
inline unsigned int tuple_count (void) const { return 0; }
|
||||
|
@ -252,8 +252,8 @@ struct KernAAT : AAT::KerxTable<KernAAT>
|
|||
{
|
||||
friend struct AAT::KerxTable<KernAAT>;
|
||||
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_kern;
|
||||
static const uint32_t minVersion = 0x00010000u;
|
||||
enum { tableTag = HB_OT_TAG_kern };
|
||||
enum { minVersion = 0x00010000u };
|
||||
|
||||
typedef KernAATSubTableHeader SubTableHeader;
|
||||
typedef SubTableHeader::Types Types;
|
||||
|
@ -269,7 +269,7 @@ struct KernAAT : AAT::KerxTable<KernAAT>
|
|||
|
||||
struct kern
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_kern;
|
||||
enum { tableTag = HB_OT_TAG_kern };
|
||||
|
||||
inline bool has_data (void) const { return u.version32; }
|
||||
inline unsigned int get_type (void) const { return u.major; }
|
||||
|
|
|
@ -465,7 +465,7 @@ struct Axis
|
|||
|
||||
struct BASE
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_BASE;
|
||||
enum { tableTag = HB_OT_TAG_BASE };
|
||||
|
||||
inline const Axis &get_axis (hb_direction_t direction) const
|
||||
{ return HB_DIRECTION_IS_VERTICAL (direction) ? this+vAxis : this+hAxis; }
|
||||
|
|
|
@ -340,7 +340,7 @@ struct MarkGlyphSets
|
|||
|
||||
struct GDEF
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_GDEF;
|
||||
enum { tableTag = HB_OT_TAG_GDEF };
|
||||
|
||||
enum GlyphClasses {
|
||||
UnclassifiedGlyph = 0,
|
||||
|
|
|
@ -625,8 +625,8 @@ struct PairSet
|
|||
inline bool intersects (const hb_set_t *glyphs,
|
||||
const ValueFormat *valueFormats) const
|
||||
{
|
||||
unsigned int len1 = valueFormats[0].get_len ();
|
||||
unsigned int len2 = valueFormats[1].get_len ();
|
||||
unsigned int len1 = valueFormats[0u].get_len ();
|
||||
unsigned int len2 = valueFormats[1u].get_len ();
|
||||
unsigned int record_size = HBUINT16::static_size * (1 + len1 + len2);
|
||||
|
||||
const PairValueRecord *record = &firstPairValueRecord;
|
||||
|
@ -644,8 +644,8 @@ struct PairSet
|
|||
const ValueFormat *valueFormats) const
|
||||
{
|
||||
TRACE_COLLECT_GLYPHS (this);
|
||||
unsigned int len1 = valueFormats[0].get_len ();
|
||||
unsigned int len2 = valueFormats[1].get_len ();
|
||||
unsigned int len1 = valueFormats[0u].get_len ();
|
||||
unsigned int len2 = valueFormats[1u].get_len ();
|
||||
unsigned int record_size = HBUINT16::static_size * (1 + len1 + len2);
|
||||
|
||||
const PairValueRecord *record = &firstPairValueRecord;
|
||||
|
@ -658,8 +658,8 @@ struct PairSet
|
|||
{
|
||||
TRACE_APPLY (this);
|
||||
hb_buffer_t *buffer = c->buffer;
|
||||
unsigned int len1 = valueFormats[0].get_len ();
|
||||
unsigned int len2 = valueFormats[1].get_len ();
|
||||
unsigned int len1 = valueFormats[0u].get_len ();
|
||||
unsigned int len2 = valueFormats[1u].get_len ();
|
||||
unsigned int record_size = HBUINT16::static_size * (1 + len1 + len2);
|
||||
|
||||
unsigned int count = len;
|
||||
|
@ -681,8 +681,8 @@ struct PairSet
|
|||
else
|
||||
{
|
||||
/* Note the intentional use of "|" instead of short-circuit "||". */
|
||||
if (valueFormats[0].apply_value (c, this, &record->values[0], buffer->cur_pos()) |
|
||||
valueFormats[1].apply_value (c, this, &record->values[len1], buffer->pos[pos]))
|
||||
if (valueFormats[0u].apply_value (c, this, &record->values[0u], buffer->cur_pos()) |
|
||||
valueFormats[1u].apply_value (c, this, &record->values[len1], buffer->pos[pos]))
|
||||
buffer->unsafe_to_break (buffer->idx, pos + 1);
|
||||
if (len2)
|
||||
pos++;
|
||||
|
@ -698,7 +698,7 @@ struct PairSet
|
|||
{
|
||||
const void *base;
|
||||
const ValueFormat *valueFormats;
|
||||
unsigned int len1; /* valueFormats[0].get_len() */
|
||||
unsigned int len1; /* valueFormats[0u].get_len() */
|
||||
unsigned int stride; /* 1 + len1 + len2 */
|
||||
};
|
||||
|
||||
|
@ -713,8 +713,8 @@ struct PairSet
|
|||
|
||||
unsigned int count = len;
|
||||
const PairValueRecord *record = &firstPairValueRecord;
|
||||
return_trace (closure->valueFormats[0].sanitize_values_stride_unsafe (c, closure->base, &record->values[0], count, closure->stride) &&
|
||||
closure->valueFormats[1].sanitize_values_stride_unsafe (c, closure->base, &record->values[closure->len1], count, closure->stride));
|
||||
return_trace (closure->valueFormats[0u].sanitize_values_stride_unsafe (c, closure->base, &record->values[0u], count, closure->stride) &&
|
||||
closure->valueFormats[1u].sanitize_values_stride_unsafe (c, closure->base, &record->values[closure->len1], count, closure->stride));
|
||||
}
|
||||
|
||||
protected:
|
||||
|
@ -781,8 +781,8 @@ struct PairPosFormat1
|
|||
|
||||
if (!c->check_struct (this)) return_trace (false);
|
||||
|
||||
unsigned int len1 = valueFormat[0].get_len ();
|
||||
unsigned int len2 = valueFormat[1].get_len ();
|
||||
unsigned int len1 = valueFormat[0u].get_len ();
|
||||
unsigned int len2 = valueFormat[1u].get_len ();
|
||||
PairSet::sanitize_closure_t closure =
|
||||
{
|
||||
this,
|
||||
|
@ -799,10 +799,10 @@ struct PairPosFormat1
|
|||
OffsetTo<Coverage>
|
||||
coverage; /* Offset to Coverage table--from
|
||||
* beginning of subtable */
|
||||
ValueFormat valueFormat[2]; /* [0] Defines the types of data in
|
||||
ValueFormat valueFormat[2u]; /* [0u] Defines the types of data in
|
||||
* ValueRecord1--for the first glyph
|
||||
* in the pair--may be zero (0) */
|
||||
/* [1] Defines the types of data in
|
||||
/* [1u] Defines the types of data in
|
||||
* ValueRecord2--for the second glyph
|
||||
* in the pair--may be zero (0) */
|
||||
OffsetArrayOf<PairSet>
|
||||
|
@ -885,7 +885,7 @@ struct PairPosFormat2
|
|||
return_trace (c->check_range ((const void *) values,
|
||||
count,
|
||||
record_size) &&
|
||||
valueFormat1.sanitize_values_stride_unsafe (c, this, &values[0], count, stride) &&
|
||||
valueFormat1.sanitize_values_stride_unsafe (c, this, &values[0u], count, stride) &&
|
||||
valueFormat2.sanitize_values_stride_unsafe (c, this, &values[len1], count, stride));
|
||||
}
|
||||
|
||||
|
@ -1628,7 +1628,7 @@ struct PosLookup : Lookup
|
|||
|
||||
struct GPOS : GSUBGPOS
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_GPOS;
|
||||
enum { tableTag = HB_OT_TAG_GPOS };
|
||||
|
||||
inline const PosLookup& get_lookup (unsigned int i) const
|
||||
{ return CastR<PosLookup> (GSUBGPOS::get_lookup (i)); }
|
||||
|
|
|
@ -1475,7 +1475,7 @@ struct SubstLookup : Lookup
|
|||
|
||||
struct GSUB : GSUBGPOS
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_GSUB;
|
||||
enum { tableTag = HB_OT_TAG_GSUB };
|
||||
|
||||
inline const SubstLookup& get_lookup (unsigned int i) const
|
||||
{ return CastR<SubstLookup> (GSUBGPOS::get_lookup (i)); }
|
||||
|
|
|
@ -1350,7 +1350,7 @@ struct Rule
|
|||
return_trace (inputCount.sanitize (c) &&
|
||||
lookupCount.sanitize (c) &&
|
||||
c->check_range (inputZ.arrayZ,
|
||||
inputZ[0].static_size * (inputCount ? inputCount - 1 : 0) +
|
||||
inputZ.item_size * (inputCount ? inputCount - 1 : 0) +
|
||||
LookupRecord::static_size * lookupCount));
|
||||
}
|
||||
|
||||
|
@ -1672,7 +1672,7 @@ struct ContextFormat3
|
|||
{
|
||||
inline bool intersects (const hb_set_t *glyphs) const
|
||||
{
|
||||
if (!(this+coverageZ[0]).intersects (glyphs))
|
||||
if (!(this+coverageZ[0u]).intersects (glyphs))
|
||||
return false;
|
||||
|
||||
struct ContextClosureLookupContext lookup_context = {
|
||||
|
@ -1687,7 +1687,7 @@ struct ContextFormat3
|
|||
inline void closure (hb_closure_context_t *c) const
|
||||
{
|
||||
TRACE_CLOSURE (this);
|
||||
if (!(this+coverageZ[0]).intersects (c->glyphs))
|
||||
if (!(this+coverageZ[0u]).intersects (c->glyphs))
|
||||
return;
|
||||
|
||||
const LookupRecord *lookupRecord = &StructAfter<LookupRecord> (coverageZ.as_array (glyphCount));
|
||||
|
@ -1704,7 +1704,7 @@ struct ContextFormat3
|
|||
inline void collect_glyphs (hb_collect_glyphs_context_t *c) const
|
||||
{
|
||||
TRACE_COLLECT_GLYPHS (this);
|
||||
(this+coverageZ[0]).add_coverage (c->input);
|
||||
(this+coverageZ[0u]).add_coverage (c->input);
|
||||
|
||||
const LookupRecord *lookupRecord = &StructAfter<LookupRecord> (coverageZ.as_array (glyphCount));
|
||||
struct ContextCollectGlyphsLookupContext lookup_context = {
|
||||
|
@ -1731,12 +1731,12 @@ struct ContextFormat3
|
|||
}
|
||||
|
||||
inline const Coverage &get_coverage (void) const
|
||||
{ return this+coverageZ[0]; }
|
||||
{ return this+coverageZ[0u]; }
|
||||
|
||||
inline bool apply (hb_ot_apply_context_t *c) const
|
||||
{
|
||||
TRACE_APPLY (this);
|
||||
unsigned int index = (this+coverageZ[0]).get_coverage (c->buffer->cur().codepoint);
|
||||
unsigned int index = (this+coverageZ[0u]).get_coverage (c->buffer->cur().codepoint);
|
||||
if (likely (index == NOT_COVERED)) return_trace (false);
|
||||
|
||||
const LookupRecord *lookupRecord = &StructAfter<LookupRecord> (coverageZ.as_array (glyphCount));
|
||||
|
@ -1759,7 +1759,7 @@ struct ContextFormat3
|
|||
TRACE_SANITIZE (this);
|
||||
if (!c->check_struct (this)) return_trace (false);
|
||||
unsigned int count = glyphCount;
|
||||
if (!count) return_trace (false); /* We want to access coverageZ[0] freely. */
|
||||
if (!count) return_trace (false); /* We want to access coverageZ[0u] freely. */
|
||||
if (!c->check_array (coverageZ.arrayZ, count)) return_trace (false);
|
||||
for (unsigned int i = 0; i < count; i++)
|
||||
if (!coverageZ[i].sanitize (c, this)) return_trace (false);
|
||||
|
@ -1838,7 +1838,7 @@ static inline bool chain_context_intersects (const hb_set_t *glyphs,
|
|||
{
|
||||
return intersects_array (glyphs,
|
||||
backtrackCount, backtrack,
|
||||
lookup_context.funcs.intersects, lookup_context.intersects_data[0])
|
||||
lookup_context.funcs.intersects, lookup_context.intersects_data[0u])
|
||||
&& intersects_array (glyphs,
|
||||
inputCount ? inputCount - 1 : 0, input,
|
||||
lookup_context.funcs.intersects, lookup_context.intersects_data[1])
|
||||
|
|
|
@ -195,7 +195,7 @@ struct JstfScript
|
|||
|
||||
struct JSTF
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_JSTF;
|
||||
enum { tableTag = HB_OT_TAG_JSTF };
|
||||
|
||||
inline unsigned int get_script_count (void) const
|
||||
{ return scriptList.len; }
|
||||
|
|
|
@ -1299,7 +1299,7 @@ hb_ot_layout_feature_get_characters (hb_face_t *face,
|
|||
struct GSUBProxy
|
||||
{
|
||||
enum { table_index = 0 };
|
||||
static const bool inplace = false;
|
||||
enum { inplace = false };
|
||||
typedef OT::SubstLookup Lookup;
|
||||
|
||||
GSUBProxy (hb_face_t *face) :
|
||||
|
@ -1313,7 +1313,7 @@ struct GSUBProxy
|
|||
struct GPOSProxy
|
||||
{
|
||||
enum { table_index = 1 };
|
||||
static const bool inplace = true;
|
||||
enum { inplace = true };
|
||||
typedef OT::PosLookup Lookup;
|
||||
|
||||
GPOSProxy (hb_face_t *face) :
|
||||
|
|
|
@ -680,7 +680,7 @@ struct MathVariants
|
|||
|
||||
struct MATH
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_MATH;
|
||||
enum { tableTag = HB_OT_TAG_MATH };
|
||||
|
||||
inline bool has_data (void) const { return version.to_int (); }
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@ struct maxpV1Tail
|
|||
|
||||
struct maxp
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_maxp;
|
||||
enum { tableTag = HB_OT_TAG_maxp };
|
||||
|
||||
inline unsigned int get_num_glyphs (void) const
|
||||
{
|
||||
|
|
|
@ -151,10 +151,10 @@ _hb_ot_name_entry_cmp (const void *pa, const void *pb)
|
|||
|
||||
struct name
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_name;
|
||||
enum { tableTag = HB_OT_TAG_name };
|
||||
|
||||
inline unsigned int get_size (void) const
|
||||
{ return min_size + count * nameRecordZ[0].min_size; }
|
||||
{ return min_size + count * nameRecordZ.item_size; }
|
||||
|
||||
inline bool sanitize_records (hb_sanitize_context_t *c) const {
|
||||
TRACE_SANITIZE (this);
|
||||
|
@ -189,7 +189,7 @@ struct name
|
|||
this->names.init ();
|
||||
this->names.alloc (all_names.len);
|
||||
|
||||
for (uint16_t i = 0; i < all_names.len; i++)
|
||||
for (unsigned int i = 0; i < all_names.len; i++)
|
||||
{
|
||||
hb_ot_name_entry_t *entry = this->names.push ();
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ namespace OT {
|
|||
|
||||
struct OS2
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_OS2;
|
||||
enum { tableTag = HB_OT_TAG_OS2 };
|
||||
|
||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||
{
|
||||
|
|
|
@ -71,7 +71,7 @@ struct postV2Tail
|
|||
|
||||
struct post
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_post;
|
||||
enum { tableTag = HB_OT_TAG_post };
|
||||
|
||||
inline bool subset (hb_subset_plan_t *plan) const
|
||||
{
|
||||
|
@ -107,7 +107,7 @@ struct post
|
|||
version = table->version.to_int ();
|
||||
if (version != 0x00020000) return;
|
||||
|
||||
const postV2Tail &v2 = table->v2;
|
||||
const postV2Tail &v2 = table->v2X;
|
||||
|
||||
glyphNameIndex = &v2.glyphNameIndex;
|
||||
pool = &StructAfter<uint8_t> (v2.glyphNameIndex);
|
||||
|
@ -250,7 +250,7 @@ struct post
|
|||
TRACE_SANITIZE (this);
|
||||
return_trace (likely (c->check_struct (this) &&
|
||||
(version.to_int () == 0x00010000 ||
|
||||
(version.to_int () == 0x00020000 && v2.sanitize (c)) ||
|
||||
(version.to_int () == 0x00020000 && v2X.sanitize (c)) ||
|
||||
version.to_int () == 0x00030000)));
|
||||
}
|
||||
|
||||
|
@ -286,7 +286,7 @@ struct post
|
|||
* is downloaded as a Type 1 font. */
|
||||
HBUINT32 maxMemType1; /* Maximum memory usage when an OpenType font
|
||||
* is downloaded as a Type 1 font. */
|
||||
postV2Tail v2;
|
||||
postV2Tail v2X;
|
||||
DEFINE_SIZE_MIN (32);
|
||||
};
|
||||
|
||||
|
|
|
@ -127,22 +127,25 @@ collect_features_khmer (hb_ot_shape_planner_t *plan)
|
|||
|
||||
for (; i < KHMER_NUM_FEATURES; i++)
|
||||
map->add_feature (khmer_features[i]);
|
||||
|
||||
map->enable_feature (HB_TAG('c','a','l','t'));
|
||||
map->enable_feature (HB_TAG('c','l','i','g'));
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
override_features_khmer (hb_ot_shape_planner_t *plan)
|
||||
{
|
||||
hb_ot_map_builder_t *map = &plan->map;
|
||||
|
||||
/* Khmer spec has 'clig' as part of required shaping features:
|
||||
* "Apply feature 'clig' to form ligatures that are desired for
|
||||
* typographical correctness.", hence in overrides... */
|
||||
map->enable_feature (HB_TAG('c','l','i','g'));
|
||||
|
||||
/* Uniscribe does not apply 'kern' in Khmer. */
|
||||
if (hb_options ().uniscribe_bug_compatible)
|
||||
{
|
||||
plan->map.disable_feature (HB_TAG('k','e','r','n'));
|
||||
map->disable_feature (HB_TAG('k','e','r','n'));
|
||||
}
|
||||
|
||||
plan->map.disable_feature (HB_TAG('l','i','g','a'));
|
||||
map->disable_feature (HB_TAG('l','i','g','a'));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -309,9 +309,6 @@ hb_ot_shape_collect_features (hb_ot_shape_planner_t *planner,
|
|||
map->enable_feature (HB_TAG ('v','e','r','t'), F_GLOBAL_SEARCH);
|
||||
}
|
||||
|
||||
if (planner->shaper->override_features)
|
||||
planner->shaper->override_features (planner);
|
||||
|
||||
for (unsigned int i = 0; i < num_user_features; i++)
|
||||
{
|
||||
const hb_feature_t *feature = &user_features[i];
|
||||
|
@ -330,6 +327,9 @@ hb_ot_shape_collect_features (hb_ot_shape_planner_t *planner,
|
|||
aat_map->add_feature (feature->tag, feature->value);
|
||||
}
|
||||
}
|
||||
|
||||
if (planner->shaper->override_features)
|
||||
planner->shaper->override_features (planner);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -225,7 +225,7 @@ struct AxisValue
|
|||
|
||||
struct STAT
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_STAT;
|
||||
enum { tableTag = HB_OT_TAG_STAT };
|
||||
|
||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||
{
|
||||
|
|
|
@ -99,7 +99,7 @@ struct SegmentMaps : ArrayOf<AxisValueMap>
|
|||
|
||||
struct avar
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_avar;
|
||||
enum { tableTag = HB_OT_TAG_avar };
|
||||
|
||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||
{
|
||||
|
|
|
@ -96,7 +96,7 @@ struct AxisRecord
|
|||
|
||||
struct fvar
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_fvar;
|
||||
enum { tableTag = HB_OT_TAG_fvar };
|
||||
|
||||
inline bool has_data (void) const { return version.to_int (); }
|
||||
|
||||
|
|
|
@ -102,8 +102,8 @@ struct DeltaSetIndexMap
|
|||
|
||||
struct HVARVVAR
|
||||
{
|
||||
static const hb_tag_t HVARTag = HB_OT_TAG_HVAR;
|
||||
static const hb_tag_t VVARTag = HB_OT_TAG_VVAR;
|
||||
enum { HVARTag = HB_OT_TAG_HVAR };
|
||||
enum { VVARTag = HB_OT_TAG_VVAR };
|
||||
|
||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||
{
|
||||
|
@ -143,10 +143,10 @@ struct HVARVVAR
|
|||
};
|
||||
|
||||
struct HVAR : HVARVVAR {
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_HVAR;
|
||||
enum { tableTag = HB_OT_TAG_HVAR };
|
||||
};
|
||||
struct VVAR : HVARVVAR {
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_VVAR;
|
||||
enum { tableTag = HB_OT_TAG_VVAR };
|
||||
|
||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||
{
|
||||
|
|
|
@ -58,7 +58,7 @@ struct VariationValueRecord
|
|||
|
||||
struct MVAR
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_MVAR;
|
||||
enum { tableTag = HB_OT_TAG_MVAR };
|
||||
|
||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||
{
|
||||
|
|
|
@ -79,7 +79,7 @@ hb_ot_var_get_axis_count (hb_face_t *face)
|
|||
* hb_ot_var_get_axes:
|
||||
*
|
||||
* Since: 1.4.2
|
||||
* Deprecated: REPLACEME
|
||||
* Deprecated: 2.2.0
|
||||
**/
|
||||
unsigned int
|
||||
hb_ot_var_get_axes (hb_face_t *face,
|
||||
|
@ -94,7 +94,7 @@ hb_ot_var_get_axes (hb_face_t *face,
|
|||
* hb_ot_var_find_axis:
|
||||
*
|
||||
* Since: 1.4.2
|
||||
* Deprecated: REPLACEME
|
||||
* Deprecated: 2.2.0
|
||||
**/
|
||||
hb_bool_t
|
||||
hb_ot_var_find_axis (hb_face_t *face,
|
||||
|
@ -108,7 +108,7 @@ hb_ot_var_find_axis (hb_face_t *face,
|
|||
/**
|
||||
* hb_ot_var_get_axis_infos:
|
||||
*
|
||||
* Since: REPLACEME
|
||||
* Since: 2.2.0
|
||||
**/
|
||||
HB_EXTERN unsigned int
|
||||
hb_ot_var_get_axis_infos (hb_face_t *face,
|
||||
|
@ -122,7 +122,7 @@ hb_ot_var_get_axis_infos (hb_face_t *face,
|
|||
/**
|
||||
* hb_ot_var_find_axis_info:
|
||||
*
|
||||
* Since: REPLACEME
|
||||
* Since: 2.2.0
|
||||
**/
|
||||
HB_EXTERN hb_bool_t
|
||||
hb_ot_var_find_axis_info (hb_face_t *face,
|
||||
|
|
|
@ -63,7 +63,7 @@ hb_ot_var_get_axis_count (hb_face_t *face);
|
|||
* hb_ot_var_axis_flags_t:
|
||||
* @HB_OT_VAR_AXIS_FLAG_HIDDEN: The axis should not be exposed directly in user interfaces.
|
||||
*
|
||||
* Since: REPLACEME
|
||||
* Since: 2.2.0
|
||||
*/
|
||||
typedef enum { /*< flags >*/
|
||||
HB_OT_VAR_AXIS_FLAG_HIDDEN = 0x00000001u,
|
||||
|
@ -74,7 +74,7 @@ typedef enum { /*< flags >*/
|
|||
/**
|
||||
* hb_ot_var_axis_info_t:
|
||||
*
|
||||
* Since: REPLACEME
|
||||
* Since: 2.2.0
|
||||
*/
|
||||
typedef struct hb_ot_var_axis_info_t
|
||||
{
|
||||
|
|
|
@ -57,7 +57,7 @@ struct VertOriginMetric
|
|||
|
||||
struct VORG
|
||||
{
|
||||
static const hb_tag_t tableTag = HB_OT_TAG_VORG;
|
||||
enum { tableTag = HB_OT_TAG_VORG };
|
||||
|
||||
inline bool has_data (void) const { return version.to_int (); }
|
||||
|
||||
|
@ -93,7 +93,7 @@ struct VORG
|
|||
unsigned int size = VertOriginMetric::static_size * subset_metrics.len;
|
||||
VertOriginMetric *metrics = c.allocate_size<VertOriginMetric> (size);
|
||||
if (likely (metrics != nullptr))
|
||||
memcpy (metrics, &subset_metrics[0], size);
|
||||
memcpy (metrics, &subset_metrics[0u], size);
|
||||
else
|
||||
success = false;
|
||||
}
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "hb.h"
|
||||
|
||||
#include "hb-ot-color.h"
|
||||
#include "hb-ot-deprecated.h"
|
||||
#include "hb-ot-font.h"
|
||||
#include "hb-ot-layout.h"
|
||||
#include "hb-ot-math.h"
|
||||
|
|
|
@ -50,13 +50,13 @@ struct hb_set_digest_lowest_bits_t
|
|||
{
|
||||
enum { mask_bytes = sizeof (mask_t) };
|
||||
enum { mask_bits = sizeof (mask_t) * 8 };
|
||||
static const unsigned int num_bits = 0
|
||||
+ (mask_bytes >= 1 ? 3 : 0)
|
||||
+ (mask_bytes >= 2 ? 1 : 0)
|
||||
+ (mask_bytes >= 4 ? 1 : 0)
|
||||
+ (mask_bytes >= 8 ? 1 : 0)
|
||||
+ (mask_bytes >= 16? 1 : 0)
|
||||
+ 0;
|
||||
enum { num_bits = 0
|
||||
+ (mask_bytes >= 1 ? 3 : 0)
|
||||
+ (mask_bytes >= 2 ? 1 : 0)
|
||||
+ (mask_bytes >= 4 ? 1 : 0)
|
||||
+ (mask_bytes >= 8 ? 1 : 0)
|
||||
+ (mask_bytes >= 16? 1 : 0)
|
||||
+ 0 };
|
||||
|
||||
static_assert ((shift < sizeof (hb_codepoint_t) * 8), "");
|
||||
static_assert ((shift + num_bits <= sizeof (hb_codepoint_t) * 8), "");
|
||||
|
|
|
@ -375,8 +375,8 @@ struct hb_set_t
|
|||
if (!resize (count))
|
||||
return;
|
||||
population = other->population;
|
||||
memcpy (pages, other->pages, count * pages.item_size);
|
||||
memcpy (page_map, other->page_map, count * page_map.item_size);
|
||||
memcpy ((void *) pages, (const void *) other->pages, count * pages.item_size);
|
||||
memcpy ((void *) page_map, (const void *) other->page_map, count * page_map.item_size);
|
||||
}
|
||||
|
||||
inline bool is_equal (const hb_set_t *other) const
|
||||
|
@ -660,7 +660,7 @@ struct hb_set_t
|
|||
unsigned int count = pages.len;
|
||||
for (int i = count - 1; i >= 0; i++)
|
||||
if (!page_at (i).is_empty ())
|
||||
return page_map[i].major * page_t::PAGE_BITS + page_at (i).get_max ();
|
||||
return page_map[(unsigned) i].major * page_t::PAGE_BITS + page_at (i).get_max ();
|
||||
return INVALID;
|
||||
}
|
||||
|
||||
|
@ -678,7 +678,7 @@ struct hb_set_t
|
|||
pages[map.index].init0 ();
|
||||
memmove (page_map + i + 1,
|
||||
page_map + i,
|
||||
(page_map.len - 1 - i) * sizeof (page_map[0]));
|
||||
(page_map.len - 1 - i) * page_map.item_size);
|
||||
page_map[i] = map;
|
||||
}
|
||||
return &pages[page_map[i].index];
|
||||
|
|
|
@ -80,7 +80,7 @@ _subset2 (hb_subset_plan_t *plan)
|
|||
return false;
|
||||
}
|
||||
retry:
|
||||
hb_serialize_context_t serializer (buf, buf_size);
|
||||
hb_serialize_context_t serializer ((void *) buf, buf_size);
|
||||
hb_subset_context_t c (plan, &serializer);
|
||||
result = table->subset (&c);
|
||||
if (serializer.ran_out_of_room)
|
||||
|
|
|
@ -695,7 +695,7 @@ _hb_uniscribe_shape (hb_shape_plan_t *shape_plan,
|
|||
{
|
||||
active_feature_t *feature = active_features.find (&event->feature);
|
||||
if (feature)
|
||||
active_features.remove (feature - active_features);
|
||||
active_features.remove (feature - active_features.arrayZ ());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -886,8 +886,8 @@ retry:
|
|||
&items[i].a,
|
||||
script_tags[i],
|
||||
language_tag,
|
||||
range_char_counts,
|
||||
range_properties,
|
||||
range_char_counts.arrayZ (),
|
||||
range_properties.arrayZ (),
|
||||
range_properties.len,
|
||||
pchars + chars_offset,
|
||||
item_chars_len,
|
||||
|
@ -927,8 +927,8 @@ retry:
|
|||
&items[i].a,
|
||||
script_tags[i],
|
||||
language_tag,
|
||||
range_char_counts,
|
||||
range_properties,
|
||||
range_char_counts.arrayZ (),
|
||||
range_properties.arrayZ (),
|
||||
range_properties.len,
|
||||
pchars + chars_offset,
|
||||
log_clusters + chars_offset,
|
||||
|
|
|
@ -101,8 +101,8 @@ struct hb_vector_t
|
|||
inline hb_sorted_array_t<const Type> as_sorted_array (void) const
|
||||
{ return hb_sorted_array (arrayZ(), len); }
|
||||
|
||||
template <typename T> inline operator T * (void) { return arrayZ(); }
|
||||
template <typename T> inline operator const T * (void) const { return arrayZ(); }
|
||||
template <typename T> explicit_operator inline operator T * (void) { return arrayZ(); }
|
||||
template <typename T> explicit_operator inline operator const T * (void) const { return arrayZ(); }
|
||||
|
||||
inline Type * operator + (unsigned int i) { return arrayZ() + i; }
|
||||
inline const Type * operator + (unsigned int i) const { return arrayZ() + i; }
|
||||
|
|
|
@ -37,10 +37,10 @@ HB_BEGIN_DECLS
|
|||
|
||||
|
||||
#define HB_VERSION_MAJOR 2
|
||||
#define HB_VERSION_MINOR 1
|
||||
#define HB_VERSION_MICRO 3
|
||||
#define HB_VERSION_MINOR 2
|
||||
#define HB_VERSION_MICRO 0
|
||||
|
||||
#define HB_VERSION_STRING "2.1.3"
|
||||
#define HB_VERSION_STRING "2.2.0"
|
||||
|
||||
#define HB_VERSION_ATLEAST(major,minor,micro) \
|
||||
((major)*10000+(minor)*100+(micro) <= \
|
||||
|
|
|
@ -1,31 +1,35 @@
|
|||
# 10.12.6
|
||||
/System/Library/Fonts/Helvetica.dfont@c7bec2785a4c402b7809b5e35337c3d24c18e281:--shaper ot --font-funcs ot:U+006D,U+0300:[m=0+1706|gravecmb=0@-284,10+0]
|
||||
/System/Library/Fonts/LucidaGrande.ttc@d89a9d7e57767bfe3b5a4cfd22bb1e9dbe03a062:--shaper ot --font-funcs ot:U+006D,U+0300:[mgrave=0+1912]
|
||||
/System/Library/Fonts/Times.dfont@39c954614d3f3317b28564db06d5b7b7a6ff0e39:--shaper ot --font-funcs ot:U+0066,U+0069:[fi=0+1139]
|
||||
/Library/Fonts/Khmer MN.ttc@5f5b1072df99b7355d3066ea85fe82969d13c94a:--shaper ot --font-funcs ot:U+17A2,U+1780,U+17D2,U+179F,U+179A,U+1781,U+17D2,U+1798,U+17C2,U+179A:[km_qa=0+1025|km_ka=1+1025|km_sa.sub=1+517|km_ro=4+593|km_vs_ae=5+605|km_kha=5+1025|km_mo.sub=5+0|km_ro=9+593]
|
||||
/Library/Fonts/Tamil MN.ttc@37a2020c3f86ebcc45e02c1de5fdf81e2676989d:--shaper ot --font-funcs ot:U+0BA4,U+0BCA,U+0B95,U+0BC1,U+0B95,U+0BCD,U+0B95,U+0BAA,U+0BCD,U+0BAA,U+0B9F,U+0BCD,U+0B9F,U+0BC1:[tgm_e=0+1702|tgc_ta=0+1598|tgm_aa=0+1149|tgc_ku=2+1962|tgc_k=4+1592|tgc_ka=6+1592|tgc_p=7+1370|tgc_pa=9+1370|tgc_tt=10+1596|tgc_ttu=12+1833]
|
||||
/System/Library/Fonts/Times.dfont@39c954614d3f3317b28564db06d5b7b7a6ff0e39:--shaper ot --font-funcs ot:U+0041,U+0066,U+0300,U+0066,U+0069,U+005A:[A=0+1479|f=1+682|gravecmb=1@-480,588+0|fi=3+1139|Z=5+1251]
|
||||
/System/Library/Fonts/LucidaGrande.ttc@d89a9d7e57767bfe3b5a4cfd22bb1e9dbe03a062:--shaper ot --font-funcs ot:U+05E1,U+05B0:[shevahebrew=0@-7,0+0|samekhhebrew=0+1361]
|
||||
/Library/Fonts/Apple Chancery.ttf@5fc49ae9bce39e2105864323183b68ea34c9e562:--shaper ot --font-funcs ot:U+0054,U+0068,U+0020,U+0074,U+0068,U+0020,U+006C,U+006C,U+0020,U+0074,U+0065,U+0020,U+0074,U+006F,U+0020,U+0074,U+0072,U+0020,U+0066,U+0072,U+0020,U+0066,U+0075,U+0020,U+0066,U+006A:[T_h=0+2308|space=2+569|t_h=3+1687|space=5+569|l_l=6+1108|space=8+569|t_e=9+1408|space=11+569|t_o=12+1531|space=14+569|t_r=15+1385|space=17+569|f_r=18+1432|space=20+569|f_u=21+1733|space=23+569|f_j=24+1098]
|
||||
/System/Library/Fonts/GeezaPro.ttc@f43ee7151c2e9f1dddfbc26cfc148609eb5c5820:--shaper ot --font-funcs ot:U+0627,U+0644,U+0623,U+064E,U+0628,U+0652,U+062C,U+064E,U+062F,U+0650,U+064A,U+064E,U+0651,U+0629,U+0640,U+0627,U+0644,U+0639,U+064E,U+0631,U+064E,U+0628,U+0650,U+064A,U+064E,U+0651,U+0629:[u0629.final.tehMarbuta=26+713|u064e_u0651.shaddaFatha=23@0,-200+0|u064a.medial.yeh=23+656|u0650.kasra=21@80,290+80|u0628.initial.beh=21@-80,0+576|u064e.fatha=19@200,-570+200|u0631.final.reh=19@-200,0+702|u064e.fatha=17@200,-200+200|u0639.medial.ain=17@-200,0+738|u0644.initial.lam=16+515|u0627.final.alef=15+647|u0640.tatweel=14+449|u0629.final.tehMarbuta=13+713|u064e_u0651.shaddaFatha=10@0,-200+0|u064a.initial.yeh=10+656|u0650.kasra=8@80,570+80|u062f.final.dal=8@-80,0+822|u064e.fatha=6@290,-160+290|u062c.medial.jeem=6@-290,0+1069|u0652.sukun=4@0,-200+0|u0628.initial.beh=4+656|u064e.fatha=1@-252,120+-252|u0644_u0623.isolated.lamHamzaOnAlef=1@120,0+1282|u0627.alef=0+647]
|
||||
/System/Library/Fonts/GeezaPro.ttc@f43ee7151c2e9f1dddfbc26cfc148609eb5c5820:--shaper ot --font-funcs ot:U+0628,U+064A,U+064E,U+0651,U+0629:[u0629.final.tehMarbuta=4+713|u064e_u0651.shaddaFatha=1@0,-200+0|u064a.medial.yeh=1+656|u0628.initial.beh=0+656]
|
||||
/System/Library/Fonts/GeezaPro.ttc@f43ee7151c2e9f1dddfbc26cfc148609eb5c5820:--shaper ot --font-funcs ot:U+0631,U+0628:[u0628.beh=1+1415|u0631.reh=0@-202,0+700]
|
||||
/System/Library/Fonts/GeezaPro.ttc@f43ee7151c2e9f1dddfbc26cfc148609eb5c5820:--shaper ot --font-funcs ot:U+0628,U+064F:[u064f.damma=0@250,-250+250|u0628.beh=0@-250,0+1165]
|
||||
/System/Library/Fonts/SFNSDisplay.ttf@92787c30716672737e9059bc367c15d04fbc1ced:--shaper ot --font-funcs ot:U+0056,U+0041,U+0056,U+0041:[gid265=0+1227|gid4=1@-65,0+1162|gid265=2@-65,0+1162|gid4=3@-65,0+1227]
|
||||
/System/Library/Fonts/Apple Color Emoji.ttc@d2fe8a134483aa48a43a9d1e4b7204d37a4abdf5:--remove-default-ignorables --shaper ot --font-funcs ot:U+1F468,U+200D,U+1F469,U+200D,U+1F467,U+200D,U+1F466:[u1F46A.MWGB=0+800]
|
||||
# 10.12.6 https://gist.github.com/ebraminio/1704341fa16b06979e605aafd88198cf
|
||||
/System/Library/Fonts/Helvetica.dfont@c7bec2785a4c402b7809b5e35337c3d24c18e281:--font-funcs ot:U+006D,U+0300:[m=0+1706|gravecmb=0@-284,10+0]
|
||||
/System/Library/Fonts/LucidaGrande.ttc@d89a9d7e57767bfe3b5a4cfd22bb1e9dbe03a062:--font-funcs ot:U+006D,U+0300:[mgrave=0+1912]
|
||||
/System/Library/Fonts/Times.dfont@39c954614d3f3317b28564db06d5b7b7a6ff0e39:--font-funcs ot:U+0066,U+0069:[fi=0+1139]
|
||||
/Library/Fonts/Khmer MN.ttc@5f5b1072df99b7355d3066ea85fe82969d13c94a:--font-funcs ot:U+17A2,U+1780,U+17D2,U+179F,U+179A,U+1781,U+17D2,U+1798,U+17C2,U+179A:[km_qa=0+1025|km_ka=1+1025|km_sa.sub=1+517|km_ro=4+593|km_vs_ae=5+605|km_kha=5+1025|km_mo.sub=5+0|km_ro=9+593]
|
||||
/Library/Fonts/Tamil MN.ttc@37a2020c3f86ebcc45e02c1de5fdf81e2676989d:--font-funcs ot:U+0BA4,U+0BCA,U+0B95,U+0BC1,U+0B95,U+0BCD,U+0B95,U+0BAA,U+0BCD,U+0BAA,U+0B9F,U+0BCD,U+0B9F,U+0BC1:[tgm_e=0+1702|tgc_ta=0+1598|tgm_aa=0+1149|tgc_ku=2+1962|tgc_k=4+1592|tgc_ka=6+1592|tgc_p=7+1370|tgc_pa=9+1370|tgc_tt=10+1596|tgc_ttu=12+1833]
|
||||
/System/Library/Fonts/Times.dfont@39c954614d3f3317b28564db06d5b7b7a6ff0e39:--font-funcs ot:U+0041,U+0066,U+0300,U+0066,U+0069,U+005A:[A=0+1479|f=1+682|gravecmb=1@-480,588+0|fi=3+1139|Z=5+1251]
|
||||
/System/Library/Fonts/LucidaGrande.ttc@d89a9d7e57767bfe3b5a4cfd22bb1e9dbe03a062:--font-funcs ot:U+05E1,U+05B0:[shevahebrew=0@-7,0+0|samekhhebrew=0+1361]
|
||||
/Library/Fonts/Apple Chancery.ttf@5fc49ae9bce39e2105864323183b68ea34c9e562:--font-funcs ot:U+0054,U+0068,U+0020,U+0074,U+0068,U+0020,U+006C,U+006C,U+0020,U+0074,U+0065,U+0020,U+0074,U+006F,U+0020,U+0074,U+0072,U+0020,U+0066,U+0072,U+0020,U+0066,U+0075,U+0020,U+0066,U+006A:[T_h=0+2308|space=2+569|t_h=3+1687|space=5+569|l_l=6+1108|space=8+569|t_e=9+1408|space=11+569|t_o=12+1531|space=14+569|t_r=15+1385|space=17+569|f_r=18+1432|space=20+569|f_u=21+1733|space=23+569|f_j=24+1098]
|
||||
/Library/Fonts/Apple Chancery.ttf@5fc49ae9bce39e2105864323183b68ea34c9e562:--font-funcs ot:U+0054,U+0065,U+0020,U+0041,U+0056,U+0020,U+0054,U+0072,U+0020,U+0056,U+0061,U+0020,U+0072,U+0054,U+0020,U+0065,U+0054,U+0020,U+0054,U+0064:[T=0+1497|e=1@-62,0+699|space=2+569|A=3+1431|V=4@-37,0+1377|space=5+569|T=6+1510|r=7@-50,0+803|space=8+569|V=9+1376|a=10@-37,0+1014|space=11+569|r=12+853|T=13+1560|space=14+569|e=15+761|T=16+1560|space=17+569|T=18+1515|d=19@-45,0+1006]
|
||||
/System/Library/Fonts/GeezaPro.ttc@f43ee7151c2e9f1dddfbc26cfc148609eb5c5820:--font-funcs ot:U+0627,U+0644,U+0623,U+064E,U+0628,U+0652,U+062C,U+064E,U+062F,U+0650,U+064A,U+064E,U+0651,U+0629,U+0640,U+0627,U+0644,U+0639,U+064E,U+0631,U+064E,U+0628,U+0650,U+064A,U+064E,U+0651,U+0629:[u0629.final.tehMarbuta=26+713|u064e_u0651.shaddaFatha=23@0,-200+0|u064a.medial.yeh=23+656|u0650.kasra=21@80,290+80|u0628.initial.beh=21@-80,0+576|u064e.fatha=19@200,-570+200|u0631.final.reh=19@-200,0+702|u064e.fatha=17@200,-200+200|u0639.medial.ain=17@-200,0+738|u0644.initial.lam=16+515|u0627.final.alef=15+647|u0640.tatweel=14+449|u0629.final.tehMarbuta=13+713|u064e_u0651.shaddaFatha=10@0,-200+0|u064a.initial.yeh=10+656|u0650.kasra=8@80,570+80|u062f.final.dal=8@-80,0+822|u064e.fatha=6@290,-160+290|u062c.medial.jeem=6@-290,0+1069|u0652.sukun=4@0,-200+0|u0628.initial.beh=4+656|u064e.fatha=1@-252,120+-252|u0644_u0623.isolated.lamHamzaOnAlef=1@120,0+1282|u0627.alef=0+647]
|
||||
/System/Library/Fonts/GeezaPro.ttc@f43ee7151c2e9f1dddfbc26cfc148609eb5c5820:--font-funcs ot:U+0628,U+064A,U+064E,U+0651,U+0629:[u0629.final.tehMarbuta=4+713|u064e_u0651.shaddaFatha=1@0,-200+0|u064a.medial.yeh=1+656|u0628.initial.beh=0+656]
|
||||
/System/Library/Fonts/GeezaPro.ttc@f43ee7151c2e9f1dddfbc26cfc148609eb5c5820:--font-funcs ot:U+0631,U+0628:[u0628.beh=1+1415|u0631.reh=0@-202,0+700]
|
||||
/System/Library/Fonts/GeezaPro.ttc@f43ee7151c2e9f1dddfbc26cfc148609eb5c5820:--font-funcs ot:U+0628,U+064F:[u064f.damma=0@250,-250+250|u0628.beh=0@-250,0+1165]
|
||||
/System/Library/Fonts/SFNSDisplay.ttf@92787c30716672737e9059bc367c15d04fbc1ced:--font-funcs ot:U+0054,U+0065,U+0020,U+0041,U+0056,U+0020,U+0054,U+0072,U+0020,U+0056,U+0061,U+0020,U+0072,U+0054,U+0020,U+0065,U+0054,U+0020,U+0054,U+0064:[gid225=0+1105|gid584=1@-105,0+979|gid3=2+490|gid4=3+1227|gid265=4@-65,0+1227|gid3=5+490|gid225=6+1130|gid728=7@-80,0+569|gid3=8+490|gid265=9+1227|gid505=10@-65,0+997|gid3=11+490|gid728=12+609|gid225=13@-40,0+1170|gid3=14+490|gid584=15+1004|gid225=16@-80,0+1130|gid3=17+490|gid225=18+1105|gid576=19@-105,0+1068]
|
||||
/System/Library/Fonts/SFNSDisplay.ttf@92787c30716672737e9059bc367c15d04fbc1ced:--font-ptem 9 --font-funcs ot:U+0054,U+0065,U+0020,U+0041,U+0056,U+0020,U+0054,U+0072,U+0020,U+0056,U+0061,U+0020,U+0072,U+0054,U+0020,U+0065,U+0054,U+0020,U+0054,U+0064:[gid225=0@46,0+1197|gid584=1@-59,0+1071|gid3=2@46,0+582|gid4=3@46,0+1319|gid265=4@-19,0+1319|gid3=5@46,0+582|gid225=6@46,0+1222|gid728=7@-34,0+661|gid3=8@46,0+582|gid265=9@46,0+1319|gid505=10@-19,0+1089|gid3=11@46,0+582|gid728=12@46,0+701|gid225=13@6,0+1262|gid3=14@46,0+582|gid584=15@46,0+1096|gid225=16@-34,0+1222|gid3=17@46,0+582|gid225=18@46,0+1197|gid576=19@-59,0+1160]
|
||||
/System/Library/Fonts/Apple Color Emoji.ttc@d2fe8a134483aa48a43a9d1e4b7204d37a4abdf5:--remove-default-ignorables --font-funcs ot:U+1F468,U+200D,U+1F469,U+200D,U+1F467,U+200D,U+1F466:[u1F46A.MWGB=0+800]
|
||||
|
||||
# 10.13.6
|
||||
/System/Library/Fonts/Helvetica.ttc@8a928f9866299d2455f41360202b7a3b48503a5e:--shaper ot --font-funcs ot:U+006D,U+0300:[m=0+1706|gravecmb=0@-284,10+0]
|
||||
/System/Library/Fonts/LucidaGrande.ttc@63ba1b1de4709bd832ca76bd62368dd99fc34269:--shaper ot --font-funcs ot:U+006D,U+0300:[mgrave=0+1912]
|
||||
/System/Library/Fonts/Times.ttc@896098b6979306ad84355025459f7c68b029139c:--shaper ot --font-funcs ot:U+0066,U+0069:[fi=0+1139]
|
||||
/Library/Fonts/Khmer MN.ttc@782ba6cf3fca0512ab348dfe08345a2d5dc5bf2c:--shaper ot --font-funcs ot:U+17A2,U+1780,U+17D2,U+179F,U+179A,U+1781,U+17D2,U+1798,U+17C2,U+179A:[km_qa=0+1025|km_ka=1+1025|km_sa.sub=1+517|km_ro=4+593|km_vs_ae=5+605|km_kha=5+1025|km_mo.sub=5+0|km_ro=9+593]
|
||||
/Library/Fonts/Tamil MN.ttc@3de37f3f8f3cb6015b093fbd6e9d323daaf6fb1d:--shaper ot --font-funcs ot:U+0BA4,U+0BCA,U+0B95,U+0BC1,U+0B95,U+0BCD,U+0B95,U+0BAA,U+0BCD,U+0BAA,U+0B9F,U+0BCD,U+0B9F,U+0BC1:[tgm_e=0+1702|tgc_ta=0+1598|tgm_aa=0+1149|tgc_ku=2+1962|tgc_k=4+1592|tgc_ka=6+1592|tgc_p=7+1370|tgc_pa=9+1370|tgc_tt=10+1596|tgc_ttu=12+1833]
|
||||
/System/Library/Fonts/Times.ttc@896098b6979306ad84355025459f7c68b029139c:--shaper ot --font-funcs ot:U+0041,U+0066,U+0300,U+0066,U+0069,U+005A:[A=0+1479|f=1+682|gravecmb=1@-480,588+0|fi=3+1139|Z=5+1251]
|
||||
/System/Library/Fonts/LucidaGrande.ttc@63ba1b1de4709bd832ca76bd62368dd99fc34269:--shaper ot --font-funcs ot:U+05E1,U+05B0:[shevahebrew=0@-7,0+0|samekhhebrew=0+1361]
|
||||
/Library/Fonts/Apple Chancery.ttf@4ec49cba0d4e68d025ada0498c4df1b2f9fd57ac:--shaper ot --font-funcs ot:U+0054,U+0068,U+0020,U+0074,U+0068,U+0020,U+006C,U+006C,U+0020,U+0074,U+0065,U+0020,U+0074,U+006F,U+0020,U+0074,U+0072,U+0020,U+0066,U+0072,U+0020,U+0066,U+0075,U+0020,U+0066,U+006A:[T_h=0+2308|space=2+569|t_h=3+1687|space=5+569|l_l=6+1108|space=8+569|t_e=9+1408|space=11+569|t_o=12+1531|space=14+569|t_r=15+1385|space=17+569|f_r=18+1432|space=20+569|f_u=21+1733|space=23+569|f_j=24+1098]
|
||||
/System/Library/Fonts/GeezaPro.ttc@ab26ea45dcaa5e1c5a958e42af10e10d330e7334:--shaper ot --font-funcs ot:U+0627,U+0644,U+0623,U+064E,U+0628,U+0652,U+062C,U+064E,U+062F,U+0650,U+064A,U+064E,U+0651,U+0629,U+0640,U+0627,U+0644,U+0639,U+064E,U+0631,U+064E,U+0628,U+0650,U+064A,U+064E,U+0651,U+0629:[u0629.final.tehMarbuta=26+713|u064e_u0651.shaddaFatha=23@0,-200+0|u064a.medial.yeh=23+656|u0650.kasra=21@80,290+80|u0628.initial.beh=21@-80,0+576|u064e.fatha=19@200,-570+200|u0631.final.reh=19@-200,0+702|u064e.fatha=17@200,-200+200|u0639.medial.ain=17@-200,0+738|u0644.initial.lam=16+515|u0627.final.alef=15+647|u0640.tatweel=14+449|u0629.final.tehMarbuta=13+713|u064e_u0651.shaddaFatha=10@0,-200+0|u064a.initial.yeh=10+656|u0650.kasra=8@80,570+80|u062f.final.dal=8@-80,0+822|u064e.fatha=6@290,-160+290|u062c.medial.jeem=6@-290,0+1069|u0652.sukun=4@0,-200+0|u0628.initial.beh=4+656|u064e.fatha=1@-252,120+-252|u0644_u0623.isolated.lamHamzaOnAlef=1@120,0+1282|u0627.alef=0+647]
|
||||
/System/Library/Fonts/GeezaPro.ttc@ab26ea45dcaa5e1c5a958e42af10e10d330e7334:--shaper ot --font-funcs ot:U+0628,U+064A,U+064E,U+0651,U+0629:[u0629.final.tehMarbuta=4+713|u064e_u0651.shaddaFatha=1@0,-200+0|u064a.medial.yeh=1+656|u0628.initial.beh=0+656]
|
||||
/System/Library/Fonts/GeezaPro.ttc@ab26ea45dcaa5e1c5a958e42af10e10d330e7334:--shaper ot --font-funcs ot:U+0631,U+0628:[u0628.beh=1+1415|u0631.reh=0@-202,0+700]
|
||||
/System/Library/Fonts/GeezaPro.ttc@ab26ea45dcaa5e1c5a958e42af10e10d330e7334:--shaper ot --font-funcs ot:U+0628,U+064F:[u064f.damma=0@250,-250+250|u0628.beh=0@-250,0+1165]
|
||||
/System/Library/Fonts/SFNSDisplay.ttf@c8948f464ff822a5f9bbf2e12d0e4e32268815aa:--shaper ot --font-funcs ot:U+0056,U+0041,U+0056,U+0041:[gid332=0+1227|gid4=1@-65,0+1162|gid332=2@-65,0+1162|gid4=3@-65,0+1227]
|
||||
/System/Library/Fonts/Apple Color Emoji.ttc@2e09b1f3d42c3821cc6c4ac5b6ce16237ab0d496:--remove-default-ignorables --shaper ot --font-funcs ot:U+1F468,U+200D,U+1F469,U+200D,U+1F467,U+200D,U+1F466:[u1F46A.MWGB=0+800]
|
||||
# 10.13.6 https://gist.github.com/ebraminio/d432e831b3f7ebe30245dde5775e1c7e
|
||||
/System/Library/Fonts/Helvetica.ttc@8a928f9866299d2455f41360202b7a3b48503a5e:--font-funcs ot:U+006D,U+0300:[m=0+1706|gravecmb=0@-284,10+0]
|
||||
/System/Library/Fonts/LucidaGrande.ttc@63ba1b1de4709bd832ca76bd62368dd99fc34269:--font-funcs ot:U+006D,U+0300:[mgrave=0+1912]
|
||||
/System/Library/Fonts/Times.ttc@896098b6979306ad84355025459f7c68b029139c:--font-funcs ot:U+0066,U+0069:[fi=0+1139]
|
||||
/Library/Fonts/Khmer MN.ttc@782ba6cf3fca0512ab348dfe08345a2d5dc5bf2c:--font-funcs ot:U+17A2,U+1780,U+17D2,U+179F,U+179A,U+1781,U+17D2,U+1798,U+17C2,U+179A:[km_qa=0+1025|km_ka=1+1025|km_sa.sub=1+517|km_ro=4+593|km_vs_ae=5+605|km_kha=5+1025|km_mo.sub=5+0|km_ro=9+593]
|
||||
/Library/Fonts/Tamil MN.ttc@3de37f3f8f3cb6015b093fbd6e9d323daaf6fb1d:--font-funcs ot:U+0BA4,U+0BCA,U+0B95,U+0BC1,U+0B95,U+0BCD,U+0B95,U+0BAA,U+0BCD,U+0BAA,U+0B9F,U+0BCD,U+0B9F,U+0BC1:[tgm_e=0+1702|tgc_ta=0+1598|tgm_aa=0+1149|tgc_ku=2+1962|tgc_k=4+1592|tgc_ka=6+1592|tgc_p=7+1370|tgc_pa=9+1370|tgc_tt=10+1596|tgc_ttu=12+1833]
|
||||
/System/Library/Fonts/Times.ttc@896098b6979306ad84355025459f7c68b029139c:--font-funcs ot:U+0041,U+0066,U+0300,U+0066,U+0069,U+005A:[A=0+1479|f=1+682|gravecmb=1@-480,588+0|fi=3+1139|Z=5+1251]
|
||||
/System/Library/Fonts/LucidaGrande.ttc@63ba1b1de4709bd832ca76bd62368dd99fc34269:--font-funcs ot:U+05E1,U+05B0:[shevahebrew=0@-7,0+0|samekhhebrew=0+1361]
|
||||
/Library/Fonts/Apple Chancery.ttf@4ec49cba0d4e68d025ada0498c4df1b2f9fd57ac:--font-funcs ot:U+0054,U+0068,U+0020,U+0074,U+0068,U+0020,U+006C,U+006C,U+0020,U+0074,U+0065,U+0020,U+0074,U+006F,U+0020,U+0074,U+0072,U+0020,U+0066,U+0072,U+0020,U+0066,U+0075,U+0020,U+0066,U+006A:[T_h=0+2308|space=2+569|t_h=3+1687|space=5+569|l_l=6+1108|space=8+569|t_e=9+1408|space=11+569|t_o=12+1531|space=14+569|t_r=15+1385|space=17+569|f_r=18+1432|space=20+569|f_u=21+1733|space=23+569|f_j=24+1098]
|
||||
/Library/Fonts/Apple Chancery.ttf@4ec49cba0d4e68d025ada0498c4df1b2f9fd57ac:--font-funcs ot:U+0054,U+0065,U+0020,U+0041,U+0056,U+0020,U+0054,U+0072,U+0020,U+0056,U+0061,U+0020,U+0072,U+0054,U+0020,U+0065,U+0054,U+0020,U+0054,U+0064:[T=0+1497|e=1@-62,0+699|space=2+569|A=3+1431|V=4@-37,0+1377|space=5+569|T=6+1510|r=7@-50,0+803|space=8+569|V=9+1376|a=10@-37,0+1014|space=11+569|r=12+853|T=13+1560|space=14+569|e=15+761|T=16+1560|space=17+569|T=18+1515|d=19@-45,0+1006]
|
||||
/System/Library/Fonts/GeezaPro.ttc@ab26ea45dcaa5e1c5a958e42af10e10d330e7334:--font-funcs ot:U+0627,U+0644,U+0623,U+064E,U+0628,U+0652,U+062C,U+064E,U+062F,U+0650,U+064A,U+064E,U+0651,U+0629,U+0640,U+0627,U+0644,U+0639,U+064E,U+0631,U+064E,U+0628,U+0650,U+064A,U+064E,U+0651,U+0629:[u0629.final.tehMarbuta=26+713|u064e_u0651.shaddaFatha=23@0,-200+0|u064a.medial.yeh=23+656|u0650.kasra=21@80,290+80|u0628.initial.beh=21@-80,0+576|u064e.fatha=19@200,-570+200|u0631.final.reh=19@-200,0+702|u064e.fatha=17@200,-200+200|u0639.medial.ain=17@-200,0+738|u0644.initial.lam=16+515|u0627.final.alef=15+647|u0640.tatweel=14+449|u0629.final.tehMarbuta=13+713|u064e_u0651.shaddaFatha=10@0,-200+0|u064a.initial.yeh=10+656|u0650.kasra=8@80,570+80|u062f.final.dal=8@-80,0+822|u064e.fatha=6@290,-160+290|u062c.medial.jeem=6@-290,0+1069|u0652.sukun=4@0,-200+0|u0628.initial.beh=4+656|u064e.fatha=1@-252,120+-252|u0644_u0623.isolated.lamHamzaOnAlef=1@120,0+1282|u0627.alef=0+647]
|
||||
/System/Library/Fonts/GeezaPro.ttc@ab26ea45dcaa5e1c5a958e42af10e10d330e7334:--font-funcs ot:U+0628,U+064A,U+064E,U+0651,U+0629:[u0629.final.tehMarbuta=4+713|u064e_u0651.shaddaFatha=1@0,-200+0|u064a.medial.yeh=1+656|u0628.initial.beh=0+656]
|
||||
/System/Library/Fonts/GeezaPro.ttc@ab26ea45dcaa5e1c5a958e42af10e10d330e7334:--font-funcs ot:U+0631,U+0628:[u0628.beh=1+1415|u0631.reh=0@-202,0+700]
|
||||
/System/Library/Fonts/GeezaPro.ttc@ab26ea45dcaa5e1c5a958e42af10e10d330e7334:--font-funcs ot:U+0628,U+064F:[u064f.damma=0@250,-250+250|u0628.beh=0@-250,0+1165]
|
||||
/System/Library/Fonts/SFNSDisplay.ttf@c8948f464ff822a5f9bbf2e12d0e4e32268815aa:--font-funcs ot:U+0054,U+0065,U+0020,U+0041,U+0056,U+0020,U+0054,U+0072,U+0020,U+0056,U+0061,U+0020,U+0072,U+0054,U+0020,U+0065,U+0054,U+0020,U+0054,U+0064:[gid282=0+1055|gid658=1@-135,0+914|gid3=2+420|gid4=3+1227|gid332=4@-65,0+1227|gid3=5+420|gid282=6+1075|gid813=7@-115,0+516|gid3=8+420|gid332=9+1217|gid572=10@-75,0+953|gid3=11+420|gid813=12+546|gid282=13@-85,0+1105|gid3=14+420|gid658=15+914|gid282=16@-135,0+1055|gid3=17+420|gid282=18+1055|gid649=19@-135,0+999]
|
||||
/System/Library/Fonts/SFNSDisplay.ttf@c8948f464ff822a5f9bbf2e12d0e4e32268815aa:--font-ptem 9 --font-funcs ot:U+0054,U+0065,U+0020,U+0041,U+0056,U+0020,U+0054,U+0072,U+0020,U+0056,U+0061,U+0020,U+0072,U+0054,U+0020,U+0065,U+0054,U+0020,U+0054,U+0064:[gid282=0@46,0+1147|gid658=1@-89,0+1006|gid3=2@46,0+512|gid4=3@46,0+1319|gid332=4@-19,0+1319|gid3=5@46,0+512|gid282=6@46,0+1167|gid813=7@-69,0+608|gid3=8@46,0+512|gid332=9@46,0+1309|gid572=10@-29,0+1045|gid3=11@46,0+512|gid813=12@46,0+638|gid282=13@-39,0+1197|gid3=14@46,0+512|gid658=15@46,0+1006|gid282=16@-89,0+1147|gid3=17@46,0+512|gid282=18@46,0+1147|gid649=19@-89,0+1091]
|
||||
/System/Library/Fonts/Apple Color Emoji.ttc@2e09b1f3d42c3821cc6c4ac5b6ce16237ab0d496:--remove-default-ignorables --font-funcs ot:U+1F468,U+200D,U+1F469,U+200D,U+1F467,U+200D,U+1F466:[u1F46A.MWGB=0+800]
|
||||
|
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue