title: Restrict the change of the text in English when I change the locale and apply the Font of the entire application in android
body: <p>I am trying to apply font for my entire application which is having support of multiple indian languages. i am applying the code given below for on or below lollipop.</p>
  
  <pre><code>public void setDefaultAppFont(String fontAssetName)
  {
      if (Build.VERSION.SDK_INT &gt;= 21) 
      {
          Map newMap = new HashMap();
          final String typefaceFieldName = "sans-serif";
          newMap.put(typefaceFieldName, Typeface.createFromAsset(appInstance.getAssets(), fontAssetName));
          try 
          {
              final Field staticField = Typeface.class.getDeclaredField("sSystemFontMap");
              staticField.setAccessible(true);
              staticField.set(null, newMap);
          } 
          catch (NoSuchFieldException e) 
          {
              e.printStackTrace();
          } 
          catch (IllegalAccessException e)
          {
              e.printStackTrace();
          }
      }
      else
      {
          Typeface typeface = Typeface.createFromAsset(appInstance.getAssets(), fontAssetName);
          try 
          {
              Field staticField = Typeface.class.getDeclaredField("DEFAULT");
              staticField.setAccessible(true);
              staticField.set(null, typeface);
  
              staticField = Typeface.class.getDeclaredField("DEFAULT_BOLD");
              staticField.setAccessible(true);
              staticField.set(null, typeface);
  
              staticField = Typeface.class.getDeclaredField("SANS_SERIF");
              staticField.setAccessible(true);
              staticField.set(null, typeface);
  
              staticField = Typeface.class.getDeclaredField("SERIF");
              staticField.setAccessible(true);
              staticField.set(null, typeface);
  
              staticField = Typeface.class.getDeclaredField("MONOSPACE");
              staticField.setAccessible(true);
              staticField.set(null, typeface);
  
          } 
          catch (NoSuchFieldException e) 
          {
              e.printStackTrace();
          }
          catch (IllegalAccessException e) 
          {
              e.printStackTrace();
          }
      }
  }
  </code></pre>
  
  <p>Above code allows us to change default english font on or below lollipop devices, but then it is unable to render default english letters coming from strings file and starts converting these english letters into non-english language letters automatically when non-english language is selected by user. 
  For Example : 
  I am using a spinner in my application that is having ten language options like, English(Written in english alphabets), Kannada(Written is kannada alphabets), Marathi(Written in marathi alphabets), Gujarati(Written in gujarati alphabets) etc. if user selects a perticular option from that spinner, the whole app language and font changes. It also changes the English(Written in english alphabets) in spinner that should not allowed to be changed in other languages even if user selects any language option.</p>