added contents

This commit is contained in:
Mark Minas
2024-09-18 17:04:31 +02:00
parent d28b17eba5
commit 71a4ac8d12
176 changed files with 51198 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
plugins {
id 'buildlogic.java-library-conventions'
}
description = 'Common classes used in jME applications'
dependencies {
implementation libs.jme3.core
api libs.lemur
api project(':common')
runtimeOnly libs.groovy.jsr223
runtimeOnly libs.slf4j.nop
}

View File

@@ -0,0 +1,102 @@
////////////////////////////////////////
// Programming project code
// UniBw M, 2022, 2023, 2024
// www.unibw.de/inf2
// (c) Mark Minas (mark.minas@unibw.de)
////////////////////////////////////////
package pp.dialog;
import com.simsilica.lemur.Container;
/**
* Represents a dialog within a dialog manager system.
* Extends the Container class from the Lemur GUI library.
*/
public class Dialog extends Container {
/**
* The depth of the dialog within the dialog stack.
* Dialogs with lower depth values are considered to be "on top" of dialogs with higher values.
*/
protected final int depth;
/**
* The manager responsible for handling this dialog.
*/
protected final DialogManager manager;
/**
* Constructs a new Dialog with a depth automatically assigned by the DialogManager.
*
* @param manager The DialogManager that manages this dialog.
*/
public Dialog(DialogManager manager) {
this(manager, manager.nextDepth());
}
/**
* Constructs a new Dialog with the specified depth.
*
* @param manager The DialogManager that manages this dialog.
* @param depth The depth of this dialog within the dialog stack.
* @throws IllegalArgumentException if the specified depth is invalid (i.e., it is not greater than the depth of the top dialog in the manager's stack).
*/
public Dialog(DialogManager manager, int depth) {
this.manager = manager;
this.depth = depth;
// Ensure the dialog depth is greater than the depth of the current top dialog in the stack
if (!manager.getDialogStack().isEmpty() && manager.getDialogStack().getLast().depth >= depth)
throw new IllegalArgumentException("Invalid dialog depth " + depth);
}
/**
* Checks if this dialog is the topmost dialog in the dialog stack.
*
* @return true if this dialog is the topmost dialog, false otherwise.
*/
public boolean isTopDialog() {
return manager.isTop(this);
}
/**
* Runs the specified runnable if this dialog is the topmost dialog in the dialog stack.
*
* @param runnable the runnable.
* @see Dialog#isTopDialog()
*/
public void ifTopDialog(Runnable runnable) {
if (isTopDialog()) runnable.run();
}
/**
* Opens this dialog, centers it, and notifies the DialogManager to manage it.
*/
public void open() {
manager.centering(this, depth);
manager.open(this);
}
/**
* Closes this dialog and notifies the DialogManager to stop managing it.
*/
public void close() {
manager.close(this);
}
/**
* This method is called whenever the {@linkplain pp.dialog.DialogManager} would
* like to update this dialog.
*/
public void update() { /* empty */ }
/**
* This method is called by {@linkplain DialogManager#update(float)} for periodically
* updating this dialog. The default implementation does nothing.
*/
public void update(float delta) { /* empty */ }
/**
* This method calls the escape action if this dialog is the top dialog.
*/
public void escape() { /* empty */ }
}

View File

@@ -0,0 +1,319 @@
////////////////////////////////////////
// Programming project code
// UniBw M, 2022, 2023, 2024
// www.unibw.de/inf2
// (c) Mark Minas (mark.minas@unibw.de)
////////////////////////////////////////
package pp.dialog;
import com.jme3.scene.Spatial;
import com.simsilica.lemur.Button;
import com.simsilica.lemur.Container;
import com.simsilica.lemur.Label;
import com.simsilica.lemur.component.BorderLayout;
import com.simsilica.lemur.style.ElementId;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
import static com.simsilica.lemur.component.BorderLayout.Position.East;
import static com.simsilica.lemur.component.BorderLayout.Position.West;
/**
* A builder class for creating and customizing dialog boxes of type {@link SimpleDialog} or its subclasses.
* This builder pattern facilitates the construction of dialog boxes with various configurations,
* such as titles, text content, buttons, and additional custom behaviors.
*
* @param <D> the type of dialog to be built, typically extending {@link SimpleDialog}
*/
public class DialogBuilder<D extends SimpleDialog> {
/**
* Creates a {@link DialogBuilder} for a simple dialog with default settings.
*
* @param manager the dialog manager responsible for managing the dialog's lifecycle
* @return a {@link DialogBuilder} instance for creating simple dialogs
*/
public static DialogBuilder<SimpleDialog> simple(DialogManager manager) {
return new DialogBuilder<>(manager, SimpleDialog::new);
}
protected final DialogManager manager;
private final Function<DialogManager, D> dialogFactory;
private final List<Consumer<D>> extensionList = new ArrayList<>();
private String title;
private String text;
private String okLabel;
private String noLabel;
private Consumer<D> okAction = d -> {};
private Consumer<D> noAction = d -> {};
private boolean okClose = true;
private boolean noClose = true;
private Function<D, Spatial> focus;
/**
* Constructs a dialog builder with the specified dialog manager and dialog factory.
*
* @param manager the dialog manager responsible for managing the dialog's lifecycle
* @param dialogFactory a factory function to create instances of the dialog
*/
public DialogBuilder(DialogManager manager, Function<DialogManager, D> dialogFactory) {
this.manager = manager;
this.dialogFactory = dialogFactory;
}
/**
* Applies all registered extensions to the given dialog.
* Extensions allow for additional customizations beyond the standard configurations.
*
* @param dialog the dialog object to which the extensions will be applied
* @see #setExtension(java.util.function.Consumer)
*/
protected void extendDialog(D dialog) {
for (Consumer<D> extension : extensionList)
extension.accept(dialog);
}
/**
* Builds and returns the dialog with the specified configurations.
* This method creates a new dialog object and applies all the configured settings.
*
* @return the fully configured dialog object
*/
public D build() {
return build(dialogFactory.apply(manager));
}
/**
* Builds the dialog by configuring an existing dialog object with the specified settings.
* This method allows for further customization of a pre-existing dialog object.
*
* @param dialog the dialog object to configure
* @return the configured dialog object for chaining
*/
public D build(D dialog) {
configureTitle(dialog);
configureText(dialog);
extendDialog(dialog);
configureButtons(dialog);
configureFocus(dialog);
return dialog;
}
/**
* Configures the title of the dialog if a title has been set.
*
* @param dialog the dialog to which the title will be added
*/
private void configureTitle(D dialog) {
if (title != null)
dialog.addChild(new Label(title, new ElementId("header"))); // NON-NLS
}
/**
* Configures the main text content of the dialog if text has been set.
*
* @param dialog the dialog to which the text content will be added
*/
private void configureText(D dialog) {
if (text != null)
dialog.addChild(new Label(text));
}
/**
* Configures the OK and NO buttons for the dialog if labels for them have been set.
*
* @param dialog the dialog to which the buttons will be added
*/
private void configureButtons(D dialog) {
if (okLabel != null || noLabel != null) {
final Container buttons = dialog.addChild(new Container(new BorderLayout()));
if (okLabel != null) {
final Button okButton = buttons.addChild(new Button(okLabel), West);
dialog.setOkButton(okButton);
configureButton(okButton, okAction, okClose, dialog);
}
if (noLabel != null) {
final Button noButton = buttons.addChild(new Button(noLabel), East);
configureButton(noButton, noAction, noClose, dialog);
}
}
}
/**
* Configures a button with its action and whether the dialog should close after the action is performed.
*
* @param button the button to configure
* @param action the action to perform when the button is clicked
* @param close whether the dialog should close after the action is performed
* @param dialog the dialog that contains the button
*/
private void configureButton(Button button, Consumer<D> action, boolean close, D dialog) {
button.addClickCommands(s -> {
if (dialog.isTopDialog()) {
action.accept(dialog);
if (close) {
dialog.close();
}
}
});
}
/**
* Configures the initial focus for the dialog when it is displayed.
* The focus will be set to either a specified component or the OK button if available.
*
* @param dialog the dialog to configure focus for
*/
private void configureFocus(D dialog) {
final Spatial focusComponent = focus == null ? null : focus.apply(dialog);
if (focusComponent != null || dialog.getOkButton() != null)
manager.setFocus(focusComponent != null ? focusComponent : dialog.getOkButton());
}
/**
* Sets the title of the dialog.
*
* @param title the title text to be displayed at the top of the dialog
* @return this builder instance for chaining
*/
public DialogBuilder<D> setTitle(String title) {
this.title = title;
return this;
}
/**
* Sets the main text content of the dialog.
*
* @param text the main content text to be displayed in the dialog
* @return this builder instance for chaining
*/
public DialogBuilder<D> setText(String text) {
this.text = text;
return this;
}
/**
* Sets the label for the OK button.
*
* @param okLabel the text label to display on the OK button
* @return this builder instance for chaining
*/
public DialogBuilder<D> setOkButton(String okLabel) {
this.okLabel = okLabel;
return this;
}
/**
* Sets the label and action for the OK button.
* When the OK button is clicked, the specified action will be executed.
*
* @param okLabel the text label to display on the OK button
* @param okAction the action to perform when the OK button is clicked
* @return this builder instance for chaining
*/
public DialogBuilder<D> setOkButton(String okLabel, Consumer<D> okAction) {
this.okAction = okAction;
return setOkButton(okLabel);
}
/**
* Sets the label and action for the OK button.
* When the OK button is clicked, the specified runnable action will be executed.
*
* @param okLabel the text label to display on the OK button
* @param okAction the runnable action to perform when the OK button is clicked
* @return this builder instance for chaining
*/
public DialogBuilder<D> setOkButton(String okLabel, Runnable okAction) {
this.okAction = d -> okAction.run();
return setOkButton(okLabel);
}
/**
* Sets the label for the NO button.
*
* @param noLabel the text label to display on the NO button
* @return this builder instance for chaining
*/
public DialogBuilder<D> setNoButton(String noLabel) {
this.noLabel = noLabel;
return this;
}
/**
* Sets the label and action for the NO button.
* When the NO button is clicked, the specified action will be executed.
*
* @param noLabel the text label to display on the NO button
* @param noAction the action to perform when the NO button is clicked
* @return this builder instance for chaining
*/
public DialogBuilder<D> setNoButton(String noLabel, Consumer<D> noAction) {
this.noAction = noAction;
return setNoButton(noLabel);
}
/**
* Sets the label and action for the NO button.
* When the NO button is clicked, the specified runnable action will be executed.
*
* @param noLabel the text label to display on the NO button
* @param noAction the runnable action to perform when the NO button is clicked
* @return this builder instance for chaining
*/
public DialogBuilder<D> setNoButton(String noLabel, Runnable noAction) {
this.noAction = d -> noAction.run();
return setNoButton(noLabel);
}
/**
* Sets whether the dialog should automatically close when the OK button is clicked.
*
* @param okClose true to close the dialog when the OK button is clicked, false otherwise
* @return this builder instance for chaining
*/
public DialogBuilder<D> setOkClose(boolean okClose) {
this.okClose = okClose;
return this;
}
/**
* Sets whether the dialog should automatically close when the NO button is clicked.
*
* @param noClose true to close the dialog when the NO button is clicked, false otherwise
* @return this builder instance for chaining
*/
public DialogBuilder<D> setNoClose(boolean noClose) {
this.noClose = noClose;
return this;
}
/**
* Sets the component that should initially receive focus when the dialog is displayed.
* If a focus function is not provided, the focus defaults to the OK button.
*
* @param focus a function specifying which component of the dialog should receive focus
* @return this builder instance for chaining
*/
public DialogBuilder<D> setFocus(Function<D, Spatial> focus) {
this.focus = focus;
return this;
}
/**
* Adds an extension to the dialog.
* Extensions allow for additional customizations and behaviors beyond the basic configuration.
*
* @param extender a consumer that applies the extension to the dialog
* @return this builder instance for chaining
*/
public DialogBuilder<D> setExtension(Consumer<D> extender) {
extensionList.add(extender);
return this;
}
}

View File

@@ -0,0 +1,157 @@
////////////////////////////////////////
// Programming project code
// UniBw M, 2022, 2023, 2024
// www.unibw.de/inf2
// (c) Mark Minas (mark.minas@unibw.de)
////////////////////////////////////////
package pp.dialog;
import com.jme3.app.SimpleApplication;
import com.jme3.math.Vector3f;
import com.jme3.scene.Spatial;
import com.jme3.system.AppSettings;
import com.simsilica.lemur.Panel;
import com.simsilica.lemur.focus.FocusManagerState;
import java.util.ArrayDeque;
import java.util.Deque;
import static java.lang.Math.max;
/**
* Manages dialog boxes within the application, handling their display, positioning, and focus.
*/
public class DialogManager {
/**
* The application instance.
*/
private final SimpleApplication app;
/**
* A stack to keep track of the dialogs.
*/
private final Deque<Dialog> dialogStack = new ArrayDeque<>();
/**
* Constructs a DialogManager for the specified application.
*
* @param app the SimpleApplication instance
*/
public DialogManager(SimpleApplication app) {
this.app = app;
}
/**
* Checks if any dialog is currently displayed.
*
* @return true if any dialog is currently shown, false otherwise
*/
public boolean showsDialog() {
return !dialogStack.isEmpty();
}
/**
* Retrieves the stack of dialogs.
*
* @return the dialog stack
*/
public Deque<Dialog> getDialogStack() {
return dialogStack;
}
/**
* Calculates the depth for the next dialog to be displayed.
*
* @return the next depth value
*/
public int nextDepth() {
return dialogStack.isEmpty() ? 10 : dialogStack.peek().depth + 10;
}
/**
* Positions the specified panel in the center of the screen, with a specified z coordinate.
*
* @param panel the panel to center
* @param z the z coordinate
*/
public void centering(Panel panel, float z) {
final Vector3f size = panel.getPreferredSize();
centering(panel, size.getX(), size.getY(), z);
}
/**
* Positions the specified spatial in the center of the screen, with specified width, height, and z coordinate.
*
* @param spatial the spatial to center
* @param width the width reserved for the spatial
* @param height the height reserved for the spatial
* @param z the z coordinate
*/
public void centering(Spatial spatial, float width, float height, float z) {
final AppSettings settings = app.getContext().getSettings();
spatial.setLocalTranslation(max(0f, 0.5f * (settings.getWidth() - width)),
max(0f, 0.5f * (settings.getHeight() + height)),
z);
}
/**
* Arranges for the specified spatial to receive the focus.
*
* @param spatial the spatial to focus
*/
public void setFocus(Spatial spatial) {
final var focusManager = app.getStateManager().getState(FocusManagerState.class);
if (focusManager != null)
focusManager.setFocus(spatial);
}
/**
* Opens the specified dialog and adds it to the dialog stack.
*
* @param dialog the dialog to open
*/
void open(Dialog dialog) {
dialogStack.push(dialog);
dialog.update();
app.getGuiNode().attachChild(dialog);
}
/**
* Checks if the specified dialog is the topmost dialog in the dialog stack.
*
* @param dialog a dialog.
* @return true if the dialog is the top dialog, false otherwise.
*/
boolean isTop(Dialog dialog) {
return !dialogStack.isEmpty() && dialogStack.peek() == dialog;
}
/**
* Closes the specified dialog, removing it from the dialog stack.
*
* @param dialog the dialog to close
* @throws IllegalArgumentException if the specified dialog is not the top dialog
*/
void close(Dialog dialog) {
if (!isTop(dialog))
throw new IllegalArgumentException(dialog + " is not the top dialog");
dialogStack.pop();
if (!dialogStack.isEmpty())
dialogStack.peek().update();
app.getGuiNode().detachChild(dialog);
}
/**
* Calls the escape action of the top dialog, if a dialog is shown.
*/
public void escape() {
if (dialogStack.isEmpty()) return;
dialogStack.peek().escape();
}
public void update(float delta) {
for (Dialog dialog : dialogStack)
dialog.update(delta);
}
}

View File

@@ -0,0 +1,64 @@
////////////////////////////////////////
// Programming project code
// UniBw M, 2022, 2023, 2024
// www.unibw.de/inf2
// (c) Mark Minas (mark.minas@unibw.de)
////////////////////////////////////////
package pp.dialog;
import com.simsilica.lemur.Button;
/**
* Represents a simple dialog with OK and Cancel buttons.
* It extends the Dialog class and provides methods to get and set these buttons.
*/
public class SimpleDialog extends Dialog {
private Button okButton;
private Button cancelButton;
/**
* Constructs a SimpleDialog with the specified DialogManager.
*
* @param manager the DialogManager to manage this dialog
*/
public SimpleDialog(DialogManager manager) {
super(manager);
}
/**
* Returns the OK button of this dialog.
*
* @return the OK button
*/
public Button getOkButton() {
return okButton;
}
/**
* Sets the OK button of this dialog.
*
* @param okButton the OK button to set
*/
void setOkButton(Button okButton) {
this.okButton = okButton;
}
/**
* Returns the Cancel button of this dialog.
*
* @return the Cancel button
*/
public Button getCancelButton() {
return cancelButton;
}
/**
* Sets the Cancel button of this dialog.
*
* @param cancelButton the Cancel button to set
*/
void setCancelButton(Button cancelButton) {
this.cancelButton = cancelButton;
}
}

View File

@@ -0,0 +1,53 @@
////////////////////////////////////////
// Programming project code
// UniBw M, 2022, 2023, 2024
// www.unibw.de/inf2
// (c) Mark Minas (mark.minas@unibw.de)
////////////////////////////////////////
package pp.dialog;
import com.jme3.app.Application;
import com.jme3.app.state.AppState;
import com.simsilica.lemur.DefaultCheckboxModel;
/**
* A checkbox model for enabling and disabling app states.
* This model links a checkbox with an AppState, so that checking
* or unchecking the box enables or disables the state, respectively.
*/
public class StateCheckboxModel extends DefaultCheckboxModel {
private final AppState state;
/**
* Constructs a StateCheckboxModel for the specified app state class.
*
* @param app the application containing the state manager
* @param stateClass the class of the app state to be controlled
*/
public StateCheckboxModel(Application app, Class<? extends AppState> stateClass) {
this(app.getStateManager().getState(stateClass));
}
/**
* Constructs a StateCheckboxModel for the specified app state.
*
* @param state the app state to be controlled
*/
public StateCheckboxModel(AppState state) {
this.state = state;
setChecked(state.isEnabled());
}
/**
* Sets the checked state of the checkbox and enables or disables
* the associated app state accordingly.
*
* @param checked true to check the box and enable the state, false to uncheck the box and disable the state
*/
@Override
public void setChecked(boolean checked) {
super.setChecked(checked);
state.setEnabled(checked);
}
}

View File

@@ -0,0 +1,132 @@
////////////////////////////////////////
// Programming project code
// UniBw M, 2022, 2023, 2024
// www.unibw.de/inf2
// (c) Mark Minas (mark.minas@unibw.de)
////////////////////////////////////////
package pp.dialog;
import com.jme3.input.KeyInput;
import com.simsilica.lemur.Container;
import com.simsilica.lemur.Label;
import com.simsilica.lemur.TextField;
import com.simsilica.lemur.component.SpringGridLayout;
import com.simsilica.lemur.event.KeyAction;
/**
* A dialog class that asks for text input. Usually, this is a single-line
* text input.
*
* @see #getInput()
*/
public class TextInputDialog extends SimpleDialog {
// TextField for user input
private final TextField input = new TextField("");
/**
* Constructs a TextInputDialog associated with the specified dialog manager.
*
* @param manager the dialog manager to associate the dialog with
*/
private TextInputDialog(DialogManager manager) {
super(manager);
input.setSingleLine(true); // Set the input field to be single-line
input.setPreferredWidth(500f); // Set preferred width of the input field
}
/**
* Returns the input field.
*
* @return the input field
*/
public TextField getInput() {
return input;
}
/**
* Maps the specified key action to trigger a click on the OK button.
*
* @param action the key action to map
*/
private void clickOkOn(KeyAction action) {
input.getActionMap().put(action, (c, k) -> {
if (getOkButton() != null)
getOkButton().click();
});
}
/**
* Creates a builder for TextInputDialog.
*
* @param manager the dialog manager to associate the dialog with
* @return a TextInputDialogBuilder instance
*/
public static TextInputDialogBuilder builder(DialogManager manager) {
return new TextInputDialogBuilder(manager);
}
/**
* A builder class for creating TextInputDialog instances.
*/
public static class TextInputDialogBuilder extends DialogBuilder<TextInputDialog> {
private String label;
private boolean returnHitsOK = true;
/**
* Constructs a TextInputDialogBuilder with the specified dialog manager.
*
* @param manager the dialog manager to associate the dialog with
*/
private TextInputDialogBuilder(DialogManager manager) {
super(manager, TextInputDialog::new);
}
/**
* Extends the dialog with additional components like a label and input field.
*
* @param dialog the dialog to be extended
*/
@Override
protected void extendDialog(TextInputDialog dialog) {
final TextField textField = dialog.getInput();
if (label == null) {
dialog.addChild(textField);
}
else {
final Container c = dialog.addChild(new Container(new SpringGridLayout()));
c.addChild(new Label(label));
c.addChild(textField, 1);
}
if (returnHitsOK) {
// move the caret right so that it becomes visible at the end of a long text
textField.getDocumentModel().right();
// Hitting a return key is like pushing the ok button
dialog.clickOkOn(new KeyAction(KeyInput.KEY_RETURN));
dialog.clickOkOn(new KeyAction(KeyInput.KEY_NUMPADENTER));
}
}
/**
* Sets the label for the input field.
*
* @param label the label text
* @return this builder instance for chaining
*/
public TextInputDialogBuilder setLabel(String label) {
this.label = label;
return this;
}
/**
* Sets whether hitting the return key triggers the OK button.
*
* @param returnHitsOK true to trigger OK button on return key, false otherwise
* @return this builder instance for chaining
*/
public TextInputDialogBuilder setReturnHitsOK(boolean returnHitsOK) {
this.returnHitsOK = returnHitsOK;
return this;
}
}
}

View File

