org.docx4j.fonts.LanguageTagToScriptMapping Maven / Gradle / Ivy
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:
*
*
*
* to the value of @script in the theme part.
*
*
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);
//
if (lang.equals("ja")) {
return "Jpan";
}
//
if (lang.equals("ko")) {
return "Hang";
}
if (lang.equals("zh")) {
//
if (langTag.equals("zh_CN")
|| langTag.equals("zh_SG")) {
// Mainland China and Singapore both use simplified characters
return "Hans";
} else {
//
// Chinese (Traditional Han)
return "Hant";
}
}
//
if (lang.equals("ar")) {
return "Arab";
}
//
if ("he,yi,iw".contains(lang)) {
return "Hebr";
}
//
if (lang.equals("th")) {
return "Thai";
}
//
if ("ti,bwo,eth,kxh,mdy".contains(lang)) {
return "Ethi";
}
//
if ("bn,as,mni".contains(lang)) {
return "Beng";
}
//
if (lang.equals("gu")) {
return "Gujr";
}
//
if (lang.equals("km")) {
return "Khmr";
}
//
if (lang.equals("kn")) {
return "Knda";
}
//
if (lang.equals("pa")) {
return "Guru";
}
//
if (lang.equals("iu")) {
return "Cans";
}
//
if (lang.equals("chr")) {
return "Cher";
}
// omitted
// see http://en.wikipedia.org/wiki/Yi_script
//
if (lang.equals("bo")) {
return "Tibt";
}
//
if (lang.equals("dv")) {
return "Thaa";
}
//
if ("hi,ks,kok,mr,ne,sa,sd".contains(lang)) {
return "Deva";
}
//
if (lang.equals("te")) {
return "Telu";
}
//
if (lang.equals("ta")) {
return "Taml";
}
//
if (lang.equals("syr")) {
return "Syrc";
}
//
if (lang.equals("or")) {
return "Orya";
}
//
if (lang.equals("ml")) {
return "Mlym";
}
//
if (lang.equals("lo")) {
return "Laoo";
}
//
if (lang.equals("si")) {
return "Sinh";
}
//
//
if (lang.equals("vi")
|| lang.equals("lha")
|| lang.equals("nut")
) {
return "Viet";
}
//
//
if (lang.equals("ka")) {
return "Geor";
}
return null;
}
}