diff options
author | Seigo Nonaka <nona@google.com> | 2023-08-31 16:37:11 +0900 |
---|---|---|
committer | Seigo Nonaka <nona@google.com> | 2023-09-27 11:12:25 +0900 |
commit | 72536763a41a85fb7b2dd589397b823de92867d9 (patch) | |
tree | 6b93b58254457ad969d65a597ae45bda5efb4145 | |
parent | f50b62934915cf20e0b8fb157839376f4750f0de (diff) | |
download | minikin-72536763a41a85fb7b2dd589397b823de92867d9.tar.gz |
Put phrase->strict fallback behind the flag
Bug: 281970875
Test: N/A
Change-Id: I99230795a0f7db88316137c6906d85d1d366a00d
-rw-r--r-- | libs/minikin/Android.bp | 2 | ||||
-rw-r--r-- | libs/minikin/FeatureFlags.h | 42 | ||||
-rw-r--r-- | libs/minikin/GreedyLineBreaker.cpp | 15 | ||||
-rw-r--r-- | libs/minikin/OptimalLineBreaker.cpp | 4 | ||||
-rw-r--r-- | tests/perftests/Android.bp | 1 | ||||
-rw-r--r-- | tests/stresstest/Android.bp | 1 | ||||
-rw-r--r-- | tests/unittest/Android.bp | 1 |
7 files changed, 59 insertions, 7 deletions
diff --git a/libs/minikin/Android.bp b/libs/minikin/Android.bp index 4cb76a2..4bce209 100644 --- a/libs/minikin/Android.bp +++ b/libs/minikin/Android.bp @@ -89,10 +89,12 @@ cc_library { android: { shared_libs: [ "libicu", + "aconfig_text_flags_c_lib", ], export_shared_lib_headers: [ "libicu", ], + cppflags: [ "-DUSE_FEATURE_FLAGS" ], }, host: { shared_libs: [ diff --git a/libs/minikin/FeatureFlags.h b/libs/minikin/FeatureFlags.h new file mode 100644 index 0000000..f5c1122 --- /dev/null +++ b/libs/minikin/FeatureFlags.h @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2023 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. + */ + +#ifndef MINIKIN_FEATURE_FLAGS_H +#define MINIKIN_FEATURE_FLAGS_H + +#ifdef USE_FEATURE_FLAGS +#include <com_android_text_flags.h> +#endif // USE_FEATURE_FLAGS + +namespace features { + +#ifdef USE_FEATURE_FLAGS + +inline bool phrase_strict_fallback() { + return com_android_text_flags_phrase_strict_fallback(); +} + +#else + +inline bool phrase_strict_fallback() { + return true; +} + +#endif // USE_FEATURE_FLAGS + +} // namespace features + +#endif // FEATURE_FLAGS diff --git a/libs/minikin/GreedyLineBreaker.cpp b/libs/minikin/GreedyLineBreaker.cpp index 5e11978..66e3dd9 100644 --- a/libs/minikin/GreedyLineBreaker.cpp +++ b/libs/minikin/GreedyLineBreaker.cpp @@ -16,17 +16,17 @@ #define LOG_TAG "GreedyLineBreak" -#include "minikin/Characters.h" -#include "minikin/LineBreaker.h" -#include "minikin/MeasuredText.h" -#include "minikin/Range.h" -#include "minikin/U16StringPiece.h" - +#include "FeatureFlags.h" #include "HyphenatorMap.h" #include "LineBreakerUtil.h" #include "Locale.h" #include "LocaleListCache.h" #include "WordBreaker.h" +#include "minikin/Characters.h" +#include "minikin/LineBreaker.h" +#include "minikin/MeasuredText.h" +#include "minikin/Range.h" +#include "minikin/U16StringPiece.h" namespace minikin { @@ -293,6 +293,9 @@ bool GreedyLineBreaker::doLineBreakWithGraphemeBounds(const Range& range) { } bool GreedyLineBreaker::doLineBreakWithFallback(const Range& range) { + if (!features::phrase_strict_fallback()) { + return false; + } Run* targetRun = nullptr; for (const auto& run : mMeasuredText.runs) { if (run->getRange().contains(range)) { diff --git a/libs/minikin/OptimalLineBreaker.cpp b/libs/minikin/OptimalLineBreaker.cpp index e170313..d3db0ec 100644 --- a/libs/minikin/OptimalLineBreaker.cpp +++ b/libs/minikin/OptimalLineBreaker.cpp @@ -19,6 +19,7 @@ #include <algorithm> #include <limits> +#include "FeatureFlags.h" #include "HyphenatorMap.h" #include "LayoutUtils.h" #include "LineBreakerUtil.h" @@ -167,7 +168,8 @@ std::vector<DesperateBreak> populateDesperatePoints(const U16StringPiece& textBu const Range& range, const Run& run) { std::vector<DesperateBreak> out; - if (run.lineBreakWordStyle() == LineBreakWordStyle::None) { + if (!features::phrase_strict_fallback() || + run.lineBreakWordStyle() == LineBreakWordStyle::None) { ParaWidth width = measured.widths[range.getStart()]; for (uint32_t i = range.getStart() + 1; i < range.getEnd(); ++i) { const float w = measured.widths[i]; diff --git a/tests/perftests/Android.bp b/tests/perftests/Android.bp index cf57667..362ba10 100644 --- a/tests/perftests/Android.bp +++ b/tests/perftests/Android.bp @@ -37,6 +37,7 @@ cc_benchmark { "libminikin-tests-util", "libminikin", "libxml2", + "aconfig_text_flags_c_lib", ], shared_libs: [ diff --git a/tests/stresstest/Android.bp b/tests/stresstest/Android.bp index e08a984..7e0379c 100644 --- a/tests/stresstest/Android.bp +++ b/tests/stresstest/Android.bp @@ -28,6 +28,7 @@ cc_test { "libminikin-tests-util", "libminikin", "libxml2", + "aconfig_text_flags_c_lib", ], // Shared libraries which are dependencies of minikin; these are not automatically diff --git a/tests/unittest/Android.bp b/tests/unittest/Android.bp index 27d8cc6..0d6634c 100644 --- a/tests/unittest/Android.bp +++ b/tests/unittest/Android.bp @@ -41,6 +41,7 @@ cc_test { "libutils", "libz", "libcutils", + "aconfig_text_flags_c_lib", ], srcs: [ |