| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2009 Google Inc. | 2 * Copyright 2009 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 /* migrated from chrome/src/skia/ext/SkFontHost_fontconfig_direct.cpp */ | 8 /* migrated from chrome/src/skia/ext/SkFontHost_fontconfig_direct.cpp */ |
| 9 | 9 |
| 10 #include <string> | 10 #include <string> |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 GOTHIC, | 56 GOTHIC, |
| 57 PMINCHO, | 57 PMINCHO, |
| 58 MINCHO, | 58 MINCHO, |
| 59 SIMSUN, | 59 SIMSUN, |
| 60 NSIMSUN, | 60 NSIMSUN, |
| 61 SIMHEI, | 61 SIMHEI, |
| 62 PMINGLIU, | 62 PMINGLIU, |
| 63 MINGLIU, | 63 MINGLIU, |
| 64 PMINGLIUHK, | 64 PMINGLIUHK, |
| 65 MINGLIUHK, | 65 MINGLIUHK, |
| 66 CAMBRIA, |
| 66 }; | 67 }; |
| 67 | 68 |
| 68 // Match the font name against a whilelist of fonts, returning the equivalence | 69 // Match the font name against a whilelist of fonts, returning the equivalence |
| 69 // class. | 70 // class. |
| 70 FontEquivClass GetFontEquivClass(const char* fontname) | 71 FontEquivClass GetFontEquivClass(const char* fontname) |
| 71 { | 72 { |
| 72 // It would be nice for fontconfig to tell us whether a given suggested | 73 // It would be nice for fontconfig to tell us whether a given suggested |
| 73 // replacement is a "strong" match (that is, an equivalent font) or | 74 // replacement is a "strong" match (that is, an equivalent font) or |
| 74 // a "weak" match (that is, fontconfig's next-best attempt at finding a | 75 // a "weak" match (that is, fontconfig's next-best attempt at finding a |
| 75 // substitute). However, I played around with the fontconfig API for | 76 // substitute). However, I played around with the fontconfig API for |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 { NSIMSUN, "\xe6\x96\xb0\xe5\xae\x8b\xe4\xbd\x93" }, | 146 { NSIMSUN, "\xe6\x96\xb0\xe5\xae\x8b\xe4\xbd\x93" }, |
| 146 { NSIMSUN, "MSung GB18030" }, | 147 { NSIMSUN, "MSung GB18030" }, |
| 147 { NSIMSUN, "N Song ASC" }, | 148 { NSIMSUN, "N Song ASC" }, |
| 148 | 149 |
| 149 // 黑体 | 150 // 黑体 |
| 150 { SIMHEI, "Simhei" }, | 151 { SIMHEI, "Simhei" }, |
| 151 { SIMHEI, "\xe9\xbb\x91\xe4\xbd\x93" }, | 152 { SIMHEI, "\xe9\xbb\x91\xe4\xbd\x93" }, |
| 152 { SIMHEI, "MYingHeiGB18030" }, | 153 { SIMHEI, "MYingHeiGB18030" }, |
| 153 { SIMHEI, "MYingHeiB5HK" }, | 154 { SIMHEI, "MYingHeiB5HK" }, |
| 154 | 155 |
| 155 // 新細明體 | 156 // 新細明體 |
| 156 { PMINGLIU, "PMingLiU"}, | 157 { PMINGLIU, "PMingLiU"}, |
| 157 { PMINGLIU, "\xe6\x96\xb0\xe7\xb4\xb0\xe6\x98\x8e\xe9\xab\x94" }, | 158 { PMINGLIU, "\xe6\x96\xb0\xe7\xb4\xb0\xe6\x98\x8e\xe9\xab\x94" }, |
| 158 { PMINGLIU, "MSung B5HK"}, | 159 { PMINGLIU, "MSung B5HK"}, |
| 159 | 160 |
| 160 // 細明體 | 161 // 細明體 |
| 161 { MINGLIU, "MingLiU"}, | 162 { MINGLIU, "MingLiU"}, |
| 162 { MINGLIU, "\xe7\xb4\xb0\xe6\x98\x8e\xe9\xab\x94" }, | 163 { MINGLIU, "\xe7\xb4\xb0\xe6\x98\x8e\xe9\xab\x94" }, |
| 163 { MINGLIU, "MSung B5HK"}, | 164 { MINGLIU, "MSung B5HK"}, |
| 164 | 165 |
| 165 // 新細明體 | 166 // 新細明體 |
| 166 { PMINGLIUHK, "PMingLiU_HKSCS"}, | 167 { PMINGLIUHK, "PMingLiU_HKSCS"}, |
| 167 { PMINGLIUHK, "\xe6\x96\xb0\xe7\xb4\xb0\xe6\x98\x8e\xe9\xab\x94_HKSCS" }, | 168 { PMINGLIUHK, "\xe6\x96\xb0\xe7\xb4\xb0\xe6\x98\x8e\xe9\xab\x94_HKSCS" }
, |
| 168 { PMINGLIUHK, "MSung B5HK"}, | 169 { PMINGLIUHK, "MSung B5HK"}, |
| 169 | 170 |
| 170 // 細明體 | 171 // 細明體 |
| 171 { MINGLIUHK, "MingLiU_HKSCS"}, | 172 { MINGLIUHK, "MingLiU_HKSCS"}, |
| 172 { MINGLIUHK, "\xe7\xb4\xb0\xe6\x98\x8e\xe9\xab\x94_HKSCS" }, | 173 { MINGLIUHK, "\xe7\xb4\xb0\xe6\x98\x8e\xe9\xab\x94_HKSCS" }, |
| 173 { MINGLIUHK, "MSung B5HK"}, | 174 { MINGLIUHK, "MSung B5HK"}, |
| 175 |
| 176 // Cambria |
| 177 { CAMBRIA, "Cambria" }, |
| 178 { CAMBRIA, "Caladea" }, |
| 174 }; | 179 }; |
| 175 | 180 |
| 176 static const size_t kFontCount = | 181 static const size_t kFontCount = |
| 177 sizeof(kFontEquivMap)/sizeof(kFontEquivMap[0]); | 182 sizeof(kFontEquivMap)/sizeof(kFontEquivMap[0]); |
| 178 | 183 |
| 179 // TODO(jungshik): If this loop turns out to be hot, turn | 184 // TODO(jungshik): If this loop turns out to be hot, turn |
| 180 // the array to a static (hash)map to speed it up. | 185 // the array to a static (hash)map to speed it up. |
| 181 for (size_t i = 0; i < kFontCount; ++i) { | 186 for (size_t i = 0; i < kFontCount; ++i) { |
| 182 if (strcasecmp(kFontEquivMap[i].name, fontname) == 0) | 187 if (strcasecmp(kFontEquivMap[i].name, fontname) == 0) |
| 183 return kFontEquivMap[i].clazz; | 188 return kFontEquivMap[i].clazz; |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 418 if (outStyle) { | 423 if (outStyle) { |
| 419 *outStyle = GetFontStyle(match); | 424 *outStyle = GetFontStyle(match); |
| 420 } | 425 } |
| 421 return true; | 426 return true; |
| 422 } | 427 } |
| 423 | 428 |
| 424 SkStream* SkFontConfigInterfaceDirect::openStream(const FontIdentity& identity)
{ | 429 SkStream* SkFontConfigInterfaceDirect::openStream(const FontIdentity& identity)
{ |
| 425 int fd = open(identity.fString.c_str(), O_RDONLY); | 430 int fd = open(identity.fString.c_str(), O_RDONLY); |
| 426 return (fd >= 0) ? SkNEW_ARGS(SkFDStream, (fd, true)) : NULL; | 431 return (fd >= 0) ? SkNEW_ARGS(SkFDStream, (fd, true)) : NULL; |
| 427 } | 432 } |
| OLD | NEW |