Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save KrystilizeNevaDies/a2534c3d93a95a023bef04f24dce82cd to your computer and use it in GitHub Desktop.
Save KrystilizeNevaDies/a2534c3d93a95a023bef04f24dce82cd to your computer and use it in GitHub Desktop.
Negative font utility
public class FontUtils {
/**
* This map is used to efficiently generate unicode symbols
*/
private static final TreeMap<Integer, String> WHITE_SPACE_MAP = new TreeMap<>() {{
put(-1, "\uF801");
put(-2, "\uF802");
put(-3, "\uF803");
put(-4, "\uF804");
put(-5, "\uF805");
put(-6, "\uF806");
put(-7, "\uF807");
put(-8, "\uF808");
put(-9, "\uF808\uF801");
put(-10, "\uF808\uF802");
put(-11, "\uF808\uF803");
put(-12, "\uF808\uF804");
put(-13, "\uF808\uF805");
put(-14, "\uF808\uF806");
put(-15, "\uF808\uF807");
put(0, "");
put(1, "\uF821");
put(2, "\uF822");
put(3, "\uF823");
put(4, "\uF824");
put(5, "\uF825");
put(6, "\uF826");
put(7, "\uF827");
put(8, "\uF828");
put(9, "\uF828\uF821");
put(10, "\uF828\uF822");
put(11, "\uF828\uF823");
put(12, "\uF828\uF824");
put(13, "\uF828\uF825");
put(14, "\uF828\uF826");
put(15, "\uF828\uF827");
}};
/**
* Gets the unicodes to create an offset of the specified pixel width.
* <br><br>
* negative integers are accepted
* @param offset the offset to generate space for
* @return blankSpace
*/
public static String getBlankSpace(final int offset) {
if (Math.abs(offset) <= 15) {
return WHITE_SPACE_MAP.get(offset);
}
final StringBuilder output = new StringBuilder();
int currentNumber = Math.abs(offset);
while (currentNumber > 0) {
final int closestKey = WHITE_SPACE_MAP.floorKey(currentNumber);
output.append(WHITE_SPACE_MAP.get(offset < 0 ? -closestKey : closestKey));
currentNumber -= closestKey;
}
return output.toString();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment