From da6f1164a75d7d301e4d5d6172a51fbd565c4f5c Mon Sep 17 00:00:00 2001 From: cpasjuste Date: Sat, 24 Dec 2022 14:24:15 +0100 Subject: [PATCH] BMFont: few fixes and improvements --- data/common/romfs/04b_19.fnt | Bin 1973 -> 0 bytes data/common/romfs/04b_19_0.png | Bin 25228 -> 0 bytes data/common/romfs/future.bmfc | 59 ++++++++++++++++++++++++++++++++ data/common/romfs/future.fnt | Bin 0 -> 21650 bytes data/common/romfs/future.ttf | Bin 0 -> 47740 bytes data/common/romfs/future_0.png | Bin 0 -> 14993 bytes source/skeleton/sfml/BMFont.cpp | 52 +++++++++++++++------------- source/skeleton/sfml/Font.cpp | 1 + test/main.cpp | 29 ++++++++++------ 9 files changed, 107 insertions(+), 34 deletions(-) delete mode 100644 data/common/romfs/04b_19.fnt delete mode 100644 data/common/romfs/04b_19_0.png create mode 100644 data/common/romfs/future.bmfc create mode 100644 data/common/romfs/future.fnt create mode 100644 data/common/romfs/future.ttf create mode 100644 data/common/romfs/future_0.png diff --git a/data/common/romfs/04b_19.fnt b/data/common/romfs/04b_19.fnt deleted file mode 100644 index c4296636e2682f95e8806124c8d858c1218e57eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1973 zcmZA2%TH556u{wAiW0?Iq*ert@mXJp1@TeD7b+qaANUrfh$xDPSQHV_jj3CSaZwj8 z-Pk`sH#Y7~j9r_!k&Q8N>k8{{<~DVDNTy-FduGl()0t^oSG(UA7Lld$Ne0Bnf8z6% zMVtE*jWH<;+9y2sq2^P>AK=4#o`^P#jtolqaD~W9^bfOC$Q+r?hh@G0A zbL+T3Kd#~~VhPs3&3g$;D(k`OS!eegUB=9Lb9_OU#NtKs?pM3DfUh6tAFOzNVEU| diff --git a/data/common/romfs/04b_19_0.png b/data/common/romfs/04b_19_0.png deleted file mode 100644 index fe52d738d03b6652016ae96e4f7aaee72a52cdcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25228 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, &fontData); - if (!fontData || fontSize < 4) { + char *data = nullptr; + size_t len = c2d_renderer->getIo()->read(fntPath, &data); + if (!data || len < 4) { printf("BMFont::loadFromFile(%s): could not read font file...\n", fntPath.c_str()); - if (fontData) { - free(fontData); + if (data) { + free(data); } return false; } @@ -61,15 +61,15 @@ namespace c2d { size_t texSize = c2d_renderer->getIo()->read(texPath, &texData); if (!texData || texSize < 4) { printf("BMFont::loadFromFile(%s): could not read texture file...\n", texPath.c_str()); - free(fontData); + free(data); if (texData) { free(texData); } return false; } - bool ret = loadFromMemory(fontData, fontSize, texData, texSize); - free(fontData); + bool ret = loadFromMemory(data, len, texData, texSize); + free(data); free(texData); return ret; } @@ -99,7 +99,7 @@ namespace c2d { uint32_t blockSize = stream.getU32(); switch (blockID) { case BMFONT_BLOCK_TYPE_INFO: { - m_bmfont.info.fontSize = stream.getS16(); + m_bmfont.info.fontSize = (int16_t) abs(stream.getS16()); m_bmfont.info.bitField = stream.getU8(); m_bmfont.info.charSet = stream.getU8(); m_bmfont.info.stretchH = stream.getU16(); @@ -159,12 +159,11 @@ namespace c2d { // create glyph Glyph glyph = { // advance - (float) bmfChar.xadvance + (float) m_bmfont.info.outline / 2, + (float) bmfChar.xadvance, // bounds { - (float) (bmfChar.xoffset), - (float) (bmfChar.yoffset - m_bmfont.common.lineHeight) + - ((float) m_bmfont.info.outline / 2), + (float) (bmfChar.xoffset + m_bmfont.info.outline), + (float) (bmfChar.yoffset - m_bmfont.common.base + m_bmfont.info.outline), bmfChar.width, bmfChar.height }, @@ -179,7 +178,7 @@ namespace c2d { } case BMFONT_BLOCK_TYPE_KERNINGS: { int32_t kerningPairsCount = (int32_t) blockSize / 10; - for (int32_t index = 0; index < kerningPairsCount; ++index) { + for (int32_t index = 0; index < kerningPairsCount; index++) { m_bmfont.kerningPairs.push_back({stream.getU32(), stream.getU32(), stream.getS16()}); } break; @@ -195,8 +194,9 @@ namespace c2d { return false; } - printf("BMFont::loadFromMemory: loaded %lu chars (font size: %i, outline size: %i)\n", - m_bmfont.glyphs.size(), m_bmfont.info.fontSize, m_bmfont.info.outline); + printf("BMFont::loadFromMemory: loaded %lu chars (size: %i, outline: %i, base: %i, line height: %i)\n", + m_bmfont.glyphs.size(), m_bmfont.info.fontSize, m_bmfont.info.outline, + m_bmfont.common.base, m_bmfont.common.lineHeight); return true; } @@ -209,7 +209,9 @@ namespace c2d { bool bold, float outlineThickness) const { if (m_bmfont.glyphs.count((int) codePoint)) { if ((int16_t) characterSize == m_bmfont.info.fontSize) { - return m_bmfont.glyphs.at((int) codePoint); + s_glyph = m_bmfont.glyphs.at((int) codePoint); + //printf("getGlyph(%c): advance: %f\n", codePoint, s_glyph.advance); + return s_glyph; } else { s_glyph = m_bmfont.glyphs.at((int) codePoint); float scaling = (float) characterSize / (float) (m_bmfont.info.fontSize + m_bmfont.info.outline); @@ -227,14 +229,18 @@ namespace c2d { //////////////////////////////////////////////////////////// float BMFont::getKerning(uint32_t first, uint32_t second, unsigned int characterSize, bool bold) const { - if (!m_bmfont.kerningPairs.empty()) { - float scaling = (float) characterSize / (float) m_bmfont.info.fontSize; - for (const auto &kerningPair: m_bmfont.kerningPairs) { - if (kerningPair.first == first && kerningPair.second == second) { - return (float) kerningPair.amount * scaling; - } + if (first == 0 || second == 0) return 0; + if (m_bmfont.kerningPairs.empty()) return 0; + + float scaling = (float) characterSize / (float) m_bmfont.info.fontSize; + for (const auto &kerningPair: m_bmfont.kerningPairs) { + if (kerningPair.first == first && kerningPair.second == second) { + float kerning = (float) kerningPair.amount * scaling; + //printf("BMFont::getKerning(%c %c): %f\n", first, second, kerning); + return kerning; } } + return 0; } diff --git a/source/skeleton/sfml/Font.cpp b/source/skeleton/sfml/Font.cpp index 7adcf596..3e672fa5 100644 --- a/source/skeleton/sfml/Font.cpp +++ b/source/skeleton/sfml/Font.cpp @@ -205,6 +205,7 @@ namespace c2d { } else { // Not found: we have to load it Glyph glyph = loadGlyph(codePoint, characterSize, bold, outlineThickness); + //printf("Font::getGlyph(%c): advance: %f\n", codePoint, glyph.advance); return glyphs.emplace(key, glyph).first->second; } } diff --git a/test/main.cpp b/test/main.cpp index 76af3cd5..d83b40c7 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -43,22 +43,24 @@ int main(int argc, char *argv[]) { #ifndef __NO_FREETYPE__ // create a text - auto text = new Text("libcross2d @ Cpasjuste"); + auto font = new Font(); + font->loadFromFile(renderer->getIo()->getRomFsPath() + "future.ttf"); + auto text = new Text("libcross2d @ Cpasjuste", 20, font); text->setOutlineThickness(2); - text->setPosition(rect->getSize().x - 16 * scaling, rect->getSize().y - 16 * scaling); - text->setOrigin(Origin::BottomRight); - text->setScale(scaling, scaling); - rect->add(text); -#else - // create a bitmap text (https://www.angelcode.com/products/bmfont/) - auto font = new BMFont(); - font->loadFromFile(renderer->getIo()->getRomFsPath() + "04b_19.fnt"); - auto text = new Text("libcross2d @ Cpasjuste", 24, font); - text->setPosition(renderer->getSize().x - 8 * scaling, renderer->getSize().y - 8 * scaling); + text->setPosition(renderer->getSize().x - 8, renderer->getSize().y - 8); text->setOrigin(Origin::BottomRight); renderer->add(text); #endif + // create a bitmap text (https://www.angelcode.com/products/bmfont/) + auto bmFont = new BMFont(); + bmFont->loadFromFile(renderer->getIo()->getRomFsPath() + "future.fnt"); + auto bmText = new Text("libcross2d @ Cpasjuste", 20, bmFont); + bmText->setFillColor(Color::Red); + bmText->setPosition(renderer->getSize().x - 8, renderer->getSize().y - 40); + bmText->setOrigin(Origin::BottomRight); + renderer->add(bmText); + // add all this crap to the renderer renderer->add(rect); @@ -93,6 +95,11 @@ int main(int argc, char *argv[]) { renderer->flip(); } +#ifndef __NO_FREETYPE__ + delete (font); +#endif + delete (bmFont); + // will delete child's (textures, shapes, text..) delete (renderer);