codeuniv

Russian Font in LibGDX (any size)

May 19th, 2020
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.03 KB | None | 0 0
  1. package ru.codeuniverse.gdx.utils;
  2.  
  3. import com.badlogic.gdx.Gdx;
  4. import com.badlogic.gdx.files.FileHandle;
  5. import com.badlogic.gdx.graphics.Color;
  6. import com.badlogic.gdx.graphics.g2d.BitmapFont;
  7. import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
  8. import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeFontParameter;
  9.  
  10. /**
  11.  * My utilities to work with Fonts in LibGDX
  12.  *
  13.  */
  14. public final class GDXFontUtils {
  15.    
  16.      private final static String tag = GDXFontUtils.class.getName(); // for logging
  17.    
  18.     /**
  19.      * Takes TTF Font and font size and returns Bitmap with the font scaled to that
  20.      * size. Given TTF Font shall support Russian. Returned BitmapFont has Russian
  21.      * (and English) characters enabled.
  22.      *
  23.      * Uses Gdx-freetype Genertor - see
  24.      * https://github.com/libgdx/libgdx/wiki/Gdx-freetype
  25.      *
  26.      * @param ttfFontPathAndName - just "Roboto_Black.ttf" if inside assets folder
  27.      *                           root, "fonts/Roboto_Black.ttf" if inside
  28.      *                           assets/fonts, "mydir1/dir2/file.ttf" in any
  29.      *                           non-assets folder
  30.      */
  31.     public static BitmapFont generateFont(String ttfFontPathAndName, int fontSize) {
  32.         BitmapFont result = new BitmapFont();
  33.  
  34.         String ruCharacters = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ" + "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
  35.  
  36.         String engCharacters = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";
  37.  
  38.         String extraCharacters = "1234567890.,:;_!?\\\\";
  39.        
  40.         // https://github.com/libgdx/libgdx/wiki/Gdx-freetype
  41.         FileHandle fontFileHandle = Gdx.files.internal(ttfFontPathAndName);
  42.         Gdx.app.log(tag, "fontFileHandle is: " + fontFileHandle);
  43.         FreeTypeFontGenerator fontGenerator = new FreeTypeFontGenerator(fontFileHandle);
  44.         Gdx.app.log(tag, "fontGenerator is: " + fontGenerator);
  45.         FreeTypeFontParameter fontParameters = new FreeTypeFontParameter();
  46.         fontParameters.characters = ruCharacters + engCharacters + extraCharacters;
  47.         fontParameters.size = fontSize;
  48.  
  49.         result = fontGenerator.generateFont(fontParameters);
  50.         Gdx.app.log(tag, "generateFontFrom() given ttfFontPathAndName = " + ttfFontPathAndName + ", fontSize = " + fontSize
  51.             + ", generated font: " + result);
  52.         fontGenerator.dispose(); // don't forget to dispose to avoid memory leaks!
  53.  
  54.         return result;
  55.     }
  56.    
  57.     /**
  58.      * Like generateFont(), but allows to specify font color + adds some nice border
  59.      * and shadow to font.
  60.      */
  61.     public static BitmapFont generateFontEx(String ttfFontPathAndName, int fontSize, Color gdxColor) {
  62.         BitmapFont result = new BitmapFont();
  63.  
  64.         String ruCharacters = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ" + "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
  65.  
  66.         String engCharacters = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";
  67.  
  68.         String extraCharacters = "1234567890.,:;_!?\\\\";
  69.        
  70.         // https://github.com/libgdx/libgdx/wiki/Gdx-freetype
  71.         FileHandle fontFileHandle = Gdx.files.internal(ttfFontPathAndName);
  72.         Gdx.app.log(tag, "fontFileHandle is: " + fontFileHandle);
  73.         FreeTypeFontGenerator fontGenerator = new FreeTypeFontGenerator(fontFileHandle);
  74.         Gdx.app.log(tag, "fontGenerator is: " + fontGenerator);
  75.         FreeTypeFontParameter fontParameters = new FreeTypeFontParameter();
  76.         fontParameters.characters = ruCharacters + engCharacters + extraCharacters;
  77.         fontParameters.size = fontSize;
  78.         // nice enhancements
  79.         fontParameters.color = gdxColor;
  80.         // border
  81.         fontParameters.borderColor = Color.BLACK;
  82.         fontParameters.borderWidth = 3;
  83.         //shadow
  84.         fontParameters.shadowColor = Color.BLACK;
  85.         fontParameters.shadowOffsetX = 3;
  86.         fontParameters.shadowOffsetY = 3;      
  87.  
  88.         result = fontGenerator.generateFont(fontParameters);
  89.         Gdx.app.log(tag, "generateFontFrom() given ttfFontPathAndName = " + ttfFontPathAndName + ", fontSize = " + fontSize
  90.             + ", generated font: " + result);
  91.         fontGenerator.dispose(); // don't forget to dispose to avoid memory leaks!
  92.  
  93.         return result;
  94.     }
  95.  
  96. }
Add Comment
Please, Sign In to add comment