summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/minikin/MinikinFont.h4
-rw-r--r--libs/minikin/Layout.cpp5
2 files changed, 6 insertions, 3 deletions
diff --git a/include/minikin/MinikinFont.h b/include/minikin/MinikinFont.h
index ee885f4..7f65cd7 100644
--- a/include/minikin/MinikinFont.h
+++ b/include/minikin/MinikinFont.h
@@ -35,6 +35,7 @@ public:
HyphenEdit() : hyphen(0) { }
HyphenEdit(uint32_t hyphenInt) : hyphen(hyphenInt) { }
bool hasHyphen() const { return hyphen != 0; }
+ bool operator==(const HyphenEdit &other) const { return hyphen == other.hyphen; }
private:
uint32_t hyphen;
};
@@ -48,8 +49,7 @@ struct MinikinPaint {
fakery(), fontFeatureSettings() { }
bool skipCache() const {
- // TODO: add hyphen to cache
- return !fontFeatureSettings.empty() || hyphenEdit.hasHyphen();
+ return !fontFeatureSettings.empty();
}
MinikinFont *font;
diff --git a/libs/minikin/Layout.cpp b/libs/minikin/Layout.cpp
index bac5fc7..be29e3c 100644
--- a/libs/minikin/Layout.cpp
+++ b/libs/minikin/Layout.cpp
@@ -110,7 +110,7 @@ public:
mStart(start), mCount(count), mId(collection->getId()), mStyle(style),
mSize(paint.size), mScaleX(paint.scaleX), mSkewX(paint.skewX),
mLetterSpacing(paint.letterSpacing),
- mPaintFlags(paint.paintFlags), mIsRtl(dir) {
+ mPaintFlags(paint.paintFlags), mHyphenEdit(paint.hyphenEdit), mIsRtl(dir) {
}
bool operator==(const LayoutCacheKey &other) const;
hash_t hash() const;
@@ -144,6 +144,7 @@ private:
float mSkewX;
float mLetterSpacing;
int32_t mPaintFlags;
+ HyphenEdit mHyphenEdit;
bool mIsRtl;
// Note: any fields added to MinikinPaint must also be reflected here.
// TODO: language matching (possibly integrate into style)
@@ -236,6 +237,7 @@ bool LayoutCacheKey::operator==(const LayoutCacheKey& other) const {
&& mSkewX == other.mSkewX
&& mLetterSpacing == other.mLetterSpacing
&& mPaintFlags == other.mPaintFlags
+ && mHyphenEdit == other.mHyphenEdit
&& mIsRtl == other.mIsRtl
&& mNchars == other.mNchars
&& !memcmp(mChars, other.mChars, mNchars * sizeof(uint16_t));
@@ -251,6 +253,7 @@ hash_t LayoutCacheKey::hash() const {
hash = JenkinsHashMix(hash, hash_type(mSkewX));
hash = JenkinsHashMix(hash, hash_type(mLetterSpacing));
hash = JenkinsHashMix(hash, hash_type(mPaintFlags));
+ hash = JenkinsHashMix(hash, hash_type(mHyphenEdit.hasHyphen()));
hash = JenkinsHashMix(hash, hash_type(mIsRtl));
hash = JenkinsHashMixShorts(hash, mChars, mNchars);
return JenkinsHashWhiten(hash);