generateDropCap method
Implementation
DropCap? generateDropCap(ChantContext ctxt) {
if (dropCap != null) return dropCap;
if (spans.isEmpty || ctxt.specialCharMap.containsKey(spans[0].text)) {
return null;
}
final dropCapSpan = spans[0].clone();
dropCapSpan.text = dropCapSpan.text.substring(0, 1).toUpperCase();
final dropCapLowerCase = dropCapSpan.text.toLowerCase();
if (dropCapSpan.text == dropCapLowerCase) return null;
if (dropCapSpan.activeTags.contains('sc')) {
dropCapSpan.text = dropCapLowerCase;
}
dropCapSpan.propertyArray.add({'line-height': 1.0});
final generatedDropCap = DropCap(ctxt, '', sourceIndex);
generatedDropCap.spans = [dropCapSpan];
final match = RegExp(
r'^(?:<\/?[^>]+>)*.?(?:<\/[^>]+>)*',
).firstMatch(sourceGabc);
final dropCapSourceGabcLength = match?.group(0)?.length ?? 0;
generatedDropCap.sourceGabc = sourceGabc.substring(
0,
dropCapSourceGabcLength,
);
sourceIndex += generatedDropCap.sourceGabc.length;
sourceGabc = sourceGabc.substring(dropCapSourceGabcLength);
spans[0].text = spans[0].text.substring(1);
text = text.substring(1);
centerStartIndex -= 1;
dropCap = generatedDropCap;
return generatedDropCap;
}