summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeigo Nonaka <nona@google.com>2021-01-20 22:51:05 -0800
committerSeigo Nonaka <nona@google.com>2021-01-20 22:51:05 -0800
commit51e5c0c2802e05cfb37323444c806232ff63fe5f (patch)
treef0bce46d3642948354d8efb1e9a48c64521417d1
parentbcdfce14e27f8043f29aae20bc7a06cb56e60002 (diff)
downloadminikin-51e5c0c2802e05cfb37323444c806232ff63fe5f.tar.gz
Add API for determining font type.
Bug: 176939176 Test: atest FontFileUtilTest Change-Id: I6eb0c8051a934ce92786eeca7cfab7b0623688d2
-rw-r--r--include/minikin/FontFileParser.h1
-rw-r--r--libs/minikin/FontFileParser.cpp8
2 files changed, 9 insertions, 0 deletions
diff --git a/include/minikin/FontFileParser.h b/include/minikin/FontFileParser.h
index b6d155c..34880a3 100644
--- a/include/minikin/FontFileParser.h
+++ b/include/minikin/FontFileParser.h
@@ -36,6 +36,7 @@ public:
std::optional<uint32_t> getFontRevision() const;
std::optional<std::string> getPostScriptName() const;
+ std::optional<bool> isPostScriptType1Font() const;
protected: // protected for testing purposes.
static bool analyzeFontRevision(const uint8_t* head_data, size_t head_size, uint32_t* out);
diff --git a/libs/minikin/FontFileParser.cpp b/libs/minikin/FontFileParser.cpp
index 7ca81aa..1bcb711 100644
--- a/libs/minikin/FontFileParser.cpp
+++ b/libs/minikin/FontFileParser.cpp
@@ -208,4 +208,12 @@ std::optional<std::string> FontFileParser::getPostScriptName() const {
return out;
}
+std::optional<bool> FontFileParser::isPostScriptType1Font() const {
+ if (!mFace) return std::optional<bool>();
+
+ HbBlob cffTable(mFace, MinikinFont::MakeTag('C', 'F', 'F', ' '));
+ HbBlob cff2Table(mFace, MinikinFont::MakeTag('C', 'F', 'F', '2'));
+ return cffTable || cff2Table;
+}
+
} // namespace minikin