1685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com/* 2685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * Copyright 2009 The Android Open Source Project 3685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * 4685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * Use of this source code is governed by a BSD-style license that can be 5685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * found in the LICENSE file. 6685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com */ 7685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com 8b717675a4279ea5218bdee765d748c69df754ab3reed@google.com#include "SkFontLCDConfig.h" 9c775c0b52526f14d8c82896c4dc654f4e5268f42agl@chromium.org 10b717675a4279ea5218bdee765d748c69df754ab3reed@google.comstatic SkFontLCDConfig::LCDOrientation gLCDOrientation = SkFontLCDConfig::kHorizontal_LCDOrientation; 11b717675a4279ea5218bdee765d748c69df754ab3reed@google.comstatic SkFontLCDConfig::LCDOrder gLCDOrder = SkFontLCDConfig::kRGB_LCDOrder; 12c775c0b52526f14d8c82896c4dc654f4e5268f42agl@chromium.org 13b717675a4279ea5218bdee765d748c69df754ab3reed@google.comSkFontLCDConfig::LCDOrientation SkFontLCDConfig::GetSubpixelOrientation() { 14c775c0b52526f14d8c82896c4dc654f4e5268f42agl@chromium.org return gLCDOrientation; 15c775c0b52526f14d8c82896c4dc654f4e5268f42agl@chromium.org} 16c775c0b52526f14d8c82896c4dc654f4e5268f42agl@chromium.org 17b717675a4279ea5218bdee765d748c69df754ab3reed@google.comvoid SkFontLCDConfig::SetSubpixelOrientation(LCDOrientation orientation) { 18c775c0b52526f14d8c82896c4dc654f4e5268f42agl@chromium.org gLCDOrientation = orientation; 19c775c0b52526f14d8c82896c4dc654f4e5268f42agl@chromium.org} 20c775c0b52526f14d8c82896c4dc654f4e5268f42agl@chromium.org 21b717675a4279ea5218bdee765d748c69df754ab3reed@google.comSkFontLCDConfig::LCDOrder SkFontLCDConfig::GetSubpixelOrder() { 22c775c0b52526f14d8c82896c4dc654f4e5268f42agl@chromium.org return gLCDOrder; 23c775c0b52526f14d8c82896c4dc654f4e5268f42agl@chromium.org} 24c775c0b52526f14d8c82896c4dc654f4e5268f42agl@chromium.org 25b717675a4279ea5218bdee765d748c69df754ab3reed@google.comvoid SkFontLCDConfig::SetSubpixelOrder(LCDOrder order) { 26c775c0b52526f14d8c82896c4dc654f4e5268f42agl@chromium.org gLCDOrder = order; 27c775c0b52526f14d8c82896c4dc654f4e5268f42agl@chromium.org} 28b717675a4279ea5218bdee765d748c69df754ab3reed@google.com 29b717675a4279ea5218bdee765d748c69df754ab3reed@google.com/////////////////////////////////////////////////////////////////////////////// 30b717675a4279ea5218bdee765d748c69df754ab3reed@google.com// Legacy wrappers : remove from SkFontHost when webkit switches to new API 31b717675a4279ea5218bdee765d748c69df754ab3reed@google.com 32b717675a4279ea5218bdee765d748c69df754ab3reed@google.com#include "SkFontHost.h" 33b717675a4279ea5218bdee765d748c69df754ab3reed@google.com 34b717675a4279ea5218bdee765d748c69df754ab3reed@google.comSkFontHost::LCDOrientation SkFontHost::GetSubpixelOrientation() { 35b717675a4279ea5218bdee765d748c69df754ab3reed@google.com return (SkFontHost::LCDOrientation)SkFontLCDConfig::GetSubpixelOrientation(); 36b717675a4279ea5218bdee765d748c69df754ab3reed@google.com} 37b717675a4279ea5218bdee765d748c69df754ab3reed@google.com 38b717675a4279ea5218bdee765d748c69df754ab3reed@google.comvoid SkFontHost::SetSubpixelOrientation(LCDOrientation orientation) { 39b717675a4279ea5218bdee765d748c69df754ab3reed@google.com SkFontLCDConfig::SetSubpixelOrientation((SkFontLCDConfig::LCDOrientation)orientation); 40b717675a4279ea5218bdee765d748c69df754ab3reed@google.com} 41b717675a4279ea5218bdee765d748c69df754ab3reed@google.com 42b717675a4279ea5218bdee765d748c69df754ab3reed@google.comSkFontHost::LCDOrder SkFontHost::GetSubpixelOrder() { 43b717675a4279ea5218bdee765d748c69df754ab3reed@google.com return (SkFontHost::LCDOrder)SkFontLCDConfig::GetSubpixelOrder(); 44b717675a4279ea5218bdee765d748c69df754ab3reed@google.com} 45b717675a4279ea5218bdee765d748c69df754ab3reed@google.com 46b717675a4279ea5218bdee765d748c69df754ab3reed@google.comvoid SkFontHost::SetSubpixelOrder(LCDOrder order) { 47b717675a4279ea5218bdee765d748c69df754ab3reed@google.com SkFontLCDConfig::SetSubpixelOrder((SkFontLCDConfig::LCDOrder)order); 48b717675a4279ea5218bdee765d748c69df754ab3reed@google.com} 4901ffa71f87664453998e2870808c82610584929areed@google.com 5001ffa71f87664453998e2870808c82610584929areed@google.com/////////////////////////////////////////////////////////////////////////////// 5101ffa71f87664453998e2870808c82610584929areed@google.com/////////////////////////////////////////////////////////////////////////////// 5201ffa71f87664453998e2870808c82610584929areed@google.com 53ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com#include "SkFontStyle.h" 54ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com 55ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.comSkFontStyle::SkFontStyle() { 56ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com fUnion.fU32 = 0; 57ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com fUnion.fR.fWeight = kNormal_Weight; 58ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com fUnion.fR.fWidth = kNormal_Width; 59ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com fUnion.fR.fSlant = kUpright_Slant; 60ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com} 61ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com 62ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.comSkFontStyle::SkFontStyle(int weight, int width, Slant slant) { 63ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com fUnion.fU32 = 0; 64ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com fUnion.fR.fWeight = SkPin32(weight, kThin_Weight, kBlack_Weight); 65ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com fUnion.fR.fWidth = SkPin32(width, kUltraCondensed_Width, kUltaExpanded_Width); 66ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com fUnion.fR.fSlant = SkPin32(slant, kUpright_Slant, kItalic_Slant); 67ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com} 68ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com 6901ffa71f87664453998e2870808c82610584929areed@google.com#include "SkFontMgr.h" 7001ffa71f87664453998e2870808c82610584929areed@google.com 712487c826e35dd8dfa470913722ea15f73f8fd99fcommit-bot@chromium.orgSK_DEFINE_INST_COUNT(SkFontStyleSet) 722487c826e35dd8dfa470913722ea15f73f8fd99fcommit-bot@chromium.org 73ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.comclass SkEmptyFontStyleSet : public SkFontStyleSet { 74ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.compublic: 75ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com virtual int count() SK_OVERRIDE { return 0; } 76ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com virtual void getStyle(int, SkFontStyle*, SkString*) SK_OVERRIDE { 77ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com SkASSERT(!"SkFontStyleSet::getStyle called on empty set"); 78ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com } 79ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com virtual SkTypeface* createTypeface(int index) SK_OVERRIDE { 80ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com SkASSERT(!"SkFontStyleSet::createTypeface called on empty set"); 81ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com return NULL; 82ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com } 83ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com virtual SkTypeface* matchStyle(const SkFontStyle&) SK_OVERRIDE { 84ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com return NULL; 85ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com } 86ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com}; 87ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com 88ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.comSkFontStyleSet* SkFontStyleSet::CreateEmpty() { 89ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com return SkNEW(SkEmptyFontStyleSet); 90ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com} 91ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com 92ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com/////////////////////////////////////////////////////////////////////////////// 93ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com 942487c826e35dd8dfa470913722ea15f73f8fd99fcommit-bot@chromium.orgSK_DEFINE_INST_COUNT(SkFontMgr) 952487c826e35dd8dfa470913722ea15f73f8fd99fcommit-bot@chromium.org 9624c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.comclass SkEmptyFontMgr : public SkFontMgr { 9724c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.comprotected: 9824c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com virtual int onCountFamilies() SK_OVERRIDE { 9924c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com return 0; 10024c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com } 10124c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com virtual void onGetFamilyName(int index, SkString* familyName) SK_OVERRIDE { 10224c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com SkASSERT(!"onGetFamilyName called with bad index"); 10324c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com } 10424c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com virtual SkFontStyleSet* onCreateStyleSet(int index) SK_OVERRIDE { 10524c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com SkASSERT(!"onCreateStyleSet called with bad index"); 10624c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com return NULL; 10724c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com } 108ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com virtual SkFontStyleSet* onMatchFamily(const char[]) SK_OVERRIDE { 109ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com return SkFontStyleSet::CreateEmpty(); 110ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com } 111ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com 11224c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com virtual SkTypeface* onMatchFamilyStyle(const char[], 11324c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com const SkFontStyle&) SK_OVERRIDE { 11424c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com return NULL; 11524c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com } 11624c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com virtual SkTypeface* onMatchFaceStyle(const SkTypeface*, 11724c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com const SkFontStyle&) SK_OVERRIDE { 11824c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com return NULL; 11924c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com } 12024c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com virtual SkTypeface* onCreateFromData(SkData*, int) SK_OVERRIDE { 12124c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com return NULL; 12224c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com } 12324c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com virtual SkTypeface* onCreateFromStream(SkStream*, int) SK_OVERRIDE { 12424c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com return NULL; 12524c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com } 12624c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com virtual SkTypeface* onCreateFromFile(const char[], int) SK_OVERRIDE { 12724c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com return NULL; 12824c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com } 12924c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com}; 13024c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com 131228b8e0a22ddc9ebdeb3909336f6179a71d9a5bareed@google.comstatic SkFontStyleSet* emptyOnNull(SkFontStyleSet* fsset) { 132228b8e0a22ddc9ebdeb3909336f6179a71d9a5bareed@google.com if (NULL == fsset) { 133228b8e0a22ddc9ebdeb3909336f6179a71d9a5bareed@google.com fsset = SkFontStyleSet::CreateEmpty(); 134228b8e0a22ddc9ebdeb3909336f6179a71d9a5bareed@google.com } 135228b8e0a22ddc9ebdeb3909336f6179a71d9a5bareed@google.com return fsset; 136228b8e0a22ddc9ebdeb3909336f6179a71d9a5bareed@google.com} 137228b8e0a22ddc9ebdeb3909336f6179a71d9a5bareed@google.com 13801ffa71f87664453998e2870808c82610584929areed@google.comint SkFontMgr::countFamilies() { 13901ffa71f87664453998e2870808c82610584929areed@google.com return this->onCountFamilies(); 14001ffa71f87664453998e2870808c82610584929areed@google.com} 14101ffa71f87664453998e2870808c82610584929areed@google.com 14201ffa71f87664453998e2870808c82610584929areed@google.comvoid SkFontMgr::getFamilyName(int index, SkString* familyName) { 14301ffa71f87664453998e2870808c82610584929areed@google.com this->onGetFamilyName(index, familyName); 14401ffa71f87664453998e2870808c82610584929areed@google.com} 14501ffa71f87664453998e2870808c82610584929areed@google.com 14601ffa71f87664453998e2870808c82610584929areed@google.comSkFontStyleSet* SkFontMgr::createStyleSet(int index) { 147228b8e0a22ddc9ebdeb3909336f6179a71d9a5bareed@google.com return emptyOnNull(this->onCreateStyleSet(index)); 14801ffa71f87664453998e2870808c82610584929areed@google.com} 14901ffa71f87664453998e2870808c82610584929areed@google.com 150ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.comSkFontStyleSet* SkFontMgr::matchFamily(const char familyName[]) { 151228b8e0a22ddc9ebdeb3909336f6179a71d9a5bareed@google.com return emptyOnNull(this->onMatchFamily(familyName)); 152ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com} 153ab8665f8e88927b1a9b82aca38483d8a963fd2e0reed@google.com 15401ffa71f87664453998e2870808c82610584929areed@google.comSkTypeface* SkFontMgr::matchFamilyStyle(const char familyName[], 15501ffa71f87664453998e2870808c82610584929areed@google.com const SkFontStyle& fs) { 15601ffa71f87664453998e2870808c82610584929areed@google.com return this->onMatchFamilyStyle(familyName, fs); 15701ffa71f87664453998e2870808c82610584929areed@google.com} 15801ffa71f87664453998e2870808c82610584929areed@google.com 159cb9a1cd72d397d254c18441743b79de0bbc3da09skia.committer@gmail.comSkTypeface* SkFontMgr::matchFaceStyle(const SkTypeface* face, 16001ffa71f87664453998e2870808c82610584929areed@google.com const SkFontStyle& fs) { 16113bc96524bc50bbd362a05aad108f12109ae7d5creed@google.com return this->onMatchFaceStyle(face, fs); 16201ffa71f87664453998e2870808c82610584929areed@google.com} 16301ffa71f87664453998e2870808c82610584929areed@google.com 16401ffa71f87664453998e2870808c82610584929areed@google.comSkTypeface* SkFontMgr::createFromData(SkData* data, int ttcIndex) { 1659e072dec45762e0ec05363a0b87e6ed56a149db7reed@google.com if (NULL == data) { 1669e072dec45762e0ec05363a0b87e6ed56a149db7reed@google.com return NULL; 1679e072dec45762e0ec05363a0b87e6ed56a149db7reed@google.com } 16801ffa71f87664453998e2870808c82610584929areed@google.com return this->onCreateFromData(data, ttcIndex); 16901ffa71f87664453998e2870808c82610584929areed@google.com} 17001ffa71f87664453998e2870808c82610584929areed@google.com 17101ffa71f87664453998e2870808c82610584929areed@google.comSkTypeface* SkFontMgr::createFromStream(SkStream* stream, int ttcIndex) { 1729e072dec45762e0ec05363a0b87e6ed56a149db7reed@google.com if (NULL == stream) { 1739e072dec45762e0ec05363a0b87e6ed56a149db7reed@google.com return NULL; 1749e072dec45762e0ec05363a0b87e6ed56a149db7reed@google.com } 17501ffa71f87664453998e2870808c82610584929areed@google.com return this->onCreateFromStream(stream, ttcIndex); 17601ffa71f87664453998e2870808c82610584929areed@google.com} 17701ffa71f87664453998e2870808c82610584929areed@google.com 17801ffa71f87664453998e2870808c82610584929areed@google.comSkTypeface* SkFontMgr::createFromFile(const char path[], int ttcIndex) { 1799e072dec45762e0ec05363a0b87e6ed56a149db7reed@google.com if (NULL == path) { 1809e072dec45762e0ec05363a0b87e6ed56a149db7reed@google.com return NULL; 1819e072dec45762e0ec05363a0b87e6ed56a149db7reed@google.com } 18201ffa71f87664453998e2870808c82610584929areed@google.com return this->onCreateFromFile(path, ttcIndex); 18301ffa71f87664453998e2870808c82610584929areed@google.com} 18401ffa71f87664453998e2870808c82610584929areed@google.com 185784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.comSkTypeface* SkFontMgr::legacyCreateTypeface(const char familyName[], 186784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com unsigned styleBits) { 187784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com return this->onLegacyCreateTypeface(familyName, styleBits); 188784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com} 189784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com 190784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.comSkTypeface* SkFontMgr::onLegacyCreateTypeface(const char familyName[], 191784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com unsigned styleBits) { 192784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com SkASSERT(!"unimplemented"); 193784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com return NULL; 194784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com} 195784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com 19601ffa71f87664453998e2870808c82610584929areed@google.comSkFontMgr* SkFontMgr::RefDefault() { 19701ffa71f87664453998e2870808c82610584929areed@google.com static SkFontMgr* gFM; 19801ffa71f87664453998e2870808c82610584929areed@google.com if (NULL == gFM) { 19901ffa71f87664453998e2870808c82610584929areed@google.com gFM = SkFontMgr::Factory(); 20024c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com // we never want to return NULL 20124c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com if (NULL == gFM) { 20224c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com gFM = SkNEW(SkEmptyFontMgr); 20324c2df792545bb2f5edf1caba0304a5750dd8bacreed@google.com } 20401ffa71f87664453998e2870808c82610584929areed@google.com } 20501ffa71f87664453998e2870808c82610584929areed@google.com return SkRef(gFM); 20601ffa71f87664453998e2870808c82610584929areed@google.com} 207784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com 208784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com////////////////////////////////////////////////////////////////////////// 209784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com 210784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com#ifdef SK_FONTHOST_USES_FONTMGR 211784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com 212784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com#if 0 213784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.comstatic SkFontStyle TypefaceStyleBitsToFontStyle(SkTypeface::Style styleBits) { 214784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com SkFontStyle::Weight weight = (styleBits & SkTypeface::kBold) ? 215784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com SkFontStyle::kBold_Weight : 216784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com SkFontStyle::kNormal_Weight; 217784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com SkFontStyle::Width width = SkFontStyle::kNormal_Width; 218784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com SkFontStyle::Slant slant = (styleBits & SkTypeface::kItalic) ? 219784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com SkFontStyle::kUpright_Slant : 220784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com SkFontStyle::kItalic_Slant; 221784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com return SkFontStyle(weight, width, slant); 222784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com} 223784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com#endif 224784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com 225784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.comSkTypeface* SkFontHost::CreateTypeface(const SkTypeface* familyFace, 226784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com const char familyName[], 227784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com SkTypeface::Style style) { 228784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com if (familyFace) { 229784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com return familyFace->refMatchingStyle(style); 230784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com } else { 231784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com SkAutoTUnref<SkFontMgr> fm(SkFontMgr::RefDefault()); 232784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com return fm->legacyCreateTypeface(familyName, style); 233784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com } 234784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com} 235784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com 236784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.comSkTypeface* SkFontHost::CreateTypefaceFromFile(const char path[]) { 237784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com SkAutoTUnref<SkFontMgr> fm(SkFontMgr::RefDefault()); 238784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com return fm->createFromFile(path); 239784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com} 240784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com 241784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.comSkTypeface* SkFontHost::CreateTypefaceFromStream(SkStream* stream) { 242784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com SkAutoTUnref<SkFontMgr> fm(SkFontMgr::RefDefault()); 243784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com return fm->createFromStream(stream); 244784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com} 245784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com 246784cfe25b6ddd0c337cf56462c6ba90d30ed9a5freed@google.com#endif 247