package org.docx4j.fonts;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LanguageTagToScriptMapping {
protected static Logger log = LoggerFactory.getLogger(LanguageTagToScriptMapping.class);
/* The purpose of this class is to map an attribute value
* from w:themeFontLang in the settings part,
* for example:
*
* <w:themeFontLang w:val="en-US" w:eastAsia="ko-KR"/>
*
* to the value of @script in the theme part.
*
* <a:font script="Jpan" typeface="MS 明朝"/>
<a:font script="Hang" typeface="맑은 고딕"/>
<a:font script="Hans" typeface="宋体"/>
<a:font script="Hant" typeface="新細明體"/>
<a:font script="Arab" typeface="Arial"/>
<a:font script="Hebr" typeface="Arial"/>
<a:font script="Thai" typeface="Cordia New"/>
<a:font script="Ethi" typeface="Nyala"/>
<a:font script="Beng" typeface="Vrinda"/>
<a:font script="Gujr" typeface="Shruti"/>
<a:font script="Khmr" typeface="DaunPenh"/>
<a:font script="Knda" typeface="Tunga"/>
<a:font script="Guru" typeface="Raavi"/>
<a:font script="Cans" typeface="Euphemia"/>
<a:font script="Cher" typeface="Plantagenet Cherokee"/>
<a:font script="Yiii" typeface="Microsoft Yi Baiti"/>
<a:font script="Tibt" typeface="Microsoft Himalaya"/>
<a:font script="Thaa" typeface="MV Boli"/>
<a:font script="Deva" typeface="Mangal"/>
<a:font script="Telu" typeface="Gautami"/>
<a:font script="Taml" typeface="Latha"/>
<a:font script="Syrc" typeface="Estrangelo Edessa"/>
<a:font script="Orya" typeface="Kalinga"/>
<a:font script="Mlym" typeface="Kartika"/>
<a:font script="Laoo" typeface="DokChampa"/>
<a:font script="Sinh" typeface="Iskoola Pota"/>
<a:font script="Mong" typeface="Mongolian Baiti"/>
<a:font script="Viet" typeface="Arial"/>
<a:font script="Uigh" typeface="Microsoft Uighur"/>
<a:font script="Geor" typeface="Sylfaen"/>
See generally http://social.msdn.microsoft.com/Forums/en-US/ef7b4b55-9d38-4cd8-89f0-38389419c672/determining-font-script-from-majorminorfont-and-lang-and-text-in-drawingml
and in particular the helpful xlsx kindly supplied by Todd Main.
*/
public static String getScriptForLanguageTag(String langTag) {
String lang = langTag;
int pos = lang.indexOf('-');
if (pos>-1) {
lang = lang.substring(0, pos);
}
log.debug("lang: " + lang);
// <a:font script="Jpan" typeface="MS 明朝"/>
if (lang.equals("ja")) {
return "Jpan";
}
// <a:font script="Hang" typeface="맑은 고딕"/>
if (lang.equals("ko")) {
return "Hang";
}
if (lang.equals("zh")) {
// <a:font script="Hans" typeface="宋体"/>
if (langTag.equals("zh_CN")
|| langTag.equals("zh_SG")) {
// Mainland China and Singapore both use simplified characters
return "Hans";
} else {
// <a:font script="Hant" typeface="新細明體"/>
// Chinese (Traditional Han)
return "Hant";
}
}
// <a:font script="Arab" typeface="Arial"/>
if (lang.equals("ar")) {
return "Arab";
}
// <a:font script="Hebr" typeface="Arial"/>
if ("he,yi,iw".contains(lang)) {
return "Hebr";
}
// <a:font script="Thai" typeface="Cordia New"/>
if (lang.equals("th")) {
return "Thai";
}
// <a:font script="Ethi" typeface="Nyala"/>
if ("ti,bwo,eth,kxh,mdy".contains(lang)) {
return "Ethi";
}
// <a:font script="Beng" typeface="Vrinda"/>
if ("bn,as,mni".contains(lang)) {
return "Beng";
}
// <a:font script="Gujr" typeface="Shruti"/>
if (lang.equals("gu")) {
return "Gujr";
}
// <a:font script="Khmr" typeface="DaunPenh"/>
if (lang.equals("km")) {
return "Khmr";
}
// <a:font script="Knda" typeface="Tunga"/>
if (lang.equals("kn")) {
return "Knda";
}
// <a:font script="Guru" typeface="Raavi"/>
if (lang.equals("pa")) {
return "Guru";
}
// <a:font script="Cans" typeface="Euphemia"/>
if (lang.equals("iu")) {
return "Cans";
}
// <a:font script="Cher" typeface="Plantagenet Cherokee"/>
if (lang.equals("chr")) {
return "Cher";
}
// <a:font script="Yiii" typeface="Microsoft Yi Baiti"/> omitted
// see http://en.wikipedia.org/wiki/Yi_script
// <a:font script="Tibt" typeface="Microsoft Himalaya"/>
if (lang.equals("bo")) {
return "Tibt";
}
// <a:font script="Thaa" typeface="MV Boli"/>
if (lang.equals("dv")) {
return "Thaa";
}
// <a:font script="Deva" typeface="Mangal"/>
if ("hi,ks,kok,mr,ne,sa,sd".contains(lang)) {
return "Deva";
}
// <a:font script="Telu" typeface="Gautami"/>
if (lang.equals("te")) {
return "Telu";
}
// <a:font script="Taml" typeface="Latha"/>
if (lang.equals("ta")) {
return "Taml";
}
// <a:font script="Syrc" typeface="Estrangelo Edessa"/>
if (lang.equals("syr")) {
return "Syrc";
}
// <a:font script="Orya" typeface="Kalinga"/>
if (lang.equals("or")) {
return "Orya";
}
// <a:font script="Mlym" typeface="Kartika"/>
if (lang.equals("ml")) {
return "Mlym";
}
// <a:font script="Laoo" typeface="DokChampa"/>
if (lang.equals("lo")) {
return "Laoo";
}
// <a:font script="Sinh" typeface="Iskoola Pota"/>
if (lang.equals("si")) {
return "Sinh";
}
// <a:font script="Mong" typeface="Mongolian Baiti"/>
// <a:font script="Viet" typeface="Arial"/>
if (lang.equals("vi")
|| lang.equals("lha")
|| lang.equals("nut")
) {
return "Viet";
}
// <a:font script="Uigh" typeface="Microsoft Uighur"/>
// <a:font script="Geor" typeface="Sylfaen"/>
if (lang.equals("ka")) {
return "Geor";
}
return null;
}
}