1<?php 2 3namespace Mpdf\Language; 4 5use Mpdf\Ucdn; 6 7class ScriptToLanguage implements \Mpdf\Language\ScriptToLanguageInterface 8{ 9 10 private $scriptDelimiterMap = [ 11 'viet' => "\x{01A0}\x{01A1}\x{01AF}\x{01B0}\x{1EA0}-\x{1EF1}", 12 'persian' => "\x{067E}\x{0686}\x{0698}\x{06AF}", 13 'urdu' => "\x{0679}\x{0688}\x{0691}\x{06BA}\x{06BE}\x{06C1}\x{06D2}", 14 'pashto' => "\x{067C}\x{0681}\x{0685}\x{0689}\x{0693}\x{0696}\x{069A}\x{06BC}\x{06D0}", // ? and U+06AB, U+06CD 15 'sindhi' => "\x{067A}\x{067B}\x{067D}\x{067F}\x{0680}\x{0684}\x{068D}\x{068A}\x{068F}\x{068C}\x{0687}\x{0683}\x{0699}\x{06AA}\x{06A6}\x{06BB}\x{06B1}\x{06B3}", 16 ]; 17 18 private $scriptToLanguageMap = [ 19 /* European */ 20 Ucdn::SCRIPT_LATIN => 'und-Latn', 21 Ucdn::SCRIPT_ARMENIAN => 'hy', 22 Ucdn::SCRIPT_CYRILLIC => 'und-Cyrl', 23 Ucdn::SCRIPT_GEORGIAN => 'ka', 24 Ucdn::SCRIPT_GREEK => 'el', 25 Ucdn::SCRIPT_COPTIC => 'cop', 26 Ucdn::SCRIPT_GOTHIC => 'got', 27 Ucdn::SCRIPT_CYPRIOT => 'und-Cprt', 28 Ucdn::SCRIPT_GLAGOLITIC => 'und-Glag', 29 Ucdn::SCRIPT_LINEAR_B => 'und-Linb', 30 Ucdn::SCRIPT_OGHAM => 'und-Ogam', 31 Ucdn::SCRIPT_OLD_ITALIC => 'und-Ital', 32 Ucdn::SCRIPT_RUNIC => 'und-Runr', 33 Ucdn::SCRIPT_SHAVIAN => 'und-Shaw', 34 /* African */ 35 Ucdn::SCRIPT_ETHIOPIC => 'und-Ethi', 36 Ucdn::SCRIPT_NKO => 'nqo', 37 Ucdn::SCRIPT_BAMUM => 'bax', 38 Ucdn::SCRIPT_VAI => 'vai', 39 Ucdn::SCRIPT_EGYPTIAN_HIEROGLYPHS => 'und-Egyp', 40 Ucdn::SCRIPT_MEROITIC_CURSIVE => 'und-Merc', 41 Ucdn::SCRIPT_MEROITIC_HIEROGLYPHS => 'und-Mero', 42 Ucdn::SCRIPT_OSMANYA => 'und-Osma', 43 Ucdn::SCRIPT_TIFINAGH => 'und-Tfng', 44 /* Middle Eastern */ 45 Ucdn::SCRIPT_ARABIC => 'und-Arab', 46 Ucdn::SCRIPT_HEBREW => 'he', 47 Ucdn::SCRIPT_SYRIAC => 'syr', 48 Ucdn::SCRIPT_IMPERIAL_ARAMAIC => 'arc', 49 Ucdn::SCRIPT_AVESTAN => 'ae', 50 Ucdn::SCRIPT_CARIAN => 'xcr', 51 Ucdn::SCRIPT_LYCIAN => 'xlc', 52 Ucdn::SCRIPT_LYDIAN => 'xld', 53 Ucdn::SCRIPT_MANDAIC => 'mid', 54 Ucdn::SCRIPT_OLD_PERSIAN => 'peo', 55 Ucdn::SCRIPT_PHOENICIAN => 'phn', 56 Ucdn::SCRIPT_SAMARITAN => 'smp', 57 Ucdn::SCRIPT_UGARITIC => 'uga', 58 Ucdn::SCRIPT_CUNEIFORM => 'und-Xsux', 59 Ucdn::SCRIPT_OLD_SOUTH_ARABIAN => 'und-Sarb', 60 Ucdn::SCRIPT_INSCRIPTIONAL_PARTHIAN => 'und-Prti', 61 Ucdn::SCRIPT_INSCRIPTIONAL_PAHLAVI => 'und-Phli', 62 /* Central Asian */ 63 Ucdn::SCRIPT_MONGOLIAN => 'mn', 64 Ucdn::SCRIPT_TIBETAN => 'bo', 65 Ucdn::SCRIPT_OLD_TURKIC => 'und-Orkh', 66 Ucdn::SCRIPT_PHAGS_PA => 'und-Phag', 67 /* South Asian */ 68 Ucdn::SCRIPT_BENGALI => 'bn', 69 Ucdn::SCRIPT_DEVANAGARI => 'hi', 70 Ucdn::SCRIPT_GUJARATI => 'gu', 71 Ucdn::SCRIPT_GURMUKHI => 'pa', 72 Ucdn::SCRIPT_KANNADA => 'kn', 73 Ucdn::SCRIPT_MALAYALAM => 'ml', 74 Ucdn::SCRIPT_ORIYA => 'or', 75 Ucdn::SCRIPT_SINHALA => 'si', 76 Ucdn::SCRIPT_TAMIL => 'ta', 77 Ucdn::SCRIPT_TELUGU => 'te', 78 Ucdn::SCRIPT_CHAKMA => 'ccp', 79 Ucdn::SCRIPT_LEPCHA => 'lep', 80 Ucdn::SCRIPT_LIMBU => 'lif', 81 Ucdn::SCRIPT_OL_CHIKI => 'sat', 82 Ucdn::SCRIPT_SAURASHTRA => 'saz', 83 Ucdn::SCRIPT_SYLOTI_NAGRI => 'syl', 84 Ucdn::SCRIPT_TAKRI => 'dgo', 85 Ucdn::SCRIPT_THAANA => 'dv', 86 Ucdn::SCRIPT_BRAHMI => 'und-Brah', 87 Ucdn::SCRIPT_KAITHI => 'und-Kthi', 88 Ucdn::SCRIPT_KHAROSHTHI => 'und-Khar', 89 Ucdn::SCRIPT_MEETEI_MAYEK => 'und-Mtei', /* or omp-Mtei */ 90 Ucdn::SCRIPT_SHARADA => 'und-Shrd', 91 Ucdn::SCRIPT_SORA_SOMPENG => 'und-Sora', 92 /* South East Asian */ 93 Ucdn::SCRIPT_KHMER => 'km', 94 Ucdn::SCRIPT_LAO => 'lo', 95 Ucdn::SCRIPT_MYANMAR => 'my', 96 Ucdn::SCRIPT_THAI => 'th', 97 Ucdn::SCRIPT_BALINESE => 'ban', 98 Ucdn::SCRIPT_BATAK => 'bya', 99 Ucdn::SCRIPT_BUGINESE => 'bug', 100 Ucdn::SCRIPT_CHAM => 'cjm', 101 Ucdn::SCRIPT_JAVANESE => 'jv', 102 Ucdn::SCRIPT_KAYAH_LI => 'und-Kali', 103 Ucdn::SCRIPT_REJANG => 'und-Rjng', 104 Ucdn::SCRIPT_SUNDANESE => 'su', 105 Ucdn::SCRIPT_TAI_LE => 'tdd', 106 Ucdn::SCRIPT_TAI_THAM => 'und-Lana', 107 Ucdn::SCRIPT_TAI_VIET => 'blt', 108 Ucdn::SCRIPT_NEW_TAI_LUE => 'und-Talu', 109 /* Phillipine */ 110 Ucdn::SCRIPT_BUHID => 'bku', 111 Ucdn::SCRIPT_HANUNOO => 'hnn', 112 Ucdn::SCRIPT_TAGALOG => 'tl', 113 Ucdn::SCRIPT_TAGBANWA => 'tbw', 114 /* East Asian */ 115 Ucdn::SCRIPT_HAN => 'und-Hans', // und-Hans (simplified) or und-Hant (Traditional) 116 Ucdn::SCRIPT_HANGUL => 'ko', 117 Ucdn::SCRIPT_HIRAGANA => 'ja', 118 Ucdn::SCRIPT_KATAKANA => 'ja', 119 Ucdn::SCRIPT_LISU => 'lis', 120 Ucdn::SCRIPT_BOPOMOFO => 'und-Bopo', // zh-CN, zh-TW, zh-HK 121 Ucdn::SCRIPT_MIAO => 'und-Plrd', 122 Ucdn::SCRIPT_YI => 'und-Yiii', 123 /* American */ 124 Ucdn::SCRIPT_CHEROKEE => 'chr', 125 Ucdn::SCRIPT_CANADIAN_ABORIGINAL => 'cr', 126 Ucdn::SCRIPT_DESERET => 'und-Dsrt', 127 /* Other */ 128 Ucdn::SCRIPT_BRAILLE => 'und-Brai', 129 ]; 130 131 public function getLanguageByScript($script) 132 { 133 return isset($this->scriptToLanguageMap[$script]) ? $this->scriptToLanguageMap[$script] : null; 134 } 135 136 public function getLanguageDelimiters($language) 137 { 138 return isset($this->scriptDelimiterMap[$language]) ? $this->scriptDelimiterMap[$language] : null; 139 } 140 141} 142