1/*******************************************************************************************
2*
3* raylib [text] example - Font loading
4*
5* raylib can load fonts from multiple file formats:
6*
7* - TTF/OTF > Sprite font atlas is generated on loading, user can configure
8* some of the generation parameters (size, characters to include)
9* - BMFonts > Angel code font fileformat, sprite font image must be provided
10* together with the .fnt file, font generation cna not be configured
11* - XNA Spritefont > Sprite font image, following XNA Spritefont conventions,
12* Characters in image must follow some spacing and order rules
13*
14* This example has been created using raylib 2.6 (www.raylib.com)
15* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
16*
17* Copyright (c) 2016-2019 Ramon Santamaria (@raysan5)
18*
19********************************************************************************************/
20
21#include "raylib.h"
22
23int main(void)
24{
25 // Initialization
26 //--------------------------------------------------------------------------------------
27 const int screenWidth = 800;
28 const int screenHeight = 450;
29
30 InitWindow(screenWidth, screenHeight, "raylib [text] example - font loading");
31
32 // Define characters to draw
33 // NOTE: raylib supports UTF-8 encoding, following list is actually codified as UTF8 internally
34 const char msg[256] = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI\nJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmn\nopqrstuvwxyz{|}~¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓ\nÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷\nøùúûüýþÿ";
35
36 // NOTE: Textures/Fonts MUST be loaded after Window initialization (OpenGL context is required)
37
38 // BMFont (AngelCode) : Font data and image atlas have been generated using external program
39 Font fontBm = LoadFont("resources/pixantiqua.fnt");
40
41 // TTF font : Font data and atlas are generated directly from TTF
42 // NOTE: We define a font base size of 32 pixels tall and up-to 250 characters
43 Font fontTtf = LoadFontEx("resources/pixantiqua.ttf", 32, 0, 250);
44
45 bool useTtf = false;
46
47 SetTargetFPS(60); // Set our game to run at 60 frames-per-second
48 //--------------------------------------------------------------------------------------
49
50 // Main game loop
51 while (!WindowShouldClose()) // Detect window close button or ESC key
52 {
53 // Update
54 //----------------------------------------------------------------------------------
55 if (IsKeyDown(KEY_SPACE)) useTtf = true;
56 else useTtf = false;
57 //----------------------------------------------------------------------------------
58
59 // Draw
60 //----------------------------------------------------------------------------------
61 BeginDrawing();
62
63 ClearBackground(RAYWHITE);
64
65 DrawText("Hold SPACE to use TTF generated font", 20, 20, 20, LIGHTGRAY);
66
67 if (!useTtf)
68 {
69 DrawTextEx(fontBm, msg, (Vector2){ 20.0f, 100.0f }, fontBm.baseSize, 2, MAROON);
70 DrawText("Using BMFont (Angelcode) imported", 20, GetScreenHeight() - 30, 20, GRAY);
71 }
72 else
73 {
74 DrawTextEx(fontTtf, msg, (Vector2){ 20.0f, 100.0f }, fontTtf.baseSize, 2, LIME);
75 DrawText("Using TTF font generated", 20, GetScreenHeight() - 30, 20, GRAY);
76 }
77
78 EndDrawing();
79 //----------------------------------------------------------------------------------
80 }
81
82 // De-Initialization
83 //--------------------------------------------------------------------------------------
84 UnloadFont(fontBm); // AngelCode Font unloading
85 UnloadFont(fontTtf); // TTF Font unloading
86
87 CloseWindow(); // Close window and OpenGL context
88 //--------------------------------------------------------------------------------------
89
90 return 0;
91}