summaryrefslogtreecommitdiff
path: root/Build
diff options
context:
space:
mode:
authorAkira Kakuto <kakuto@fuk.kindai.ac.jp>2020-04-10 03:54:17 +0000
committerAkira Kakuto <kakuto@fuk.kindai.ac.jp>2020-04-10 03:54:17 +0000
commit4eb8c3f05b023840db4ad79383d0b59b271f9d0a (patch)
tree9a8fd91444aab6e9b90187a952bace1582ec9bf5 /Build
parent503c0227622254c0ae3209a1fa72bcb68bb450bc (diff)
graphite2 1.3.14
git-svn-id: svn://tug.org/texlive/trunk@54637 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build')
-rw-r--r--Build/source/libs/README2
-rw-r--r--Build/source/libs/graphite2/ChangeLog5
-rw-r--r--Build/source/libs/graphite2/TLpatches/ChangeLog5
-rw-r--r--Build/source/libs/graphite2/TLpatches/TL-Changes2
-rwxr-xr-xBuild/source/libs/graphite2/configure20
-rw-r--r--Build/source/libs/graphite2/graphite2-src/ChangeLog6
-rw-r--r--Build/source/libs/graphite2/graphite2-src/include/graphite2/Font.h2
-rw-r--r--Build/source/libs/graphite2/graphite2-src/src/CMakeLists.txt7
-rw-r--r--Build/source/libs/graphite2/graphite2-src/src/Code.cpp32
-rw-r--r--Build/source/libs/graphite2/graphite2-src/src/Collider.cpp4
-rw-r--r--Build/source/libs/graphite2/graphite2-src/src/FeatureMap.cpp9
-rw-r--r--Build/source/libs/graphite2/graphite2-src/src/Pass.cpp2
-rw-r--r--Build/source/libs/graphite2/graphite2-src/src/direct_machine.cpp20
-rw-r--r--Build/source/libs/graphite2/graphite2-src/src/files.mk2
-rw-r--r--Build/source/libs/graphite2/graphite2-src/src/gr_face.cpp17
-rw-r--r--Build/source/libs/graphite2/graphite2-src/src/gr_slot.cpp5
-rw-r--r--Build/source/libs/graphite2/graphite2-src/src/inc/FeatureMap.h16
-rw-r--r--Build/source/libs/graphite2/version.ac2
18 files changed, 121 insertions, 37 deletions
diff --git a/Build/source/libs/README b/Build/source/libs/README
index 4c95e0ea6ac..24358559fad 100644
--- a/Build/source/libs/README
+++ b/Build/source/libs/README
@@ -21,7 +21,7 @@ gd 2.3.0 - checked 10apr20
gmp 6.2.0 - checked 20jan20
http://ftp.gnu.org/gnu/gmp/
-graphite2 1.3.13 - checked 21dec18
+graphite2 1.3.14 - checked 10apr20
http://sourceforge.net/projects/silgraphite/files/graphite2/
(requires C++11)
diff --git a/Build/source/libs/graphite2/ChangeLog b/Build/source/libs/graphite2/ChangeLog
index b1f9119ae12..10c5e6eb1c7 100644
--- a/Build/source/libs/graphite2/ChangeLog
+++ b/Build/source/libs/graphite2/ChangeLog
@@ -1,3 +1,8 @@
+2020-04-10 Akira Kakuto <kakuto@w32tex.org>
+
+ Import graphite2-1.3.14.
+ * version.ac: Adjusted.
+
2018-12-21 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
Import graphite2-1.3.13.
diff --git a/Build/source/libs/graphite2/TLpatches/ChangeLog b/Build/source/libs/graphite2/TLpatches/ChangeLog
index 30c3417f6f7..b3ed08c04b9 100644
--- a/Build/source/libs/graphite2/TLpatches/ChangeLog
+++ b/Build/source/libs/graphite2/TLpatches/ChangeLog
@@ -1,3 +1,8 @@
+2020-04-10 Akira Kakuto <kakuto@w32tex.org>
+
+ Imported graphite2-1.3.14 source tree from:
+ http://sourceforge.net/projects/silgraphite/files/graphite2/
+
2018-12-21 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
Imported graphite2-1.3.13 source tree from:
diff --git a/Build/source/libs/graphite2/TLpatches/TL-Changes b/Build/source/libs/graphite2/TLpatches/TL-Changes
index 2f56db0f1cc..2c2b402e2b9 100644
--- a/Build/source/libs/graphite2/TLpatches/TL-Changes
+++ b/Build/source/libs/graphite2/TLpatches/TL-Changes
@@ -1,4 +1,4 @@
-Changes applied to the graphite2-1.3.13/ tree as obtained from:
+Changes applied to the graphite2-1.3.14/ tree as obtained from:
http://sourceforge.net/projects/silgraphite/files/graphite2/
Removed setup.py
diff --git a/Build/source/libs/graphite2/configure b/Build/source/libs/graphite2/configure
index 62316e40d6e..cf704da8e46 100755
--- a/Build/source/libs/graphite2/configure
+++ b/Build/source/libs/graphite2/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for graphite2 (TeX Live) 1.3.13.
+# Generated by GNU Autoconf 2.69 for graphite2 (TeX Live) 1.3.14.
#
# Report bugs to <tex-k@tug.org>.
#
@@ -579,8 +579,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='graphite2 (TeX Live)'
PACKAGE_TARNAME='graphite2--tex-live-'
-PACKAGE_VERSION='1.3.13'
-PACKAGE_STRING='graphite2 (TeX Live) 1.3.13'
+PACKAGE_VERSION='1.3.14'
+PACKAGE_STRING='graphite2 (TeX Live) 1.3.14'
PACKAGE_BUGREPORT='tex-k@tug.org'
PACKAGE_URL=''
@@ -1253,7 +1253,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures graphite2 (TeX Live) 1.3.13 to adapt to many kinds of systems.
+\`configure' configures graphite2 (TeX Live) 1.3.14 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1320,7 +1320,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of graphite2 (TeX Live) 1.3.13:";;
+ short | recursive ) echo "Configuration of graphite2 (TeX Live) 1.3.14:";;
esac
cat <<\_ACEOF
@@ -1418,7 +1418,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-graphite2 (TeX Live) configure 1.3.13
+graphite2 (TeX Live) configure 1.3.14
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1557,7 +1557,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by graphite2 (TeX Live) $as_me 1.3.13, which was
+It was created by graphite2 (TeX Live) $as_me 1.3.14, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3481,7 +3481,7 @@ fi
# Define the identity of the package.
PACKAGE='graphite2--tex-live-'
- VERSION='1.3.13'
+ VERSION='1.3.14'
cat >>confdefs.h <<_ACEOF
@@ -6544,7 +6544,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by graphite2 (TeX Live) $as_me 1.3.13, which was
+This file was extended by graphite2 (TeX Live) $as_me 1.3.14, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -6610,7 +6610,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-graphite2 (TeX Live) config.status 1.3.13
+graphite2 (TeX Live) config.status 1.3.14
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/Build/source/libs/graphite2/graphite2-src/ChangeLog b/Build/source/libs/graphite2/graphite2-src/ChangeLog
index ac8b23aa1ad..e36110e1c18 100644
--- a/Build/source/libs/graphite2/graphite2-src/ChangeLog
+++ b/Build/source/libs/graphite2/graphite2-src/ChangeLog
@@ -1,3 +1,9 @@
+1.3.14
+ . Bug fixes
+ . Allow features to be hidden (for aliases)
+ . Move to python3
+ . Rename doc files from .txt to .asc
+
1.3.13
. Resolve minor spacing issue in rtl non-overlap kerning
. python3 for graphite.py
diff --git a/Build/source/libs/graphite2/graphite2-src/include/graphite2/Font.h b/Build/source/libs/graphite2/graphite2-src/include/graphite2/Font.h
index 3e8214d46b5..fe569295a53 100644
--- a/Build/source/libs/graphite2/graphite2-src/include/graphite2/Font.h
+++ b/Build/source/libs/graphite2/graphite2-src/include/graphite2/Font.h
@@ -30,7 +30,7 @@
#define GR2_VERSION_MAJOR 1
#define GR2_VERSION_MINOR 3
-#define GR2_VERSION_BUGFIX 13
+#define GR2_VERSION_BUGFIX 14
#ifdef __cplusplus
extern "C"
diff --git a/Build/source/libs/graphite2/graphite2-src/src/CMakeLists.txt b/Build/source/libs/graphite2/graphite2-src/src/CMakeLists.txt
index 389cf5a2389..b6ac26bfc2f 100644
--- a/Build/source/libs/graphite2/graphite2-src/src/CMakeLists.txt
+++ b/Build/source/libs/graphite2/graphite2-src/src/CMakeLists.txt
@@ -111,7 +111,7 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
add_definitions(-mfpmath=sse -msse2)
endif()
if (CMAKE_COMPILER_IS_GNUCXX)
- add_definitions(-Wdouble-promotion)
+ add_definitions(-Wno-class-memaccess -Wdouble-promotion)
endif()
message(STATUS "Compiler ID is: ${CMAKE_CXX_COMPILER_ID}")
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
@@ -136,9 +136,12 @@ endif()
if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
set_target_properties(graphite2 PROPERTIES
- COMPILE_FLAGS "-Wall -Wextra -Wno-unknown-pragmas -Wimplicit-fallthrough -Wendif-labels -Wshadow -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -fno-rtti -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden -mfpmath=sse -msse2"
+ COMPILE_FLAGS "-Wall -Wextra -Wno-unknown-pragmas -Wimplicit-fallthrough -Wendif-labels -Wshadow -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -fno-rtti -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden"
LINK_FLAGS "-nodefaultlibs"
LINKER_LANGUAGE C)
+ if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86|i.86")
+ add_definitions(-mfpmath=sse -msse2)
+ endif()
target_link_libraries(graphite2 c)
include(Graphite)
nolib_test(stdc++ $<TARGET_SONAME_FILE:graphite2>)
diff --git a/Build/source/libs/graphite2/graphite2-src/src/Code.cpp b/Build/source/libs/graphite2/graphite2-src/src/Code.cpp
index 5cff6b534ea..ec5ab298ca4 100644
--- a/Build/source/libs/graphite2/graphite2-src/src/Code.cpp
+++ b/Build/source/libs/graphite2/graphite2-src/src/Code.cpp
@@ -101,6 +101,7 @@ private:
bool valid_upto(const uint16 limit, const uint16 x) const throw();
bool test_context() const throw();
bool test_ref(int8 index) const throw();
+ bool test_attr(attrCode attr) const throw();
void failure(const status_t s) const throw() { _code.failure(s); }
Code & _code;
@@ -381,6 +382,7 @@ opcode Machine::Code::decoder::fetch_opcode(const byte * bc)
valid_upto(gr_slatMax, bc[0]);
if (attrCode(bc[0]) == gr_slatUserDefn) // use IATTR for user attributes
failure(out_of_range_data);
+ test_attr(attrCode(bc[0]));
test_context();
break;
case IATTR_SET_SLOT :
@@ -388,6 +390,7 @@ opcode Machine::Code::decoder::fetch_opcode(const byte * bc)
failure(underfull_stack);
if (valid_upto(gr_slatMax, bc[0]))
valid_upto(_max.attrid[bc[0]], bc[1]);
+ test_attr(attrCode(bc[0]));
test_context();
break;
case PUSH_SLOT_ATTR :
@@ -396,6 +399,7 @@ opcode Machine::Code::decoder::fetch_opcode(const byte * bc)
test_ref(int8(bc[1]));
if (attrCode(bc[0]) == gr_slatUserDefn) // use IATTR for user attributes
failure(out_of_range_data);
+ test_attr(attrCode(bc[0]));
break;
case PUSH_GLYPH_ATTR_OBS :
case PUSH_ATT_TO_GATTR_OBS :
@@ -422,6 +426,7 @@ opcode Machine::Code::decoder::fetch_opcode(const byte * bc)
test_ref(int8(bc[1]));
valid_upto(_max.attrid[bc[0]], bc[2]);
}
+ test_attr(attrCode(bc[0]));
break;
case PUSH_IGLYPH_ATTR :// not implemented
++_stack_depth;
@@ -441,6 +446,7 @@ opcode Machine::Code::decoder::fetch_opcode(const byte * bc)
failure(underfull_stack);
if (valid_upto(gr_slatMax, bc[0]))
valid_upto(_max.attrid[bc[0]], bc[1]);
+ test_attr(attrCode(bc[0]));
test_context();
break;
case PUSH_PROC_STATE : // dummy: dp[0] no check necessary
@@ -681,7 +687,15 @@ bool Machine::Code::decoder::test_ref(int8 index) const throw()
}
}
else
- return valid_upto(_max.rule_length, _slotref + _max.pre_context + index);
+ {
+ if (_max.rule_length == 0
+ || (_slotref + _max.pre_context + index >= _max.rule_length)
+ || (_slotref + _max.pre_context + index < 0))
+ {
+ failure(out_of_range_data);
+ return false;
+ }
+ }
return true;
}
@@ -695,6 +709,22 @@ bool Machine::Code::decoder::test_context() const throw()
return true;
}
+bool Machine::Code::decoder::test_attr(attrCode) const throw()
+{
+#if 0 // This code is coming but causes backward compatibility problems.
+ if (_passtype < PASS_TYPE_POSITIONING)
+ {
+ if (attr != gr_slatBreak && attr != gr_slatDir && attr != gr_slatUserDefn
+ && attr != gr_slatCompRef)
+ {
+ failure(out_of_range_data);
+ return false;
+ }
+ }
+#endif
+ return true;
+}
+
inline
void Machine::Code::failure(const status_t s) throw() {
release_buffers();
diff --git a/Build/source/libs/graphite2/graphite2-src/src/Collider.cpp b/Build/source/libs/graphite2/graphite2-src/src/Collider.cpp
index 6b20a91c9bc..1929b39a58e 100644
--- a/Build/source/libs/graphite2/graphite2-src/src/Collider.cpp
+++ b/Build/source/libs/graphite2/graphite2-src/src/Collider.cpp
@@ -1081,8 +1081,8 @@ void SlotCollision::initFromSlot(Segment *seg, Slot *slot)
return;
const sparse &p = glyphFace->attrs();
_flags = p[aCol];
- _limit = Rect(Position(p[aCol+1], p[aCol+2]),
- Position(p[aCol+3], p[aCol+4]));
+ _limit = Rect(Position(int16(p[aCol+1]), int16(p[aCol+2])),
+ Position(int16(p[aCol+3]), int16(p[aCol+4])));
_margin = p[aCol+5];
_marginWt = p[aCol+6];
diff --git a/Build/source/libs/graphite2/graphite2-src/src/FeatureMap.cpp b/Build/source/libs/graphite2/graphite2-src/src/FeatureMap.cpp
index e63415dd1c8..014a88fd08e 100644
--- a/Build/source/libs/graphite2/graphite2-src/src/FeatureMap.cpp
+++ b/Build/source/libs/graphite2/graphite2-src/src/FeatureMap.cpp
@@ -71,7 +71,7 @@ namespace
FeatureRef::FeatureRef(const Face & face,
unsigned short & bits_offset, uint32 max_val,
- uint32 name, uint16 uiName, uint16 flags,
+ uint32 name, uint16 uiName, flags_t flags,
FeatureSetting *settings, uint16 num_set) throw()
: m_face(&face),
m_nameValues(settings),
@@ -79,8 +79,8 @@ FeatureRef::FeatureRef(const Face & face,
m_max(max_val),
m_id(name),
m_nameid(uiName),
- m_flags(flags),
- m_numSet(num_set)
+ m_numSet(num_set),
+ m_flags(flags)
{
const uint8 need_bits = bit_set_count(m_mask);
m_index = (bits_offset + need_bits) / SIZEOF_CHUNK;
@@ -163,7 +163,8 @@ bool FeatureMap::readFeats(const Face & face)
}
::new (m_feats + i) FeatureRef (face, bits, maxVal,
- label, uiName, flags,
+ label, uiName,
+ FeatureRef::flags_t(flags),
uiSet, num_settings);
}
new (&m_defaultFeatures) Features(bits/(sizeof(uint32)*8) + 1, *this);
diff --git a/Build/source/libs/graphite2/graphite2-src/src/Pass.cpp b/Build/source/libs/graphite2/graphite2-src/src/Pass.cpp
index 76d4983aee5..db31c22d46b 100644
--- a/Build/source/libs/graphite2/graphite2-src/src/Pass.cpp
+++ b/Build/source/libs/graphite2/graphite2-src/src/Pass.cpp
@@ -704,7 +704,7 @@ void Pass::adjustSlot(int delta, Slot * & slot_out, SlotMap & smap) const
{
slot_out = smap.segment.last();
++delta;
- if (!smap.highwater())
+ if (!smap.highwater() || smap.highwater() == slot_out)
smap.highpassed(false);
}
else
diff --git a/Build/source/libs/graphite2/graphite2-src/src/direct_machine.cpp b/Build/source/libs/graphite2/graphite2-src/src/direct_machine.cpp
index e6545223685..86206cfe37b 100644
--- a/Build/source/libs/graphite2/graphite2-src/src/direct_machine.cpp
+++ b/Build/source/libs/graphite2/graphite2-src/src/direct_machine.cpp
@@ -56,6 +56,26 @@ using namespace vm;
namespace {
+// The GCC manual has this to say about labels as values:
+// The &&foo expressions for the same label might have different values
+// if the containing function is inlined or cloned. If a program relies
+// on them being always the same, __attribute__((__noinline__,__noclone__))
+// should be used to prevent inlining and cloning.
+//
+// is_return in Code.cpp relies on being able to do comparisons, so it needs
+// them to be always the same.
+//
+// The GCC manual further adds:
+// If &&foo is used in a static variable initializer, inlining and
+// cloning is forbidden.
+//
+// In this file, &&foo *is* used in a static variable initializer, and it's not
+// entirely clear whether this should prevent inlining of the function or not.
+// In practice, though, clang 7 can end up inlining the function with ThinLTO,
+// which breaks at least is_return. https://bugs.llvm.org/show_bug.cgi?id=39241
+// So all in all, we need at least the __noinline__ attribute. __noclone__
+// is not supported by clang.
+__attribute__((__noinline__))
const void * direct_run(const bool get_table_mode,
const instr * program,
const byte * data,
diff --git a/Build/source/libs/graphite2/graphite2-src/src/files.mk b/Build/source/libs/graphite2/graphite2-src/src/files.mk
index 15ebb2ef0d1..63063567bf7 100644
--- a/Build/source/libs/graphite2/graphite2-src/src/files.mk
+++ b/Build/source/libs/graphite2/graphite2-src/src/files.mk
@@ -47,7 +47,6 @@ $(_NS)_SOURCES = \
$($(_NS)_BASE)/src/gr_segment.cpp \
$($(_NS)_BASE)/src/gr_slot.cpp \
$($(_NS)_BASE)/src/json.cpp \
- $($(_NS)_BASE)/src/CachedFace.cpp \
$($(_NS)_BASE)/src/CmapCache.cpp \
$($(_NS)_BASE)/src/Code.cpp \
$($(_NS)_BASE)/src/Collider.cpp \
@@ -74,7 +73,6 @@ $(_NS)_PRIVATE_HEADERS = \
$($(_NS)_BASE)/src/inc/bits.h \
$($(_NS)_BASE)/src/inc/debug.h \
$($(_NS)_BASE)/src/inc/json.h \
- $($(_NS)_BASE)/src/inc/CachedFace.h \
$($(_NS)_BASE)/src/inc/CharInfo.h \
$($(_NS)_BASE)/src/inc/CmapCache.h \
$($(_NS)_BASE)/src/inc/Code.h \
diff --git a/Build/source/libs/graphite2/graphite2-src/src/gr_face.cpp b/Build/source/libs/graphite2/graphite2-src/src/gr_face.cpp
index 712aa115fa7..baa469727bb 100644
--- a/Build/source/libs/graphite2/graphite2-src/src/gr_face.cpp
+++ b/Build/source/libs/graphite2/graphite2-src/src/gr_face.cpp
@@ -163,14 +163,25 @@ const gr_feature_ref* gr_face_find_fref(const gr_face* pFace, gr_uint32 featId)
unsigned short gr_face_n_fref(const gr_face* pFace)
{
assert(pFace);
- return pFace->numFeatures();
+ int res = 0;
+ for (int i = 0; i < pFace->numFeatures(); ++i)
+ if (!(pFace->feature(i)->getFlags() & FeatureRef::HIDDEN))
+ ++res;
+ return res;
}
const gr_feature_ref* gr_face_fref(const gr_face* pFace, gr_uint16 i) //When finished with the FeatureRef, call destroy_FeatureRef
{
assert(pFace);
- const FeatureRef* pRef = pFace->feature(i);
- return static_cast<const gr_feature_ref*>(pRef);
+ int count = 0;
+ for (int j = 0; j < pFace->numFeatures(); ++j)
+ {
+ const FeatureRef* pRef = pFace->feature(j);
+ if (!(pRef->getFlags() & FeatureRef::HIDDEN))
+ if (count++ == i)
+ return static_cast<const gr_feature_ref*>(pRef);
+ }
+ return 0;
}
unsigned short gr_face_n_languages(const gr_face* pFace)
diff --git a/Build/source/libs/graphite2/graphite2-src/src/gr_slot.cpp b/Build/source/libs/graphite2/graphite2-src/src/gr_slot.cpp
index 21a00fdcd51..a3c6b46a7f4 100644
--- a/Build/source/libs/graphite2/graphite2-src/src/gr_slot.cpp
+++ b/Build/source/libs/graphite2/graphite2-src/src/gr_slot.cpp
@@ -95,8 +95,9 @@ float gr_slot_advance_X(const gr_slot* p/*not NULL*/, const gr_face *face, const
if (font)
{
scale = font->scale();
- if (face && font->isHinted())
- res = (res - face->glyphs().glyph(p->gid())->theAdvance().x) * scale + font->advance(p->gid());
+ int gid = p->glyph();
+ if (face && font->isHinted() && gid < face->glyphs().numGlyphs())
+ res = (res - face->glyphs().glyph(gid)->theAdvance().x) * scale + font->advance(gid);
else
res = res * scale;
}
diff --git a/Build/source/libs/graphite2/graphite2-src/src/inc/FeatureMap.h b/Build/source/libs/graphite2/graphite2-src/src/inc/FeatureMap.h
index 142a00e7e9f..0f05e941a27 100644
--- a/Build/source/libs/graphite2/graphite2-src/src/inc/FeatureMap.h
+++ b/Build/source/libs/graphite2/graphite2-src/src/inc/FeatureMap.h
@@ -56,9 +56,12 @@ class FeatureRef
static const uint8 SIZEOF_CHUNK = sizeof(chunk_t)*8;
public:
+ enum flags_t : uint16 {
+ HIDDEN = 0x0800
+ };
FeatureRef() throw();
FeatureRef(const Face & face, unsigned short & bits_offset, uint32 max_val,
- uint32 name, uint16 uiName, uint16 flags,
+ uint32 name, uint16 uiName, flags_t flags,
FeatureSetting *settings, uint16 num_set) throw();
~FeatureRef() throw();
@@ -75,6 +78,7 @@ public:
uint16 getNumSettings() const { return m_numSet; }
uint16 getSettingName(uint16 index) const { return m_nameValues[index].label(); }
int16 getSettingValue(uint16 index) const { return m_nameValues[index].value(); }
+ flags_t getFlags() const { return m_flags; }
uint32 maxVal() const { return m_max; }
const Face & getFace() const { assert(m_face); return *m_face;}
const FeatureMap* getFeatureMap() const;// { return m_pFace;}
@@ -88,9 +92,9 @@ private:
chunk_t m_mask, // bit mask to get the value from the vector
m_max; // max value the value can take
uint32 m_id; // feature identifier/name
- uint16 m_nameid, // Name table id for feature name
- m_flags, // feature flags (unused at the moment but read from the font)
- m_numSet; // number of values (number of entries in m_nameValues)
+ uint16 m_nameid, // Name table id for feature name
+ m_numSet; // number of values (number of entries in m_nameValues)
+ flags_t m_flags; // feature flags see FeatureRef::flags_t.
byte m_bits, // how many bits to shift the value into place
m_index; // index into the array to find the ulong to mask
@@ -103,8 +107,8 @@ FeatureRef::FeatureRef() throw()
: m_face(0),
m_nameValues(0),
m_mask(0), m_max(0),
- m_id(0),
- m_nameid(0), m_flags(0), m_numSet(0),
+ m_id(0), m_nameid(0), m_numSet(0),
+ m_flags(flags_t(0)),
m_bits(0), m_index(0)
{
}
diff --git a/Build/source/libs/graphite2/version.ac b/Build/source/libs/graphite2/version.ac
index 3cab71ac1dd..6bf4c109a36 100644
--- a/Build/source/libs/graphite2/version.ac
+++ b/Build/source/libs/graphite2/version.ac
@@ -8,4 +8,4 @@ dnl
dnl --------------------------------------------------------
dnl
dnl m4-include this file to define the current graphite2 version
-m4_define([graphite2_version], [1.3.13])
+m4_define([graphite2_version], [1.3.14])