<?phpnamespace Mpdf\Language;class LanguageToFont implements \Mpdf\Language\LanguageToFontInterface{public function getLanguageOptions($llcc, $adobeCJK){$tags = explode('-', $llcc);$lang = strtolower($tags[0]);$country = '';$script = '';if (!empty($tags[1])) {if (strlen($tags[1]) === 4) {$script = strtolower($tags[1]);} else {$country = strtolower($tags[1]);}}if (!empty($tags[2])) {$country = strtolower($tags[2]);}$unifont = '';$coreSuitable = false;switch ($lang) {/* European */case 'en':case 'eng': // English // LATINcase 'eu':case 'eus': // Basquecase 'br':case 'bre': // Bretoncase 'ca':case 'cat': // Catalancase 'co':case 'cos': // Corsicancase 'kw':case 'cor': // Cornishcase 'cy':case 'cym': // Welshcase 'cs':case 'ces': // Czechcase 'da':case 'dan': // Danishcase 'nl':case 'nld': // Dutchcase 'et':case 'est': // Estoniancase 'fo':case 'fao': // Faroesecase 'fi':case 'fin': // Finnishcase 'fr':case 'fra': // Frenchcase 'gl':case 'glg': // Galiciancase 'de':case 'deu': // Germancase 'ht':case 'hat': // Haitian; Haitian Creolecase 'hu':case 'hun': // Hungariancase 'ga':case 'gle': // Irishcase 'is':case 'isl': // Icelandiccase 'it':case 'ita': // Italiancase 'la':case 'lat': // Latincase 'lb':case 'ltz': // Luxembourgishcase 'li':case 'lim': // Limburgishcase 'lt':case 'lit': // Lithuaniancase 'lv':case 'lav': // Latviancase 'gv':case 'glv': // Manxcase 'no':case 'nor': // Norwegiancase 'nn':case 'nno': // Norwegian Nynorskcase 'nb':case 'nob': // Norwegian Bokmålcase 'pl':case 'pol': // Polishcase 'pt':case 'por': // Portuguesecase 'ro':case 'ron': // Romaniancase 'gd':case 'gla': // Scottish Gaeliccase 'es':case 'spa': // Spanishcase 'sv':case 'swe': // Swedishcase 'sl':case 'slv': // Slovenecase 'sk':case 'slk': // Slovak$coreSuitable = true;break;case 'ru':case 'rus': // Russian // CYRILLICcase 'ab':case 'abk': // Abkhazcase 'av':case 'ava': // Avariccase 'ba':case 'bak': // Bashkircase 'be':case 'bel': // Belarusiancase 'bg':case 'bul': // Bulgariancase 'ce':case 'che': // Chechencase 'cv':case 'chv': // Chuvashcase 'kk':case 'kaz': // Kazakhcase 'kv':case 'kom': // Komicase 'ky':case 'kir': // Kyrgyzcase 'mk':case 'mkd': // Macedoniancase 'cu':case 'chu': // Old Church Slavoniccase 'os':case 'oss': // Ossetiancase 'sr':case 'srp': // Serbiancase 'tg':case 'tgk': // Tajikcase 'tt':case 'tat': // Tatarcase 'tk':case 'tuk': // Turkmencase 'uk':case 'ukr': // Ukrainian$unifont = 'dejavusanscondensed'; /* freeserif best coverage for supplements etc. */break;case 'hy':case 'hye': // ARMENIAN$unifont = 'dejavusans';break;case 'ka':case 'kat': // GEORGIAN$unifont = 'dejavusans';break;case 'el':case 'ell': // GREEK$unifont = 'dejavusanscondensed';break;case 'cop': // COPTIC$unifont = 'quivira';break;case 'got': // GOTHIC$unifont = 'freeserif';break;/* African */case 'nqo': // NKO$unifont = 'dejavusans';break;//CASE 'bax': // BAMUM//CASE 'ha': CASE 'hau': // Hausacase 'vai': // VAI$unifont = 'freesans';break;case 'am':case 'amh': // Amharic ETHIOPICcase 'ti':case 'tir': // Tigrinya ETHIOPIC$unifont = 'abyssinicasil';break;/* Middle Eastern */case 'ar':case 'ara': // Arabic NB Arabic text identified by Autofont will be marked as und-Arab$unifont = 'xbriyaz';break;case 'fa':case 'fas': // Persian (Farsi)$unifont = 'xbriyaz';break;case 'ps':case 'pus': // Pashto$unifont = 'xbriyaz';break;case 'ku':case 'kur': // Kurdish$unifont = 'xbriyaz';break;case 'ur':case 'urd': // Urdu$unifont = 'xbriyaz';break;case 'he':case 'heb': // HEBREWcase 'yi':case 'yid': // Yiddish$unifont = 'taameydavidclm'; // dejavusans,dejavusanscondensed,freeserif are fine if you do not need cantillation marksbreak;case 'syr': // SYRIAC$unifont = 'estrangeloedessa';break;//CASE 'arc': // IMPERIAL_ARAMAIC//CASE ''ae: // AVESTANcase 'xcr': // CARIAN$unifont = 'aegean';break;case 'xlc': // LYCIAN$unifont = 'aegean';break;case 'xld': // LYDIAN$unifont = 'aegean';break;//CASE 'mid': // MANDAIC//CASE 'peo': // OLD_PERSIANcase 'phn': // PHOENICIAN$unifont = 'aegean';break;//CASE 'smp': // SAMARITANcase 'uga': // UGARITIC$unifont = 'aegean';break;/* Central Asian */case 'bo':case 'bod': // TIBETANcase 'dz':case 'dzo': // Dzongkha$unifont = 'jomolhari';break;//CASE 'mn': CASE 'mon': // MONGOLIAN (Vertical script)//CASE 'ug': CASE 'uig': // Uyghur//CASE 'uz': CASE 'uzb': // Uzbek//CASE 'az': CASE 'azb': // South Azerbaijani/* South Asian */case 'as':case 'asm': // Assamese$unifont = 'freeserif';break;case 'bn':case 'ben': // BENGALI; Bangla$unifont = 'freeserif';break;case 'ks':case 'kas': // Kashmiri$unifont = 'freeserif';break;case 'hi':case 'hin': // Hindi DEVANAGARIcase 'bh':case 'bih': // Bihari (Bhojpuri, Magahi, and Maithili)case 'sa':case 'san': // Sanskrit$unifont = 'freeserif';break;case 'gu':case 'guj': // Gujarati$unifont = 'freeserif';break;case 'pa':case 'pan': // Panjabi, Punjabi GURMUKHI$unifont = 'freeserif';break;case 'kn':case 'kan': // Kannada$unifont = 'lohitkannada';break;case 'mr':case 'mar': // Marathi$unifont = 'freeserif';break;case 'ml':case 'mal': // MALAYALAM$unifont = 'freeserif';break;case 'ne':case 'nep': // Nepali$unifont = 'freeserif';break;case 'or':case 'ori': // ORIYA$unifont = 'freeserif';break;case 'si':case 'sin': // SINHALA$unifont = 'kaputaunicode';break;case 'ta':case 'tam': // TAMIL$unifont = 'freeserif';break;case 'te':case 'tel': // TELUGU$unifont = 'pothana2000';break;// Sindhi (Arabic or Devanagari)case 'sd':case 'snd': // Sindhi$unifont = 'lateef';if ($country === 'in') {$unifont = 'freeserif';}break;//CASE 'ccp': // CHAKMA//CASE 'lep': // LEPCHAcase 'lif': // LIMBU$unifont = 'sun-exta';break;//CASE 'sat': // OL_CHIKI//CASE 'saz': // SAURASHTRAcase 'syl': // SYLOTI_NAGRI$unifont = 'mph2bdamase';break;//CASE 'dgo': // TAKRIcase 'dv':case 'div': // Divehi; Maldivian THAANA$unifont = 'freeserif';break;/* South East Asian */case 'km':case 'khm': // KHMER$unifont = 'khmeros';break;case 'lo':case 'lao': // LAO$unifont = 'dhyana';break;case 'my':case 'mya': // MYANMAR Burmese$unifont = 'tharlon'; // zawgyi-one is non-unicode compliant but in wide usage// ayar is also not strictly compliant// padaukbook is unicode compliantbreak;case 'th':case 'tha': // THAI$unifont = 'garuda';break;// VIETNAMESEcase 'vi':case 'vie': // Vietnamese$unifont = 'dejavusanscondensed';break;//CASE 'ms': CASE 'msa': // Malay//CASE 'ban': // BALINESE//CASE 'bya': // BATAKcase 'bug': // BUGINESE$unifont = 'freeserif';break;//CASE 'cjm': // CHAM//CASE 'jv': // JAVANESEcase 'su': // SUNDANESE$unifont = 'sundaneseunicode';break;case 'tdd': // TAI_LE$unifont = 'tharlon';break;case 'blt': // TAI_VIET$unifont = 'taiheritagepro';break;/* Phillipine */case 'bku': // BUHID$unifont = 'quivira';break;case 'hnn': // HANUNOO$unifont = 'quivira';break;case 'tl': // TAGALOG$unifont = 'quivira';break;case 'tbw': // TAGBANWA$unifont = 'quivira';break;/* East Asian */case 'zh':case 'zho': // Chinese$unifont = 'sun-exta';if ($adobeCJK) {$unifont = 'gb';if ($country === 'hk' || $country === 'tw') {$unifont = 'big5';}}break;case 'ko':case 'kor': // HANGUL Korean$unifont = 'unbatang';if ($adobeCJK) {$unifont = 'uhc';}break;case 'ja':case 'jpn': // Japanese HIRAGANA KATAKANA$unifont = 'sun-exta';if ($adobeCJK) {$unifont = 'sjis';}break;case 'ii':case 'iii': // Nuosu; Yi$unifont = 'sun-exta';if ($adobeCJK) {$unifont = 'gb';}break;case 'lis': // LISU$unifont = 'quivira';break;/* American */case 'chr': // CHEROKEEcase 'oj':case 'oji': // Ojibwe; Chippewacase 'cr':case 'cre': // Cree CANADIAN_ABORIGINALcase 'iu':case 'iku': // Inuktitut$unifont = 'aboriginalsans';break;/* Undetermined language - script used */case 'und':$unifont = $this->fontByScript($script, $adobeCJK);break;}return [$coreSuitable, $unifont];}protected function fontByScript($script, $adobeCJK){switch ($script) {/* European */case 'latn': // LATINreturn 'dejavusanscondensed';case 'cyrl': // CYRILLICreturn 'dejavusanscondensed'; /* freeserif best coverage for supplements etc. */case 'cprt': // CYPRIOTreturn 'aegean';case 'glag': // GLAGOLITICreturn 'mph2bdamase';case 'linb': // LINEAR_Breturn 'aegean';case 'ogam': // OGHAMreturn 'dejavusans';case 'ital': // OLD_ITALICreturn 'aegean';case 'runr': // RUNICreturn 'sun-exta';case 'shaw': // SHAVIANreturn 'mph2bdamase';/* African */case 'egyp': // EGYPTIAN_HIEROGLYPHSreturn 'aegyptus';case 'ethi': // ETHIOPICreturn 'abyssinicasil';//CASE 'merc': // MEROITIC_CURSIVE//CASE 'mero': // MEROITIC_HIEROGLYPHScase 'osma': // OSMANYAreturn 'mph2bdamase';case 'tfng': // TIFINAGHreturn 'dejavusans';/* Middle Eastern */case 'arab': // ARABICreturn 'xbriyaz';case 'xsux': // CUNEIFORMreturn 'akkadian';//CASE 'sarb': // OLD_SOUTH_ARABIAN//CASE 'prti': // INSCRIPTIONAL_PARTHIAN//CASE 'phli': // INSCRIPTIONAL_PAHLAVI/* Central Asian *///CASE 'orkh': // OLD_TURKIC//CASE 'phag': // PHAGS_PA (Vertical script)/* South Asian *///CASE 'brah': // BRAHMI//CASE 'kthi': // KAITHIcase 'khar': // KHAROSHTHIreturn 'mph2bdamase';case 'mtei': // MEETEI_MAYEKreturn 'eeyekunicode';//CASE 'shrd': // SHARADA//CASE 'sora': // SORA_SOMPENG/* South East Asian */case 'kali': // KAYAH_LIreturn 'freemono';//CASE 'rjng': // REJANGcase 'lana': // TAI_THAMreturn 'lannaalif';case 'talu': // NEW_TAI_LUEreturn 'daibannasilbook';/* East Asian */case 'hans': // HAN (SIMPLIFIED)if ($adobeCJK) {return 'gb';}return 'sun-exta';case 'bopo': // BOPOMOFOreturn 'sun-exta';//CASE 'plrd': // MIAOcase 'yiii': // YIreturn 'sun-exta';/* American */case 'dsrt': // DESERETreturn 'mph2bdamase';/* Other */case 'brai': // BRAILLEreturn 'dejavusans';}return null;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。