const WINANSI_SAFE = /^[ - -ÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ\r\n\t]*$/;

export function needsFontEmbedding(text: string): boolean {
  return !WINANSI_SAFE.test(text ?? '');
}

export const SCRIPT_FONTS: [RegExp, string[]][] = [
  [
    /[؀-ۿݐ-ݿﭐ-﷿ﹰ-﻿]/,
    [
      'GeezaPro',
      'AlNile',
      'NotoNaskhArabic',
      'NotoSansArabic',
      'ArialUnicodeMS',
    ],
  ],
  [
    /[֐-׿יִ-ﭏ]/,
    ['ArialHebrew', 'NotoSansHebrew', 'LucidaGrande', 'ArialUnicodeMS'],
  ],
  [
    /[ऀ-ॿ]/,
    [
      'KohinoorDevanagari-Regular',
      'DevanagariMT',
      'NotoSansDevanagari',
      'ITFDevanagari',
    ],
  ],
  [/[ঀ-৿]/, ['KohinoorBangla-Regular', 'BanglaMN', 'NotoSansBengali']],
  [/[஀-௿]/, ['KohinoorTelugu-Regular', 'TamilMN', 'NotoSansTamil']],
  [/[฀-๿]/, ['Thonburi', 'SukhumvitSet-Text', 'NotoSansThai']],
  [
    /[぀-ヿㇰ-ㇿ]/,
    [
      'HiraginoSans-W3',
      'HiraKakuProN-W3',
      'NotoSansJP-Regular',
      'ArialUnicodeMS',
    ],
  ],
  [
    /[가-힯ᄀ-ᇿ]/,
    ['AppleSDGothicNeo-Regular', 'NotoSansKR-Regular', 'ArialUnicodeMS'],
  ],
  [
    /[一-鿿㐀-䶿]/,
    [
      'PingFangSC-Regular',
      'STSong',
      'HiraginoSans-W3',
      'NotoSansSC-Regular',
      'ArialUnicodeMS',
    ],
  ],
  [/[Ѐ-ӿ]/, ['HelveticaNeue', 'ArialUnicodeMS', 'NotoSans-Regular']],
  [/[Ͱ-Ͽ]/, ['HelveticaNeue', 'ArialUnicodeMS', 'NotoSans-Regular']],
];