@@ -0,0 +1,229 @@
////////////////////////////////////////
// Programming project code
// UniBw M, 2022, 2023, 2024
// www.unibw.de/inf2
// (c) Mark Minas (mark.minas@unibw.de)
////////////////////////////////////////
package pp.graphics;
import com.jme3.asset.AssetManager;
import com.jme3.material.Material;
import com.jme3.material.RenderState;
import com.jme3.material.RenderState.BlendMode;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.scene.Geometry;
import com.jme3.scene.Mesh;
import com.jme3.scene.VertexBuffer;
import com.jme3.scene.shape.Quad;
import pp.util.Position;
import pp.util.SegmentLike;
import java.lang.System.Logger;
import java.lang.System.Logger.Level;
import java.util.HashMap;
import java.util.Map;
import static pp.util.FloatMath.FLT_EPSILON;
import static pp.util.FloatMath.TWO_PI;
import static pp.util.FloatMath.cos;
import static pp.util.FloatMath.sin;
import static pp.util.FloatMath.sqr;
import static pp.util.FloatMath.sqrt;
/**
* Class for creating graphical primitives.
*/
public class Draw {
private static final Logger LOGGER = System.getLogger(Draw.class.getName());
private static final int NUM = 10;
private static final String UNSHADED = "Common/MatDefs/Misc/Unshaded.j3md"; //NON-NLS
private static final String COLOR = "Color"; //NON-NLS
private final AssetManager am;
private final Map<ColorRGBA, Geometry> lineMap = new HashMap<>();
private final Map<ColorRGBA, Geometry> rectangleMap = new HashMap<>();
private final Map<ColorRGBA, Geometry> circleMap = new HashMap<>();
private Mesh lineMesh;
private Mesh circleMesh;
/**
* Creates an in stance of the Draw class with the specified
* asset manager.
*
* @param assetManager the specified asset manager
*/
public Draw(AssetManager assetManager) {
am = assetManager;
}
private Geometry makeLine(ColorRGBA color) {
LOGGER.log(Level.DEBUG, "create line with color {0}", color); //NON-NLS
if (lineMesh == null) {
lineMesh = new Mesh();
lineMesh.setMode(Mesh.Mode.Lines);
lineMesh.setBuffer(VertexBuffer.Type.Position, 3, new float[]{0, 0, 0, 0, 1, 0});
lineMesh.setBuffer(VertexBuffer.Type.Index, 2, new short[]{0, 1});
}
final Geometry lineGeom = new Geometry("lineMesh", lineMesh.clone());
Material matWireframe = new Material(am, UNSHADED); //NON-NLS
matWireframe.getAdditionalRenderState().setFaceCullMode(RenderState.FaceCullMode.Off);
matWireframe.setColor(COLOR, color); //NON-NLS
lineGeom.setMaterial(matWireframe);
return lineGeom;
}
/**
* Creates a line for the specified segment.
*
* @param segment the segment with its start and end point
* @param z depth information
* @param color line color
*/
public Geometry makeLine(SegmentLike segment, float z, ColorRGBA color) {
return makeLine(segment.from(), segment.to(), z, color);
}
/**
* Creates a straight line between the specified points with the specified color.
*
* @param p1 start point
* @param p2 end point
* @param z depth information
* @param color line color
*/
public Geometry makeLine(Position p1, Position p2, float z, ColorRGBA color) {
return makeLine(p1.getX(), p1.getY(), p2.getX(), p2.getY(), z, color);
}
/**
* Creates a straight line between the specified points with the specified color.
*
* @param x1 x-coordinate of the start point
* @param y1 y-coordinate of the start point
* @param x2 x-coordinate of the end point
* @param y2 y-coordinate of the end point
* @param z depth information
* @param color line color
*/
public Geometry makeLine(float x1, float y1, float x2, float y2, float z, ColorRGBA color) {
final Geometry line = lineMap.computeIfAbsent(color, this::makeLine).clone();
line.lookAt(Vector3f.UNIT_Z, new Vector3f(x2 - x1, y2 - y1, 0));
line.setLocalScale(sqrt(sqr(x2 - x1) + sqr(y2 - y1)));
line.setLocalTranslation(x1, y1, z);
return line;
}
/**
* Creates a straight line between the specified points with the specified width and color.
*
* @param p1 start point
* @param p2 end point
* @param z depth information
* @param color line color
* @param width width of the line
*/
public Geometry makeFatLine(Position p1, Position p2, float z, ColorRGBA color, float width) {
return makeFatLine(p1.getX(), p1.getY(), p2.getX(), p2.getY(), z, color, width);
}
/**
* Creates a straight line between the specified points with the specified width and color.
*
* @param x1 x-coordinate of the start point
* @param y1 y-coordinate of the start point
* @param x2 x-coordinate of the end point
* @param y2 y-coordinate of the end point
* @param z depth information
* @param color line color
* @param width width of the line
*/
public Geometry makeFatLine(float x1, float y1, float x2, float y2, float z, ColorRGBA color, float width) {
final Geometry line = rectangleMap.computeIfAbsent(color, this::makeRectangle).clone();
final float dx = x2 - x1;
final float dy = y2 - y1;
final float len = sqrt(dx * dx + dy * dy);
line.setLocalScale(width, len + width, 1f);
if (len <= FLT_EPSILON)
line.setLocalTranslation(x1 - 0.5f * width, y1 - 0.5f * width, z);
else {
final float f = 0.5f * width / len;
line.setLocalTranslation(x1 - f * (dy + dx), y1 - f * (dy - dx), z);
line.getLocalRotation().lookAt(Vector3f.UNIT_Z, new Vector3f(dx, dy, 0f));
}
return line;
}
private Geometry makeRectangle(ColorRGBA color) {
final Mesh quad = new Quad(1f, 1f);
final Geometry rectangle = new Geometry("quad", quad); //NON-NLS
Material mat = new Material(am, UNSHADED); //NON-NLS
mat.getAdditionalRenderState().setBlendMode(BlendMode.Alpha);
mat.getAdditionalRenderState().setFaceCullMode(RenderState.FaceCullMode.Off);
mat.setColor(COLOR, color); //NON-NLS
rectangle.setMaterial(mat);
return rectangle;
}
/**
* Creates an axis-parallel rectangle with the specified color.
*
* @param x x-coordinate of the bottom-left corner
* @param y y-coordinate of the bottom-left corner
* @param w width of the rectangle
* @param h height of the rectangle
* @param z depth information
* @param color line color
*/
public Geometry makeRectangle(float x, float y, float z, float w, float h, ColorRGBA color) {
final Geometry rectangle = rectangleMap.computeIfAbsent(color, this::makeRectangle).clone();
rectangle.setLocalScale(w, h, 1f);
rectangle.setLocalTranslation(x, y, z);
return rectangle;
}
private Geometry makeCircle(ColorRGBA color) {
if (circleMesh == null) {
circleMesh = new Mesh();
circleMesh.setMode(Mesh.Mode.LineLoop);
final float[] pointBuffer = new float[3 * NUM];
final short[] indexBuffer = new short[NUM];
int j = 0;
for (short i = 0; i < NUM; i++) {
final float a = TWO_PI / NUM * i;
pointBuffer[j++] = 0.5f * cos(a);
pointBuffer[j++] = 0.5f * sin(a);
pointBuffer[j++] = 0f;
indexBuffer[i] = i;
}
circleMesh.setBuffer(VertexBuffer.Type.Position, 3, pointBuffer);
circleMesh.setBuffer(VertexBuffer.Type.Index, 2, indexBuffer);
}
final Geometry circle = new Geometry("circleMesh", circleMesh.clone());
Material matWireframe = new Material(am, UNSHADED); //NON-NLS
matWireframe.getAdditionalRenderState().setFaceCullMode(RenderState.FaceCullMode.Off);
matWireframe.setColor(COLOR, color); //NON-NLS
circle.setMaterial(matWireframe);
return circle;
}
/**
* Creates an ellipse with the specified color.
*
* @param x x-coordinate of the center point
* @param y y-coordinate of the center point
* @param w width of the ellipse
* @param h height of the ellipse
* @param z depth information
* @param color line color
*/
public Geometry makeEllipse(float x, float y, float z, float w, float h, ColorRGBA color) {
final Geometry ellipse = circleMap.computeIfAbsent(color, this::makeCircle).clone();
ellipse.setLocalScale(w, h, 1f);
ellipse.setLocalTranslation(x, y, z);
return ellipse;
}
}

View File

@@ -0,0 +1,90 @@
////////////////////////////////////////
// Programming project code
// UniBw M, 2022, 2023, 2024
// www.unibw.de/inf2
// (c) Mark Minas (mark.minas@unibw.de)
////////////////////////////////////////
package pp.view;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
import java.lang.System.Logger;
import java.lang.System.Logger.Level;
import java.util.HashMap;
import java.util.Map;
/**
* Abstract base class for keeping the scene graph (=view) in sync with the model.
*/
public abstract class ModelViewSynchronizer<I> {
private static final Logger LOGGER = System.getLogger(ModelViewSynchronizer.class.getName());
private final Node itemNode = new Node("items"); //NON-NLS
private final Map<I, Spatial> itemMap = new HashMap<>();
/**
* Saves the game state and the node.
*
* @param root particular node
*/
protected ModelViewSynchronizer(Node root) {
root.attachChild(itemNode);
}
/**
* Returns the spatial representing the specified item,
* or null if the item has no view counterpart.
*/
public Spatial getSpatial(I item) {
return itemMap.get(item);
}
/**
* removes spatial from map
*
* @param item spatial that should be removed
*/
public void delete(I item) {
final Spatial spatial = itemMap.remove(item);
if (spatial != null) {
spatial.removeFromParent();
LOGGER.log(Level.DEBUG, "removed spatial for {0} in {1}", item, this); //NON-NLS
}
}
/**
* add spatial to map
*
* @param item spatial that schuld be added
*/
public void add(I item) {
if (itemMap.containsKey(item)) {
LOGGER.log(Level.WARNING, "Item {0} already managed by {1}", item, this); //NON-NLS
return;
}
final Spatial spatial = translate(item);
itemMap.put(item, spatial);
LOGGER.log(Level.DEBUG, "added spatial for {0} in {1}", item, this); //NON-NLS
if (spatial != null)
itemNode.attachChild(spatial);
}
/**
* Removed every item
*/
public void clear() {
LOGGER.log(Level.DEBUG, "clear"); //NON-NLS
itemMap.clear();
itemNode.detachAllChildren();
}
/**
* Creates the spatial for the specified item. Implementations may decide to return null. This
* means that the item shall not be represented in the scene graph.
*
* @param item the item whose representing spatial is asked for
* @return the spatial of the item, or null if the item shall not be represented by a spatial.
*/
protected abstract Spatial translate(I item);
}

View File

