Chromium Code Reviews| Index: src/svg/SkSVGDevice.cpp |
| diff --git a/src/svg/SkSVGDevice.cpp b/src/svg/SkSVGDevice.cpp |
| index bf19a81a1d3670ef193836d668660bbb7f72464d..28b73c882b5bef021092b58e8e82b6b231a64505 100644 |
| --- a/src/svg/SkSVGDevice.cpp |
| +++ b/src/svg/SkSVGDevice.cpp |
| @@ -14,6 +14,7 @@ |
| #include "SkPathOps.h" |
| #include "SkShader.h" |
| #include "SkStream.h" |
| +#include "SkTArray.h" |
| #include "SkTypeface.h" |
| #include "SkUtils.h" |
| #include "SkXMLWriter.h" |
| @@ -458,16 +459,27 @@ void SkSVGDevice::AutoElement::addTextAttributes(const SkPaint& paint) { |
| this->addAttribute("font-weight", "bold"); |
| } |
| + if (const char* textAlign = svg_text_align(paint.getTextAlign())) { |
| + this->addAttribute("text-anchor", textAlign); |
| + } |
| + |
| + SkString familyName; |
| + SkTArray<SkString> familyNamesSet; |
| SkAutoTUnref<const SkTypeface> tface(paint.getTypeface() ? |
|
mtklein
2015/02/12 21:14:10
Do we really need to be refing the typeface here?
f(malita)
2015/02/12 21:17:59
The only reason to do that is to be able to use th
|
| SkRef(paint.getTypeface()) : SkTypeface::RefDefault(style)); |
| - SkString familyName; |
| - tface->getFamilyName(&familyName); |
| - if (!familyName.isEmpty()) { |
| - this->addAttribute("font-family", familyName); |
| + SkAutoTUnref<SkTypeface::LocalizedStrings> familyNameIter(tface->createFamilyNameIterator()); |
| + SkTypeface::LocalizedString familyString; |
| + while (familyNameIter->next(&familyString)) { |
| + // !!linear search!! In general we expect a small number of names so this should be ok. |
| + if (familyNamesSet.rfind(familyString.fString) < 0) { |
| + familyNamesSet.push_back() = familyString.fString; |
| + familyName.appendf((familyName.isEmpty() ? "%s" : ", %s"), |
| + familyString.fString.c_str()); |
| + } |
| } |
| - if (const char* textAlign = svg_text_align(paint.getTextAlign())) { |
| - this->addAttribute("text-anchor", textAlign); |
| + if (!familyName.isEmpty()) { |
| + this->addAttribute("font-family", familyName); |
| } |
| } |