ensureTransparentFont static method

Future<bool> ensureTransparentFont(
  1. int page
)

يحمّل المتغير الشفاف لصفحة واحدة عند الطلب (وضع التسميع).

يقرأ كاش القرص إن وُجد (مثل _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);
  }
}