@@ -0,0 +1,524 @@
info face="Metropolis Bold" size=32 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=-2,-2
common lineHeight=33 base=26 scaleW=512 scaleH=512 pages=1 packed=0
page id=0 file="Metropolis-Bold-32.png"
chars count=170
char id=0 x=0 y=0 width=14 height=35 xoffset=1 yoffset=-1 xadvance=16 page=0 chnl=0
char id=10 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=0 page=0 chnl=0
char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=9 page=0 chnl=0
char id=33 x=359 y=117 width=9 height=24 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=0
char id=34 x=44 y=165 width=16 height=12 xoffset=0 yoffset=3 xadvance=17 page=0 chnl=0
char id=35 x=422 y=117 width=23 height=24 xoffset=-1 yoffset=3 xadvance=22 page=0 chnl=0
char id=36 x=281 y=35 width=22 height=29 xoffset=-1 yoffset=1 xadvance=20 page=0 chnl=0
char id=37 x=395 y=117 width=27 height=24 xoffset=0 yoffset=3 xadvance=27 page=0 chnl=0
char id=38 x=280 y=66 width=23 height=25 xoffset=-1 yoffset=3 xadvance=22 page=0 chnl=0
char id=39 x=503 y=141 width=8 height=12 xoffset=0 yoffset=3 xadvance=9 page=0 chnl=0
char id=40 x=48 y=35 width=13 height=30 xoffset=0 yoffset=3 xadvance=12 page=0 chnl=0
char id=41 x=61 y=35 width=12 height=30 xoffset=0 yoffset=3 xadvance=12 page=0 chnl=0
char id=42 x=490 y=141 width=13 height=16 xoffset=0 yoffset=1 xadvance=13 page=0 chnl=0
char id=43 x=471 y=141 width=19 height=18 xoffset=0 yoffset=6 xadvance=19 page=0 chnl=0
char id=44 x=16 y=165 width=9 height=13 xoffset=0 yoffset=19 xadvance=9 page=0 chnl=0
char id=45 x=142 y=165 width=12 height=6 xoffset=0 yoffset=14 xadvance=12 page=0 chnl=0
char id=46 x=85 y=165 width=9 height=8 xoffset=0 yoffset=19 xadvance=9 page=0 chnl=0
char id=47 x=243 y=35 width=19 height=29 xoffset=-2 yoffset=1 xadvance=15 page=0 chnl=0
char id=48 x=336 y=117 width=23 height=24 xoffset=0 yoffset=3 xadvance=23 page=0 chnl=0
char id=49 x=201 y=117 width=13 height=24 xoffset=-1 yoffset=3 xadvance=13 page=0 chnl=0
char id=50 x=214 y=117 width=19 height=24 xoffset=0 yoffset=3 xadvance=20 page=0 chnl=0
char id=51 x=239 y=66 width=21 height=25 xoffset=-1 yoffset=3 xadvance=19 page=0 chnl=0
char id=52 x=233 y=117 width=22 height=24 xoffset=-1 yoffset=3 xadvance=21 page=0 chnl=0
char id=53 x=260 y=66 width=20 height=25 xoffset=0 yoffset=3 xadvance=20 page=0 chnl=0
char id=54 x=255 y=117 width=21 height=24 xoffset=0 yoffset=3 xadvance=21 page=0 chnl=0
char id=55 x=276 y=117 width=19 height=24 xoffset=0 yoffset=3 xadvance=19 page=0 chnl=0
char id=56 x=295 y=117 width=20 height=24 xoffset=0 yoffset=3 xadvance=20 page=0 chnl=0
char id=57 x=315 y=117 width=21 height=24 xoffset=0 yoffset=3 xadvance=21 page=0 chnl=0
char id=58 x=375 y=141 width=9 height=19 xoffset=0 yoffset=8 xadvance=9 page=0 chnl=0
char id=59 x=386 y=117 width=9 height=24 xoffset=0 yoffset=8 xadvance=9 page=0 chnl=0
char id=60 x=384 y=141 width=18 height=19 xoffset=0 yoffset=6 xadvance=19 page=0 chnl=0
char id=61 x=25 y=165 width=19 height=13 xoffset=0 yoffset=9 xadvance=19 page=0 chnl=0
char id=62 x=402 y=141 width=18 height=19 xoffset=1 yoffset=6 xadvance=19 page=0 chnl=0
char id=63 x=368 y=117 width=18 height=24 xoffset=-1 yoffset=3 xadvance=16 page=0 chnl=0
char id=64 x=303 y=35 width=28 height=28 xoffset=0 yoffset=3 xadvance=28 page=0 chnl=0
char id=65 x=21 y=92 width=26 height=24 xoffset=-1 yoffset=3 xadvance=24 page=0 chnl=0
char id=66 x=47 y=92 width=22 height=24 xoffset=1 yoffset=3 xadvance=22 page=0 chnl=0
char id=67 x=69 y=92 width=23 height=24 xoffset=0 yoffset=3 xadvance=22 page=0 chnl=0
char id=68 x=92 y=92 width=23 height=24 xoffset=1 yoffset=3 xadvance=24 page=0 chnl=0
char id=69 x=115 y=92 width=20 height=24 xoffset=1 yoffset=3 xadvance=21 page=0 chnl=0
char id=70 x=135 y=92 width=20 height=24 xoffset=1 yoffset=3 xadvance=20 page=0 chnl=0
char id=71 x=155 y=92 width=23 height=24 xoffset=0 yoffset=3 xadvance=24 page=0 chnl=0
char id=72 x=178 y=92 width=22 height=24 xoffset=1 yoffset=3 xadvance=24 page=0 chnl=0
char id=73 x=200 y=92 width=7 height=24 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=0
char id=74 x=207 y=92 width=18 height=24 xoffset=-1 yoffset=3 xadvance=17 page=0 chnl=0
char id=75 x=225 y=92 width=23 height=24 xoffset=1 yoffset=3 xadvance=22 page=0 chnl=0
char id=76 x=248 y=92 width=18 height=24 xoffset=1 yoffset=3 xadvance=19 page=0 chnl=0
char id=77 x=266 y=92 width=26 height=24 xoffset=1 yoffset=3 xadvance=28 page=0 chnl=0
char id=78 x=292 y=92 width=23 height=24 xoffset=1 yoffset=3 xadvance=25 page=0 chnl=0
char id=79 x=315 y=92 width=26 height=24 xoffset=0 yoffset=3 xadvance=26 page=0 chnl=0
char id=80 x=341 y=92 width=21 height=24 xoffset=1 yoffset=3 xadvance=21 page=0 chnl=0
char id=81 x=362 y=92 width=26 height=24 xoffset=0 yoffset=3 xadvance=26 page=0 chnl=0
char id=82 x=388 y=92 width=21 height=24 xoffset=1 yoffset=3 xadvance=22 page=0 chnl=0
char id=83 x=409 y=92 width=22 height=24 xoffset=-1 yoffset=3 xadvance=20 page=0 chnl=0
char id=84 x=431 y=92 width=21 height=24 xoffset=0 yoffset=3 xadvance=20 page=0 chnl=0
char id=85 x=452 y=92 width=23 height=24 xoffset=1 yoffset=3 xadvance=24 page=0 chnl=0
char id=86 x=475 y=92 width=26 height=24 xoffset=-1 yoffset=3 xadvance=24 page=0 chnl=0
char id=87 x=0 y=117 width=36 height=24 xoffset=-1 yoffset=3 xadvance=35 page=0 chnl=0
char id=88 x=36 y=117 width=25 height=24 xoffset=-1 yoffset=3 xadvance=23 page=0 chnl=0
char id=89 x=61 y=117 width=25 height=24 xoffset=-1 yoffset=3 xadvance=22 page=0 chnl=0
char id=90 x=86 y=117 width=21 height=24 xoffset=0 yoffset=3 xadvance=21 page=0 chnl=0
char id=91 x=73 y=35 width=11 height=30 xoffset=1 yoffset=2 xadvance=12 page=0 chnl=0
char id=92 x=262 y=35 width=19 height=29 xoffset=-2 yoffset=1 xadvance=15 page=0 chnl=0
char id=93 x=84 y=35 width=12 height=30 xoffset=0 yoffset=2 xadvance=12 page=0 chnl=0
char id=94 x=60 y=165 width=16 height=11 xoffset=0 yoffset=3 xadvance=16 page=0 chnl=0
char id=95 x=154 y=165 width=22 height=5 xoffset=-2 yoffset=27 xadvance=19 page=0 chnl=0
char id=96 x=94 y=165 width=10 height=7 xoffset=1 yoffset=2 xadvance=12 page=0 chnl=0
char id=97 x=128 y=141 width=18 height=19 xoffset=0 yoffset=8 xadvance=19 page=0 chnl=0
char id=98 x=107 y=117 width=20 height=24 xoffset=1 yoffset=3 xadvance=21 page=0 chnl=0
char id=99 x=146 y=141 width=18 height=19 xoffset=0 yoffset=8 xadvance=18 page=0 chnl=0
char id=100 x=127 y=117 width=21 height=24 xoffset=0 yoffset=3 xadvance=21 page=0 chnl=0
char id=101 x=164 y=141 width=19 height=19 xoffset=0 yoffset=8 xadvance=19 page=0 chnl=0
char id=102 x=357 y=35 width=14 height=26 xoffset=-1 yoffset=1 xadvance=12 page=0 chnl=0
char id=103 x=157 y=66 width=20 height=25 xoffset=0 yoffset=8 xadvance=21 page=0 chnl=0
char id=104 x=148 y=117 width=19 height=24 xoffset=0 yoffset=3 xadvance=20 page=0 chnl=0
char id=105 x=349 y=35 width=8 height=27 xoffset=0 yoffset=0 xadvance=9 page=0 chnl=0
char id=106 x=14 y=0 width=12 height=33 xoffset=-3 yoffset=0 xadvance=9 page=0 chnl=0
char id=107 x=167 y=117 width=20 height=24 xoffset=0 yoffset=3 xadvance=18 page=0 chnl=0
char id=108 x=501 y=92 width=7 height=24 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=0
char id=109 x=183 y=141 width=29 height=19 xoffset=0 yoffset=8 xadvance=30 page=0 chnl=0
char id=110 x=212 y=141 width=19 height=19 xoffset=0 yoffset=8 xadvance=20 page=0 chnl=0
char id=111 x=231 y=141 width=21 height=19 xoffset=0 yoffset=8 xadvance=20 page=0 chnl=0
char id=112 x=177 y=66 width=20 height=25 xoffset=1 yoffset=8 xadvance=21 page=0 chnl=0
char id=113 x=197 y=66 width=21 height=25 xoffset=0 yoffset=8 xadvance=21 page=0 chnl=0
char id=114 x=491 y=117 width=13 height=20 xoffset=1 yoffset=7 xadvance=13 page=0 chnl=0
char id=115 x=252 y=141 width=17 height=19 xoffset=-1 yoffset=8 xadvance=16 page=0 chnl=0
char id=116 x=187 y=117 width=14 height=24 xoffset=-1 yoffset=3 xadvance=13 page=0 chnl=0
char id=117 x=269 y=141 width=19 height=19 xoffset=0 yoffset=8 xadvance=20 page=0 chnl=0
char id=118 x=288 y=141 width=21 height=19 xoffset=-1 yoffset=8 xadvance=19 page=0 chnl=0
char id=119 x=309 y=141 width=29 height=19 xoffset=-1 yoffset=8 xadvance=27 page=0 chnl=0
char id=120 x=338 y=141 width=20 height=19 xoffset=-1 yoffset=8 xadvance=18 page=0 chnl=0
char id=121 x=218 y=66 width=21 height=25 xoffset=-1 yoffset=8 xadvance=19 page=0 chnl=0
char id=122 x=358 y=141 width=17 height=19 xoffset=0 yoffset=8 xadvance=17 page=0 chnl=0
char id=123 x=96 y=35 width=13 height=30 xoffset=0 yoffset=3 xadvance=13 page=0 chnl=0
char id=124 x=502 y=0 width=6 height=29 xoffset=2 yoffset=1 xadvance=10 page=0 chnl=0
char id=125 x=109 y=35 width=13 height=30 xoffset=0 yoffset=3 xadvance=13 page=0 chnl=0
char id=126 x=104 y=165 width=14 height=7 xoffset=0 yoffset=11 xadvance=14 page=0 chnl=0
char id=161 x=497 y=35 width=8 height=25 xoffset=1 yoffset=8 xadvance=10 page=0 chnl=0
char id=162 x=303 y=66 width=18 height=25 xoffset=0 yoffset=5 xadvance=18 page=0 chnl=0
char id=163 x=445 y=117 width=21 height=24 xoffset=0 yoffset=3 xadvance=21 page=0 chnl=0
char id=165 x=466 y=117 width=25 height=24 xoffset=-1 yoffset=3 xadvance=22 page=0 chnl=0
char id=168 x=118 y=165 width=14 height=7 xoffset=1 yoffset=2 xadvance=15 page=0 chnl=0
char id=175 x=176 y=165 width=14 height=5 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=0
char id=180 x=132 y=165 width=10 height=7 xoffset=1 yoffset=2 xadvance=12 page=0 chnl=0
char id=184 x=76 y=165 width=9 height=9 xoffset=1 yoffset=25 xadvance=11 page=0 chnl=0
char id=191 x=321 y=66 width=18 height=25 xoffset=-1 yoffset=8 xadvance=16 page=0 chnl=0
char id=192 x=94 y=0 width=26 height=31 xoffset=-1 yoffset=-4 xadvance=24 page=0 chnl=0
char id=193 x=120 y=0 width=26 height=31 xoffset=-1 yoffset=-4 xadvance=24 page=0 chnl=0
char id=194 x=146 y=0 width=26 height=31 xoffset=-1 yoffset=-4 xadvance=24 page=0 chnl=0
char id=195 x=172 y=0 width=26 height=31 xoffset=-1 yoffset=-4 xadvance=24 page=0 chnl=0
char id=196 x=198 y=0 width=26 height=31 xoffset=-1 yoffset=-4 xadvance=24 page=0 chnl=0
char id=197 x=26 y=0 width=26 height=33 xoffset=-1 yoffset=-6 xadvance=24 page=0 chnl=0
char id=198 x=0 y=141 width=36 height=24 xoffset=-1 yoffset=3 xadvance=34 page=0 chnl=0
char id=199 x=122 y=35 width=23 height=30 xoffset=0 yoffset=3 xadvance=22 page=0 chnl=0
char id=200 x=224 y=0 width=20 height=31 xoffset=1 yoffset=-4 xadvance=21 page=0 chnl=0
char id=201 x=244 y=0 width=20 height=31 xoffset=1 yoffset=-4 xadvance=21 page=0 chnl=0
char id=202 x=264 y=0 width=20 height=31 xoffset=1 yoffset=-4 xadvance=21 page=0 chnl=0
char id=203 x=284 y=0 width=20 height=31 xoffset=1 yoffset=-4 xadvance=21 page=0 chnl=0
char id=204 x=304 y=0 width=12 height=31 xoffset=-3 yoffset=-4 xadvance=9 page=0 chnl=0
char id=205 x=316 y=0 width=12 height=31 xoffset=1 yoffset=-4 xadvance=9 page=0 chnl=0
char id=206 x=328 y=0 width=13 height=31 xoffset=-2 yoffset=-4 xadvance=9 page=0 chnl=0
char id=207 x=341 y=0 width=17 height=31 xoffset=-3 yoffset=-4 xadvance=9 page=0 chnl=0
char id=208 x=36 y=141 width=26 height=24 xoffset=0 yoffset=3 xadvance=26 page=0 chnl=0
char id=209 x=358 y=0 width=23 height=31 xoffset=1 yoffset=-4 xadvance=25 page=0 chnl=0
char id=210 x=381 y=0 width=26 height=31 xoffset=0 yoffset=-4 xadvance=26 page=0 chnl=0
char id=211 x=407 y=0 width=26 height=31 xoffset=0 yoffset=-4 xadvance=26 page=0 chnl=0
char id=212 x=145 y=35 width=26 height=30 xoffset=0 yoffset=-3 xadvance=26 page=0 chnl=0
char id=213 x=171 y=35 width=26 height=30 xoffset=0 yoffset=-3 xadvance=26 page=0 chnl=0
char id=214 x=197 y=35 width=26 height=30 xoffset=0 yoffset=-3 xadvance=26 page=0 chnl=0
char id=215 x=0 y=165 width=16 height=16 xoffset=1 yoffset=7 xadvance=18 page=0 chnl=0
char id=216 x=62 y=141 width=26 height=24 xoffset=0 yoffset=3 xadvance=26 page=0 chnl=0
char id=217 x=433 y=0 width=23 height=31 xoffset=1 yoffset=-4 xadvance=24 page=0 chnl=0
char id=218 x=456 y=0 width=23 height=31 xoffset=1 yoffset=-4 xadvance=24 page=0 chnl=0
char id=219 x=479 y=0 width=23 height=31 xoffset=1 yoffset=-4 xadvance=24 page=0 chnl=0
char id=220 x=0 y=35 width=23 height=31 xoffset=1 yoffset=-4 xadvance=24 page=0 chnl=0
char id=221 x=23 y=35 width=25 height=31 xoffset=-1 yoffset=-4 xadvance=22 page=0 chnl=0
char id=222 x=88 y=141 width=21 height=24 xoffset=1 yoffset=3 xadvance=21 page=0 chnl=0
char id=223 x=339 y=66 width=19 height=25 xoffset=1 yoffset=2 xadvance=20 page=0 chnl=0
char id=224 x=371 y=35 width=18 height=26 xoffset=0 yoffset=1 xadvance=19 page=0 chnl=0
char id=225 x=389 y=35 width=18 height=26 xoffset=0 yoffset=1 xadvance=19 page=0 chnl=0
char id=226 x=358 y=66 width=18 height=25 xoffset=0 yoffset=2 xadvance=19 page=0 chnl=0
char id=227 x=376 y=66 width=18 height=25 xoffset=0 yoffset=2 xadvance=19 page=0 chnl=0
char id=228 x=394 y=66 width=18 height=25 xoffset=0 yoffset=2 xadvance=19 page=0 chnl=0
char id=229 x=331 y=35 width=18 height=28 xoffset=0 yoffset=-1 xadvance=19 page=0 chnl=0
char id=230 x=420 y=141 width=30 height=19 xoffset=0 yoffset=8 xadvance=30 page=0 chnl=0
char id=231 x=412 y=66 width=18 height=25 xoffset=0 yoffset=8 xadvance=18 page=0 chnl=0
char id=232 x=407 y=35 width=19 height=26 xoffset=0 yoffset=1 xadvance=19 page=0 chnl=0
char id=233 x=426 y=35 width=19 height=26 xoffset=0 yoffset=1 xadvance=19 page=0 chnl=0
char id=234 x=430 y=66 width=19 height=25 xoffset=0 yoffset=2 xadvance=19 page=0 chnl=0
char id=235 x=449 y=66 width=19 height=25 xoffset=0 yoffset=2 xadvance=19 page=0 chnl=0
char id=236 x=445 y=35 width=12 height=26 xoffset=-3 yoffset=1 xadvance=9 page=0 chnl=0
char id=237 x=457 y=35 width=12 height=26 xoffset=1 yoffset=1 xadvance=9 page=0 chnl=0
char id=238 x=469 y=35 width=13 height=26 xoffset=-2 yoffset=1 xadvance=9 page=0 chnl=0
char id=239 x=482 y=35 width=15 height=26 xoffset=-3 yoffset=1 xadvance=9 page=0 chnl=0
char id=240 x=0 y=66 width=20 height=26 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=0
char id=241 x=20 y=66 width=19 height=26 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=0
char id=242 x=39 y=66 width=21 height=26 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=0
char id=243 x=60 y=66 width=21 height=26 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=0
char id=244 x=468 y=66 width=21 height=25 xoffset=0 yoffset=2 xadvance=20 page=0 chnl=0
char id=245 x=489 y=66 width=21 height=25 xoffset=0 yoffset=2 xadvance=20 page=0 chnl=0
char id=246 x=0 y=92 width=21 height=25 xoffset=0 yoffset=2 xadvance=20 page=0 chnl=0
char id=247 x=109 y=141 width=19 height=20 xoffset=0 yoffset=5 xadvance=19 page=0 chnl=0
char id=248 x=450 y=141 width=21 height=19 xoffset=0 yoffset=8 xadvance=20 page=0 chnl=0
char id=249 x=81 y=66 width=19 height=26 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=0
char id=250 x=100 y=66 width=19 height=26 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=0
char id=251 x=119 y=66 width=19 height=26 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=0
char id=252 x=138 y=66 width=19 height=26 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=0
char id=253 x=52 y=0 width=21 height=32 xoffset=-1 yoffset=1 xadvance=19 page=0 chnl=0
char id=254 x=223 y=35 width=20 height=30 xoffset=1 yoffset=3 xadvance=21 page=0 chnl=0
char id=255 x=73 y=0 width=21 height=32 xoffset=-1 yoffset=1 xadvance=19 page=0 chnl=0
kernings count=349
kerning first=244 second=119 amount=-1
kerning first=86 second=225 amount=-1
kerning first=119 second=245 amount=-1
kerning first=253 second=243 amount=-1
kerning first=111 second=89 amount=-4
kerning first=248 second=86 amount=-2
kerning first=84 second=211 amount=-1
kerning first=84 second=194 amount=-2
kerning first=221 second=235 amount=-4
kerning first=192 second=221 amount=-1
kerning first=121 second=44 amount=-3
kerning first=65 second=89 amount=-1
kerning first=75 second=216 amount=-1
kerning first=87 second=248 amount=-2
kerning first=89 second=242 amount=-4
kerning first=221 second=111 amount=-4
kerning first=233 second=221 amount=-4
kerning first=75 second=195 amount=1
kerning first=234 second=86 amount=-2
kerning first=121 second=233 amount=-1
kerning first=119 second=235 amount=-1
kerning first=111 second=119 amount=-1
kerning first=76 second=86 amount=-3
kerning first=246 second=221 amount=-4
kerning first=86 second=198 amount=-3
kerning first=118 second=242 amount=-1
kerning first=89 second=194 amount=-1
kerning first=92 second=92 amount=-4
kerning first=119 second=111 amount=-1
kerning first=86 second=232 amount=-2
kerning first=194 second=221 amount=-1
kerning first=89 second=101 amount=-4
kerning first=87 second=234 amount=-2
kerning first=192 second=86 amount=-3
kerning first=86 second=246 amount=-2
kerning first=233 second=86 amount=-2
kerning first=197 second=84 amount=-2
kerning first=92 second=47 amount=3
kerning first=75 second=193 amount=1
kerning first=118 second=101 amount=-1
kerning first=243 second=221 amount=-4
kerning first=245 second=87 amount=-2
kerning first=246 second=86 amount=-2
kerning first=84 second=197 amount=-2
kerning first=121 second=46 amount=-3
kerning first=193 second=221 amount=-1
kerning first=197 second=87 amount=-1
kerning first=194 second=86 amount=-3
kerning first=89 second=99 amount=-2
kerning first=87 second=231 amount=-2
kerning first=235 second=87 amount=-2
kerning first=195 second=71 amount=-1
kerning first=99 second=89 amount=-4
kerning first=89 second=197 amount=-1
kerning first=121 second=244 amount=-1
kerning first=221 second=196 amount=-1
kerning first=243 second=86 amount=-2
kerning first=68 second=196 amount=-1
kerning first=84 second=65 amount=-2
kerning first=221 second=233 amount=-4
kerning first=86 second=245 amount=-2
kerning first=119 second=44 amount=-3
kerning first=75 second=210 amount=-1
kerning first=89 second=243 amount=-4
kerning first=193 second=86 amount=-3
kerning first=87 second=242 amount=-2
kerning first=231 second=221 amount=-4
kerning first=255 second=232 amount=-1
kerning first=230 second=89 amount=-4
kerning first=196 second=84 amount=-2
kerning first=119 second=233 amount=-1
kerning first=255 second=246 amount=-1
kerning first=89 second=65 amount=-1
kerning first=118 second=243 amount=-1
kerning first=242 second=87 amount=-2
kerning first=87 second=194 amount=-1
kerning first=118 second=228 amount=-1
kerning first=86 second=235 amount=-2
kerning first=87 second=101 amount=-2
kerning first=196 second=87 amount=-1
kerning first=230 second=119 amount=-1
kerning first=213 second=87 amount=-1
kerning first=86 second=111 amount=-2
kerning first=253 second=232 amount=-1
kerning first=101 second=87 amount=-2
kerning first=192 second=71 amount=-1
kerning first=245 second=118 amount=-1
kerning first=231 second=86 amount=-2
kerning first=121 second=248 amount=-1
kerning first=86 second=226 amount=-1
kerning first=221 second=195 amount=-1
kerning first=253 second=246 amount=-1
kerning first=68 second=195 amount=-1
kerning first=84 second=214 amount=-1
kerning first=244 second=87 amount=-2
kerning first=84 second=192 amount=-2
kerning first=232 second=89 amount=-4
kerning first=119 second=46 amount=-3
kerning first=221 second=244 amount=-4
kerning first=47 second=47 amount=-4
kerning first=87 second=99 amount=-2
kerning first=121 second=234 amount=-1
kerning first=194 second=71 amount=-1
kerning first=65 second=84 amount=-2
kerning first=255 second=245 amount=-1
kerning first=89 second=192 amount=-1
kerning first=87 second=197 amount=-1
kerning first=119 second=244 amount=-1
kerning first=221 second=193 amount=-1
kerning first=111 second=87 amount=-2
kerning first=118 second=227 amount=-1
kerning first=68 second=193 amount=-1
kerning first=195 second=89 amount=-1
kerning first=232 second=119 amount=-1
kerning first=82 second=89 amount=-1
kerning first=65 second=87 amount=-1
kerning first=75 second=211 amount=-1
kerning first=87 second=243 amount=-2
kerning first=210 second=87 amount=-1
kerning first=255 second=235 amount=-1
kerning first=86 second=229 amount=-1
kerning first=75 second=194 amount=1
kerning first=193 second=71 amount=-1
kerning first=242 second=118 amount=-1
kerning first=253 second=245 amount=-1
kerning first=248 second=89 amount=-4
kerning first=255 second=111 amount=-1
kerning first=84 second=213 amount=-1
kerning first=86 second=196 amount=-3
kerning first=84 second=198 amount=-2
kerning first=87 second=65 amount=-1
kerning first=118 second=225 amount=-1
kerning first=221 second=248 amount=-4
kerning first=86 second=233 amount=-2
kerning first=234 second=89 amount=-4
kerning first=212 second=87 amount=-1
kerning first=248 second=119 amount=-1
kerning first=253 second=235 amount=-1
kerning first=244 second=118 amount=-1
kerning first=89 second=198 amount=-1
kerning first=121 second=242 amount=-1
kerning first=86 second=97 amount=-1
kerning first=119 second=248 amount=-1
kerning first=253 second=111 amount=-1
kerning first=84 second=79 amount=-1
kerning first=89 second=232 amount=-4
kerning first=221 second=234 amount=-4
kerning first=192 second=89 amount=-1
kerning first=234 second=119 amount=-1
kerning first=89 second=246 amount=-4
kerning first=233 second=89 amount=-4
kerning first=75 second=197 amount=1
kerning first=79 second=87 amount=-1
kerning first=118 second=232 amount=-1
kerning first=121 second=101 amount=-1
kerning first=119 second=234 amount=-1
kerning first=99 second=87 amount=-2
kerning first=245 second=221 amount=-4
kerning first=111 second=118 amount=-1
kerning first=246 second=89 amount=-4
kerning first=86 second=195 amount=-3
kerning first=118 second=246 amount=-1
kerning first=87 second=192 amount=-1
kerning first=197 second=221 amount=-1
kerning first=194 second=89 amount=-1
kerning first=233 second=119 amount=-1
kerning first=255 second=44 amount=-3
kerning first=221 second=231 amount=-2
kerning first=235 second=221 amount=-4
kerning first=86 second=244 amount=-2
kerning first=255 second=233 amount=-1
kerning first=86 second=224 amount=-1
kerning first=246 second=119 amount=-1
kerning first=75 second=65 amount=1
kerning first=230 second=87 amount=-2
kerning first=243 second=89 amount=-4
kerning first=245 second=86 amount=-2
kerning first=86 second=193 amount=-3
kerning first=89 second=245 amount=-4
kerning first=193 second=89 amount=-1
kerning first=253 second=44 amount=-3
kerning first=197 second=86 amount=-3
kerning first=221 second=242 amount=-4
kerning first=235 second=86 amount=-2
kerning first=253 second=233 amount=-1
kerning first=243 second=119 amount=-1
kerning first=118 second=245 amount=-1
kerning first=242 second=221 amount=-4
kerning first=87 second=198 amount=-1
kerning first=121 second=243 amount=-1
kerning first=221 second=194 amount=-1
kerning first=119 second=242 amount=-1
kerning first=68 second=194 amount=-1
kerning first=255 second=46 amount=-3
kerning first=89 second=235 amount=-4
kerning first=87 second=232 amount=-2
kerning first=196 second=221 amount=-1
kerning first=221 second=101 amount=-4
kerning first=86 second=248 amount=-2
kerning first=75 second=214 amount=-1
kerning first=101 second=221 amount=-4
kerning first=89 second=111 amount=-4
kerning first=87 second=246 amount=-2
kerning first=232 second=87 amount=-2
kerning first=231 second=89 amount=-4
kerning first=195 second=84 amount=-2
kerning first=86 second=230 amount=-1
kerning first=75 second=192 amount=1
kerning first=118 second=235 amount=-1
kerning first=119 second=101 amount=-1
kerning first=255 second=244 amount=-1
kerning first=244 second=221 amount=-4
kerning first=118 second=111 amount=-1
kerning first=242 second=86 amount=-2
kerning first=118 second=226 amount=-1
kerning first=253 second=46 amount=-3
kerning first=86 second=234 amount=-2
kerning first=195 second=87 amount=-1
kerning first=196 second=86 amount=-3
kerning first=221 second=99 amount=-2
kerning first=101 second=86 amount=-2
kerning first=221 second=197 amount=-1
kerning first=253 second=244 amount=-1
kerning first=118 second=100 amount=-1
kerning first=111 second=221 amount=-4
kerning first=248 second=87 amount=-2
kerning first=84 second=212 amount=-1
kerning first=68 second=197 amount=-1
kerning first=244 second=86 amount=-2
kerning first=76 second=84 amount=-1
kerning first=84 second=196 amount=-2
kerning first=65 second=221 amount=-1
kerning first=75 second=213 amount=-1
kerning first=87 second=245 amount=-2
kerning first=221 second=243 amount=-4
kerning first=86 second=231 amount=-2
kerning first=75 second=198 amount=1
kerning first=234 second=87 amount=-2
kerning first=197 second=71 amount=-1
kerning first=192 second=84 amount=-2
kerning first=255 second=248 amount=-1
kerning first=89 second=196 amount=-1
kerning first=221 second=65 amount=-1
kerning first=119 second=243 amount=-1
kerning first=118 second=229 amount=-1
kerning first=111 second=86 amount=-2
kerning first=68 second=65 amount=-1
kerning first=89 second=233 amount=-4
kerning first=87 second=235 amount=-2
kerning first=192 second=87 amount=-1
kerning first=118 second=44 amount=-3
kerning first=65 second=86 amount=-3
kerning first=86 second=242 amount=-2
kerning first=75 second=79 amount=-1
kerning first=87 second=111 amount=-2
kerning first=233 second=87 amount=-2
kerning first=194 second=84 amount=-2
kerning first=253 second=248 amount=-1
kerning first=255 second=234 amount=-1
kerning first=118 second=233 amount=-1
kerning first=84 second=216 amount=-1
kerning first=246 second=87 amount=-2
kerning first=86 second=194 amount=-3
kerning first=84 second=195 amount=-2
kerning first=118 second=97 amount=-1
kerning first=86 second=101 amount=-2
kerning first=194 second=87 amount=-1
kerning first=216 second=87 amount=-1
kerning first=99 second=221 amount=-4
kerning first=121 second=232 amount=-1
kerning first=253 second=234 amount=-1
kerning first=196 second=71 amount=-1
kerning first=248 second=118 amount=-1
kerning first=193 second=84 amount=-2
kerning first=89 second=195 amount=-1
kerning first=121 second=246 amount=-1
kerning first=221 second=192 amount=-1
kerning first=243 second=87 amount=-2
kerning first=68 second=192 amount=-1
kerning first=84 second=193 amount=-2
kerning first=118 second=46 amount=-3
kerning first=89 second=244 amount=-4
kerning first=193 second=87 amount=-1
kerning first=86 second=99 amount=-2
kerning first=230 second=221 amount=-4
kerning first=99 second=86 amount=-2
kerning first=255 second=242 amount=-1
kerning first=245 second=89 amount=-4
kerning first=86 second=197 amount=-3
kerning first=89 second=193 amount=-1
kerning first=87 second=196 amount=-1
kerning first=118 second=244 amount=-1
kerning first=118 second=224 amount=-1
kerning first=197 second=89 amount=-1
kerning first=87 second=233 amount=-2
kerning first=235 second=89 amount=-4
kerning first=86 second=243 amount=-2
kerning first=214 second=87 amount=-1
kerning first=245 second=119 amount=-1
kerning first=255 second=101 amount=-1
kerning first=231 second=87 amount=-2
kerning first=246 second=118 amount=-1
kerning first=65 second=71 amount=-1
kerning first=86 second=228 amount=-1
kerning first=221 second=198 amount=-1
kerning first=121 second=245 amount=-1
kerning first=230 second=86 amount=-2
kerning first=253 second=242 amount=-1
kerning first=68 second=198 amount=-1
kerning first=84 second=210 amount=-1
kerning first=86 second=65 amount=-3
kerning first=221 second=232 amount=-4
kerning first=235 second=119 amount=-1
kerning first=89 second=248 amount=-4
kerning first=232 second=221 amount=-4
kerning first=221 second=246 amount=-4
kerning first=211 second=87 amount=-1
kerning first=121 second=235 amount=-1
kerning first=119 second=232 amount=-1
kerning first=253 second=101 amount=-1
kerning first=243 second=118 amount=-1
kerning first=118 second=248 amount=-1
kerning first=242 second=89 amount=-4
kerning first=87 second=195 amount=-1
kerning first=121 second=111 amount=-1
kerning first=119 second=246 amount=-1
kerning first=118 second=230 amount=-1
kerning first=195 second=221 amount=-1
kerning first=89 second=234 amount=-4
kerning first=196 second=89 amount=-1
kerning first=82 second=221 amount=-1
kerning first=75 second=212 amount=-1
kerning first=101 second=89 amount=-4
kerning first=87 second=244 amount=-2
kerning first=232 second=86 amount=-2
kerning first=86 second=227 amount=-1
kerning first=75 second=196 amount=1
kerning first=242 second=119 amount=-1
kerning first=118 second=234 amount=-1
kerning first=248 second=221 amount=-4
kerning first=255 second=243 amount=-1
kerning first=244 second=89 amount=-4
kerning first=86 second=192 amount=-3
kerning first=87 second=193 amount=-1
kerning first=221 second=245 amount=-4
kerning first=101 second=119 amount=-1
kerning first=195 second=86 amount=-3
kerning first=89 second=231 amount=-2
kerning first=234 second=221 amount=-4

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -0,0 +1,545 @@
info face="Metropolis Bold" size=42 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=-2,-2
common lineHeight=43 base=34 scaleW=512 scaleH=512 pages=1 packed=0
page id=0 file="Metropolis-Bold-42.png"
chars count=170
char id=0 x=0 y=0 width=17 height=44 xoffset=2 yoffset=0 xadvance=21 page=0 chnl=0
char id=10 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=0 page=0 chnl=0
char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=12 page=0 chnl=0
char id=33 x=467 y=155 width=11 height=32 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=0
char id=34 x=397 y=251 width=20 height=15 xoffset=1 yoffset=4 xadvance=22 page=0 chnl=0
char id=35 x=144 y=220 width=29 height=31 xoffset=0 yoffset=4 xadvance=28 page=0 chnl=0
char id=36 x=426 y=44 width=27 height=39 xoffset=-1 yoffset=0 xadvance=27 page=0 chnl=0
char id=37 x=51 y=155 width=35 height=33 xoffset=0 yoffset=3 xadvance=35 page=0 chnl=0
char id=38 x=322 y=84 width=29 height=34 xoffset=0 yoffset=3 xadvance=29 page=0 chnl=0
char id=39 x=417 y=251 width=9 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=0
char id=40 x=362 y=44 width=15 height=39 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0
char id=41 x=377 y=44 width=15 height=39 xoffset=0 yoffset=3 xadvance=16 page=0 chnl=0
char id=42 x=346 y=251 width=17 height=18 xoffset=0 yoffset=2 xadvance=17 page=0 chnl=0
char id=43 x=302 y=251 width=23 height=23 xoffset=1 yoffset=8 xadvance=25 page=0 chnl=0
char id=44 x=363 y=251 width=11 height=16 xoffset=1 yoffset=26 xadvance=12 page=0 chnl=0
char id=45 x=14 y=277 width=15 height=8 xoffset=0 yoffset=18 xadvance=15 page=0 chnl=0
char id=46 x=458 y=251 width=10 height=10 xoffset=1 yoffset=26 xadvance=12 page=0 chnl=0
char id=47 x=0 y=84 width=25 height=37 xoffset=-3 yoffset=1 xadvance=19 page=0 chnl=0
char id=48 x=0 y=155 width=29 height=33 xoffset=0 yoffset=3 xadvance=30 page=0 chnl=0
char id=49 x=75 y=220 width=17 height=31 xoffset=-1 yoffset=4 xadvance=17 page=0 chnl=0
char id=50 x=416 y=155 width=25 height=32 xoffset=0 yoffset=3 xadvance=26 page=0 chnl=0
char id=51 x=402 y=121 width=25 height=33 xoffset=0 yoffset=3 xadvance=25 page=0 chnl=0
char id=52 x=92 y=220 width=27 height=31 xoffset=0 yoffset=4 xadvance=27 page=0 chnl=0
char id=53 x=441 y=155 width=26 height=32 xoffset=0 yoffset=4 xadvance=26 page=0 chnl=0
char id=54 x=427 y=121 width=27 height=33 xoffset=0 yoffset=3 xadvance=27 page=0 chnl=0
char id=55 x=119 y=220 width=25 height=31 xoffset=0 yoffset=4 xadvance=25 page=0 chnl=0
char id=56 x=454 y=121 width=26 height=33 xoffset=0 yoffset=3 xadvance=26 page=0 chnl=0
char id=57 x=480 y=121 width=27 height=33 xoffset=0 yoffset=3 xadvance=27 page=0 chnl=0
char id=58 x=112 y=251 width=10 height=25 xoffset=1 yoffset=11 xadvance=12 page=0 chnl=0
char id=59 x=499 y=155 width=11 height=31 xoffset=1 yoffset=11 xadvance=12 page=0 chnl=0
char id=60 x=234 y=251 width=22 height=24 xoffset=1 yoffset=8 xadvance=25 page=0 chnl=0
char id=61 x=374 y=251 width=23 height=16 xoffset=1 yoffset=12 xadvance=25 page=0 chnl=0
char id=62 x=256 y=251 width=23 height=24 xoffset=1 yoffset=8 xadvance=25 page=0 chnl=0
char id=63 x=29 y=155 width=22 height=33 xoffset=-1 yoffset=3 xadvance=21 page=0 chnl=0
char id=64 x=50 y=84 width=37 height=36 xoffset=0 yoffset=4 xadvance=37 page=0 chnl=0
char id=65 x=28 y=188 width=33 height=31 xoffset=-1 yoffset=4 xadvance=32 page=0 chnl=0
char id=66 x=61 y=188 width=27 height=31 xoffset=2 yoffset=4 xadvance=29 page=0 chnl=0
char id=67 x=96 y=121 width=30 height=33 xoffset=0 yoffset=3 xadvance=29 page=0 chnl=0
char id=68 x=88 y=188 width=30 height=31 xoffset=2 yoffset=4 xadvance=32 page=0 chnl=0
char id=69 x=118 y=188 width=26 height=31 xoffset=1 yoffset=4 xadvance=27 page=0 chnl=0
char id=70 x=144 y=188 width=26 height=31 xoffset=1 yoffset=4 xadvance=27 page=0 chnl=0
char id=71 x=126 y=121 width=30 height=33 xoffset=0 yoffset=3 xadvance=31 page=0 chnl=0
char id=72 x=170 y=188 width=29 height=31 xoffset=1 yoffset=4 xadvance=31 page=0 chnl=0
char id=73 x=489 y=155 width=10 height=31 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=0
char id=74 x=289 y=155 width=23 height=32 xoffset=-1 yoffset=4 xadvance=23 page=0 chnl=0
char id=75 x=199 y=188 width=29 height=31 xoffset=2 yoffset=4 xadvance=29 page=0 chnl=0
char id=76 x=228 y=188 width=24 height=31 xoffset=1 yoffset=4 xadvance=24 page=0 chnl=0
char id=77 x=252 y=188 width=33 height=31 xoffset=2 yoffset=4 xadvance=36 page=0 chnl=0
char id=78 x=285 y=188 width=29 height=31 xoffset=2 yoffset=4 xadvance=33 page=0 chnl=0
char id=79 x=156 y=121 width=34 height=33 xoffset=0 yoffset=3 xadvance=34 page=0 chnl=0
char id=80 x=314 y=188 width=27 height=31 xoffset=1 yoffset=4 xadvance=28 page=0 chnl=0
char id=81 x=190 y=121 width=34 height=33 xoffset=0 yoffset=3 xadvance=34 page=0 chnl=0
char id=82 x=341 y=188 width=28 height=31 xoffset=1 yoffset=4 xadvance=28 page=0 chnl=0
char id=83 x=224 y=121 width=27 height=33 xoffset=-1 yoffset=3 xadvance=27 page=0 chnl=0
char id=84 x=369 y=188 width=27 height=31 xoffset=0 yoffset=4 xadvance=27 page=0 chnl=0
char id=85 x=312 y=155 width=29 height=32 xoffset=1 yoffset=4 xadvance=32 page=0 chnl=0
char id=86 x=396 y=188 width=33 height=31 xoffset=-1 yoffset=4 xadvance=32 page=0 chnl=0
char id=87 x=429 y=188 width=47 height=31 xoffset=-1 yoffset=4 xadvance=45 page=0 chnl=0
char id=88 x=476 y=188 width=32 height=31 xoffset=-1 yoffset=4 xadvance=30 page=0 chnl=0
char id=89 x=0 y=220 width=31 height=31 xoffset=-1 yoffset=4 xadvance=29 page=0 chnl=0
char id=90 x=31 y=220 width=27 height=31 xoffset=0 yoffset=4 xadvance=28 page=0 chnl=0
char id=91 x=453 y=44 width=15 height=38 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0
char id=92 x=25 y=84 width=25 height=37 xoffset=-2 yoffset=1 xadvance=19 page=0 chnl=0
char id=93 x=468 y=44 width=15 height=38 xoffset=0 yoffset=3 xadvance=16 page=0 chnl=0
char id=94 x=426 y=251 width=20 height=14 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=0
char id=95 x=47 y=277 width=28 height=6 xoffset=-2 yoffset=36 xadvance=25 page=0 chnl=0
char id=96 x=486 y=251 width=14 height=9 xoffset=1 yoffset=2 xadvance=16 page=0 chnl=0
char id=97 x=333 y=220 width=23 height=26 xoffset=0 yoffset=10 xadvance=24 page=0 chnl=0
char id=98 x=251 y=121 width=27 height=33 xoffset=1 yoffset=3 xadvance=28 page=0 chnl=0
char id=99 x=356 y=220 width=23 height=26 xoffset=0 yoffset=10 xadvance=23 page=0 chnl=0
char id=100 x=278 y=121 width=27 height=33 xoffset=0 yoffset=3 xadvance=28 page=0 chnl=0
char id=101 x=379 y=220 width=25 height=26 xoffset=0 yoffset=10 xadvance=25 page=0 chnl=0
char id=102 x=305 y=121 width=17 height=33 xoffset=0 yoffset=2 xadvance=16 page=0 chnl=0
char id=103 x=322 y=121 width=26 height=33 xoffset=0 yoffset=10 xadvance=27 page=0 chnl=0
char id=104 x=341 y=155 width=24 height=32 xoffset=1 yoffset=3 xadvance=26 page=0 chnl=0
char id=105 x=312 y=84 width=10 height=34 xoffset=1 yoffset=1 xadvance=11 page=0 chnl=0
char id=106 x=50 y=0 width=17 height=42 xoffset=-4 yoffset=1 xadvance=11 page=0 chnl=0
char id=107 x=365 y=155 width=24 height=32 xoffset=1 yoffset=3 xadvance=24 page=0 chnl=0
char id=108 x=499 y=84 width=9 height=32 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=0
char id=109 x=27 y=251 width=37 height=25 xoffset=1 yoffset=10 xadvance=39 page=0 chnl=0
char id=110 x=64 y=251 width=24 height=25 xoffset=1 yoffset=10 xadvance=26 page=0 chnl=0
char id=111 x=404 y=220 width=27 height=26 xoffset=0 yoffset=10 xadvance=27 page=0 chnl=0
char id=112 x=348 y=121 width=27 height=33 xoffset=1 yoffset=10 xadvance=28 page=0 chnl=0
char id=113 x=375 y=121 width=27 height=33 xoffset=0 yoffset=10 xadvance=28 page=0 chnl=0
char id=114 x=491 y=220 width=17 height=25 xoffset=1 yoffset=10 xadvance=17 page=0 chnl=0
char id=115 x=431 y=220 width=21 height=26 xoffset=0 yoffset=10 xadvance=21 page=0 chnl=0
char id=116 x=58 y=220 width=17 height=31 xoffset=0 yoffset=5 xadvance=17 page=0 chnl=0
char id=117 x=88 y=251 width=24 height=25 xoffset=1 yoffset=11 xadvance=26 page=0 chnl=0
char id=118 x=122 y=251 width=27 height=24 xoffset=-1 yoffset=11 xadvance=25 page=0 chnl=0
char id=119 x=149 y=251 width=37 height=24 xoffset=-1 yoffset=11 xadvance=35 page=0 chnl=0
char id=120 x=186 y=251 width=26 height=24 xoffset=-1 yoffset=11 xadvance=24 page=0 chnl=0
char id=121 x=389 y=155 width=27 height=32 xoffset=-1 yoffset=11 xadvance=25 page=0 chnl=0
char id=122 x=212 y=251 width=22 height=24 xoffset=0 yoffset=11 xadvance=22 page=0 chnl=0
char id=123 x=392 y=44 width=17 height=39 xoffset=0 yoffset=3 xadvance=17 page=0 chnl=0
char id=124 x=503 y=0 width=7 height=37 xoffset=3 yoffset=1 xadvance=13 page=0 chnl=0
char id=125 x=409 y=44 width=17 height=39 xoffset=0 yoffset=3 xadvance=17 page=0 chnl=0
char id=126 x=468 y=251 width=18 height=10 xoffset=0 yoffset=14 xadvance=19 page=0 chnl=0
char id=161 x=478 y=155 width=11 height=32 xoffset=1 yoffset=10 xadvance=13 page=0 chnl=0
char id=162 x=173 y=220 width=23 height=31 xoffset=0 yoffset=8 xadvance=23 page=0 chnl=0
char id=163 x=0 y=188 width=28 height=32 xoffset=0 yoffset=3 xadvance=27 page=0 chnl=0
char id=165 x=196 y=220 width=31 height=31 xoffset=-1 yoffset=4 xadvance=29 page=0 chnl=0
char id=168 x=29 y=277 width=18 height=8 xoffset=1 yoffset=3 xadvance=20 page=0 chnl=0
char id=175 x=75 y=277 width=18 height=6 xoffset=1 yoffset=5 xadvance=20 page=0 chnl=0
char id=180 x=0 y=277 width=14 height=9 xoffset=1 yoffset=2 xadvance=16 page=0 chnl=0
char id=184 x=446 y=251 width=12 height=11 xoffset=1 yoffset=32 xadvance=14 page=0 chnl=0
char id=191 x=86 y=155 width=22 height=33 xoffset=0 yoffset=10 xadvance=21 page=0 chnl=0
char id=192 x=437 y=0 width=33 height=40 xoffset=-1 yoffset=-5 xadvance=32 page=0 chnl=0
char id=193 x=470 y=0 width=33 height=40 xoffset=-1 yoffset=-5 xadvance=32 page=0 chnl=0
char id=194 x=0 y=44 width=33 height=40 xoffset=-1 yoffset=-5 xadvance=32 page=0 chnl=0
char id=195 x=33 y=44 width=33 height=40 xoffset=-1 yoffset=-5 xadvance=32 page=0 chnl=0
char id=196 x=66 y=44 width=33 height=40 xoffset=-1 yoffset=-5 xadvance=32 page=0 chnl=0
char id=197 x=17 y=0 width=33 height=43 xoffset=-1 yoffset=-8 xadvance=32 page=0 chnl=0
char id=198 x=227 y=220 width=46 height=31 xoffset=-1 yoffset=4 xadvance=45 page=0 chnl=0
char id=199 x=169 y=0 width=30 height=41 xoffset=0 yoffset=3 xadvance=29 page=0 chnl=0
char id=200 x=99 y=44 width=26 height=40 xoffset=1 yoffset=-5 xadvance=27 page=0 chnl=0
char id=201 x=125 y=44 width=26 height=40 xoffset=1 yoffset=-5 xadvance=27 page=0 chnl=0
char id=202 x=151 y=44 width=26 height=40 xoffset=1 yoffset=-5 xadvance=27 page=0 chnl=0
char id=203 x=177 y=44 width=26 height=40 xoffset=1 yoffset=-5 xadvance=27 page=0 chnl=0
char id=204 x=203 y=44 width=17 height=40 xoffset=-4 yoffset=-5 xadvance=12 page=0 chnl=0
char id=205 x=220 y=44 width=17 height=40 xoffset=1 yoffset=-5 xadvance=12 page=0 chnl=0
char id=206 x=237 y=44 width=18 height=40 xoffset=-2 yoffset=-5 xadvance=12 page=0 chnl=0
char id=207 x=255 y=44 width=20 height=40 xoffset=-3 yoffset=-5 xadvance=12 page=0 chnl=0
char id=208 x=273 y=220 width=33 height=31 xoffset=0 yoffset=4 xadvance=34 page=0 chnl=0
char id=209 x=275 y=44 width=29 height=40 xoffset=2 yoffset=-5 xadvance=33 page=0 chnl=0
char id=210 x=67 y=0 width=34 height=42 xoffset=0 yoffset=-6 xadvance=34 page=0 chnl=0
char id=211 x=101 y=0 width=34 height=42 xoffset=0 yoffset=-6 xadvance=34 page=0 chnl=0
char id=212 x=135 y=0 width=34 height=42 xoffset=0 yoffset=-6 xadvance=34 page=0 chnl=0
char id=213 x=199 y=0 width=34 height=41 xoffset=0 yoffset=-5 xadvance=34 page=0 chnl=0
char id=214 x=233 y=0 width=34 height=41 xoffset=0 yoffset=-5 xadvance=34 page=0 chnl=0
char id=215 x=325 y=251 width=21 height=21 xoffset=1 yoffset=9 xadvance=24 page=0 chnl=0
char id=216 x=108 y=155 width=34 height=33 xoffset=0 yoffset=3 xadvance=34 page=0 chnl=0
char id=217 x=267 y=0 width=29 height=41 xoffset=1 yoffset=-5 xadvance=32 page=0 chnl=0
char id=218 x=296 y=0 width=29 height=41 xoffset=1 yoffset=-5 xadvance=32 page=0 chnl=0
char id=219 x=325 y=0 width=29 height=41 xoffset=1 yoffset=-5 xadvance=32 page=0 chnl=0
char id=220 x=354 y=0 width=29 height=41 xoffset=1 yoffset=-5 xadvance=32 page=0 chnl=0
char id=221 x=304 y=44 width=31 height=40 xoffset=-1 yoffset=-5 xadvance=29 page=0 chnl=0
char id=222 x=306 y=220 width=27 height=31 xoffset=1 yoffset=4 xadvance=28 page=0 chnl=0
char id=223 x=142 y=155 width=25 height=33 xoffset=1 yoffset=2 xadvance=26 page=0 chnl=0
char id=224 x=87 y=84 width=23 height=35 xoffset=0 yoffset=1 xadvance=24 page=0 chnl=0
char id=225 x=110 y=84 width=23 height=35 xoffset=0 yoffset=1 xadvance=24 page=0 chnl=0
char id=226 x=133 y=84 width=23 height=35 xoffset=0 yoffset=1 xadvance=24 page=0 chnl=0
char id=227 x=351 y=84 width=23 height=34 xoffset=0 yoffset=2 xadvance=24 page=0 chnl=0
char id=228 x=374 y=84 width=23 height=34 xoffset=0 yoffset=2 xadvance=24 page=0 chnl=0
char id=229 x=483 y=44 width=23 height=38 xoffset=0 yoffset=-2 xadvance=24 page=0 chnl=0
char id=230 x=452 y=220 width=39 height=26 xoffset=0 yoffset=10 xadvance=39 page=0 chnl=0
char id=231 x=397 y=84 width=23 height=34 xoffset=0 yoffset=10 xadvance=23 page=0 chnl=0
char id=232 x=156 y=84 width=25 height=35 xoffset=0 yoffset=1 xadvance=25 page=0 chnl=0
char id=233 x=181 y=84 width=25 height=35 xoffset=0 yoffset=1 xadvance=25 page=0 chnl=0
char id=234 x=206 y=84 width=25 height=35 xoffset=0 yoffset=1 xadvance=25 page=0 chnl=0
char id=235 x=420 y=84 width=25 height=34 xoffset=0 yoffset=2 xadvance=25 page=0 chnl=0
char id=236 x=167 y=155 width=16 height=33 xoffset=-4 yoffset=2 xadvance=11 page=0 chnl=0
char id=237 x=183 y=155 width=16 height=33 xoffset=1 yoffset=2 xadvance=11 page=0 chnl=0
char id=238 x=199 y=155 width=19 height=33 xoffset=-3 yoffset=2 xadvance=11 page=0 chnl=0
char id=239 x=218 y=155 width=21 height=33 xoffset=-3 yoffset=2 xadvance=11 page=0 chnl=0
char id=240 x=239 y=155 width=26 height=33 xoffset=0 yoffset=3 xadvance=27 page=0 chnl=0
char id=241 x=265 y=155 width=24 height=33 xoffset=1 yoffset=2 xadvance=26 page=0 chnl=0
char id=242 x=231 y=84 width=27 height=35 xoffset=0 yoffset=1 xadvance=27 page=0 chnl=0
char id=243 x=258 y=84 width=27 height=35 xoffset=0 yoffset=1 xadvance=27 page=0 chnl=0
char id=244 x=285 y=84 width=27 height=35 xoffset=0 yoffset=1 xadvance=27 page=0 chnl=0
char id=245 x=445 y=84 width=27 height=34 xoffset=0 yoffset=2 xadvance=27 page=0 chnl=0
char id=246 x=472 y=84 width=27 height=34 xoffset=0 yoffset=2 xadvance=27 page=0 chnl=0
char id=247 x=279 y=251 width=23 height=24 xoffset=1 yoffset=8 xadvance=25 page=0 chnl=0
char id=248 x=0 y=251 width=27 height=26 xoffset=0 yoffset=10 xadvance=27 page=0 chnl=0
char id=249 x=0 y=121 width=24 height=34 xoffset=1 yoffset=2 xadvance=26 page=0 chnl=0
char id=250 x=24 y=121 width=24 height=34 xoffset=1 yoffset=2 xadvance=26 page=0 chnl=0
char id=251 x=48 y=121 width=24 height=34 xoffset=1 yoffset=2 xadvance=26 page=0 chnl=0
char id=252 x=72 y=121 width=24 height=34 xoffset=1 yoffset=2 xadvance=26 page=0 chnl=0
char id=253 x=383 y=0 width=27 height=41 xoffset=-1 yoffset=2 xadvance=25 page=0 chnl=0
char id=254 x=335 y=44 width=27 height=40 xoffset=1 yoffset=3 xadvance=28 page=0 chnl=0
char id=255 x=410 y=0 width=27 height=41 xoffset=-1 yoffset=2 xadvance=25 page=0 chnl=0
kernings count=370
kerning first=244 second=119 amount=-1
kerning first=86 second=225 amount=-2
kerning first=119 second=245 amount=-1
kerning first=253 second=243 amount=-1
kerning first=111 second=89 amount=-5
kerning first=248 second=86 amount=-3
kerning first=67 second=79 amount=-1
kerning first=84 second=211 amount=-1
kerning first=84 second=194 amount=-2
kerning first=221 second=235 amount=-5
kerning first=192 second=221 amount=-1
kerning first=121 second=44 amount=-4
kerning first=65 second=89 amount=-1
kerning first=75 second=216 amount=-1
kerning first=87 second=248 amount=-2
kerning first=89 second=242 amount=-5
kerning first=221 second=111 amount=-5
kerning first=233 second=221 amount=-5
kerning first=75 second=195 amount=1
kerning first=234 second=86 amount=-3
kerning first=121 second=233 amount=-1
kerning first=119 second=235 amount=-1
kerning first=111 second=119 amount=-1
kerning first=76 second=86 amount=-5
kerning first=246 second=221 amount=-5
kerning first=86 second=198 amount=-4
kerning first=118 second=242 amount=-1
kerning first=89 second=194 amount=-1
kerning first=92 second=92 amount=-6
kerning first=199 second=211 amount=-1
kerning first=119 second=111 amount=-1
kerning first=114 second=242 amount=-1
kerning first=86 second=232 amount=-3
kerning first=194 second=221 amount=-1
kerning first=89 second=101 amount=-5
kerning first=87 second=234 amount=-2
kerning first=192 second=86 amount=-4
kerning first=86 second=246 amount=-3
kerning first=233 second=86 amount=-3
kerning first=197 second=84 amount=-3
kerning first=92 second=47 amount=3
kerning first=75 second=193 amount=1
kerning first=118 second=101 amount=-1
kerning first=243 second=221 amount=-5
kerning first=245 second=87 amount=-2
kerning first=246 second=86 amount=-3
kerning first=84 second=197 amount=-2
kerning first=121 second=46 amount=-4
kerning first=193 second=221 amount=-1
kerning first=197 second=87 amount=-2
kerning first=194 second=86 amount=-4
kerning first=89 second=99 amount=-3
kerning first=87 second=231 amount=-2
kerning first=235 second=87 amount=-2
kerning first=195 second=71 amount=-1
kerning first=99 second=89 amount=-5
kerning first=89 second=197 amount=-1
kerning first=121 second=244 amount=-1
kerning first=221 second=196 amount=-1
kerning first=243 second=86 amount=-3
kerning first=68 second=196 amount=-2
kerning first=84 second=65 amount=-2
kerning first=221 second=233 amount=-5
kerning first=86 second=245 amount=-3
kerning first=119 second=44 amount=-3
kerning first=75 second=210 amount=-1
kerning first=89 second=243 amount=-5
kerning first=193 second=86 amount=-4
kerning first=87 second=242 amount=-2
kerning first=231 second=221 amount=-5
kerning first=255 second=232 amount=-1
kerning first=230 second=89 amount=-5
kerning first=196 second=84 amount=-3
kerning first=119 second=233 amount=-1
kerning first=255 second=246 amount=-1
kerning first=89 second=65 amount=-1
kerning first=118 second=243 amount=-1
kerning first=242 second=87 amount=-2
kerning first=87 second=194 amount=-2
kerning first=118 second=228 amount=-1
kerning first=114 second=243 amount=-1
kerning first=86 second=235 amount=-3
kerning first=87 second=101 amount=-2
kerning first=196 second=87 amount=-2
kerning first=230 second=119 amount=-1
kerning first=213 second=87 amount=-1
kerning first=86 second=111 amount=-3
kerning first=253 second=232 amount=-1
kerning first=101 second=87 amount=-2
kerning first=192 second=71 amount=-1
kerning first=245 second=118 amount=-1
kerning first=231 second=86 amount=-3
kerning first=121 second=248 amount=-1
kerning first=86 second=226 amount=-2
kerning first=221 second=195 amount=-1
kerning first=253 second=246 amount=-1
kerning first=67 second=212 amount=-1
kerning first=68 second=195 amount=-2
kerning first=84 second=214 amount=-1
kerning first=244 second=87 amount=-2
kerning first=84 second=192 amount=-2
kerning first=232 second=89 amount=-5
kerning first=119 second=46 amount=-3
kerning first=221 second=244 amount=-5
kerning first=47 second=47 amount=-6
kerning first=87 second=99 amount=-2
kerning first=121 second=234 amount=-1
kerning first=194 second=71 amount=-1
kerning first=65 second=84 amount=-3
kerning first=255 second=245 amount=-1
kerning first=89 second=192 amount=-1
kerning first=87 second=197 amount=-2
kerning first=199 second=214 amount=-1
kerning first=119 second=244 amount=-1
kerning first=221 second=193 amount=-1
kerning first=111 second=87 amount=-2
kerning first=118 second=227 amount=-1
kerning first=68 second=193 amount=-2
kerning first=195 second=89 amount=-1
kerning first=232 second=119 amount=-1
kerning first=82 second=89 amount=-2
kerning first=65 second=87 amount=-2
kerning first=75 second=211 amount=-1
kerning first=87 second=243 amount=-2
kerning first=210 second=87 amount=-1
kerning first=255 second=235 amount=-1
kerning first=86 second=229 amount=-2
kerning first=75 second=194 amount=1
kerning first=193 second=71 amount=-1
kerning first=242 second=118 amount=-1
kerning first=253 second=245 amount=-1
kerning first=248 second=89 amount=-5
kerning first=255 second=111 amount=-1
kerning first=67 second=216 amount=-1
kerning first=84 second=213 amount=-1
kerning first=86 second=196 amount=-4
kerning first=84 second=198 amount=-2
kerning first=87 second=65 amount=-2
kerning first=118 second=225 amount=-1
kerning first=221 second=248 amount=-5
kerning first=86 second=233 amount=-3
kerning first=234 second=89 amount=-5
kerning first=212 second=87 amount=-1
kerning first=248 second=119 amount=-1
kerning first=253 second=235 amount=-1
kerning first=244 second=118 amount=-1
kerning first=89 second=198 amount=-1
kerning first=199 second=213 amount=-1
kerning first=121 second=242 amount=-1
kerning first=86 second=97 amount=-2
kerning first=119 second=248 amount=-1
kerning first=253 second=111 amount=-1
kerning first=84 second=79 amount=-1
kerning first=89 second=232 amount=-5
kerning first=221 second=234 amount=-5
kerning first=192 second=89 amount=-1
kerning first=234 second=119 amount=-1
kerning first=89 second=246 amount=-5
kerning first=233 second=89 amount=-5
kerning first=75 second=197 amount=1
kerning first=79 second=87 amount=-1
kerning first=118 second=232 amount=-1
kerning first=121 second=101 amount=-1
kerning first=119 second=234 amount=-1
kerning first=99 second=87 amount=-2
kerning first=245 second=221 amount=-5
kerning first=111 second=118 amount=-1
kerning first=246 second=89 amount=-5
kerning first=86 second=195 amount=-4
kerning first=118 second=246 amount=-1
kerning first=87 second=192 amount=-2
kerning first=199 second=79 amount=-1
kerning first=197 second=221 amount=-1
kerning first=114 second=246 amount=-1
kerning first=194 second=89 amount=-1
kerning first=233 second=119 amount=-1
kerning first=255 second=44 amount=-4
kerning first=221 second=231 amount=-3
kerning first=235 second=221 amount=-5
kerning first=86 second=244 amount=-3
kerning first=255 second=233 amount=-1
kerning first=86 second=224 amount=-2
kerning first=246 second=119 amount=-1
kerning first=75 second=65 amount=1
kerning first=230 second=87 amount=-2
kerning first=243 second=89 amount=-5
kerning first=67 second=210 amount=-1
kerning first=245 second=86 amount=-3
kerning first=86 second=193 amount=-4
kerning first=89 second=245 amount=-5
kerning first=193 second=89 amount=-1
kerning first=253 second=44 amount=-4
kerning first=197 second=86 amount=-4
kerning first=221 second=242 amount=-5
kerning first=235 second=86 amount=-3
kerning first=253 second=233 amount=-1
kerning first=243 second=119 amount=-1
kerning first=118 second=245 amount=-1
kerning first=242 second=221 amount=-5
kerning first=87 second=198 amount=-2
kerning first=121 second=243 amount=-1
kerning first=221 second=194 amount=-1
kerning first=119 second=242 amount=-1
kerning first=68 second=194 amount=-2
kerning first=114 second=245 amount=-1
kerning first=255 second=46 amount=-4
kerning first=89 second=235 amount=-5
kerning first=87 second=232 amount=-2
kerning first=196 second=221 amount=-1
kerning first=221 second=101 amount=-5
kerning first=86 second=248 amount=-3
kerning first=75 second=214 amount=-1
kerning first=101 second=221 amount=-5
kerning first=89 second=111 amount=-5
kerning first=87 second=246 amount=-2
kerning first=232 second=87 amount=-2
kerning first=231 second=89 amount=-5
kerning first=195 second=84 amount=-3
kerning first=86 second=230 amount=-2
kerning first=75 second=192 amount=1
kerning first=118 second=235 amount=-1
kerning first=119 second=101 amount=-1
kerning first=255 second=244 amount=-1
kerning first=244 second=221 amount=-5
kerning first=118 second=111 amount=-1
kerning first=242 second=86 amount=-3
kerning first=118 second=226 amount=-1
kerning first=253 second=46 amount=-4
kerning first=114 second=111 amount=-1
kerning first=86 second=234 amount=-3
kerning first=195 second=87 amount=-2
kerning first=196 second=86 amount=-4
kerning first=221 second=99 amount=-3
kerning first=101 second=86 amount=-3
kerning first=221 second=197 amount=-1
kerning first=253 second=244 amount=-1
kerning first=118 second=100 amount=-1
kerning first=111 second=221 amount=-5
kerning first=248 second=87 amount=-2
kerning first=67 second=211 amount=-1
kerning first=68 second=197 amount=-2
kerning first=84 second=212 amount=-1
kerning first=244 second=86 amount=-3
kerning first=76 second=84 amount=-1
kerning first=84 second=196 amount=-2
kerning first=65 second=221 amount=-1
kerning first=75 second=213 amount=-1
kerning first=87 second=245 amount=-2
kerning first=221 second=243 amount=-5
kerning first=86 second=231 amount=-3
kerning first=75 second=198 amount=1
kerning first=234 second=87 amount=-2
kerning first=197 second=71 amount=-1
kerning first=192 second=84 amount=-3
kerning first=255 second=248 amount=-1
kerning first=89 second=196 amount=-1
kerning first=199 second=212 amount=-1
kerning first=221 second=65 amount=-1
kerning first=119 second=243 amount=-1
kerning first=118 second=229 amount=-1
kerning first=111 second=86 amount=-3
kerning first=68 second=65 amount=-2
kerning first=89 second=233 amount=-5
kerning first=87 second=235 amount=-2
kerning first=192 second=87 amount=-2
kerning first=118 second=44 amount=-4
kerning first=65 second=86 amount=-4
kerning first=86 second=242 amount=-3
kerning first=75 second=79 amount=-1
kerning first=87 second=111 amount=-2
kerning first=233 second=87 amount=-2
kerning first=194 second=84 amount=-3
kerning first=253 second=248 amount=-1
kerning first=255 second=234 amount=-1
kerning first=118 second=233 amount=-1
kerning first=84 second=216 amount=-1
kerning first=246 second=87 amount=-2
kerning first=86 second=194 amount=-4
kerning first=84 second=195 amount=-2
kerning first=118 second=97 amount=-1
kerning first=86 second=101 amount=-3
kerning first=194 second=87 amount=-2
kerning first=216 second=87 amount=-1
kerning first=99 second=221 amount=-5
kerning first=121 second=232 amount=-1
kerning first=253 second=234 amount=-1
kerning first=196 second=71 amount=-1
kerning first=248 second=118 amount=-1
kerning first=193 second=84 amount=-3
kerning first=89 second=195 amount=-1
kerning first=199 second=216 amount=-1
kerning first=121 second=246 amount=-1
kerning first=221 second=192 amount=-1
kerning first=243 second=87 amount=-2
kerning first=68 second=192 amount=-2
kerning first=84 second=193 amount=-2
kerning first=118 second=46 amount=-4
kerning first=89 second=244 amount=-5
kerning first=193 second=87 amount=-2
kerning first=86 second=99 amount=-3
kerning first=230 second=221 amount=-5
kerning first=99 second=86 amount=-3
kerning first=255 second=242 amount=-1
kerning first=245 second=89 amount=-5
kerning first=86 second=197 amount=-4
kerning first=89 second=193 amount=-1
kerning first=87 second=196 amount=-2
kerning first=118 second=244 amount=-1
kerning first=118 second=224 amount=-1
kerning first=197 second=89 amount=-1
kerning first=114 second=244 amount=-1
kerning first=87 second=233 amount=-2
kerning first=235 second=89 amount=-5
kerning first=86 second=243 amount=-3
kerning first=214 second=87 amount=-1
kerning first=245 second=119 amount=-1
kerning first=255 second=101 amount=-1
kerning first=231 second=87 amount=-2
kerning first=246 second=118 amount=-1
kerning first=65 second=71 amount=-1
kerning first=86 second=228 amount=-2
kerning first=221 second=198 amount=-1
kerning first=121 second=245 amount=-1
kerning first=230 second=86 amount=-3
kerning first=253 second=242 amount=-1
kerning first=67 second=214 amount=-1
kerning first=68 second=198 amount=-2
kerning first=84 second=210 amount=-1
kerning first=86 second=65 amount=-4
kerning first=221 second=232 amount=-5
kerning first=235 second=119 amount=-1
kerning first=89 second=248 amount=-5
kerning first=232 second=221 amount=-5
kerning first=221 second=246 amount=-5
kerning first=211 second=87 amount=-1
kerning first=121 second=235 amount=-1
kerning first=119 second=232 amount=-1
kerning first=253 second=101 amount=-1
kerning first=243 second=118 amount=-1
kerning first=118 second=248 amount=-1
kerning first=242 second=89 amount=-5
kerning first=87 second=195 amount=-2
kerning first=199 second=210 amount=-1
kerning first=121 second=111 amount=-1
kerning first=119 second=246 amount=-1
kerning first=118 second=230 amount=-1
kerning first=114 second=248 amount=-1
kerning first=195 second=221 amount=-1
kerning first=89 second=234 amount=-5
kerning first=196 second=89 amount=-1
kerning first=82 second=221 amount=-2
kerning first=75 second=212 amount=-1
kerning first=101 second=89 amount=-5
kerning first=87 second=244 amount=-2
kerning first=232 second=86 amount=-3
kerning first=86 second=227 amount=-2
kerning first=75 second=196 amount=1
kerning first=242 second=119 amount=-1
kerning first=118 second=234 amount=-1
kerning first=248 second=221 amount=-5
kerning first=255 second=243 amount=-1
kerning first=67 second=213 amount=-1
kerning first=244 second=89 amount=-5
kerning first=86 second=192 amount=-4
kerning first=87 second=193 amount=-2
kerning first=221 second=245 amount=-5
kerning first=101 second=119 amount=-1
kerning first=195 second=86 amount=-4
kerning first=89 second=231 amount=-3
kerning first=234 second=221 amount=-5

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@@ -0,0 +1,581 @@
info face="Metropolis Bold" size=64 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=-2,-2
common lineHeight=65 base=51 scaleW=512 scaleH=512 pages=2 packed=0
page id=0 file="Metropolis-Bold-641.png"
page id=1 file="Metropolis-Bold-642.png"
chars count=170
char id=0 x=0 y=0 width=24 height=66 xoffset=4 yoffset=-1 xadvance=32 page=0 chnl=0
char id=10 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=0 page=0 chnl=0
char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=18 page=0 chnl=0
char id=33 x=114 y=386 width=15 height=47 xoffset=2 yoffset=6 xadvance=20 page=0 chnl=0
char id=34 x=103 y=479 width=29 height=22 xoffset=2 yoffset=6 xadvance=33 page=0 chnl=0
char id=36 x=394 y=126 width=40 height=57 xoffset=0 yoffset=1 xadvance=41 page=0 chnl=0
char id=37 x=43 y=338 width=52 height=48 xoffset=1 yoffset=5 xadvance=54 page=0 chnl=0
char id=38 x=109 y=240 width=43 height=49 xoffset=0 yoffset=5 xadvance=43 page=0 chnl=0
char id=39 x=132 y=479 width=13 height=22 xoffset=2 yoffset=6 xadvance=18 page=0 chnl=0
char id=40 x=261 y=126 width=22 height=58 xoffset=2 yoffset=5 xadvance=25 page=0 chnl=0
char id=41 x=283 y=126 width=22 height=58 xoffset=1 yoffset=5 xadvance=25 page=0 chnl=0
char id=42 x=30 y=479 width=24 height=26 xoffset=1 yoffset=4 xadvance=25 page=0 chnl=0
char id=44 x=88 y=479 width=15 height=23 xoffset=2 yoffset=39 xadvance=19 page=0 chnl=0
char id=45 x=291 y=479 width=21 height=10 xoffset=1 yoffset=28 xadvance=23 page=0 chnl=0
char id=46 x=190 y=479 width=15 height=14 xoffset=2 yoffset=39 xadvance=19 page=0 chnl=0
char id=47 x=434 y=126 width=36 height=55 xoffset=-3 yoffset=2 xadvance=30 page=0 chnl=0
char id=48 x=0 y=338 width=43 height=48 xoffset=1 yoffset=5 xadvance=45 page=0 chnl=0
char id=50 x=40 y=386 width=37 height=47 xoffset=1 yoffset=5 xadvance=39 page=0 chnl=0
char id=51 x=319 y=290 width=38 height=48 xoffset=0 yoffset=5 xadvance=39 page=0 chnl=0
char id=53 x=77 y=386 width=37 height=47 xoffset=1 yoffset=6 xadvance=40 page=0 chnl=0
char id=54 x=357 y=290 width=39 height=48 xoffset=1 yoffset=5 xadvance=41 page=0 chnl=0
char id=56 x=396 y=290 width=38 height=48 xoffset=1 yoffset=5 xadvance=40 page=0 chnl=0
char id=57 x=434 y=290 width=39 height=48 xoffset=1 yoffset=5 xadvance=41 page=0 chnl=0
char id=58 x=495 y=433 width=15 height=37 xoffset=2 yoffset=16 xadvance=19 page=0 chnl=0
char id=59 x=489 y=386 width=15 height=46 xoffset=2 yoffset=16 xadvance=19 page=0 chnl=0
char id=61 x=54 y=479 width=34 height=25 xoffset=2 yoffset=17 xadvance=39 page=0 chnl=0
char id=63 x=473 y=290 width=32 height=48 xoffset=0 yoffset=5 xadvance=32 page=0 chnl=0
char id=64 x=34 y=185 width=54 height=53 xoffset=1 yoffset=7 xadvance=56 page=0 chnl=0
char id=65 x=183 y=386 width=50 height=46 xoffset=-1 yoffset=6 xadvance=48 page=0 chnl=0
char id=66 x=233 y=386 width=41 height=46 xoffset=3 yoffset=6 xadvance=45 page=0 chnl=0
char id=67 x=412 y=240 width=44 height=48 xoffset=1 yoffset=5 xadvance=45 page=0 chnl=0
char id=68 x=274 y=386 width=44 height=46 xoffset=3 yoffset=6 xadvance=49 page=0 chnl=0
char id=69 x=318 y=386 width=37 height=46 xoffset=3 yoffset=6 xadvance=41 page=0 chnl=0
char id=70 x=355 y=386 width=37 height=46 xoffset=3 yoffset=6 xadvance=41 page=0 chnl=0
char id=71 x=456 y=240 width=44 height=48 xoffset=1 yoffset=5 xadvance=48 page=0 chnl=0
char id=72 x=392 y=386 width=42 height=46 xoffset=3 yoffset=6 xadvance=48 page=0 chnl=0
char id=73 x=434 y=386 width=12 height=46 xoffset=3 yoffset=6 xadvance=18 page=0 chnl=0
char id=74 x=305 y=338 width=33 height=47 xoffset=-1 yoffset=6 xadvance=35 page=0 chnl=0
char id=75 x=446 y=386 width=43 height=46 xoffset=3 yoffset=6 xadvance=45 page=0 chnl=0
char id=76 x=0 y=433 width=34 height=46 xoffset=3 yoffset=6 xadvance=37 page=0 chnl=0
char id=77 x=34 y=433 width=49 height=46 xoffset=3 yoffset=6 xadvance=55 page=0 chnl=0
char id=78 x=83 y=433 width=43 height=46 xoffset=3 yoffset=6 xadvance=50 page=0 chnl=0
char id=79 x=0 y=290 width=50 height=48 xoffset=1 yoffset=5 xadvance=52 page=0 chnl=0
char id=80 x=126 y=433 width=39 height=46 xoffset=3 yoffset=6 xadvance=42 page=0 chnl=0
char id=81 x=50 y=290 width=50 height=48 xoffset=1 yoffset=5 xadvance=52 page=0 chnl=0
char id=82 x=165 y=433 width=40 height=46 xoffset=3 yoffset=6 xadvance=43 page=0 chnl=0
char id=83 x=100 y=290 width=40 height=48 xoffset=0 yoffset=5 xadvance=41 page=0 chnl=0
char id=84 x=205 y=433 width=39 height=46 xoffset=1 yoffset=6 xadvance=41 page=0 chnl=0
char id=85 x=338 y=338 width=43 height=47 xoffset=3 yoffset=6 xadvance=48 page=0 chnl=0
char id=86 x=244 y=433 width=50 height=46 xoffset=-1 yoffset=6 xadvance=48 page=0 chnl=0
char id=87 x=294 y=433 width=69 height=46 xoffset=0 yoffset=6 xadvance=69 page=0 chnl=0
char id=88 x=363 y=433 width=46 height=46 xoffset=0 yoffset=6 xadvance=46 page=0 chnl=0
char id=89 x=409 y=433 width=47 height=46 xoffset=-1 yoffset=6 xadvance=44 page=0 chnl=0
char id=90 x=456 y=433 width=39 height=46 xoffset=2 yoffset=6 xadvance=42 page=0 chnl=0
char id=91 x=305 y=126 width=20 height=58 xoffset=3 yoffset=4 xadvance=25 page=0 chnl=0
char id=92 x=470 y=126 width=36 height=55 xoffset=-2 yoffset=2 xadvance=30 page=0 chnl=0
char id=93 x=325 y=126 width=21 height=58 xoffset=1 yoffset=4 xadvance=25 page=0 chnl=0
char id=94 x=145 y=479 width=29 height=20 xoffset=1 yoffset=6 xadvance=31 page=0 chnl=0
char id=95 x=312 y=479 width=41 height=8 xoffset=-2 yoffset=54 xadvance=38 page=0 chnl=0
char id=96 x=230 y=479 width=18 height=12 xoffset=3 yoffset=3 xadvance=24 page=0 chnl=0
char id=98 x=140 y=290 width=38 height=48 xoffset=3 yoffset=5 xadvance=42 page=0 chnl=0
char id=100 x=178 y=290 width=39 height=48 xoffset=1 yoffset=5 xadvance=42 page=0 chnl=0
char id=102 x=217 y=290 width=25 height=48 xoffset=0 yoffset=4 xadvance=24 page=0 chnl=0
char id=103 x=381 y=338 width=38 height=47 xoffset=1 yoffset=16 xadvance=42 page=0 chnl=0
char id=104 x=419 y=338 width=35 height=47 xoffset=2 yoffset=5 xadvance=39 page=0 chnl=0
char id=105 x=88 y=185 width=13 height=50 xoffset=2 yoffset=2 xadvance=17 page=0 chnl=0
char id=106 x=74 y=0 width=23 height=62 xoffset=-5 yoffset=2 xadvance=17 page=0 chnl=0
char id=107 x=454 y=338 width=36 height=47 xoffset=2 yoffset=5 xadvance=37 page=0 chnl=0
char id=108 x=490 y=338 width=12 height=47 xoffset=3 yoffset=5 xadvance=17 page=0 chnl=0
char id=112 x=242 y=290 width=38 height=48 xoffset=3 yoffset=16 xadvance=42 page=0 chnl=0
char id=113 x=280 y=290 width=39 height=48 xoffset=1 yoffset=16 xadvance=42 page=0 chnl=0
char id=121 x=0 y=386 width=40 height=47 xoffset=-1 yoffset=17 xadvance=38 page=0 chnl=0
char id=123 x=346 y=126 width=24 height=58 xoffset=1 yoffset=5 xadvance=26 page=0 chnl=0
char id=124 x=500 y=66 width=9 height=55 xoffset=5 yoffset=2 xadvance=19 page=0 chnl=0
char id=125 x=370 y=126 width=24 height=58 xoffset=1 yoffset=5 xadvance=26 page=0 chnl=0
char id=126 x=205 y=479 width=25 height=13 xoffset=2 yoffset=21 xadvance=29 page=0 chnl=0
char id=161 x=129 y=386 width=14 height=47 xoffset=3 yoffset=16 xadvance=20 page=0 chnl=0
char id=163 x=143 y=386 width=40 height=47 xoffset=1 yoffset=5 xadvance=42 page=0 chnl=0
char id=168 x=266 y=479 width=25 height=11 xoffset=3 yoffset=4 xadvance=31 page=0 chnl=0
char id=175 x=353 y=479 width=25 height=8 xoffset=3 yoffset=7 xadvance=30 page=0 chnl=0
char id=180 x=248 y=479 width=18 height=12 xoffset=3 yoffset=3 xadvance=24 page=0 chnl=0
char id=184 x=174 y=479 width=16 height=16 xoffset=3 yoffset=49 xadvance=21 page=0 chnl=0
char id=191 x=95 y=338 width=33 height=48 xoffset=0 yoffset=16 xadvance=32 page=0 chnl=0
char id=192 x=423 y=0 width=50 height=60 xoffset=-1 yoffset=-8 xadvance=48 page=0 chnl=0
char id=193 x=0 y=66 width=50 height=60 xoffset=-1 yoffset=-8 xadvance=48 page=0 chnl=0
char id=194 x=400 y=66 width=50 height=59 xoffset=-1 yoffset=-7 xadvance=48 page=0 chnl=0
char id=195 x=450 y=66 width=50 height=59 xoffset=-1 yoffset=-7 xadvance=48 page=0 chnl=0
char id=196 x=0 y=126 width=50 height=59 xoffset=-1 yoffset=-7 xadvance=48 page=0 chnl=0
char id=197 x=24 y=0 width=50 height=65 xoffset=-1 yoffset=-13 xadvance=48 page=0 chnl=0
char id=199 x=50 y=66 width=44 height=60 xoffset=1 yoffset=5 xadvance=45 page=0 chnl=0
char id=200 x=473 y=0 width=37 height=60 xoffset=3 yoffset=-8 xadvance=41 page=0 chnl=0
char id=201 x=94 y=66 width=37 height=60 xoffset=3 yoffset=-8 xadvance=41 page=0 chnl=0
char id=202 x=50 y=126 width=37 height=59 xoffset=3 yoffset=-7 xadvance=41 page=0 chnl=0
char id=203 x=87 y=126 width=37 height=59 xoffset=3 yoffset=-7 xadvance=41 page=0 chnl=0
char id=204 x=131 y=66 width=23 height=60 xoffset=-5 yoffset=-8 xadvance=18 page=0 chnl=0
char id=205 x=154 y=66 width=23 height=60 xoffset=3 yoffset=-8 xadvance=18 page=0 chnl=0
char id=206 x=124 y=126 width=26 height=59 xoffset=-3 yoffset=-7 xadvance=18 page=0 chnl=0
char id=207 x=150 y=126 width=30 height=59 xoffset=-4 yoffset=-7 xadvance=18 page=0 chnl=0
char id=209 x=180 y=126 width=43 height=59 xoffset=3 yoffset=-7 xadvance=50 page=0 chnl=0
char id=210 x=97 y=0 width=50 height=61 xoffset=1 yoffset=-8 xadvance=52 page=0 chnl=0
char id=211 x=147 y=0 width=50 height=61 xoffset=1 yoffset=-8 xadvance=52 page=0 chnl=0
char id=212 x=197 y=0 width=50 height=61 xoffset=1 yoffset=-8 xadvance=52 page=0 chnl=0
char id=213 x=247 y=0 width=50 height=61 xoffset=1 yoffset=-8 xadvance=52 page=0 chnl=0
char id=214 x=177 y=66 width=50 height=60 xoffset=1 yoffset=-7 xadvance=52 page=0 chnl=0
char id=215 x=0 y=479 width=30 height=30 xoffset=3 yoffset=15 xadvance=36 page=0 chnl=0
char id=216 x=128 y=338 width=50 height=48 xoffset=1 yoffset=5 xadvance=52 page=0 chnl=0
char id=217 x=297 y=0 width=43 height=61 xoffset=3 yoffset=-8 xadvance=48 page=0 chnl=0
char id=218 x=340 y=0 width=43 height=61 xoffset=3 yoffset=-8 xadvance=48 page=0 chnl=0
char id=219 x=227 y=66 width=43 height=60 xoffset=3 yoffset=-7 xadvance=48 page=0 chnl=0
char id=220 x=270 y=66 width=43 height=60 xoffset=3 yoffset=-7 xadvance=48 page=0 chnl=0
char id=221 x=313 y=66 width=47 height=60 xoffset=-1 yoffset=-8 xadvance=44 page=0 chnl=0
char id=223 x=178 y=338 width=36 height=48 xoffset=3 yoffset=4 xadvance=39 page=0 chnl=0
char id=224 x=101 y=185 width=34 height=50 xoffset=1 yoffset=3 xadvance=37 page=0 chnl=0
char id=225 x=135 y=185 width=34 height=50 xoffset=1 yoffset=3 xadvance=37 page=0 chnl=0
char id=226 x=169 y=185 width=34 height=50 xoffset=1 yoffset=3 xadvance=37 page=0 chnl=0
char id=227 x=203 y=185 width=34 height=50 xoffset=1 yoffset=3 xadvance=37 page=0 chnl=0
char id=228 x=152 y=240 width=34 height=49 xoffset=1 yoffset=4 xadvance=37 page=0 chnl=0
char id=229 x=0 y=185 width=34 height=55 xoffset=1 yoffset=-2 xadvance=37 page=0 chnl=0
char id=231 x=186 y=240 width=34 height=49 xoffset=1 yoffset=16 xadvance=35 page=0 chnl=0
char id=232 x=237 y=185 width=36 height=50 xoffset=1 yoffset=3 xadvance=38 page=0 chnl=0
char id=233 x=273 y=185 width=36 height=50 xoffset=1 yoffset=3 xadvance=38 page=0 chnl=0
char id=234 x=309 y=185 width=36 height=50 xoffset=1 yoffset=3 xadvance=38 page=0 chnl=0
char id=235 x=220 y=240 width=36 height=49 xoffset=1 yoffset=4 xadvance=38 page=0 chnl=0
char id=236 x=256 y=240 width=23 height=49 xoffset=-5 yoffset=3 xadvance=17 page=0 chnl=0
char id=237 x=279 y=240 width=24 height=49 xoffset=3 yoffset=3 xadvance=17 page=0 chnl=0
char id=238 x=214 y=338 width=27 height=48 xoffset=-3 yoffset=4 xadvance=17 page=0 chnl=0
char id=239 x=241 y=338 width=29 height=48 xoffset=-4 yoffset=4 xadvance=17 page=0 chnl=0
char id=240 x=345 y=185 width=38 height=50 xoffset=1 yoffset=3 xadvance=40 page=0 chnl=0
char id=241 x=270 y=338 width=35 height=48 xoffset=2 yoffset=4 xadvance=39 page=0 chnl=0
char id=242 x=383 y=185 width=39 height=50 xoffset=1 yoffset=3 xadvance=41 page=0 chnl=0
char id=243 x=422 y=185 width=39 height=50 xoffset=1 yoffset=3 xadvance=41 page=0 chnl=0
char id=244 x=461 y=185 width=39 height=50 xoffset=1 yoffset=3 xadvance=41 page=0 chnl=0
char id=245 x=0 y=240 width=39 height=50 xoffset=1 yoffset=3 xadvance=41 page=0 chnl=0
char id=246 x=303 y=240 width=39 height=49 xoffset=1 yoffset=4 xadvance=41 page=0 chnl=0
char id=249 x=39 y=240 width=35 height=50 xoffset=2 yoffset=3 xadvance=39 page=0 chnl=0
char id=250 x=74 y=240 width=35 height=50 xoffset=2 yoffset=3 xadvance=39 page=0 chnl=0
char id=251 x=342 y=240 width=35 height=49 xoffset=2 yoffset=4 xadvance=39 page=0 chnl=0
char id=252 x=377 y=240 width=35 height=49 xoffset=2 yoffset=4 xadvance=39 page=0 chnl=0
char id=253 x=383 y=0 width=40 height=61 xoffset=-1 yoffset=3 xadvance=38 page=0 chnl=0
char id=254 x=223 y=126 width=38 height=59 xoffset=3 yoffset=5 xadvance=42 page=0 chnl=0
char id=255 x=360 y=66 width=40 height=60 xoffset=-1 yoffset=4 xadvance=38 page=0 chnl=0
char id=35 x=125 y=0 width=43 height=46 xoffset=0 yoffset=6 xadvance=43 page=1 chnl=0
char id=43 x=70 y=83 width=34 height=34 xoffset=2 yoffset=13 xadvance=39 page=1 chnl=0
char id=49 x=25 y=0 width=24 height=46 xoffset=-1 yoffset=6 xadvance=27 page=1 chnl=0
char id=52 x=49 y=0 width=41 height=46 xoffset=0 yoffset=6 xadvance=41 page=1 chnl=0
char id=55 x=90 y=0 width=35 height=46 xoffset=2 yoffset=6 xadvance=39 page=1 chnl=0
char id=60 x=349 y=46 width=33 height=36 xoffset=2 yoffset=11 xadvance=38 page=1 chnl=0
char id=62 x=382 y=46 width=33 height=36 xoffset=3 yoffset=11 xadvance=38 page=1 chnl=0
char id=97 x=406 y=0 width=34 height=37 xoffset=1 yoffset=16 xadvance=37 page=1 chnl=0
char id=99 x=440 y=0 width=34 height=37 xoffset=1 yoffset=16 xadvance=35 page=1 chnl=0
char id=101 x=474 y=0 width=36 height=37 xoffset=1 yoffset=16 xadvance=38 page=1 chnl=0
char id=109 x=201 y=46 width=55 height=36 xoffset=2 yoffset=16 xadvance=59 page=1 chnl=0
char id=110 x=256 y=46 width=35 height=36 xoffset=2 yoffset=16 xadvance=39 page=1 chnl=0
char id=111 x=0 y=46 width=39 height=37 xoffset=1 yoffset=16 xadvance=41 page=1 chnl=0
char id=114 x=291 y=46 width=23 height=36 xoffset=3 yoffset=16 xadvance=26 page=1 chnl=0
char id=115 x=39 y=46 width=31 height=37 xoffset=0 yoffset=16 xadvance=32 page=1 chnl=0
char id=116 x=0 y=0 width=25 height=46 xoffset=0 yoffset=7 xadvance=25 page=1 chnl=0
char id=117 x=314 y=46 width=35 height=36 xoffset=2 yoffset=17 xadvance=39 page=1 chnl=0
char id=118 x=415 y=46 width=40 height=35 xoffset=-1 yoffset=17 xadvance=39 page=1 chnl=0
char id=119 x=455 y=46 width=54 height=35 xoffset=0 yoffset=17 xadvance=54 page=1 chnl=0
char id=120 x=0 y=83 width=38 height=35 xoffset=-1 yoffset=17 xadvance=36 page=1 chnl=0
char id=122 x=38 y=83 width=32 height=35 xoffset=1 yoffset=17 xadvance=34 page=1 chnl=0
char id=162 x=168 y=0 width=34 height=46 xoffset=1 yoffset=12 xadvance=35 page=1 chnl=0
char id=165 x=202 y=0 width=47 height=46 xoffset=-1 yoffset=6 xadvance=44 page=1 chnl=0
char id=198 x=249 y=0 width=69 height=46 xoffset=-1 yoffset=6 xadvance=69 page=1 chnl=0
char id=208 x=318 y=0 width=49 height=46 xoffset=1 yoffset=6 xadvance=51 page=1 chnl=0
char id=222 x=367 y=0 width=39 height=46 xoffset=3 yoffset=6 xadvance=42 page=1 chnl=0
char id=230 x=70 y=46 width=58 height=37 xoffset=1 yoffset=16 xadvance=60 page=1 chnl=0
char id=247 x=128 y=46 width=34 height=37 xoffset=2 yoffset=11 xadvance=39 page=1 chnl=0
char id=248 x=162 y=46 width=39 height=37 xoffset=1 yoffset=16 xadvance=41 page=1 chnl=0
kernings count=405
kerning first=244 second=119 amount=-2
kerning first=86 second=225 amount=-2
kerning first=119 second=245 amount=-2
kerning first=253 second=243 amount=-2
kerning first=111 second=89 amount=-7
kerning first=248 second=86 amount=-4
kerning first=67 second=79 amount=-1
kerning first=84 second=211 amount=-2
kerning first=99 second=242 amount=-1
kerning first=84 second=194 amount=-3
kerning first=221 second=235 amount=-7
kerning first=192 second=221 amount=-2
kerning first=121 second=44 amount=-6
kerning first=65 second=89 amount=-2
kerning first=75 second=216 amount=-2
kerning first=87 second=248 amount=-3
kerning first=89 second=242 amount=-7
kerning first=221 second=111 amount=-7
kerning first=233 second=221 amount=-7
kerning first=246 second=255 amount=-1
kerning first=75 second=195 amount=2
kerning first=234 second=86 amount=-4
kerning first=121 second=233 amount=-1
kerning first=119 second=235 amount=-2
kerning first=111 second=119 amount=-2
kerning first=76 second=86 amount=-7
kerning first=246 second=221 amount=-7
kerning first=86 second=198 amount=-6
kerning first=118 second=242 amount=-2
kerning first=89 second=194 amount=-1
kerning first=92 second=92 amount=-8
kerning first=199 second=211 amount=-1
kerning first=119 second=111 amount=-2
kerning first=114 second=242 amount=-1
kerning first=86 second=232 amount=-4
kerning first=194 second=221 amount=-2
kerning first=89 second=101 amount=-7
kerning first=87 second=234 amount=-3
kerning first=192 second=86 amount=-6
kerning first=86 second=246 amount=-4
kerning first=243 second=255 amount=-1
kerning first=248 second=121 amount=-1
kerning first=233 second=86 amount=-4
kerning first=197 second=84 amount=-4
kerning first=92 second=47 amount=5
kerning first=75 second=193 amount=2
kerning first=118 second=101 amount=-2
kerning first=243 second=221 amount=-7
kerning first=245 second=87 amount=-3
kerning first=246 second=86 amount=-4
kerning first=84 second=197 amount=-3
kerning first=121 second=46 amount=-6
kerning first=193 second=221 amount=-2
kerning first=197 second=87 amount=-3
kerning first=194 second=86 amount=-6
kerning first=89 second=99 amount=-4
kerning first=87 second=231 amount=-3
kerning first=235 second=87 amount=-3
kerning first=195 second=71 amount=-1
kerning first=99 second=89 amount=-7
kerning first=89 second=197 amount=-1
kerning first=121 second=244 amount=-2
kerning first=221 second=196 amount=-1
kerning first=243 second=86 amount=-4
kerning first=68 second=196 amount=-3
kerning first=99 second=243 amount=-1
kerning first=84 second=65 amount=-3
kerning first=221 second=233 amount=-7
kerning first=86 second=245 amount=-4
kerning first=119 second=44 amount=-5
kerning first=75 second=210 amount=-2
kerning first=89 second=243 amount=-7
kerning first=193 second=86 amount=-6
kerning first=87 second=242 amount=-3
kerning first=231 second=221 amount=-7
kerning first=246 second=121 amount=-1
kerning first=245 second=253 amount=-1
kerning first=230 second=89 amount=-7
kerning first=255 second=232 amount=-1
kerning first=196 second=84 amount=-4
kerning first=119 second=233 amount=-2
kerning first=255 second=246 amount=-2
kerning first=89 second=65 amount=-1
kerning first=118 second=243 amount=-2
kerning first=242 second=87 amount=-3
kerning first=87 second=194 amount=-3
kerning first=231 second=244 amount=-1
kerning first=118 second=228 amount=-2
kerning first=114 second=243 amount=-1
kerning first=86 second=235 amount=-4
kerning first=87 second=101 amount=-3
kerning first=196 second=87 amount=-3
kerning first=230 second=119 amount=-2
kerning first=213 second=87 amount=-1
kerning first=86 second=111 amount=-4
kerning first=101 second=87 amount=-3
kerning first=243 second=121 amount=-1
kerning first=192 second=71 amount=-1
kerning first=245 second=118 amount=-2
kerning first=231 second=86 amount=-4
kerning first=253 second=232 amount=-1
kerning first=121 second=248 amount=-2
kerning first=86 second=226 amount=-2
kerning first=221 second=195 amount=-1
kerning first=253 second=246 amount=-2
kerning first=67 second=212 amount=-1
kerning first=68 second=195 amount=-3
kerning first=84 second=214 amount=-2
kerning first=244 second=87 amount=-3
kerning first=84 second=192 amount=-3
kerning first=232 second=89 amount=-7
kerning first=119 second=46 amount=-5
kerning first=221 second=244 amount=-7
kerning first=47 second=47 amount=-8
kerning first=87 second=99 amount=-3
kerning first=242 second=253 amount=-1
kerning first=121 second=234 amount=-1
kerning first=194 second=71 amount=-1
kerning first=65 second=84 amount=-4
kerning first=255 second=245 amount=-2
kerning first=89 second=192 amount=-1
kerning first=87 second=197 amount=-3
kerning first=199 second=214 amount=-1
kerning first=119 second=244 amount=-2
kerning first=221 second=193 amount=-1
kerning first=231 second=248 amount=-1
kerning first=111 second=87 amount=-3
kerning first=118 second=227 amount=-2
kerning first=68 second=193 amount=-3
kerning first=195 second=89 amount=-2
kerning first=232 second=119 amount=-2
kerning first=82 second=89 amount=-2
kerning first=65 second=87 amount=-3
kerning first=75 second=211 amount=-2
kerning first=87 second=243 amount=-3
kerning first=210 second=87 amount=-1
kerning first=244 second=253 amount=-1
kerning first=86 second=229 amount=-2
kerning first=75 second=194 amount=2
kerning first=193 second=71 amount=-1
kerning first=242 second=118 amount=-2
kerning first=253 second=245 amount=-2
kerning first=255 second=235 amount=-1
kerning first=248 second=89 amount=-7
kerning first=255 second=111 amount=-2
kerning first=67 second=216 amount=-1
kerning first=84 second=213 amount=-2
kerning first=86 second=196 amount=-6
kerning first=84 second=198 amount=-3
kerning first=87 second=65 amount=-3
kerning first=118 second=225 amount=-2
kerning first=221 second=248 amount=-7
kerning first=86 second=233 amount=-4
kerning first=234 second=89 amount=-7
kerning first=212 second=87 amount=-1
kerning first=111 second=253 amount=-1
kerning first=248 second=119 amount=-2
kerning first=253 second=235 amount=-1
kerning first=244 second=118 amount=-2
kerning first=89 second=198 amount=-1
kerning first=199 second=213 amount=-1
kerning first=121 second=242 amount=-2
kerning first=86 second=97 amount=-2
kerning first=119 second=248 amount=-2
kerning first=253 second=111 amount=-2
kerning first=84 second=79 amount=-2
kerning first=99 second=246 amount=-1
kerning first=89 second=232 amount=-7
kerning first=221 second=234 amount=-7
kerning first=192 second=89 amount=-2
kerning first=234 second=119 amount=-2
kerning first=89 second=246 amount=-7
kerning first=233 second=89 amount=-7
kerning first=245 second=255 amount=-1
kerning first=75 second=197 amount=2
kerning first=79 second=87 amount=-1
kerning first=118 second=232 amount=-2
kerning first=121 second=101 amount=-1
kerning first=119 second=234 amount=-2
kerning first=99 second=87 amount=-3
kerning first=245 second=221 amount=-7
kerning first=111 second=118 amount=-2
kerning first=246 second=89 amount=-7
kerning first=86 second=195 amount=-6
kerning first=118 second=246 amount=-2
kerning first=87 second=192 amount=-3
kerning first=199 second=79 amount=-1
kerning first=231 second=242 amount=-1
kerning first=197 second=221 amount=-2
kerning first=114 second=246 amount=-1
kerning first=194 second=89 amount=-2
kerning first=233 second=119 amount=-2
kerning first=255 second=44 amount=-6
kerning first=221 second=231 amount=-4
kerning first=235 second=221 amount=-7
kerning first=86 second=244 amount=-4
kerning first=255 second=233 amount=-1
kerning first=86 second=224 amount=-2
kerning first=246 second=119 amount=-2
kerning first=75 second=65 amount=2
kerning first=230 second=87 amount=-3
kerning first=243 second=89 amount=-7
kerning first=67 second=210 amount=-1
kerning first=245 second=86 amount=-4
kerning first=99 second=245 amount=-1
kerning first=86 second=193 amount=-6
kerning first=89 second=245 amount=-7
kerning first=193 second=89 amount=-2
kerning first=253 second=44 amount=-6
kerning first=197 second=86 amount=-6
kerning first=221 second=242 amount=-7
kerning first=242 second=255 amount=-1
kerning first=235 second=86 amount=-4
kerning first=253 second=233 amount=-1
kerning first=243 second=119 amount=-2
kerning first=118 second=245 amount=-2
kerning first=242 second=221 amount=-7
kerning first=87 second=198 amount=-3
kerning first=121 second=243 amount=-2
kerning first=221 second=194 amount=-1
kerning first=119 second=242 amount=-2
kerning first=68 second=194 amount=-3
kerning first=114 second=245 amount=-1
kerning first=99 second=111 amount=-1
kerning first=255 second=46 amount=-6
kerning first=89 second=235 amount=-7
kerning first=87 second=232 amount=-3
kerning first=196 second=221 amount=-2
kerning first=221 second=101 amount=-7
kerning first=86 second=248 amount=-4
kerning first=75 second=214 amount=-2
kerning first=101 second=221 amount=-7
kerning first=89 second=111 amount=-7
kerning first=87 second=246 amount=-3
kerning first=232 second=87 amount=-3
kerning first=244 second=255 amount=-1
kerning first=231 second=89 amount=-7
kerning first=245 second=121 amount=-1
kerning first=195 second=84 amount=-4
kerning first=86 second=230 amount=-2
kerning first=75 second=192 amount=2
kerning first=118 second=235 amount=-2
kerning first=119 second=101 amount=-2
kerning first=255 second=244 amount=-2
kerning first=244 second=221 amount=-7
kerning first=118 second=111 amount=-2
kerning first=242 second=86 amount=-4
kerning first=231 second=243 amount=-1
kerning first=118 second=226 amount=-2
kerning first=253 second=46 amount=-6
kerning first=114 second=111 amount=-1
kerning first=86 second=234 amount=-4
kerning first=195 second=87 amount=-3
kerning first=196 second=86 amount=-6
kerning first=221 second=99 amount=-4
kerning first=111 second=255 amount=-1
kerning first=101 second=86 amount=-4
kerning first=221 second=197 amount=-1
kerning first=253 second=244 amount=-2
kerning first=118 second=100 amount=-1
kerning first=111 second=221 amount=-7
kerning first=248 second=87 amount=-3
kerning first=67 second=211 amount=-1
kerning first=68 second=197 amount=-3
kerning first=84 second=212 amount=-2
kerning first=244 second=86 amount=-4
kerning first=76 second=84 amount=-1
kerning first=84 second=196 amount=-3
kerning first=65 second=221 amount=-2
kerning first=75 second=213 amount=-2
kerning first=87 second=245 amount=-3
kerning first=221 second=243 amount=-7
kerning first=86 second=231 amount=-4
kerning first=75 second=198 amount=2
kerning first=242 second=121 amount=-1
kerning first=234 second=87 amount=-3
kerning first=197 second=71 amount=-1
kerning first=192 second=84 amount=-4
kerning first=255 second=248 amount=-2
kerning first=89 second=196 amount=-1
kerning first=199 second=212 amount=-1
kerning first=221 second=65 amount=-1
kerning first=119 second=243 amount=-2
kerning first=118 second=229 amount=-2
kerning first=111 second=86 amount=-4
kerning first=68 second=65 amount=-3
kerning first=89 second=233 amount=-7
kerning first=87 second=235 amount=-3
kerning first=192 second=87 amount=-3
kerning first=118 second=44 amount=-6
kerning first=65 second=86 amount=-6
kerning first=86 second=242 amount=-4
kerning first=75 second=79 amount=-2
kerning first=87 second=111 amount=-3
kerning first=233 second=87 amount=-3
kerning first=244 second=121 amount=-1
kerning first=248 second=253 amount=-1
kerning first=194 second=84 amount=-4
kerning first=253 second=248 amount=-2
kerning first=118 second=233 amount=-2
kerning first=255 second=234 amount=-1
kerning first=84 second=216 amount=-2
kerning first=246 second=87 amount=-3
kerning first=86 second=194 amount=-6
kerning first=84 second=195 amount=-3
kerning first=118 second=97 amount=-2
kerning first=86 second=101 amount=-4
kerning first=194 second=87 amount=-3
kerning first=216 second=87 amount=-1
kerning first=99 second=221 amount=-7
kerning first=121 second=232 amount=-1
kerning first=111 second=121 amount=-1
kerning first=253 second=234 amount=-1
kerning first=196 second=71 amount=-1
kerning first=248 second=118 amount=-2
kerning first=193 second=84 amount=-4
kerning first=89 second=195 amount=-1
kerning first=199 second=216 amount=-1
kerning first=121 second=246 amount=-2
kerning first=221 second=192 amount=-1
kerning first=243 second=87 amount=-3
kerning first=68 second=192 amount=-3
kerning first=99 second=244 amount=-1
kerning first=84 second=193 amount=-3
kerning first=118 second=46 amount=-6
kerning first=89 second=244 amount=-7
kerning first=193 second=87 amount=-3
kerning first=246 second=253 amount=-1
kerning first=86 second=99 amount=-4
kerning first=230 second=221 amount=-7
kerning first=99 second=86 amount=-4
kerning first=255 second=242 amount=-2
kerning first=245 second=89 amount=-7
kerning first=86 second=197 amount=-6
kerning first=89 second=193 amount=-1
kerning first=87 second=196 amount=-3
kerning first=118 second=244 amount=-2
kerning first=231 second=246 amount=-1
kerning first=118 second=224 amount=-2
kerning first=197 second=89 amount=-2
kerning first=114 second=244 amount=-1
kerning first=87 second=233 amount=-3
kerning first=235 second=89 amount=-7
kerning first=86 second=243 amount=-4
kerning first=214 second=87 amount=-1
kerning first=245 second=119 amount=-2
kerning first=243 second=253 amount=-1
kerning first=231 second=87 amount=-3
kerning first=255 second=101 amount=-1
kerning first=246 second=118 amount=-2
kerning first=65 second=71 amount=-1
kerning first=86 second=228 amount=-2
kerning first=221 second=198 amount=-1
kerning first=121 second=245 amount=-2
kerning first=230 second=86 amount=-4
kerning first=253 second=242 amount=-2
kerning first=67 second=214 amount=-1
kerning first=68 second=198 amount=-3
kerning first=84 second=210 amount=-2
kerning first=99 second=248 amount=-1
kerning first=86 second=65 amount=-6
kerning first=221 second=232 amount=-7
kerning first=235 second=119 amount=-2
kerning first=89 second=248 amount=-7
kerning first=232 second=221 amount=-7
kerning first=221 second=246 amount=-7
kerning first=211 second=87 amount=-1
kerning first=121 second=235 amount=-1
kerning first=119 second=232 amount=-2
kerning first=253 second=101 amount=-1
kerning first=243 second=118 amount=-2
kerning first=118 second=248 amount=-2
kerning first=242 second=89 amount=-7
kerning first=87 second=195 amount=-3
kerning first=199 second=210 amount=-1
kerning first=121 second=111 amount=-2
kerning first=119 second=246 amount=-2
kerning first=231 second=245 amount=-1
kerning first=118 second=230 amount=-2
kerning first=114 second=248 amount=-1
kerning first=195 second=221 amount=-2
kerning first=89 second=234 amount=-7
kerning first=196 second=89 amount=-2
kerning first=82 second=221 amount=-2
kerning first=75 second=212 amount=-2
kerning first=101 second=89 amount=-7
kerning first=87 second=244 amount=-3
kerning first=232 second=86 amount=-4
kerning first=248 second=255 amount=-1
kerning first=86 second=227 amount=-2
kerning first=75 second=196 amount=2
kerning first=242 second=119 amount=-2
kerning first=118 second=234 amount=-2
kerning first=248 second=221 amount=-7
kerning first=255 second=243 amount=-2
kerning first=67 second=213 amount=-1
kerning first=244 second=89 amount=-7
kerning first=86 second=192 amount=-6
kerning first=87 second=193 amount=-3
kerning first=231 second=111 amount=-1
kerning first=221 second=245 amount=-7
kerning first=101 second=119 amount=-2
kerning first=195 second=86 amount=-6
kerning first=89 second=231 amount=-4
kerning first=234 second=221 amount=-7

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,550 @@
info face="Metropolis-Regular" size=32 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=-2,-2
common lineHeight=33 base=26 scaleW=512 scaleH=512 pages=1 packed=0
page id=0 file="Metropolis-Regular-32.png"
chars count=170
char id=0 x=0 y=0 width=14 height=35 xoffset=1 yoffset=-1 xadvance=16 page=0 chnl=0
char id=10 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=0 page=0 chnl=0
char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=9 page=0 chnl=0
char id=33 x=494 y=91 width=7 height=24 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=0
char id=34 x=353 y=139 width=11 height=10 xoffset=1 yoffset=3 xadvance=13 page=0 chnl=0
char id=35 x=158 y=115 width=22 height=24 xoffset=0 yoffset=3 xadvance=22 page=0 chnl=0
char id=36 x=212 y=35 width=19 height=29 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=0
char id=37 x=133 y=115 width=25 height=24 xoffset=0 yoffset=3 xadvance=25 page=0 chnl=0
char id=38 x=180 y=115 width=22 height=24 xoffset=0 yoffset=3 xadvance=21 page=0 chnl=0
char id=39 x=364 y=139 width=6 height=10 xoffset=1 yoffset=3 xadvance=7 page=0 chnl=0
char id=40 x=449 y=0 width=11 height=30 xoffset=0 yoffset=3 xadvance=11 page=0 chnl=0
char id=41 x=460 y=0 width=11 height=30 xoffset=0 yoffset=3 xadvance=11 page=0 chnl=0
char id=42 x=308 y=139 width=13 height=14 xoffset=0 yoffset=2 xadvance=13 page=0 chnl=0
char id=43 x=259 y=139 width=17 height=18 xoffset=1 yoffset=6 xadvance=19 page=0 chnl=0
char id=44 x=370 y=139 width=7 height=10 xoffset=1 yoffset=21 xadvance=8 page=0 chnl=0
char id=45 x=423 y=139 width=12 height=5 xoffset=0 yoffset=15 xadvance=12 page=0 chnl=0
char id=46 x=417 y=139 width=6 height=6 xoffset=1 yoffset=21 xadvance=8 page=0 chnl=0
char id=47 x=178 y=35 width=17 height=29 xoffset=-2 yoffset=1 xadvance=13 page=0 chnl=0
char id=48 x=94 y=115 width=22 height=24 xoffset=0 yoffset=3 xadvance=22 page=0 chnl=0
char id=49 x=427 y=91 width=11 height=24 xoffset=-1 yoffset=3 xadvance=11 page=0 chnl=0
char id=50 x=438 y=91 width=18 height=24 xoffset=0 yoffset=3 xadvance=19 page=0 chnl=0
char id=51 x=456 y=91 width=18 height=24 xoffset=0 yoffset=3 xadvance=19 page=0 chnl=0
char id=52 x=474 y=91 width=20 height=24 xoffset=0 yoffset=3 xadvance=20 page=0 chnl=0
char id=53 x=0 y=115 width=19 height=24 xoffset=0 yoffset=3 xadvance=19 page=0 chnl=0
char id=54 x=19 y=115 width=19 height=24 xoffset=0 yoffset=3 xadvance=20 page=0 chnl=0
char id=55 x=38 y=115 width=18 height=24 xoffset=0 yoffset=3 xadvance=19 page=0 chnl=0
char id=56 x=56 y=115 width=19 height=24 xoffset=0 yoffset=3 xadvance=19 page=0 chnl=0
char id=57 x=75 y=115 width=19 height=24 xoffset=0 yoffset=3 xadvance=20 page=0 chnl=0
char id=58 x=504 y=115 width=6 height=19 xoffset=1 yoffset=8 xadvance=8 page=0 chnl=0
char id=59 x=501 y=91 width=7 height=23 xoffset=1 yoffset=8 xadvance=8 page=0 chnl=0
char id=60 x=173 y=139 width=18 height=19 xoffset=0 yoffset=6 xadvance=19 page=0 chnl=0
char id=61 x=321 y=139 width=17 height=12 xoffset=1 yoffset=9 xadvance=19 page=0 chnl=0
char id=62 x=191 y=139 width=17 height=19 xoffset=1 yoffset=6 xadvance=19 page=0 chnl=0
char id=63 x=116 y=115 width=17 height=24 xoffset=-1 yoffset=3 xadvance=16 page=0 chnl=0
char id=64 x=257 y=35 width=28 height=28 xoffset=0 yoffset=3 xadvance=28 page=0 chnl=0
char id=65 x=312 y=65 width=25 height=24 xoffset=0 yoffset=3 xadvance=24 page=0 chnl=0
char id=66 x=337 y=65 width=19 height=24 xoffset=2 yoffset=3 xadvance=22 page=0 chnl=0
char id=67 x=356 y=65 width=22 height=24 xoffset=0 yoffset=3 xadvance=22 page=0 chnl=0
char id=68 x=378 y=65 width=22 height=24 xoffset=2 yoffset=3 xadvance=24 page=0 chnl=0
char id=69 x=400 y=65 width=19 height=24 xoffset=1 yoffset=3 xadvance=20 page=0 chnl=0
char id=70 x=419 y=65 width=19 height=24 xoffset=1 yoffset=3 xadvance=19 page=0 chnl=0
char id=71 x=438 y=65 width=23 height=24 xoffset=0 yoffset=3 xadvance=24 page=0 chnl=0
char id=72 x=461 y=65 width=21 height=24 xoffset=1 yoffset=3 xadvance=23 page=0 chnl=0
char id=73 x=482 y=65 width=6 height=24 xoffset=1 yoffset=3 xadvance=8 page=0 chnl=0
char id=74 x=488 y=65 width=17 height=24 xoffset=-1 yoffset=3 xadvance=17 page=0 chnl=0
char id=75 x=0 y=91 width=21 height=24 xoffset=1 yoffset=3 xadvance=21 page=0 chnl=0
char id=76 x=21 y=91 width=17 height=24 xoffset=1 yoffset=3 xadvance=18 page=0 chnl=0
char id=77 x=38 y=91 width=24 height=24 xoffset=2 yoffset=3 xadvance=27 page=0 chnl=0
char id=78 x=62 y=91 width=21 height=24 xoffset=2 yoffset=3 xadvance=25 page=0 chnl=0
char id=79 x=83 y=91 width=26 height=24 xoffset=0 yoffset=3 xadvance=26 page=0 chnl=0
char id=80 x=109 y=91 width=20 height=24 xoffset=1 yoffset=3 xadvance=21 page=0 chnl=0
char id=81 x=129 y=91 width=26 height=24 xoffset=0 yoffset=3 xadvance=26 page=0 chnl=0
char id=82 x=155 y=91 width=20 height=24 xoffset=1 yoffset=3 xadvance=21 page=0 chnl=0
char id=83 x=17 y=65 width=19 height=25 xoffset=0 yoffset=2 xadvance=20 page=0 chnl=0
char id=84 x=175 y=91 width=20 height=24 xoffset=0 yoffset=3 xadvance=20 page=0 chnl=0
char id=85 x=195 y=91 width=22 height=24 xoffset=1 yoffset=3 xadvance=24 page=0 chnl=0
char id=86 x=217 y=91 width=25 height=24 xoffset=0 yoffset=3 xadvance=24 page=0 chnl=0
char id=87 x=242 y=91 width=35 height=24 xoffset=0 yoffset=3 xadvance=35 page=0 chnl=0
char id=88 x=277 y=91 width=23 height=24 xoffset=0 yoffset=3 xadvance=22 page=0 chnl=0
char id=89 x=300 y=91 width=23 height=24 xoffset=-1 yoffset=3 xadvance=21 page=0 chnl=0
char id=90 x=323 y=91 width=20 height=24 xoffset=0 yoffset=3 xadvance=20 page=0 chnl=0
char id=91 x=471 y=0 width=11 height=30 xoffset=1 yoffset=1 xadvance=12 page=0 chnl=0
char id=92 x=195 y=35 width=17 height=29 xoffset=-2 yoffset=1 xadvance=13 page=0 chnl=0
char id=93 x=482 y=0 width=11 height=30 xoffset=0 yoffset=1 xadvance=12 page=0 chnl=0
char id=94 x=338 y=139 width=15 height=11 xoffset=0 yoffset=3 xadvance=16 page=0 chnl=0
char id=95 x=435 y=139 width=22 height=5 xoffset=-2 yoffset=27 xadvance=19 page=0 chnl=0
char id=96 x=385 y=139 width=9 height=7 xoffset=1 yoffset=2 xadvance=10 page=0 chnl=0
char id=97 x=433 y=115 width=17 height=19 xoffset=0 yoffset=8 xadvance=18 page=0 chnl=0
char id=98 x=343 y=91 width=19 height=24 xoffset=1 yoffset=3 xadvance=20 page=0 chnl=0
char id=99 x=450 y=115 width=18 height=19 xoffset=0 yoffset=8 xadvance=17 page=0 chnl=0
char id=100 x=362 y=91 width=19 height=24 xoffset=0 yoffset=3 xadvance=20 page=0 chnl=0
char id=101 x=468 y=115 width=19 height=19 xoffset=0 yoffset=8 xadvance=19 page=0 chnl=0
char id=102 x=36 y=65 width=12 height=25 xoffset=0 yoffset=2 xadvance=11 page=0 chnl=0
char id=103 x=48 y=65 width=19 height=25 xoffset=0 yoffset=8 xadvance=20 page=0 chnl=0
char id=104 x=381 y=91 width=17 height=24 xoffset=1 yoffset=3 xadvance=19 page=0 chnl=0
char id=105 x=302 y=35 width=6 height=26 xoffset=1 yoffset=1 xadvance=7 page=0 chnl=0
char id=106 x=39 y=0 width=11 height=32 xoffset=-3 yoffset=1 xadvance=7 page=0 chnl=0
char id=107 x=398 y=91 width=17 height=24 xoffset=1 yoffset=3 xadvance=17 page=0 chnl=0
char id=108 x=505 y=65 width=5 height=24 xoffset=1 yoffset=3 xadvance=7 page=0 chnl=0
char id=109 x=0 y=139 width=27 height=19 xoffset=1 yoffset=8 xadvance=29 page=0 chnl=0
char id=110 x=487 y=115 width=17 height=19 xoffset=1 yoffset=8 xadvance=19 page=0 chnl=0
char id=111 x=27 y=139 width=20 height=19 xoffset=0 yoffset=8 xadvance=20 page=0 chnl=0
char id=112 x=67 y=65 width=19 height=25 xoffset=1 yoffset=8 xadvance=20 page=0 chnl=0
char id=113 x=86 y=65 width=19 height=25 xoffset=0 yoffset=8 xadvance=20 page=0 chnl=0
char id=114 x=47 y=139 width=12 height=19 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=0
char id=115 x=59 y=139 width=16 height=19 xoffset=0 yoffset=8 xadvance=16 page=0 chnl=0
char id=116 x=415 y=91 width=12 height=24 xoffset=0 yoffset=3 xadvance=12 page=0 chnl=0
char id=117 x=75 y=139 width=17 height=19 xoffset=1 yoffset=8 xadvance=19 page=0 chnl=0
char id=118 x=92 y=139 width=20 height=19 xoffset=-1 yoffset=8 xadvance=18 page=0 chnl=0
char id=119 x=112 y=139 width=27 height=19 xoffset=0 yoffset=8 xadvance=27 page=0 chnl=0
char id=120 x=139 y=139 width=18 height=19 xoffset=0 yoffset=8 xadvance=18 page=0 chnl=0
char id=121 x=105 y=65 width=20 height=25 xoffset=-1 yoffset=8 xadvance=19 page=0 chnl=0
char id=122 x=157 y=139 width=16 height=19 xoffset=0 yoffset=8 xadvance=16 page=0 chnl=0
char id=123 x=493 y=0 width=13 height=30 xoffset=0 yoffset=3 xadvance=13 page=0 chnl=0
char id=124 x=506 y=0 width=5 height=29 xoffset=2 yoffset=1 xadvance=9 page=0 chnl=0
char id=125 x=0 y=35 width=13 height=30 xoffset=0 yoffset=3 xadvance=13 page=0 chnl=0
char id=126 x=394 y=139 width=14 height=7 xoffset=0 yoffset=11 xadvance=14 page=0 chnl=0
char id=161 x=125 y=65 width=7 height=25 xoffset=1 yoffset=8 xadvance=9 page=0 chnl=0
char id=162 x=132 y=65 width=18 height=25 xoffset=0 yoffset=5 xadvance=17 page=0 chnl=0
char id=163 x=202 y=115 width=20 height=24 xoffset=0 yoffset=3 xadvance=20 page=0 chnl=0
char id=165 x=222 y=115 width=23 height=24 xoffset=-1 yoffset=3 xadvance=21 page=0 chnl=0
char id=168 x=457 y=139 width=12 height=5 xoffset=1 yoffset=3 xadvance=13 page=0 chnl=0
char id=175 x=469 y=139 width=12 height=4 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=0
char id=180 x=408 y=139 width=9 height=7 xoffset=1 yoffset=2 xadvance=10 page=0 chnl=0
char id=184 x=377 y=139 width=8 height=9 xoffset=1 yoffset=24 xadvance=10 page=0 chnl=0
char id=191 x=150 y=65 width=17 height=25 xoffset=0 yoffset=8 xadvance=16 page=0 chnl=0
char id=192 x=70 y=0 width=25 height=31 xoffset=0 yoffset=-4 xadvance=24 page=0 chnl=0
char id=193 x=95 y=0 width=25 height=31 xoffset=0 yoffset=-4 xadvance=24 page=0 chnl=0
char id=194 x=120 y=0 width=25 height=31 xoffset=0 yoffset=-4 xadvance=24 page=0 chnl=0
char id=195 x=145 y=0 width=25 height=31 xoffset=0 yoffset=-4 xadvance=24 page=0 chnl=0
char id=196 x=13 y=35 width=25 height=30 xoffset=0 yoffset=-3 xadvance=24 page=0 chnl=0
char id=197 x=14 y=0 width=25 height=33 xoffset=0 yoffset=-6 xadvance=24 page=0 chnl=0
char id=198 x=245 y=115 width=32 height=24 xoffset=0 yoffset=3 xadvance=33 page=0 chnl=0
char id=199 x=38 y=35 width=22 height=30 xoffset=0 yoffset=3 xadvance=22 page=0 chnl=0
char id=200 x=170 y=0 width=19 height=31 xoffset=1 yoffset=-4 xadvance=20 page=0 chnl=0
char id=201 x=189 y=0 width=19 height=31 xoffset=1 yoffset=-4 xadvance=20 page=0 chnl=0
char id=202 x=208 y=0 width=19 height=31 xoffset=1 yoffset=-4 xadvance=20 page=0 chnl=0
char id=203 x=60 y=35 width=19 height=30 xoffset=1 yoffset=-3 xadvance=20 page=0 chnl=0
char id=204 x=227 y=0 width=11 height=31 xoffset=-3 yoffset=-4 xadvance=8 page=0 chnl=0
char id=205 x=238 y=0 width=11 height=31 xoffset=1 yoffset=-4 xadvance=8 page=0 chnl=0
char id=206 x=249 y=0 width=12 height=31 xoffset=-2 yoffset=-4 xadvance=8 page=0 chnl=0
char id=207 x=79 y=35 width=12 height=30 xoffset=-2 yoffset=-3 xadvance=8 page=0 chnl=0
char id=208 x=277 y=115 width=24 height=24 xoffset=0 yoffset=3 xadvance=25 page=0 chnl=0
char id=209 x=261 y=0 width=21 height=31 xoffset=2 yoffset=-4 xadvance=25 page=0 chnl=0
char id=210 x=282 y=0 width=26 height=31 xoffset=0 yoffset=-4 xadvance=26 page=0 chnl=0
char id=211 x=308 y=0 width=26 height=31 xoffset=0 yoffset=-4 xadvance=26 page=0 chnl=0
char id=212 x=91 y=35 width=26 height=30 xoffset=0 yoffset=-3 xadvance=26 page=0 chnl=0
char id=213 x=334 y=0 width=26 height=31 xoffset=0 yoffset=-4 xadvance=26 page=0 chnl=0
char id=214 x=231 y=35 width=26 height=29 xoffset=0 yoffset=-2 xadvance=26 page=0 chnl=0
char id=215 x=293 y=139 width=15 height=15 xoffset=1 yoffset=8 xadvance=17 page=0 chnl=0
char id=216 x=301 y=115 width=26 height=24 xoffset=0 yoffset=3 xadvance=26 page=0 chnl=0
char id=217 x=360 y=0 width=22 height=31 xoffset=1 yoffset=-4 xadvance=24 page=0 chnl=0
char id=218 x=382 y=0 width=22 height=31 xoffset=1 yoffset=-4 xadvance=24 page=0 chnl=0
char id=219 x=404 y=0 width=22 height=31 xoffset=1 yoffset=-4 xadvance=24 page=0 chnl=0
char id=220 x=117 y=35 width=22 height=30 xoffset=1 yoffset=-3 xadvance=24 page=0 chnl=0
char id=221 x=426 y=0 width=23 height=31 xoffset=-1 yoffset=-4 xadvance=21 page=0 chnl=0
char id=222 x=327 y=115 width=20 height=24 xoffset=1 yoffset=3 xadvance=21 page=0 chnl=0
char id=223 x=167 y=65 width=17 height=25 xoffset=1 yoffset=2 xadvance=18 page=0 chnl=0
char id=224 x=308 y=35 width=17 height=26 xoffset=0 yoffset=1 xadvance=18 page=0 chnl=0
char id=225 x=325 y=35 width=17 height=26 xoffset=0 yoffset=1 xadvance=18 page=0 chnl=0
char id=226 x=184 y=65 width=17 height=25 xoffset=0 yoffset=2 xadvance=18 page=0 chnl=0
char id=227 x=201 y=65 width=17 height=25 xoffset=0 yoffset=2 xadvance=18 page=0 chnl=0
char id=228 x=347 y=115 width=17 height=24 xoffset=0 yoffset=3 xadvance=18 page=0 chnl=0
char id=229 x=285 y=35 width=17 height=28 xoffset=0 yoffset=-1 xadvance=18 page=0 chnl=0
char id=230 x=208 y=139 width=31 height=19 xoffset=0 yoffset=8 xadvance=31 page=0 chnl=0
char id=231 x=218 y=65 width=18 height=25 xoffset=0 yoffset=8 xadvance=17 page=0 chnl=0
char id=232 x=342 y=35 width=19 height=26 xoffset=0 yoffset=1 xadvance=19 page=0 chnl=0
char id=233 x=361 y=35 width=19 height=26 xoffset=0 yoffset=1 xadvance=19 page=0 chnl=0
char id=234 x=236 y=65 width=19 height=25 xoffset=0 yoffset=2 xadvance=19 page=0 chnl=0
char id=235 x=364 y=115 width=19 height=24 xoffset=0 yoffset=3 xadvance=19 page=0 chnl=0
char id=236 x=380 y=35 width=10 height=26 xoffset=-3 yoffset=1 xadvance=7 page=0 chnl=0
char id=237 x=390 y=35 width=12 height=26 xoffset=1 yoffset=1 xadvance=7 page=0 chnl=0
char id=238 x=402 y=35 width=12 height=26 xoffset=-2 yoffset=1 xadvance=7 page=0 chnl=0
char id=239 x=383 y=115 width=13 height=24 xoffset=-2 yoffset=3 xadvance=7 page=0 chnl=0
char id=240 x=414 y=35 width=20 height=26 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=0
char id=241 x=255 y=65 width=17 height=25 xoffset=1 yoffset=2 xadvance=19 page=0 chnl=0
char id=242 x=434 y=35 width=20 height=26 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=0
char id=243 x=454 y=35 width=20 height=26 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=0
char id=244 x=272 y=65 width=20 height=25 xoffset=0 yoffset=2 xadvance=20 page=0 chnl=0
char id=245 x=292 y=65 width=20 height=25 xoffset=0 yoffset=2 xadvance=20 page=0 chnl=0
char id=246 x=396 y=115 width=20 height=24 xoffset=0 yoffset=3 xadvance=20 page=0 chnl=0
char id=247 x=276 y=139 width=17 height=16 xoffset=1 yoffset=7 xadvance=19 page=0 chnl=0
char id=248 x=239 y=139 width=20 height=19 xoffset=0 yoffset=8 xadvance=20 page=0 chnl=0
char id=249 x=474 y=35 width=17 height=26 xoffset=1 yoffset=1 xadvance=19 page=0 chnl=0
char id=250 x=491 y=35 width=17 height=26 xoffset=1 yoffset=1 xadvance=19 page=0 chnl=0
char id=251 x=0 y=65 width=17 height=26 xoffset=1 yoffset=1 xadvance=19 page=0 chnl=0
char id=252 x=416 y=115 width=17 height=24 xoffset=1 yoffset=3 xadvance=19 page=0 chnl=0
char id=253 x=50 y=0 width=20 height=32 xoffset=-1 yoffset=1 xadvance=19 page=0 chnl=0
char id=254 x=139 y=35 width=19 height=30 xoffset=1 yoffset=3 xadvance=20 page=0 chnl=0
char id=255 x=158 y=35 width=20 height=30 xoffset=-1 yoffset=3 xadvance=19 page=0 chnl=0
kernings count=375
kerning first=244 second=119 amount=-1
kerning first=86 second=225 amount=-1
kerning first=119 second=245 amount=-1
kerning first=253 second=243 amount=-1
kerning first=111 second=89 amount=-4
kerning first=248 second=86 amount=-2
kerning first=84 second=211 amount=-1
kerning first=84 second=194 amount=-2
kerning first=221 second=235 amount=-4
kerning first=192 second=221 amount=-1
kerning first=121 second=44 amount=-4
kerning first=65 second=89 amount=-1
kerning first=75 second=216 amount=-1
kerning first=87 second=248 amount=-2
kerning first=89 second=242 amount=-4
kerning first=221 second=111 amount=-4
kerning first=233 second=221 amount=-4
kerning first=246 second=255 amount=-1
kerning first=75 second=195 amount=1
kerning first=234 second=86 amount=-2
kerning first=121 second=233 amount=-1
kerning first=119 second=235 amount=-1
kerning first=111 second=119 amount=-1
kerning first=76 second=86 amount=-3
kerning first=246 second=221 amount=-4
kerning first=86 second=198 amount=-3
kerning first=118 second=242 amount=-1
kerning first=89 second=194 amount=-1
kerning first=92 second=92 amount=-4
kerning first=119 second=111 amount=-1
kerning first=114 second=242 amount=-1
kerning first=86 second=232 amount=-2
kerning first=194 second=221 amount=-1
kerning first=89 second=101 amount=-4
kerning first=87 second=234 amount=-2
kerning first=192 second=86 amount=-3
kerning first=86 second=246 amount=-2
kerning first=243 second=255 amount=-1
kerning first=248 second=121 amount=-1
kerning first=233 second=86 amount=-2
kerning first=197 second=84 amount=-2
kerning first=92 second=47 amount=2
kerning first=75 second=193 amount=1
kerning first=118 second=101 amount=-1
kerning first=243 second=221 amount=-4
kerning first=245 second=87 amount=-2
kerning first=246 second=86 amount=-2
kerning first=84 second=197 amount=-2
kerning first=121 second=46 amount=-4
kerning first=193 second=221 amount=-1
kerning first=197 second=87 amount=-1
kerning first=194 second=86 amount=-3
kerning first=89 second=99 amount=-4
kerning first=87 second=231 amount=-2
kerning first=235 second=87 amount=-2
kerning first=195 second=71 amount=-1
kerning first=99 second=89 amount=-4
kerning first=89 second=197 amount=-1
kerning first=121 second=244 amount=-1
kerning first=221 second=196 amount=-1
kerning first=243 second=86 amount=-2
kerning first=68 second=196 amount=-2
kerning first=84 second=65 amount=-2
kerning first=221 second=233 amount=-4
kerning first=86 second=245 amount=-2
kerning first=119 second=44 amount=-3
kerning first=75 second=210 amount=-1
kerning first=89 second=243 amount=-4
kerning first=193 second=86 amount=-3
kerning first=87 second=242 amount=-2
kerning first=231 second=221 amount=-4
kerning first=246 second=121 amount=-1
kerning first=245 second=253 amount=-1
kerning first=230 second=89 amount=-4
kerning first=255 second=232 amount=-1
kerning first=196 second=84 amount=-2
kerning first=119 second=233 amount=-1
kerning first=255 second=246 amount=-1
kerning first=89 second=65 amount=-1
kerning first=118 second=243 amount=-1
kerning first=242 second=87 amount=-2
kerning first=87 second=194 amount=-1
kerning first=118 second=228 amount=-1
kerning first=114 second=243 amount=-1
kerning first=86 second=235 amount=-2
kerning first=87 second=101 amount=-2
kerning first=196 second=87 amount=-1
kerning first=230 second=119 amount=-1
kerning first=213 second=87 amount=-1
kerning first=86 second=111 amount=-2
kerning first=101 second=87 amount=-2
kerning first=243 second=121 amount=-1
kerning first=192 second=71 amount=-1
kerning first=245 second=118 amount=-1
kerning first=231 second=86 amount=-2
kerning first=253 second=232 amount=-1
kerning first=121 second=248 amount=-1
kerning first=86 second=226 amount=-1
kerning first=221 second=195 amount=-1
kerning first=253 second=246 amount=-1
kerning first=68 second=195 amount=-2
kerning first=84 second=214 amount=-1
kerning first=244 second=87 amount=-2
kerning first=84 second=192 amount=-2
kerning first=119 second=46 amount=-3
kerning first=232 second=89 amount=-4
kerning first=221 second=244 amount=-4
kerning first=47 second=47 amount=-4
kerning first=87 second=99 amount=-2
kerning first=242 second=253 amount=-1
kerning first=121 second=234 amount=-1
kerning first=194 second=71 amount=-1
kerning first=65 second=84 amount=-2
kerning first=255 second=245 amount=-1
kerning first=89 second=192 amount=-1
kerning first=87 second=197 amount=-1
kerning first=119 second=244 amount=-1
kerning first=221 second=193 amount=-1
kerning first=111 second=87 amount=-2
kerning first=118 second=227 amount=-1
kerning first=68 second=193 amount=-2
kerning first=195 second=89 amount=-1
kerning first=232 second=119 amount=-1
kerning first=82 second=89 amount=-1
kerning first=65 second=87 amount=-1
kerning first=75 second=211 amount=-1
kerning first=87 second=243 amount=-2
kerning first=210 second=87 amount=-1
kerning first=244 second=253 amount=-1
kerning first=86 second=229 amount=-1
kerning first=75 second=194 amount=1
kerning first=193 second=71 amount=-1
kerning first=242 second=118 amount=-1
kerning first=253 second=245 amount=-1
kerning first=255 second=235 amount=-1
kerning first=248 second=89 amount=-4
kerning first=255 second=111 amount=-1
kerning first=84 second=213 amount=-1
kerning first=86 second=196 amount=-3
kerning first=84 second=198 amount=-2
kerning first=87 second=65 amount=-1
kerning first=118 second=225 amount=-1
kerning first=221 second=248 amount=-4
kerning first=86 second=233 amount=-2
kerning first=234 second=89 amount=-4
kerning first=212 second=87 amount=-1
kerning first=111 second=253 amount=-1
kerning first=248 second=119 amount=-1
kerning first=253 second=235 amount=-1
kerning first=244 second=118 amount=-1
kerning first=89 second=198 amount=-1
kerning first=121 second=242 amount=-1
kerning first=86 second=97 amount=-1
kerning first=119 second=248 amount=-1
kerning first=253 second=111 amount=-1
kerning first=84 second=79 amount=-1
kerning first=89 second=232 amount=-4
kerning first=221 second=234 amount=-4
kerning first=192 second=89 amount=-1
kerning first=234 second=119 amount=-1
kerning first=89 second=246 amount=-4
kerning first=233 second=89 amount=-4
kerning first=245 second=255 amount=-1
kerning first=75 second=197 amount=1
kerning first=79 second=87 amount=-1
kerning first=118 second=232 amount=-1
kerning first=121 second=101 amount=-1
kerning first=119 second=234 amount=-1
kerning first=99 second=87 amount=-2
kerning first=245 second=221 amount=-4
kerning first=111 second=118 amount=-1
kerning first=246 second=89 amount=-4
kerning first=86 second=195 amount=-3
kerning first=118 second=246 amount=-1
kerning first=87 second=192 amount=-1
kerning first=197 second=221 amount=-1
kerning first=114 second=246 amount=-1
kerning first=194 second=89 amount=-1
kerning first=233 second=119 amount=-1
kerning first=255 second=44 amount=-4
kerning first=235 second=221 amount=-4
kerning first=86 second=244 amount=-2
kerning first=255 second=233 amount=-1
kerning first=86 second=224 amount=-1
kerning first=246 second=119 amount=-1
kerning first=75 second=65 amount=1
kerning first=230 second=87 amount=-2
kerning first=243 second=89 amount=-4
kerning first=245 second=86 amount=-2
kerning first=86 second=193 amount=-3
kerning first=89 second=245 amount=-4
kerning first=193 second=89 amount=-1
kerning first=253 second=44 amount=-4
kerning first=197 second=86 amount=-3
kerning first=221 second=242 amount=-4
kerning first=242 second=255 amount=-1
kerning first=235 second=86 amount=-2
kerning first=253 second=233 amount=-1
kerning first=243 second=119 amount=-1
kerning first=118 second=245 amount=-1
kerning first=242 second=221 amount=-4
kerning first=87 second=198 amount=-1
kerning first=121 second=243 amount=-1
kerning first=221 second=194 amount=-1
kerning first=119 second=242 amount=-1
kerning first=68 second=194 amount=-2
kerning first=114 second=245 amount=-1
kerning first=255 second=46 amount=-4
kerning first=89 second=235 amount=-4
kerning first=87 second=232 amount=-2
kerning first=196 second=221 amount=-1
kerning first=221 second=101 amount=-4
kerning first=86 second=248 amount=-2
kerning first=75 second=214 amount=-1
kerning first=101 second=221 amount=-4
kerning first=89 second=111 amount=-4
kerning first=87 second=246 amount=-2
kerning first=232 second=87 amount=-2
kerning first=244 second=255 amount=-1
kerning first=231 second=89 amount=-4
kerning first=245 second=121 amount=-1
kerning first=195 second=84 amount=-2
kerning first=86 second=230 amount=-1
kerning first=75 second=192 amount=1
kerning first=118 second=235 amount=-1
kerning first=119 second=101 amount=-1
kerning first=255 second=244 amount=-1
kerning first=244 second=221 amount=-4
kerning first=118 second=111 amount=-1
kerning first=242 second=86 amount=-2
kerning first=118 second=226 amount=-1
kerning first=253 second=46 amount=-4
kerning first=114 second=111 amount=-1
kerning first=86 second=234 amount=-2
kerning first=195 second=87 amount=-1
kerning first=196 second=86 amount=-3
kerning first=221 second=99 amount=-4
kerning first=111 second=255 amount=-1
kerning first=101 second=86 amount=-2
kerning first=221 second=197 amount=-1
kerning first=253 second=244 amount=-1
kerning first=118 second=100 amount=-1
kerning first=111 second=221 amount=-4
kerning first=248 second=87 amount=-2
kerning first=84 second=212 amount=-1
kerning first=68 second=197 amount=-2
kerning first=244 second=86 amount=-2
kerning first=76 second=84 amount=-1
kerning first=84 second=196 amount=-2
kerning first=65 second=221 amount=-1
kerning first=75 second=213 amount=-1
kerning first=87 second=245 amount=-2
kerning first=221 second=243 amount=-4
kerning first=86 second=231 amount=-2
kerning first=75 second=198 amount=1
kerning first=242 second=121 amount=-1
kerning first=234 second=87 amount=-2
kerning first=197 second=71 amount=-1
kerning first=192 second=84 amount=-2
kerning first=255 second=248 amount=-1
kerning first=89 second=196 amount=-1
kerning first=221 second=65 amount=-1
kerning first=119 second=243 amount=-1
kerning first=118 second=229 amount=-1
kerning first=111 second=86 amount=-2
kerning first=68 second=65 amount=-2
kerning first=89 second=233 amount=-4
kerning first=87 second=235 amount=-2
kerning first=192 second=87 amount=-1
kerning first=118 second=44 amount=-4
kerning first=65 second=86 amount=-3
kerning first=86 second=242 amount=-2
kerning first=75 second=79 amount=-1
kerning first=87 second=111 amount=-2
kerning first=233 second=87 amount=-2
kerning first=244 second=121 amount=-1
kerning first=248 second=253 amount=-1
kerning first=194 second=84 amount=-2
kerning first=253 second=248 amount=-1
kerning first=118 second=233 amount=-1
kerning first=255 second=234 amount=-1
kerning first=84 second=216 amount=-1
kerning first=246 second=87 amount=-2
kerning first=86 second=194 amount=-3
kerning first=84 second=195 amount=-2
kerning first=118 second=97 amount=-1
kerning first=86 second=101 amount=-2
kerning first=194 second=87 amount=-1
kerning first=216 second=87 amount=-1
kerning first=99 second=221 amount=-4
kerning first=121 second=232 amount=-1
kerning first=111 second=121 amount=-1
kerning first=253 second=234 amount=-1
kerning first=196 second=71 amount=-1
kerning first=248 second=118 amount=-1
kerning first=193 second=84 amount=-2
kerning first=89 second=195 amount=-1
kerning first=121 second=246 amount=-1
kerning first=221 second=192 amount=-1
kerning first=243 second=87 amount=-2
kerning first=68 second=192 amount=-2
kerning first=84 second=193 amount=-2
kerning first=118 second=46 amount=-4
kerning first=89 second=244 amount=-4
kerning first=193 second=87 amount=-1
kerning first=246 second=253 amount=-1
kerning first=86 second=99 amount=-2
kerning first=230 second=221 amount=-4
kerning first=99 second=86 amount=-2
kerning first=255 second=242 amount=-1
kerning first=245 second=89 amount=-4
kerning first=86 second=197 amount=-3
kerning first=89 second=193 amount=-1
kerning first=87 second=196 amount=-1
kerning first=118 second=244 amount=-1
kerning first=118 second=224 amount=-1
kerning first=197 second=89 amount=-1
kerning first=114 second=244 amount=-1
kerning first=87 second=233 amount=-2
kerning first=235 second=89 amount=-4
kerning first=86 second=243 amount=-2
kerning first=214 second=87 amount=-1
kerning first=245 second=119 amount=-1
kerning first=243 second=253 amount=-1
kerning first=231 second=87 amount=-2
kerning first=255 second=101 amount=-1
kerning first=246 second=118 amount=-1
kerning first=65 second=71 amount=-1
kerning first=86 second=228 amount=-1
kerning first=221 second=198 amount=-1
kerning first=121 second=245 amount=-1
kerning first=230 second=86 amount=-2
kerning first=253 second=242 amount=-1
kerning first=68 second=198 amount=-2
kerning first=84 second=210 amount=-1
kerning first=86 second=65 amount=-3
kerning first=221 second=232 amount=-4
kerning first=235 second=119 amount=-1
kerning first=89 second=248 amount=-4
kerning first=232 second=221 amount=-4
kerning first=221 second=246 amount=-4
kerning first=211 second=87 amount=-1
kerning first=121 second=235 amount=-1
kerning first=119 second=232 amount=-1
kerning first=253 second=101 amount=-1
kerning first=243 second=118 amount=-1
kerning first=118 second=248 amount=-1
kerning first=242 second=89 amount=-4
kerning first=87 second=195 amount=-1
kerning first=121 second=111 amount=-1
kerning first=119 second=246 amount=-1
kerning first=118 second=230 amount=-1
kerning first=114 second=248 amount=-1
kerning first=195 second=221 amount=-1
kerning first=89 second=234 amount=-4
kerning first=196 second=89 amount=-1
kerning first=82 second=221 amount=-1
kerning first=75 second=212 amount=-1
kerning first=101 second=89 amount=-4
kerning first=87 second=244 amount=-2
kerning first=232 second=86 amount=-2
kerning first=248 second=255 amount=-1
kerning first=86 second=227 amount=-1
kerning first=75 second=196 amount=1
kerning first=242 second=119 amount=-1
kerning first=118 second=234 amount=-1
kerning first=248 second=221 amount=-4
kerning first=255 second=243 amount=-1
kerning first=244 second=89 amount=-4
kerning first=86 second=192 amount=-3
kerning first=87 second=193 amount=-1
kerning first=221 second=245 amount=-4
kerning first=101 second=119 amount=-1
kerning first=195 second=86 amount=-3
kerning first=234 second=221 amount=-4

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -0,0 +1,43 @@
Copyright (c) 2015, Chris Simpson, with Reserved Font Name: "Metropolis".
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the copyright statement(s).
"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@@ -0,0 +1,201 @@
// Styling of Lemur components
// For documentation, see
// https://github.com/jMonkeyEngine-Contributions/Lemur/wiki/Styling
import com.simsilica.lemur.Button
import com.simsilica.lemur.Button.ButtonAction
import com.simsilica.lemur.Command
import com.simsilica.lemur.HAlignment
import com.simsilica.lemur.Insets3f
import com.simsilica.lemur.component.QuadBackgroundComponent
import com.simsilica.lemur.component.TbtQuadBackgroundComponent
def bgColor = color(0.25, 0.5, 0.5, 1)
def buttonEnabledColor = color(0.8, 0.9, 1, 1)
def buttonDisabledColor = color(0.8, 0.9, 1, 0.2)
def buttonBgColor = color(0, 0.75, 0.75, 1)
def sliderColor = color(0.6, 0.8, 0.8, 1)
def sliderBgColor = color(0.5, 0.75, 0.75, 1)
def gradientColor = color(0.5, 0.75, 0.85, 0.5)
def tabbuttonEnabledColor = color(0.4, 0.45, 0.5, 1)
def gradient = TbtQuadBackgroundComponent.create(
texture(name: "/com/simsilica/lemur/icons/bordered-gradient.png",
generateMips: false),
1, 1, 1, 126, 126,
1f, false)
def doubleGradient = new QuadBackgroundComponent(gradientColor)
doubleGradient.texture = texture(name: "/com/simsilica/lemur/icons/double-gradient-128.png",
generateMips: false)
selector("pp") {
font = font("Interface/Fonts/Metropolis/Metropolis-Regular-32.fnt")
}
selector("label", "pp") {
insets = new Insets3f(2, 2, 2, 2)
color = buttonEnabledColor
}
selector("header", "pp") {
font = font("Interface/Fonts/Metropolis/Metropolis-Bold-42.fnt")
insets = new Insets3f(2, 2, 2, 2)
color = color(1, 0.5, 0, 1)
textHAlignment = HAlignment.Center
}
selector("container", "pp") {
background = gradient.clone()
background.setColor(bgColor)
}
selector("slider", "pp") {
background = gradient.clone()
background.setColor(bgColor)
}
def pressedCommand = new Command<Button>() {
void execute(Button source) {
if (source.isPressed())
source.move(1, -1, 0)
else
source.move(-1, 1, 0)
}
}
def enabledCommand = new Command<Button>() {
void execute(Button source) {
if (source.isEnabled())
source.setColor(buttonEnabledColor)
else
source.setColor(buttonDisabledColor)
}
}
def repeatCommand = new Command<Button>() {
private long startTime
private long lastClick
void execute(Button source) {
// Only do the repeating click while the mouse is
// over the button (and pressed of course)
if (source.isPressed() && source.isHighlightOn()) {
long elapsedTime = System.currentTimeMillis() - startTime
// After half a second pause, click 8 times a second
if (elapsedTime > 500 && elapsedTime > lastClick + 125) {
source.click()
// Try to quantize the last click time to prevent drift
lastClick = ((elapsedTime - 500) / 125) * 125 + 500
}
}
else {
startTime = System.currentTimeMillis()
lastClick = 0
}
}
}
def stdButtonCommands = [
(ButtonAction.Down) : [pressedCommand],
(ButtonAction.Up) : [pressedCommand],
(ButtonAction.Enabled) : [enabledCommand],
(ButtonAction.Disabled): [enabledCommand]
]
def sliderButtonCommands = [
(ButtonAction.Hover): [repeatCommand]
]
selector("title", "pp") {
color = color(0.8, 0.9, 1, 0.85f)
highlightColor = color(1, 0.8, 1, 0.85f)
shadowColor = color(0, 0, 0, 0.75f)
shadowOffset = vec3(2, -2, -1)
background = new QuadBackgroundComponent(color(0.5, 0.75, 0.85, 1))
background.texture = texture(name: "/com/simsilica/lemur/icons/double-gradient-128.png",
generateMips: false)
insets = new Insets3f(2, 2, 2, 2)
buttonCommands = stdButtonCommands
}
selector("button", "pp") {
background = gradient.clone()
color = buttonEnabledColor
background.setColor(buttonBgColor)
insets = new Insets3f(2, 2, 2, 2)
buttonCommands = stdButtonCommands
}
selector("slider", "pp") {
insets = new Insets3f(1, 3, 1, 2)
}
selector("slider", "button", "pp") {
background = doubleGradient.clone()
//background.setColor(sliderBgColor)
insets = new Insets3f(0, 0, 0, 0)
}
selector("slider.thumb.button", "pp") {
text = "[]"
color = sliderColor
}
selector("slider.left.button", "pp") {
text = "-"
background = doubleGradient.clone()
//background.setColor(sliderBgColor)
background.setMargin(5, 0)
color = sliderColor
buttonCommands = sliderButtonCommands
}
selector("slider.right.button", "pp") {
text = "+"
background = doubleGradient.clone()
//background.setColor(sliderBgColor)
background.setMargin(4, 0)
color = sliderColor
buttonCommands = sliderButtonCommands
}
selector("slider.up.button", "pp") {
buttonCommands = sliderButtonCommands
}
selector("slider.down.button", "pp") {
buttonCommands = sliderButtonCommands
}
selector("checkbox", "pp") {
color = buttonEnabledColor
}
selector("rollup", "pp") {
background = gradient.clone()
background.setColor(bgColor)
}
selector("tabbedPanel", "pp") {
activationColor = buttonEnabledColor
}
selector("tabbedPanel.container", "pp") {
background = null
}
selector("tab.button", "pp") {
background = gradient.clone()
background.setColor(bgColor)
color = tabbuttonEnabledColor
insets = new Insets3f(4, 2, 0, 2)
buttonCommands = stdButtonCommands
}

