@@ -123,6 +123,17 @@ std::string buildLinePreview(const std::vector<std::string>& words, const std::v
|
|||||||
return preview;
|
return preview;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
constexpr int kBionicReadingMinCodepoints = 4;
|
||||||
|
constexpr int kBionicReadingMinBoldPrefix = 1;
|
||||||
|
constexpr int kBionicReadingBoldPrefixNumerator = 1;
|
||||||
|
constexpr int kBionicReadingBoldPrefixDenominator = 2;
|
||||||
|
|
||||||
|
static int computeBionicBoldPrefixCount(const int codepointCount) {
|
||||||
|
return std::max(kBionicReadingMinBoldPrefix,
|
||||||
|
(codepointCount * kBionicReadingBoldPrefixNumerator + kBionicReadingBoldPrefixDenominator - 1) /
|
||||||
|
kBionicReadingBoldPrefixDenominator);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
void ParsedText::addWord(std::string word, const EpdFontFamily::Style fontStyle, const bool underline,
|
void ParsedText::addWord(std::string word, const EpdFontFamily::Style fontStyle, const bool underline,
|
||||||
@@ -532,14 +543,14 @@ void ParsedText::applyBionicReadingTransform() {
|
|||||||
codepointCount++;
|
codepointCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (codepointCount <= 3) {
|
if (codepointCount < kBionicReadingMinCodepoints) {
|
||||||
transformedWords.push_back(word);
|
transformedWords.push_back(word);
|
||||||
transformedStyles.push_back(originalStyle);
|
transformedStyles.push_back(originalStyle);
|
||||||
transformedContinues.push_back(attachToPrevious);
|
transformedContinues.push_back(attachToPrevious);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const int boldPrefixCount = std::max(1, (codepointCount + 1) / 2);
|
const int boldPrefixCount = computeBionicBoldPrefixCount(codepointCount);
|
||||||
ptr = reinterpret_cast<const unsigned char*>(word.c_str());
|
ptr = reinterpret_cast<const unsigned char*>(word.c_str());
|
||||||
const unsigned char* prefixEnd = ptr;
|
const unsigned char* prefixEnd = ptr;
|
||||||
for (int j = 0; j < boldPrefixCount && *prefixEnd; ++j) {
|
for (int j = 0; j < boldPrefixCount && *prefixEnd; ++j) {
|
||||||
|
|||||||
Reference in New Issue
Block a user