Commit 9cfa2601 authored by jshin@chromium.org's avatar jshin@chromium.org

Add a port of hb_icu_script_to_script to HarfbuzzShaper

Harfbuzz on CrOS does not have hb-icu leading to a compile failure
when system_harfbuzz is turned on to avoid a linker warning.
(see http://crbug.com/353127).

HarfbuzzShaper uses just one function (hb_icu_script_to_script) from
hb-icu and it's a simple wrapper. It's ported to HarfbuzzShaper to avoid
the dependency on hb-icu.

BUG=356929
TEST=content_shell gets built on Linux and no change in layout tests.

Review URL: https://codereview.chromium.org/214413002

git-svn-id: svn://svn.chromium.org/blink/trunk@170276 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 3a703f3a
...@@ -33,16 +33,18 @@ ...@@ -33,16 +33,18 @@
#include "platform/fonts/harfbuzz/HarfBuzzShaper.h" #include "platform/fonts/harfbuzz/HarfBuzzShaper.h"
#include "RuntimeEnabledFeatures.h" #include "RuntimeEnabledFeatures.h"
#include "hb-icu.h" #include "hb.h"
#include "platform/fonts/Character.h" #include "platform/fonts/Character.h"
#include "platform/fonts/Font.h" #include "platform/fonts/Font.h"
#include "platform/fonts/harfbuzz/HarfBuzzFace.h" #include "platform/fonts/harfbuzz/HarfBuzzFace.h"
#include "platform/text/SurrogatePairAwareTextIterator.h" #include "platform/text/SurrogatePairAwareTextIterator.h"
#include "platform/text/TextBreakIterator.h" #include "platform/text/TextBreakIterator.h"
#include "wtf/Compiler.h"
#include "wtf/MathExtras.h" #include "wtf/MathExtras.h"
#include "wtf/unicode/Unicode.h" #include "wtf/unicode/Unicode.h"
#include <unicode/normlzr.h> #include <unicode/normlzr.h>
#include <unicode/uchar.h> #include <unicode/uchar.h>
#include <unicode/uscript.h>
#include <list> #include <list>
#include <map> #include <map>
...@@ -755,6 +757,17 @@ bool HarfBuzzShaper::createHarfBuzzRuns() ...@@ -755,6 +757,17 @@ bool HarfBuzzShaper::createHarfBuzzRuns()
return !m_harfBuzzRuns.isEmpty(); return !m_harfBuzzRuns.isEmpty();
} }
// A port of hb_icu_script_to_script because harfbuzz on CrOS is built
// without hb-icu. See http://crbug.com/356929
static inline hb_script_t ICUScriptToHBScript(UScriptCode script)
{
if (UNLIKELY(script == USCRIPT_INVALID_CODE))
return HB_SCRIPT_INVALID;
return hb_script_from_string(uscript_getShortName(script), -1);
}
void HarfBuzzShaper::addHarfBuzzRun(unsigned startCharacter, void HarfBuzzShaper::addHarfBuzzRun(unsigned startCharacter,
unsigned endCharacter, const SimpleFontData* fontData, unsigned endCharacter, const SimpleFontData* fontData,
UScriptCode script) UScriptCode script)
...@@ -763,7 +776,7 @@ void HarfBuzzShaper::addHarfBuzzRun(unsigned startCharacter, ...@@ -763,7 +776,7 @@ void HarfBuzzShaper::addHarfBuzzRun(unsigned startCharacter,
ASSERT(script != USCRIPT_INVALID_CODE); ASSERT(script != USCRIPT_INVALID_CODE);
return m_harfBuzzRuns.append(HarfBuzzRun::create(fontData, return m_harfBuzzRuns.append(HarfBuzzRun::create(fontData,
startCharacter, endCharacter - startCharacter, startCharacter, endCharacter - startCharacter,
m_run.direction(), hb_icu_script_to_script(script))); m_run.direction(), ICUScriptToHBScript(script)));
} }
static const uint16_t* toUint16(const UChar* src) static const uint16_t* toUint16(const UChar* src)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment