aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sfnt
diff options
context:
space:
mode:
authorGravatar Hal Canary <halcanary@google.com>2017-11-09 11:09:34 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-11-09 20:54:37 +0000
commit4a851ca334caac5e60606dbeb9ef6de77b34e24d (patch)
tree3422da4bc9a6ad97064503811ba65162309f5746 /src/sfnt
parentf0da70699891bd3c6948d821fa43e0f48983e39e (diff)
SkTypeface_win_dw, SkTypeface_Mac: set NotEmbeddable_FontFlag
BUG=skia:7275 BUG=skia:7276 Change-Id: I5376c39ddc3e9fcb1c8cb76001f3969b84bb2c96 Reviewed-on: https://skia-review.googlesource.com/69360 Reviewed-by: Ben Wagner <bungeman@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
Diffstat (limited to 'src/sfnt')
-rw-r--r--src/sfnt/SkOTUtils.cpp24
-rw-r--r--src/sfnt/SkOTUtils.h5
2 files changed, 25 insertions, 4 deletions
diff --git a/src/sfnt/SkOTUtils.cpp b/src/sfnt/SkOTUtils.cpp
index 4d8c023ea4..3a16dde8b0 100644
--- a/src/sfnt/SkOTUtils.cpp
+++ b/src/sfnt/SkOTUtils.cpp
@@ -5,14 +5,16 @@
* found in the LICENSE file.
*/
+#include "SkOTUtils.h"
+
+#include "SkAdvancedTypefaceMetrics.h"
#include "SkData.h"
#include "SkEndian.h"
-#include "SkSFNTHeader.h"
-#include "SkStream.h"
+#include "SkOTTableTypes.h"
#include "SkOTTable_head.h"
#include "SkOTTable_name.h"
-#include "SkOTTableTypes.h"
-#include "SkOTUtils.h"
+#include "SkSFNTHeader.h"
+#include "SkStream.h"
extern const uint8_t SK_OT_GlyphData_NoOutline[] = {
0x0,0x0, //SkOTTableGlyphData::numberOfContours
@@ -201,3 +203,17 @@ SkOTUtils::LocalizedStrings_NameTable::familyNameTypes[3] = {
SkOTTableName::Record::NameID::Predefined::PreferredFamily,
SkOTTableName::Record::NameID::Predefined::WWSFamilyName,
};
+
+void SkOTUtils::SetAdvanvedTypefaceFlags(SkOTTableOS2_V4::Type fsType,
+ SkAdvancedTypefaceMetrics* info) {
+ SkASSERT(info);
+ // The logic should be identical to SkTypeface_FreeType::onGetAdvancedMetrics().
+ if (fsType.raw.value != 0) {
+ if (SkToBool(fsType.field.Restricted) || SkToBool(fsType.field.Bitmap)) {
+ info->fFlags |= SkAdvancedTypefaceMetrics::kNotEmbeddable_FontFlag;
+ }
+ if (SkToBool(fsType.field.NoSubsetting)) {
+ info->fFlags |= SkAdvancedTypefaceMetrics::kNotSubsettable_FontFlag;
+ }
+ }
+}
diff --git a/src/sfnt/SkOTUtils.h b/src/sfnt/SkOTUtils.h
index 4708a7bb78..26e6e61c21 100644
--- a/src/sfnt/SkOTUtils.h
+++ b/src/sfnt/SkOTUtils.h
@@ -9,11 +9,13 @@
#define SkOTUtils_DEFINED
#include "SkOTTableTypes.h"
+#include "SkOTTable_OS_2_V4.h"
#include "SkOTTable_name.h"
#include "SkTypeface.h"
class SkData;
class SkStream;
+struct SkAdvancedTypefaceMetrics;
struct SkOTUtils {
/**
@@ -86,6 +88,9 @@ struct SkOTUtils {
SkString fLanguage;
bool fHasNext;
};
+
+ static void SetAdvanvedTypefaceFlags(SkOTTableOS2_V4::Type fsType,
+ SkAdvancedTypefaceMetrics* info);
};
#endif