/* ***** BEGIN LICENSE BLOCK ***** * * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * ***** END LICENSE BLOCK ***** */ #ifdef UNSAFE_BUFFERS_BUILD // TODO(crbug.com/351564777): Remove this and convert code to safer constructs. #pragma allow_unsafe_buffers #endif #include <memory> #include <algorithm> #include <unicode/uchar.h> // HACK: for reading pattern file #include <fcntl.h> #include "third_party/blink/renderer/platform/text/hyphenation/hyphenator_aosp.h" namespace android { static const uint16_t CHAR_SOFT_HYPHEN = …; // The following are structs that correspond to tables inside the hyb file // format struct AlphabetTable0 { … }; struct AlphabetTable1 { … }; struct Trie { … }; struct Pattern { … }; struct Header { … }; Hyphenator* Hyphenator::loadBinary(const uint8_t* patternData) { … } void Hyphenator::hyphenate(Vector<uint8_t>* result, const uint16_t* word, wtf_size_t len) { … } // If any soft hyphen is present in the word, use soft hyphens to decide // hyphenation, as recommended in UAX #14 (Use of Soft Hyphen) void Hyphenator::hyphenateSoft(uint8_t* result, const uint16_t* word, wtf_size_t len) { … } bool Hyphenator::alphabetLookup(uint16_t* alpha_codes, const uint16_t* word, wtf_size_t len) { … } /** * Internal implementation, after conversion to codes. All case folding and * normalization has been done by now, and all characters have been found in the * alphabet. Note: len here is the padded length including 0 codes at start and * end. **/ void Hyphenator::hyphenateFromCodes(uint8_t* result, const uint16_t* codes, wtf_size_t len) { … } } // namespace android