diff options
| author | Kristian Monsen <kristianm@google.com> | 2010-07-30 10:46:49 +0100 |
|---|---|---|
| committer | Kristian Monsen <kristianm@google.com> | 2010-08-04 13:01:34 +0100 |
| commit | 0617145a89917ae7735fe1c9538688ab9a577df5 (patch) | |
| tree | 56206078694427c37ed7bdf27eb5221398b833c0 /WebCore/platform/text/transcoder | |
| parent | ef1adcdfc805d4d13103f6f15cc5b4d96828a60f (diff) | |
| download | external_webkit-0617145a89917ae7735fe1c9538688ab9a577df5.zip external_webkit-0617145a89917ae7735fe1c9538688ab9a577df5.tar.gz external_webkit-0617145a89917ae7735fe1c9538688ab9a577df5.tar.bz2 | |
Merge WebKit at r64264 : Initial merge by git.
Change-Id: Ic42bef02efef8217a0f84c47176a9c617c28d1f1
Diffstat (limited to 'WebCore/platform/text/transcoder')
| -rw-r--r-- | WebCore/platform/text/transcoder/FontTranscoder.cpp | 17 | ||||
| -rw-r--r-- | WebCore/platform/text/transcoder/FontTranscoder.h | 7 |
2 files changed, 13 insertions, 11 deletions
diff --git a/WebCore/platform/text/transcoder/FontTranscoder.cpp b/WebCore/platform/text/transcoder/FontTranscoder.cpp index 12678e8..8e2f33f 100644 --- a/WebCore/platform/text/transcoder/FontTranscoder.cpp +++ b/WebCore/platform/text/transcoder/FontTranscoder.cpp @@ -32,6 +32,7 @@ #include "FontTranscoder.h" #include "CharacterNames.h" +#include "FontDescription.h" #include "TextEncoding.h" namespace WebCore { @@ -59,8 +60,9 @@ FontTranscoder::FontTranscoder() m_converterTypes.add(AtomicString(unicodeNameMeiryo, sizeof(unicodeNameMeiryo) / sizeof(UChar)), BackslashToYenSign); } -FontTranscoder::ConverterType FontTranscoder::converterType(const AtomicString& fontFamily, const TextEncoding* encoding) const +FontTranscoder::ConverterType FontTranscoder::converterType(const FontDescription& fontDescription, const TextEncoding* encoding) const { + const AtomicString& fontFamily = fontDescription.family().family().string(); if (!fontFamily.isNull()) { HashMap<AtomicString, ConverterType>::const_iterator found = m_converterTypes.find(fontFamily); if (found != m_converterTypes.end()) @@ -68,17 +70,16 @@ FontTranscoder::ConverterType FontTranscoder::converterType(const AtomicString& } // IE's default fonts for Japanese encodings change backslashes into yen signs. - // FIXME: We don't need transcoding when the document explicitly - // specifies a font which doesn't change backslashes into yen signs. - if (encoding && encoding->backslashAsCurrencySymbol() != '\\') + // We emulate this behavior only when no font is explicitly specified. + if (encoding && encoding->backslashAsCurrencySymbol() != '\\' && !fontDescription.isSpecifiedFont()) return BackslashToYenSign; return NoConversion; } -void FontTranscoder::convert(String& text, const AtomicString& fontFamily, const TextEncoding* encoding) const +void FontTranscoder::convert(String& text, const FontDescription& fontDescription, const TextEncoding* encoding) const { - switch (converterType(fontFamily, encoding)) { + switch (converterType(fontDescription, encoding)) { case BackslashToYenSign: { // FIXME: TextEncoding.h has similar code. We need to factor them out. text.replace('\\', yenSign); @@ -90,9 +91,9 @@ void FontTranscoder::convert(String& text, const AtomicString& fontFamily, const } } -bool FontTranscoder::needsTranscoding(const AtomicString& fontFamily, const TextEncoding* encoding) const +bool FontTranscoder::needsTranscoding(const FontDescription& fontDescription, const TextEncoding* encoding) const { - ConverterType type = converterType(fontFamily, encoding); + ConverterType type = converterType(fontDescription, encoding); return type != NoConversion; } diff --git a/WebCore/platform/text/transcoder/FontTranscoder.h b/WebCore/platform/text/transcoder/FontTranscoder.h index f013453..1fdc936 100644 --- a/WebCore/platform/text/transcoder/FontTranscoder.h +++ b/WebCore/platform/text/transcoder/FontTranscoder.h @@ -37,12 +37,13 @@ namespace WebCore { +class FontDescription; class TextEncoding; class FontTranscoder : public Noncopyable { public: - void convert(String& text, const AtomicString& fontFamily, const TextEncoding* = 0) const; - bool needsTranscoding(const AtomicString& fontFamily, const TextEncoding* = 0) const; + void convert(String& text, const FontDescription&, const TextEncoding* = 0) const; + bool needsTranscoding(const FontDescription&, const TextEncoding* = 0) const; private: FontTranscoder(); @@ -52,7 +53,7 @@ private: NoConversion, BackslashToYenSign, }; - ConverterType converterType(const AtomicString& fontFamily, const TextEncoding*) const; + ConverterType converterType(const FontDescription&, const TextEncoding*) const; HashMap<AtomicString, ConverterType> m_converterTypes; |
