ensureTransparentFont static method
يحمّل المتغير الشفاف لصفحة واحدة عند الطلب (وضع التسميع).
يقرأ كاش القرص إن وُجد (مثل _loadSinglePage)، يرقّع كل ألوان CPAL
إلى شفاف تمامًا، ويسجّل العائلة page{N}t. يُعيد false عند الفشل
(يتراجع العرض عندها إلى حذف مقاطع الكلمات المخفية).
Implementation
static Future<bool> ensureTransparentFont(int page) {
if (_transparentLoadedPages.contains(page)) return Future.value(true);
try {
final familyName = 'page$page';
return _decompressFromAsset(page).then((fontBytes) async {
final transparentBytes = _modifyCpalAllColors(
Uint8List.fromList(fontBytes),
const Color(0x00000000), // شفاف بالكامل — الألفا 0.
);
await loadFontFromList(transparentBytes, fontFamily: '${familyName}t');
_transparentLoadedPages.add(page);
return true;
});
} catch (e, st) {
log('QuranFontsService: transparent font failed for page $page: $e',
name: 'QuranFontsService', stackTrace: st);
return Future.value(false);
}
}