From c3e8a0f84a95e657dd42c6da992d0eb962968baa Mon Sep 17 00:00:00 2001 From: Per Hultqvist Date: Thu, 31 Oct 2024 13:34:37 +0100 Subject: [PATCH] New example: font_loading --- examples/text/font_loading/main.go | 79 +++++++++ examples/text/font_loading/pixantiqua.fnt | 188 ++++++++++++++++++++++ examples/text/font_loading/pixantiqua.png | Bin 0 -> 4531 bytes examples/text/font_loading/pixantiqua.ttf | Bin 0 -> 35408 bytes 4 files changed, 267 insertions(+) create mode 100644 examples/text/font_loading/main.go create mode 100644 examples/text/font_loading/pixantiqua.fnt create mode 100644 examples/text/font_loading/pixantiqua.png create mode 100644 examples/text/font_loading/pixantiqua.ttf diff --git a/examples/text/font_loading/main.go b/examples/text/font_loading/main.go new file mode 100644 index 00000000..28cb4a7f --- /dev/null +++ b/examples/text/font_loading/main.go @@ -0,0 +1,79 @@ +/******************************************************************************************* +* +* raylib [text] example - Font loading +* +* NOTE: raylib can load fonts from multiple input file formats: +* +* - TTF/OTF > Sprite font atlas is generated on loading, user can configure +* some of the generation parameters (size, characters to include) +* - BMFonts > Angel code font fileformat, sprite font image must be provided +* together with the .fnt file, font generation cna not be configured +* - XNA Spritefont > Sprite font image, following XNA Spritefont conventions, +* Characters in image must follow some spacing and order rules +* +* Example originally created with raylib 1.4, last time updated with raylib 3.0 +* +* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software +* +* Copyright (c) 2016-2024 Ramon Santamaria (@raysan5) +* +********************************************************************************************/ +package main + +import rl "github.com/gen2brain/raylib-go/raylib" + +const ( + screenWidth = 800 + screenHeight = 450 +) + +func main() { + rl.InitWindow(screenWidth, screenHeight, "raylib [text] example - font loading") + + // Define characters to draw + // NOTE: raylib supports UTF-8 encoding, following list is actually codified as UTF8 internally + msg := "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI\nJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmn\nopqrstuvwxyz" + + "{|}~¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓ\nÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷\nøùúûüýþÿ" + + // NOTE: Textures/Fonts MUST be loaded after Window initialization (OpenGL context is required) + + // BMFont (AngelCode) : Font data and image atlas have been generated using external program + fontBm := rl.LoadFont("pixantiqua.fnt") + + // TTF font : Font data and atlas are generated directly from TTF + // NOTE: We define a font base size of 32 pixels tall and up-to 250 characters + fontTtf := rl.LoadFontEx("pixantiqua.ttf", 32, nil, 250) + + rl.SetTextLineSpacing(16) // Set line spacing for multiline text (when line breaks are included '\n') + + useTtf := false + + rl.SetTargetFPS(60) // Set our game to run at 60 frames-per-second + + for !rl.WindowShouldClose() { // Detect window close button or ESC key + // Update + useTtf = rl.IsKeyDown(rl.KeySpace) + + // Draw + rl.BeginDrawing() + rl.ClearBackground(rl.RayWhite) + + rl.DrawText("Hold SPACE to use TTF generated font", 20, 20, 20, rl.LightGray) + + if !useTtf { + rl.DrawTextEx(fontBm, msg, rl.Vector2{X: 20.0, Y: 100.0}, float32(fontBm.BaseSize), 2, rl.Maroon) + rl.DrawText("Using BMFont (Angelcode) imported", 20, int32(rl.GetScreenHeight())-30, 20, rl.Gray) + } else { + rl.DrawTextEx(fontTtf, msg, rl.Vector2{X: 20.0, Y: 100.0}, float32(fontTtf.BaseSize), 2, rl.Lime) + rl.DrawText("Using TTF font generated", 20, int32(rl.GetScreenHeight())-30, 20, rl.Gray) + } + + rl.EndDrawing() + } + + // De-Initialization + rl.UnloadFont(fontBm) // AngelCode Font unloading + rl.UnloadFont(fontTtf) // TTF Font unloading + rl.CloseWindow() // Close window and OpenGL context +} diff --git a/examples/text/font_loading/pixantiqua.fnt b/examples/text/font_loading/pixantiqua.fnt new file mode 100644 index 00000000..fd9f9dbb --- /dev/null +++ b/examples/text/font_loading/pixantiqua.fnt @@ -0,0 +1,188 @@ +info face="PixAntiqua" size=32 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=2,2,2,2 spacing=2,2 outline=0 +common lineHeight=32 base=27 scaleW=512 scaleH=512 pages=1 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4 +page id=0 file="pixantiqua.png" +chars count=184 +char id=32 x=9 y=304 width=7 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15 +char id=33 x=391 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15 +char id=34 x=240 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15 +char id=35 x=468 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=36 x=152 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=37 x=176 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=38 x=303 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=39 x=495 y=266 width=8 height=36 xoffset=-3 yoffset=-2 xadvance=5 page=0 chnl=15 +char id=40 x=256 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15 +char id=199 x=432 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=200 x=126 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=201 x=147 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=202 x=288 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=203 x=189 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=204 x=468 y=228 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15 +char id=205 x=486 y=228 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15 +char id=206 x=0 y=266 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15 +char id=207 x=72 y=266 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15 +char id=208 x=329 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=209 x=277 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=210 x=182 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=211 x=26 y=76 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=41 x=272 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15 +char id=42 x=288 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15 +char id=43 x=414 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=44 x=378 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15 +char id=45 x=414 y=228 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15 +char id=46 x=443 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15 +char id=47 x=392 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=48 x=485 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=49 x=450 y=228 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15 +char id=50 x=21 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=51 x=42 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=59 x=456 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15 +char id=60 x=168 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=61 x=309 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=62 x=336 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=63 x=315 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=64 x=364 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=65 x=390 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=66 x=120 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=67 x=144 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=68 x=168 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=69 x=294 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=52 x=488 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=53 x=63 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=54 x=24 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=55 x=48 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=56 x=72 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=57 x=96 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=58 x=404 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15 +char id=70 x=252 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=71 x=192 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=72 x=78 y=76 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=78 x=78 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=79 x=355 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=80 x=264 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=81 x=381 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=82 x=288 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=83 x=312 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=91 x=144 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15 +char id=92 x=108 y=266 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15 +char id=93 x=304 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15 +char id=94 x=34 y=0 width=32 height=36 xoffset=-3 yoffset=-2 xadvance=29 page=0 chnl=15 +char id=95 x=231 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=96 x=442 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=97 x=408 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=98 x=432 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=99 x=210 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=84 x=336 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=85 x=360 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=86 x=0 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=87 x=68 y=0 width=30 height=36 xoffset=-3 yoffset=-2 xadvance=27 page=0 chnl=15 +char id=88 x=26 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=89 x=384 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=90 x=84 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=100 x=456 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=101 x=480 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=102 x=54 y=266 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15 +char id=103 x=0 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=104 x=24 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=105 x=469 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15 +char id=106 x=18 y=266 width=16 height=36 xoffset=-8 yoffset=-2 xadvance=8 page=0 chnl=15 +char id=107 x=48 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=108 x=417 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15 +char id=109 x=161 y=0 width=27 height=36 xoffset=-3 yoffset=-2 xadvance=24 page=0 chnl=15 +char id=110 x=72 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=111 x=96 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=117 x=192 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=118 x=216 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=119 x=248 y=0 width=27 height=36 xoffset=-3 yoffset=-2 xadvance=24 page=0 chnl=15 +char id=120 x=240 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=121 x=264 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=122 x=288 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=123 x=432 y=228 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15 +char id=124 x=365 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15 +char id=125 x=378 y=228 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15 +char id=126 x=393 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=127 x=132 y=0 width=27 height=36 xoffset=-3 yoffset=-2 xadvance=24 page=0 chnl=15 +char id=160 x=0 y=304 width=7 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15 +char id=161 x=352 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15 +char id=162 x=351 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=163 x=336 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=165 x=360 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=167 x=384 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=169 x=433 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=170 x=224 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15 +char id=171 x=105 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=172 x=0 y=0 width=32 height=36 xoffset=-3 yoffset=-2 xadvance=29 page=0 chnl=15 +char id=173 x=494 y=38 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15 +char id=174 x=52 y=76 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=175 x=52 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=176 x=126 y=266 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15 +char id=177 x=435 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=178 x=320 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15 +char id=179 x=336 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15 +char id=181 x=459 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=112 x=120 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=113 x=144 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=114 x=396 y=228 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15 +char id=115 x=168 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=116 x=36 y=266 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15 +char id=182 x=408 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=183 x=498 y=190 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15 +char id=185 x=192 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15 +char id=186 x=208 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15 +char id=187 x=477 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=191 x=456 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=192 x=407 y=0 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=193 x=234 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=194 x=416 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=195 x=156 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=196 x=130 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=197 x=104 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=198 x=190 y=0 width=27 height=36 xoffset=-3 yoffset=-2 xadvance=24 page=0 chnl=15 +char id=212 x=0 y=76 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=213 x=338 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=214 x=312 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=215 x=357 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=216 x=286 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=217 x=456 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=218 x=480 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=219 x=0 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=220 x=24 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=221 x=48 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=222 x=260 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=223 x=72 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=224 x=96 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=225 x=120 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=226 x=144 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=227 x=168 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=228 x=192 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=229 x=216 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=230 x=219 y=0 width=27 height=36 xoffset=-3 yoffset=-2 xadvance=24 page=0 chnl=15 +char id=231 x=372 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=73 x=90 y=266 width=16 height=36 xoffset=-3 yoffset=-2 xadvance=13 page=0 chnl=15 +char id=74 x=216 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=75 x=240 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=76 x=273 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=77 x=100 y=0 width=30 height=36 xoffset=-3 yoffset=-2 xadvance=27 page=0 chnl=15 +char id=232 x=312 y=152 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=233 x=240 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=234 x=264 y=190 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=235 x=104 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=236 x=430 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15 +char id=237 x=482 y=266 width=11 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15 +char id=238 x=160 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=11 page=0 chnl=15 +char id=239 x=176 y=266 width=14 height=36 xoffset=-3 yoffset=-2 xadvance=8 page=0 chnl=15 +char id=240 x=128 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=241 x=200 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=242 x=224 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=243 x=248 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=244 x=272 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=245 x=296 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=246 x=320 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=247 x=330 y=190 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=248 x=208 y=38 width=24 height=36 xoffset=-3 yoffset=-2 xadvance=21 page=0 chnl=15 +char id=249 x=344 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=250 x=368 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=251 x=416 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=252 x=440 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=253 x=464 y=76 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 +char id=254 x=0 y=228 width=19 height=36 xoffset=-3 yoffset=-2 xadvance=16 page=0 chnl=15 +char id=255 x=0 y=114 width=22 height=36 xoffset=-3 yoffset=-2 xadvance=19 page=0 chnl=15 diff --git a/examples/text/font_loading/pixantiqua.png b/examples/text/font_loading/pixantiqua.png new file mode 100644 index 0000000000000000000000000000000000000000..2aa2870f3bda380705f8ae2a15f1e52896e5bdea GIT binary patch literal 4531 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 E1I+QH8~^|S literal 0 HcmV?d00001 diff --git a/examples/text/font_loading/pixantiqua.ttf b/examples/text/font_loading/pixantiqua.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e012875da0aeb2a662409ca5f2ae12cbab2213d0 GIT binary patch literal 35408 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