diff --git a/msdf-atlas-gen/FontGeometry.cpp b/msdf-atlas-gen/FontGeometry.cpp index 08b2bef..b80a9da 100644 --- a/msdf-atlas-gen/FontGeometry.cpp +++ b/msdf-atlas-gen/FontGeometry.cpp @@ -1,6 +1,8 @@ #include "FontGeometry.h" +#define DEFAULT_FONT_UNITS_PER_EM 2048.0 + namespace msdf_atlas { FontGeometry::GlyphRange::GlyphRange() : glyphs(), rangeStart(), rangeEnd() { } @@ -82,10 +84,10 @@ int FontGeometry::loadCharset(msdfgen::FontHandle *font, double fontScale, const } bool FontGeometry::loadMetrics(msdfgen::FontHandle *font, double fontScale) { - if (!msdfgen::getFontMetrics(metrics, font)) + if (!msdfgen::getFontMetrics(metrics, font, msdfgen::FONT_SCALING_NONE)) return false; if (metrics.emSize <= 0) - metrics.emSize = MSDF_ATLAS_DEFAULT_EM_SIZE; + metrics.emSize = DEFAULT_FONT_UNITS_PER_EM; geometryScale = fontScale/metrics.emSize; metrics.emSize *= geometryScale; metrics.ascenderY *= geometryScale; @@ -123,7 +125,7 @@ int FontGeometry::loadKerning(msdfgen::FontHandle *font) { for (size_t i = rangeStart; i < rangeEnd; ++i) for (size_t j = rangeStart; j < rangeEnd; ++j) { double advance; - if (msdfgen::getKerning(advance, font, (*glyphs)[i].getGlyphIndex(), (*glyphs)[j].getGlyphIndex()) && advance) { + if (msdfgen::getKerning(advance, font, (*glyphs)[i].getGlyphIndex(), (*glyphs)[j].getGlyphIndex(), msdfgen::FONT_SCALING_NONE) && advance) { kerning[std::make_pair((*glyphs)[i].getIndex(), (*glyphs)[j].getIndex())] = geometryScale*advance; ++loaded; } diff --git a/msdf-atlas-gen/FontGeometry.h b/msdf-atlas-gen/FontGeometry.h index a53167f..88e8f33 100644 --- a/msdf-atlas-gen/FontGeometry.h +++ b/msdf-atlas-gen/FontGeometry.h @@ -11,8 +11,6 @@ #include "GlyphGeometry.h" #include "Charset.h" -#define MSDF_ATLAS_DEFAULT_EM_SIZE 32.0 - namespace msdf_atlas { /// Represents the geometry of all glyphs of a given font or font variant diff --git a/msdf-atlas-gen/GlyphGeometry.cpp b/msdf-atlas-gen/GlyphGeometry.cpp index f959b86..049ff72 100644 --- a/msdf-atlas-gen/GlyphGeometry.cpp +++ b/msdf-atlas-gen/GlyphGeometry.cpp @@ -9,7 +9,7 @@ namespace msdf_atlas { GlyphGeometry::GlyphGeometry() : index(), codepoint(), geometryScale(), bounds(), advance(), box() { } bool GlyphGeometry::load(msdfgen::FontHandle *font, double geometryScale, msdfgen::GlyphIndex index, bool preprocessGeometry) { - if (font && msdfgen::loadGlyph(shape, font, index, &advance) && shape.validate()) { + if (font && msdfgen::loadGlyph(shape, font, index, msdfgen::FONT_SCALING_NONE, &advance) && shape.validate()) { this->index = index.getIndex(); this->geometryScale = geometryScale; codepoint = 0; diff --git a/msdf-atlas-gen/main.cpp b/msdf-atlas-gen/main.cpp index b89744d..385bd86 100644 --- a/msdf-atlas-gen/main.cpp +++ b/msdf-atlas-gen/main.cpp @@ -20,6 +20,7 @@ using namespace msdf_atlas; +#define DEFAULT_SIZE 32.0 #define DEFAULT_ANGLE_THRESHOLD 3.0 #define DEFAULT_MITER_LIMIT 1.0 #define DEFAULT_PIXEL_RANGE 2.0 @@ -837,7 +838,7 @@ int main(int argc, const char *const *argv) { minEmSize = config.emSize; if (!(fixedWidth > 0 && fixedHeight > 0) && !(fixedCellWidth > 0 && fixedCellHeight > 0) && !(minEmSize > 0)) { fputs("Neither atlas size nor glyph size selected, using default...\n", stderr); - minEmSize = MSDF_ATLAS_DEFAULT_EM_SIZE; + minEmSize = DEFAULT_SIZE; } if (config.imageType == ImageType::HARD_MASK || config.imageType == ImageType::SOFT_MASK) { rangeMode = RANGE_PIXEL; diff --git a/msdfgen b/msdfgen index 937f31f..c7a724c 160000 --- a/msdfgen +++ b/msdfgen @@ -1 +1 @@ -Subproject commit 937f31ff418e488e4b707a77c294cdb4fadb4235 +Subproject commit c7a724c17366db009a43514b90329519d792b51b