View File

@@ -0,0 +1,86 @@
////////////////////////////////////////
// Programming project code
// UniBw M, 2022, 2023, 2024
// www.unibw.de/inf2
// (c) Mark Minas (mark.minas@unibw.de)
////////////////////////////////////////
package pp.view;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
public class ModelViewSynchronizerTest {
private Node rootNode;
private Node itemNode;
private ModelViewSynchronizer<String> synchronizer;
@Before
public void setUp() {
rootNode = new Node("root"); //NON-NLS
synchronizer = new ModelViewSynchronizer<>(rootNode) {
@Override
protected Spatial translate(String item) {
return new Node(item);
}
};
itemNode = (Node) rootNode.getChild(0);
}
@Test
public void testConstructor() {
assertNotNull(itemNode);
assertEquals(1, rootNode.getQuantity());
}
@Test
public void testAdd() {
String item = "item1"; //NON-NLS
synchronizer.add(item);
Spatial spatial = synchronizer.getSpatial(item);
assertNotNull(spatial);
assertEquals(item, spatial.getName());
assertTrue(itemNode.hasChild(spatial));
}
@Test
public void testDelete() {
String item = "item1"; //NON-NLS
synchronizer.add(item);
synchronizer.delete(item);
Spatial spatial = synchronizer.getSpatial(item);
assertNull(spatial);
assertFalse(itemNode.hasChild(spatial));
}
@Test
public void testClear() {
synchronizer.add("item1"); //NON-NLS
synchronizer.add("item2"); //NON-NLS
synchronizer.clear();
assertNull(synchronizer.getSpatial("item1")); //NON-NLS
assertNull(synchronizer.getSpatial("item2")); //NON-NLS
assertEquals(0, itemNode.getQuantity());
}
@Test
public void testAddDuplicate() {
String item = "item1"; //NON-NLS
synchronizer.add(item);
synchronizer.add(item);
assertEquals(1, itemNode.getQuantity());
}
}