Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(108)

Unified Diff: src/core/SkTypeface.cpp

Issue 1027373002: Font variations. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/core/SkTypeface.cpp
diff --git a/src/core/SkTypeface.cpp b/src/core/SkTypeface.cpp
index ad928bb53efa0ee826c0e0bdc65dffcd78aa1cc7..5f1044136d887f58bfb73cab34d4449b4f68316d 100644
--- a/src/core/SkTypeface.cpp
+++ b/src/core/SkTypeface.cpp
@@ -143,6 +143,11 @@ SkTypeface* SkTypeface::CreateFromStream(SkStreamAsset* stream, int index) {
return fm->createFromStream(stream, index);
}
+SkTypeface* SkTypeface::CreateFromStream(SkStreamAsset* stream, const SkFontParameters& params) {
+ SkAutoTUnref<SkFontMgr> fm(SkFontMgr::RefDefault());
+ return fm->createFromStream(stream, params);
+}
+
SkTypeface* SkTypeface::CreateFromFile(const char path[], int index) {
SkAutoTUnref<SkFontMgr> fm(SkFontMgr::RefDefault());
return fm->createFromFile(path, index);
@@ -153,13 +158,13 @@ SkTypeface* SkTypeface::CreateFromFile(const char path[], int index) {
void SkTypeface::serialize(SkWStream* wstream) const {
bool isLocal = false;
SkFontDescriptor desc(this->style());
+ // This is 'get request', i.e., what do I do to search for this font?
this->onGetFontDescriptor(&desc, &isLocal);
// Embed font data if it's a local font.
if (isLocal && !desc.hasFontData()) {
- int ttcIndex;
- desc.setFontData(this->onOpenStream(&ttcIndex));
- desc.setFontIndex(ttcIndex);
+ // This is 'get font', i.e., what do I need to reconstruct this font without a search?
+ desc.setFontData(this->onOpenStream2(&desc.getFontParameters()));
}
desc.serialize(wstream);
}
@@ -171,9 +176,7 @@ void SkTypeface::serializeForcingEmbedding(SkWStream* wstream) const {
// Always embed font data.
if (!desc.hasFontData()) {
- int ttcIndex;
- desc.setFontData(this->onOpenStream(&ttcIndex));
- desc.setFontIndex(ttcIndex);
+ desc.setFontData(this->onOpenStream2(&desc.getFontParameters()));
}
desc.serialize(wstream);
}
@@ -182,7 +185,7 @@ SkTypeface* SkTypeface::Deserialize(SkStream* stream) {
SkFontDescriptor desc(stream);
SkStreamAsset* data = desc.transferFontData();
if (data) {
- SkTypeface* typeface = SkTypeface::CreateFromStream(data, desc.getFontIndex());
+ SkTypeface* typeface = SkTypeface::CreateFromStream(data, desc.getFontParameters());
if (typeface) {
return typeface;
}
@@ -218,6 +221,14 @@ SkStreamAsset* SkTypeface::openStream(int* ttcIndex) const {
return this->onOpenStream(ttcIndex);
}
+SkStreamAsset* SkTypeface::openStream2(SkFontParameters* params) const {
+ return this->onOpenStream2(params);
+}
+
+SkStreamAsset* SkTypeface::onOpenStream2(SkFontParameters* fontParams) const {
bungeman-skia 2015/03/23 21:59:05 These are just the base 'default' shims to keep ex
+ return this->onOpenStream(&fontParams->fIndex);
+};
+
int SkTypeface::charsToGlyphs(const void* chars, Encoding encoding,
uint16_t glyphs[], int glyphCount) const {
if (glyphCount <= 0) {

Powered by Google App Engine
This is Rietveld 408576698