PluginProbe
PDF & Print by BestWebSoft – WordPress Posts and Pages PDF Generator Plugin / trunk
PDF & Print by BestWebSoft – WordPress Posts and Pages PDF Generator Plugin vtrunk
trunk 1.5 1.6 1.7 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.1 All 71 releases
pdf-print / mpdf / config_lang2fonts.php

config_lang2fonts.php in PDF & Print by BestWebSoft – WordPress Posts and Pages PDF Generator Plugin trunk, at mpdf/config_lang2fonts.php

514 lines 13.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /*
4 mPDF recognises IETF language tags as:
5 - a single primary language subtag composed of a two letter language code from ISO 639-1 (2002), or a three letter code from ISO 639-2 (1998), ISO 639-3 (2007) or ISO 639-5 (2008) (usually written in lower case);
6 - an optional script subtag, composed of a four letter script code from ISO 15924 (usually written in title case);
7 - an optional region subtag composed of a two letter country code from ISO 3166-1 alpha-2 (usually written in upper case), or a three digit code from UN M.49 for geographical regions;
8 Subtags are not case sensitive, but the specification recommends using the same case as in the Language Subtag Registry, where region subtags are uppercase, script subtags are titlecase and all other subtags are lowercase.
9
10 Region subtags are often deprecated by the registration of specific primary language subtags from ISO 639-3 which are now "preferred values". For example, "ar-DZ" is deprecated with the preferred value "arq" for Algerian Spoken Arabic;
11
12 Example: Serbian written in the Cyrillic (sr-Cyrl) or Latin (sr-Latn) script
13
14 und (for undetermined or undefined) is used in situations in which a script must be indicated but the language cannot be identified.
15 e.g. und-Cyrl is an undefined language written in Cyrillic script.
16 */
17
18 function GetLangOpts($llcc, $adobeCJK, &$fontdata)
19 {
20 $tags = preg_split('/-/', $llcc);
21 $lang = strtolower($tags[0]);
22 $country = '';
23 $script = '';
24 if (isset($tags[1]) && $tags[1]) {
25 if (strlen($tags[1]) == 4) {
26 $script = strtolower($tags[1]);
27 } else {
28 $country = strtolower($tags[1]);
29 }
30 }
31 if (isset($tags[2]) && $tags[2]) {
32 $country = strtolower($tags[2]);
33 }
34
35 $unifont = "";
36 $coreSuitable = false;
37
38 switch ($lang) {
39
40 /* European */
41 CASE "en": CASE "eng": // English // LATIN
42 CASE "eu": CASE "eus": // Basque
43 CASE "br": CASE "bre": // Breton
44 CASE "ca": CASE "cat": // Catalan
45 CASE "co": CASE "cos": // Corsican
46 CASE "kw": CASE "cor": // Cornish
47 CASE "cy": CASE "cym": // Welsh
48 CASE "cs": CASE "ces": // Czech
49 CASE "da": CASE "dan": // Danish
50 CASE "nl": CASE "nld": // Dutch
51 CASE "et": CASE "est": // Estonian
52 CASE "fo": CASE "fao": // Faroese
53 CASE "fi": CASE "fin": // Finnish
54 CASE "fr": CASE "fra": // French
55 CASE "gl": CASE "glg": // Galician
56 CASE "de": CASE "deu": // German
57 CASE "ht": CASE "hat": // Haitian; Haitian Creole
58 CASE "hu": CASE "hun": // Hungarian
59 CASE "ga": CASE "gle": // Irish
60 CASE "is": CASE "isl": // Icelandic
61 CASE "it": CASE "ita": // Italian
62 CASE "la": CASE "lat": // Latin
63 CASE "lb": CASE "ltz": // Luxembourgish
64 CASE "li": CASE "lim": // Limburgish
65 CASE "lt": CASE "lit": // Lithuanian
66 CASE "lv": CASE "lav": // Latvian
67 CASE "gv": CASE "glv": // Manx
68 CASE "no": CASE "nor": // Norwegian
69 CASE "nn": CASE "nno": // Norwegian Nynorsk
70 CASE "nb": CASE "nob": // Norwegian Bokmål
71 CASE "pl": CASE "pol": // Polish
72 CASE "pt": CASE "por": // Portuguese
73 CASE "ro": CASE "ron": // Romanian
74 CASE "gd": CASE "gla": // Scottish Gaelic
75 CASE "es": CASE "spa": // Spanish
76 CASE "sv": CASE "swe": // Swedish
77 CASE "sl": CASE "slv": // Slovene
78 CASE "sk": CASE "slk": // Slovak
79 $unifont = "dejavusanscondensed";
80 // Edit this value to define how mPDF behaves when using new mPDF('-x')
81 // If set to TRUE, mPDF will use Adobe core fonts only when it recognises the languages above
82 $coreSuitable = true;
83 break;
84
85 CASE "ru": CASE "rus": // Russian // CYRILLIC
86 CASE "ab": CASE "abk": // Abkhaz
87 CASE "av": CASE "ava": // Avaric
88 CASE "ba": CASE "bak": // Bashkir
89 CASE "be": CASE "bel": // Belarusian
90 CASE "bg": CASE "bul": // Bulgarian
91 CASE "ce": CASE "che": // Chechen
92 CASE "cv": CASE "chv": // Chuvash
93 CASE "kk": CASE "kaz": // Kazakh
94 CASE "kv": CASE "kom": // Komi
95 CASE "ky": CASE "kir": // Kyrgyz
96 CASE "mk": CASE "mkd": // Macedonian
97 CASE "cu": CASE "chu": // Old Church Slavonic
98 CASE "os": CASE "oss": // Ossetian
99 CASE "sr": CASE "srp": // Serbian
100 CASE "tg": CASE "tgk": // Tajik
101 CASE "tt": CASE "tat": // Tatar
102 CASE "tk": CASE "tuk": // Turkmen
103 CASE "uk": CASE "ukr": // Ukrainian
104 $unifont = "dejavusanscondensed"; /* freeserif best coverage for supplements etc. */
105 break;
106
107 CASE "hy": CASE "hye": // ARMENIAN
108 $unifont = "dejavusans";
109 break;
110 CASE "ka": CASE "kat": // GEORGIAN
111 $unifont = "dejavusans";
112 break;
113
114 CASE "el": CASE "ell": // GREEK
115 $unifont = "dejavusanscondensed";
116 break;
117 CASE "cop": // COPTIC
118 $unifont = "quivira";
119 break;
120
121 CASE "got": // GOTHIC
122 $unifont = "freeserif";
123 break;
124
125 /* African */
126 CASE "nqo": // NKO
127 $unifont = "dejavusans";
128 break;
129 //CASE "bax": // BAMUM
130 //CASE "ha": CASE "hau": // Hausa
131 CASE "vai": // VAI
132 $unifont = "freesans";
133 break;
134 CASE "am": CASE "amh": // Amharic ETHIOPIC
135 CASE "ti": CASE "tir": // Tigrinya ETHIOPIC
136 $unifont = "abyssinicasil";
137 break;
138
139
140
141 /* Middle Eastern */
142 CASE "ar": CASE "ara": // Arabic NB Arabic text identified by Autofont will be marked as und-Arab
143 $unifont = "xbriyaz";
144 break;
145 CASE "fa": CASE "fas": // Persian (Farsi)
146 $unifont = "xbriyaz";
147 break;
148 CASE "ps": CASE "pus": // Pashto
149 $unifont = "xbriyaz";
150 break;
151 CASE "ku": CASE "kur": // Kurdish
152 $unifont = "xbriyaz";
153 break;
154 CASE "ur": CASE "urd": // Urdu
155 $unifont = "xbriyaz";
156 break;
157 CASE "he": CASE "heb": // HEBREW
158 CASE "yi": CASE "yid": // Yiddish
159 $unifont = "taameydavidclm"; // dejavusans,dejavusanscondensed,freeserif are fine if you do not need cantillation marks
160 break;
161
162
163 CASE "syr": // SYRIAC
164 $unifont = "estrangeloedessa";
165 break;
166
167
168 //CASE "arc": // IMPERIAL_ARAMAIC
169 //CASE ""ae: // AVESTAN
170 CASE "xcr": // CARIAN
171 $unifont = "aegean";
172 break;
173 CASE "xlc": // LYCIAN
174 $unifont = "aegean";
175 break;
176 CASE "xld": // LYDIAN
177 $unifont = "aegean";
178 break;
179 //CASE "mid": // MANDAIC
180 //CASE "peo": // OLD_PERSIAN
181 CASE "phn": // PHOENICIAN
182 $unifont = "aegean";
183 break;
184 //CASE "smp": // SAMARITAN
185 CASE "uga": // UGARITIC
186 $unifont = "aegean";
187 break;
188
189
190 /* Central Asian */
191 CASE "bo": CASE "bod": // TIBETAN
192 CASE "dz": CASE "dzo": // Dzongkha
193 $unifont = "jomolhari";
194 break;
195 //CASE "mn": CASE "mon": // MONGOLIAN (Vertical script)
196 //CASE "ug": CASE "uig": // Uyghur
197 //CASE "uz": CASE "uzb": // Uzbek
198 //CASE "az": CASE "azb": // South Azerbaijani
199
200
201 /* South Asian */
202 CASE "as": CASE "asm": // Assamese
203 $unifont = "freeserif";
204 break;
205 CASE "bn": CASE "ben": // BENGALI; Bangla
206 $unifont = "freeserif";
207 break;
208 CASE "ks": CASE "kas": // Kashmiri
209 $unifont = "freeserif";
210 break;
211 CASE "hi": CASE "hin": // Hindi DEVANAGARI
212 CASE "bh": CASE "bih": // Bihari (Bhojpuri, Magahi, and Maithili)
213 CASE "sa": CASE "san": // Sanskrit
214 $unifont = "freeserif";
215 break;
216 CASE "gu": CASE "guj": // Gujarati
217 $unifont = "freeserif";
218 break;
219 CASE "pa": CASE "pan": // Panjabi, Punjabi GURMUKHI
220 $unifont = "freeserif";
221 break;
222 CASE "kn": CASE "kan": // Kannada
223 $unifont = "lohitkannada";
224 break;
225 CASE "mr": CASE "mar": // Marathi
226 $unifont = "freeserif";
227 break;
228 CASE "ml": CASE "mal": // MALAYALAM
229 $unifont = "freeserif";
230 break;
231 CASE "ne": CASE "nep": // Nepali
232 $unifont = "freeserif";
233 break;
234 CASE "or": CASE "ori": // ORIYA
235 $unifont = "freeserif";
236 break;
237 CASE "si": CASE "sin": // SINHALA
238 $unifont = "kaputaunicode";
239 break;
240 CASE "ta": CASE "tam": // TAMIL
241 $unifont = "freeserif";
242 break;
243 CASE "te": CASE "tel": // TELUGU
244 $unifont = "pothana2000";
245 break;
246
247
248 // Sindhi (Arabic or Devanagari)
249 CASE "sd": CASE "snd": // Sindhi
250 if ($country == "IN") {
251 $unifont = "freeserif";
252 } else if ($country == "PK") {
253 $unifont = "lateef";
254 } else {
255 $unifont = "lateef";
256 }
257 break;
258
259
260 //CASE "ccp": // CHAKMA
261 //CASE "lep": // LEPCHA
262 CASE "lif": // LIMBU
263 $unifont = "sun-exta";
264 break;
265 //CASE "sat": // OL_CHIKI
266 //CASE "saz": // SAURASHTRA
267 CASE "syl": // SYLOTI_NAGRI
268 $unifont = "mph2bdamase";
269 break;
270 //CASE "dgo": // TAKRI
271 CASE "dv": CASE "div": // Divehi; Maldivian THAANA
272 $unifont = "freeserif";
273 break;
274
275
276
277 /* South East Asian */
278 CASE "km": CASE "khm": // KHMER
279 $unifont = "khmeros";
280 break;
281 CASE "lo": CASE "lao": // LAO
282 $unifont = "dhyana";
283 break;
284 CASE "my": CASE "mya": // MYANMAR Burmese
285 $unifont = "tharlon"; // zawgyi-one is non-unicode compliant but in wide usage
286 // ayar is also not strictly compliant
287 // padaukbook is unicode compliant
288 break;
289 CASE "th": CASE "tha": // THAI
290 $unifont = "garuda";
291 break;
292
293
294
295 // VIETNAMESE
296 CASE "vi": CASE "vie": // Vietnamese
297 $unifont = "dejavusanscondensed";
298 break;
299
300
301 //CASE "ms": CASE "msa": // Malay
302 //CASE "ban": // BALINESE
303 //CASE "bya": // BATAK
304 CASE "bug": // BUGINESE
305 $unifont = "freeserif";
306 break;
307 //CASE "cjm": // CHAM
308 //CASE "jv": // JAVANESE
309 CASE "su": // SUNDANESE
310 $unifont = "sundaneseunicode";
311 break;
312 CASE "tdd": // TAI_LE
313 $unifont = "tharlon";
314 break;
315 CASE "blt": // TAI_VIET
316 $unifont = "taiheritagepro";
317 break;
318
319
320 /* Phillipine */
321 CASE "bku": // BUHID
322 $unifont = "quivira";
323 break;
324 CASE "hnn": // HANUNOO
325 $unifont = "quivira";
326 break;
327 CASE "tl": // TAGALOG
328 $unifont = "quivira";
329 break;
330 CASE "tbw": // TAGBANWA
331 $unifont = "quivira";
332 break;
333
334
335 /* East Asian */
336 CASE "zh": CASE "zho": // Chinese
337 if ($country == "HK" || $country == "TW") {
338 if ($adobeCJK) {
339 $unifont = "big5";
340 } else {
341 $unifont = "sun-exta";
342 }
343 } else if ($country == "CN") {
344 if ($adobeCJK) {
345 $unifont = "gb";
346 } else {
347 $unifont = "sun-exta";
348 }
349 } else {
350 if ($adobeCJK) {
351 $unifont = "gb";
352 } else {
353 $unifont = "sun-exta";
354 }
355 }
356 break;
357 CASE "ko": CASE "kor": // HANGUL Korean
358 if ($adobeCJK) {
359 $unifont = "uhc";
360 } else {
361 $unifont = "unbatang";
362 }
363 break;
364 CASE "ja": CASE "jpn": // Japanese HIRAGANA KATAKANA
365 if ($adobeCJK) {
366 $unifont = "sjis";
367 } else {
368 $unifont = "sun-exta";
369 }
370 break;
371 CASE "ii": CASE "iii": // Nuosu; Yi
372 if ($adobeCJK) {
373 $unifont = "gb";
374 } else {
375 $unifont = "sun-exta";
376 }
377 CASE "lis": // LISU
378 $unifont = "quivira";
379 break;
380
381
382
383 /* American */
384 CASE "chr": // CHEROKEE
385 CASE "oj": CASE "oji": // Ojibwe; Chippewa
386 CASE "cr": CASE "cre": // Cree CANADIAN_ABORIGINAL
387 CASE "iu": CASE "iku": // Inuktitut
388 $unifont = "aboriginalsans";
389 break;
390
391
392 /* Undetermined language - script used */
393 CASE "und":
394
395 switch ($script) {
396
397 /* European */
398 CASE "latn": // LATIN
399 $unifont = "dejavusanscondensed";
400 break;
401 CASE "cyrl": // CYRILLIC
402 $unifont = "dejavusanscondensed"; /* freeserif best coverage for supplements etc. */
403 break;
404 CASE "cprt": // CYPRIOT
405 $unifont = "aegean";
406 break;
407 CASE "glag": // GLAGOLITIC
408 $unifont = "mph2bdamase";
409 break;
410 CASE "linb": // LINEAR_B
411 $unifont = "aegean";
412 break;
413 CASE "ogam": // OGHAM
414 $unifont = "dejavusans";
415 break;
416 CASE "ital": // OLD_ITALIC
417 $unifont = "aegean";
418 break;
419 CASE "runr": // RUNIC
420 $unifont = "sun-exta";
421 break;
422 CASE "shaw": // SHAVIAN
423 $unifont = "mph2bdamase";
424 break;
425
426 /* African */
427 CASE "egyp": // EGYPTIAN_HIEROGLYPHS
428 $unifont = "aegyptus";
429 break;
430 CASE "ethi": // ETHIOPIC
431 $unifont = "abyssinicasil";
432 break;
433 //CASE "merc": // MEROITIC_CURSIVE
434 //CASE "mero": // MEROITIC_HIEROGLYPHS
435 CASE "osma": // OSMANYA
436 $unifont = "mph2bdamase";
437 break;
438 CASE "tfng": // TIFINAGH
439 $unifont = "dejavusans";
440 break;
441
442 /* Middle Eastern */
443 CASE "arab": // ARABIC
444 $unifont = "xbriyaz";
445 break;
446 CASE "xsux": // CUNEIFORM
447 $unifont = "akkadian";
448 break;
449 //CASE "sarb": // OLD_SOUTH_ARABIAN
450 //CASE "prti": // INSCRIPTIONAL_PARTHIAN
451 //CASE "phli": // INSCRIPTIONAL_PAHLAVI
452
453
454 /* Central Asian */
455 //CASE "orkh": // OLD_TURKIC
456 //CASE "phag": // PHAGS_PA (Vertical script)
457
458 /* South Asian */
459 //CASE "brah": // BRAHMI
460 //CASE "kthi": // KAITHI
461 CASE "khar": // KHAROSHTHI
462 $unifont = "mph2bdamase";
463 break;
464 CASE "mtei": // MEETEI_MAYEK
465 $unifont = "eeyekunicode";
466 break;
467 //CASE "shrd": // SHARADA
468 //CASE "sora": // SORA_SOMPENG
469
470 /* South East Asian */
471 CASE "kali": // KAYAH_LI
472 $unifont = "freemono";
473 break;
474 //CASE "rjng": // REJANG
475 CASE "lana": // TAI_THAM
476 $unifont = "lannaalif";
477 break;
478 CASE "talu": // NEW_TAI_LUE
479 $unifont = "daibannasilbook";
480 break;
481
482 /* East Asian */
483 CASE "hans": // HAN (SIMPLIFIED)
484 if ($adobeCJK) {
485 $unifont = "gb";
486 } else {
487 $unifont = "sun-exta";
488 }
489 break;
490 CASE "bopo": // BOPOMOFO
491 $unifont = "sun-exta";
492 break;
493 //CASE "plrd": // MIAO
494 CASE "yiii": // YI
495 $unifont = "sun-exta";
496 break;
497
498 /* American */
499 CASE "dsrt": // DESERET
500 $unifont = "mph2bdamase";
501 break;
502
503 /* Other */
504 CASE "brai": // BRAILLE
505 $unifont = "dejavusans";
506 break;
507 } // endswitch
508 break;
509 } // endswitch
510
511
512 return array($coreSuitable, $unifont);
513 }
514