Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.docx4j.fonts;
  
  public class LanguageTagToScriptMapping {
  	
  	/* 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);
 		}
 		
 		//    <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;
	}
New to GrepCode? Check out our FAQ X