| Index: third_party/WebKit/Source/platform/fonts/CharacterData.h
|
| diff --git a/third_party/WebKit/Source/platform/fonts/CharacterDataGenerator.cpp b/third_party/WebKit/Source/platform/fonts/CharacterData.h
|
| similarity index 61%
|
| copy from third_party/WebKit/Source/platform/fonts/CharacterDataGenerator.cpp
|
| copy to third_party/WebKit/Source/platform/fonts/CharacterData.h
|
| index a1c540184e14a42fc4726b10227a0cb5d3600435..a9c8f21d959abca0d2175a66afbf97d96d785206 100644
|
| --- a/third_party/WebKit/Source/platform/fonts/CharacterDataGenerator.cpp
|
| +++ b/third_party/WebKit/Source/platform/fonts/CharacterData.h
|
| @@ -2,20 +2,14 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "CharacterProperty.h"
|
| +#ifndef CharacterData_h
|
| +#define CharacterData_h
|
|
|
| -#include <cassert>
|
| -#include <cstring>
|
| -#include <stdio.h>
|
| #include <unicode/uobject.h>
|
| -#define MUTEX_H // Prevent compile failure of utrie2.h on Windows
|
| -#include <utrie2.h>
|
|
|
| -const UChar32 kMaxCodepoint = 0x10FFFF;
|
| -using CharacterProperty = blink::CharacterProperty;
|
| -#define ARRAY_LENGTH(a) (sizeof(a) / sizeof((a)[0]))
|
| +namespace blink {
|
|
|
| -static const UChar32 cjkIsolatedSymbolsArray[] = {
|
| +static const UChar32 isCJKIdeographOrSymbolArray[] = {
|
| // 0x2C7 Caron, Mandarin Chinese 3rd Tone
|
| 0x2C7,
|
| // 0x2CA Modifier Letter Acute Accent, Mandarin Chinese 2nd Tone
|
| @@ -36,7 +30,8 @@ static const UChar32 cjkIsolatedSymbolsArray[] = {
|
| 0x1F100
|
| };
|
|
|
| -static const UChar32 cjkIdeographRanges[] = {
|
| +static const UChar32 isCJKIdeographOrSymbolRanges[] = {
|
| + // cjkIdeographRanges
|
| // CJK Radicals Supplement and Kangxi Radicals.
|
| 0x2E80, 0x2FDF,
|
| // CJK Strokes.
|
| @@ -53,10 +48,9 @@ static const UChar32 cjkIdeographRanges[] = {
|
| // CJK Unified Ideographs Extension D.
|
| 0x2A700, 0x2B81F,
|
| // CJK Compatibility Ideographs Supplement.
|
| - 0x2F800, 0x2FA1F
|
| -};
|
| + 0x2F800, 0x2FA1F,
|
|
|
| -static const UChar32 cjkSymbolRanges[] = {
|
| + // cjkSymbolRanges
|
| 0x2156, 0x215A,
|
| 0x2160, 0x216B,
|
| 0x2170, 0x217B,
|
| @@ -225,113 +219,6 @@ static const UChar32 isUprightInMixedVerticalRanges[] = {
|
| 0x100000, 0x10FFFD,
|
| };
|
|
|
| -static void setRanges(CharacterProperty* values,
|
| - const UChar32* ranges, size_t length,
|
| - CharacterProperty value)
|
| -{
|
| - assert(length % 2 == 0);
|
| - const UChar32* end = ranges + length;
|
| - for (; ranges != end; ranges += 2) {
|
| - assert(ranges[0] <= ranges[1]
|
| - && ranges[1] <= kMaxCodepoint);
|
| - for (UChar32 c = ranges[0]; c <= ranges[1]; c++)
|
| - values[c] |= value;
|
| - }
|
| -}
|
| -
|
| -static void setValues(CharacterProperty* values,
|
| - const UChar32* begin, size_t length,
|
| - CharacterProperty value)
|
| -{
|
| - const UChar32* end = begin + length;
|
| - for (; begin != end; begin++) {
|
| - assert(*begin <= kMaxCodepoint);
|
| - values[*begin] |= value;
|
| - }
|
| -}
|
| -
|
| -static void generate(FILE* fp, int32_t size, uint8_t* array)
|
| -{
|
| - fprintf(fp,
|
| - "#include <cstdint>\n\n"
|
| - "namespace blink {\n\n"
|
| - "int32_t serializedCharacterDataSize = %d;\n"
|
| - "uint8_t serializedCharacterData[] = {", size);
|
| - for (int32_t i = 0; i < size; ) {
|
| - fprintf(fp, "\n ");
|
| - for (int col = 0; col < 16 && i < size; col++, i++)
|
| - fprintf(fp, " 0x%02X,", array[i]);
|
| - }
|
| - fprintf(fp,
|
| - "\n};\n\n"
|
| - "} // namespace blink\n");
|
| -}
|
| -
|
| -int main(int argc, char** argv)
|
| -{
|
| - // Create a value array of all possible code points.
|
| - const UChar32 size = kMaxCodepoint + 1;
|
| - CharacterProperty* values = new CharacterProperty[size];
|
| - memset(values, 0, sizeof(CharacterProperty) * size);
|
| -
|
| - setRanges(values,
|
| - cjkIdeographRanges, ARRAY_LENGTH(cjkIdeographRanges),
|
| - CharacterProperty::isCJKIdeographOrSymbol);
|
| - setRanges(values,
|
| - cjkSymbolRanges, ARRAY_LENGTH(cjkSymbolRanges),
|
| - CharacterProperty::isCJKIdeographOrSymbol);
|
| - setValues(values,
|
| - cjkIsolatedSymbolsArray, ARRAY_LENGTH(cjkIsolatedSymbolsArray),
|
| - CharacterProperty::isCJKIdeographOrSymbol);
|
| -
|
| - setRanges(values,
|
| - isUprightInMixedVerticalRanges,
|
| - ARRAY_LENGTH(isUprightInMixedVerticalRanges),
|
| - CharacterProperty::isUprightInMixedVertical);
|
| - setValues(values,
|
| - isUprightInMixedVerticalArray,
|
| - ARRAY_LENGTH(isUprightInMixedVerticalArray),
|
| - CharacterProperty::isUprightInMixedVertical);
|
| -
|
| - // Create a trie from the value array.
|
| - UErrorCode error = U_ZERO_ERROR;
|
| - UTrie2* trie = utrie2_open(0, 0, &error);
|
| - assert(error == U_ZERO_ERROR);
|
| - UChar32 start = 0;
|
| - CharacterProperty value = values[0];
|
| - for (UChar32 c = 1;; c++) {
|
| - if (c < size && values[c] == value)
|
| - continue;
|
| - if (static_cast<uint32_t>(value)) {
|
| - utrie2_setRange32(trie, start, c - 1,
|
| - static_cast<uint32_t>(value), TRUE, &error);
|
| - assert(error == U_ZERO_ERROR);
|
| - }
|
| - if (c >= size)
|
| - break;
|
| - start = c;
|
| - value = values[start];
|
| - }
|
| -
|
| - // Freeze and serialize the trie to a byte array.
|
| - utrie2_freeze(trie, UTrie2ValueBits::UTRIE2_16_VALUE_BITS, &error);
|
| - assert(error == U_ZERO_ERROR);
|
| - int32_t serializedSize = utrie2_serialize(trie, nullptr, 0, &error);
|
| - error = U_ZERO_ERROR;
|
| - uint8_t* serialized = new uint8_t[serializedSize];
|
| - serializedSize = utrie2_serialize(trie, serialized, serializedSize, &error);
|
| - assert(error == U_ZERO_ERROR);
|
| -
|
| - // Write the serialized array to the source file.
|
| - if (argc <= 1) {
|
| - generate(stdout, serializedSize, serialized);
|
| - } else {
|
| - FILE* fp = fopen(argv[1], "wb");
|
| - generate(fp, serializedSize, serialized);
|
| - fclose(fp);
|
| - }
|
| -
|
| - utrie2_close(trie);
|
| +} // namespace blink
|
|
|
| - return 0;
|
| -}
|
| +#endif
|
|
|