MSDFgen font coordinate scaling fix
This commit is contained in:
parent
f424021a2b
commit
b67fb967c3
|
|
@ -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<int, int>((*glyphs)[i].getIndex(), (*glyphs)[j].getIndex())] = geometryScale*advance;
|
||||
++loaded;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
2
msdfgen
2
msdfgen
|
|
@ -1 +1 @@
|
|||
Subproject commit 937f31ff418e488e4b707a77c294cdb4fadb4235
|
||||
Subproject commit c7a724c17366db009a43514b90329519d792b51b
|
||||
Loading…
Reference in New Issue