diff --git a/msdf-atlas-gen/main.cpp b/msdf-atlas-gen/main.cpp index 238175f..56e3395 100644 --- a/msdf-atlas-gen/main.cpp +++ b/msdf-atlas-gen/main.cpp @@ -591,6 +591,12 @@ int main(int argc, const char * const *argv) { printf("Warning: Output image file extension does not match the image's actual format (%s)!\n", imageFormatName); } imageFormatName = nullptr; // No longer consistent with imageFormat + bool floatingPointFormat = ( + config.imageFormat == ImageFormat::TIFF || + config.imageFormat == ImageFormat::TEXT_FLOAT || + config.imageFormat == ImageFormat::BINARY_FLOAT || + config.imageFormat == ImageFormat::BINARY_FLOAT_BE + ); // Load font class FontHolder { @@ -699,42 +705,35 @@ int main(int argc, const char * const *argv) { } } - bool floatingPoint = ( - config.imageFormat == ImageFormat::TIFF || - config.imageFormat == ImageFormat::TEXT_FLOAT || - config.imageFormat == ImageFormat::BINARY_FLOAT || - config.imageFormat == ImageFormat::BINARY_FLOAT_BE - ); - bool success = false; switch (config.imageType) { case ImageType::HARD_MASK: - if (floatingPoint) + if (floatingPointFormat) success = makeAtlas(glyphs, font, config); else success = makeAtlas(glyphs, font, config); break; case ImageType::SOFT_MASK: case ImageType::SDF: - if (floatingPoint) + if (floatingPointFormat) success = makeAtlas(glyphs, font, config); else success = makeAtlas(glyphs, font, config); break; case ImageType::PSDF: - if (floatingPoint) + if (floatingPointFormat) success = makeAtlas(glyphs, font, config); else success = makeAtlas(glyphs, font, config); break; case ImageType::MSDF: - if (floatingPoint) + if (floatingPointFormat) success = makeAtlas(glyphs, font, config); else success = makeAtlas(glyphs, font, config); break; case ImageType::MTSDF: - if (floatingPoint) + if (floatingPointFormat) success = makeAtlas(glyphs, font, config); else success = makeAtlas(glyphs, font, config); @@ -766,7 +765,7 @@ int main(int argc, const char * const *argv) { std::vector previewText; utf8Decode(previewText, config.shadronPreviewText); previewText.push_back(0); - if (generateShadronPreview(font, glyphs.data(), glyphs.size(), config.imageType, config.width, config.height, config.pxRange, previewText.data(), config.imageFilename, config.shadronPreviewFilename)) + if (generateShadronPreview(font, glyphs.data(), glyphs.size(), config.imageType, config.width, config.height, config.pxRange, previewText.data(), config.imageFilename, floatingPointFormat, config.shadronPreviewFilename)) puts("Shadron preview script generated."); else { result = 1; diff --git a/msdf-atlas-gen/shadron-preview-generator.cpp b/msdf-atlas-gen/shadron-preview-generator.cpp index 807a3da..7d5ee0f 100644 --- a/msdf-atlas-gen/shadron-preview-generator.cpp +++ b/msdf-atlas-gen/shadron-preview-generator.cpp @@ -77,7 +77,7 @@ static std::string relativizePath(const char *base, const char *target) { return output; } -bool generateShadronPreview(msdfgen::FontHandle *font, const GlyphGeometry *glyphs, int glyphCount, ImageType atlasType, int atlasWidth, int atlasHeight, double pxRange, const unicode_t *text, const char *imageFilename, const char *outputFilename) { +bool generateShadronPreview(msdfgen::FontHandle *font, const GlyphGeometry *glyphs, int glyphCount, ImageType atlasType, int atlasWidth, int atlasHeight, double pxRange, const unicode_t *text, const char *imageFilename, bool fullRange, const char *outputFilename) { double texelWidth = 1./atlasWidth; double texelHeight = 1./atlasHeight; FILE *file = fopen(outputFilename, "w"); @@ -88,7 +88,7 @@ bool generateShadronPreview(msdfgen::FontHandle *font, const GlyphGeometry *glyp fprintf(file, "image Atlas = file(\"%s\")", relativizePath(outputFilename, imageFilename).c_str()); else fprintf(file, "image Atlas = file()"); - fprintf(file, " : filter(%s), map(repeat);\n", atlasType == ImageType::HARD_MASK ? "nearest" : "linear"); + fprintf(file, " : %sfilter(%s), map(repeat);\n", fullRange ? "full_range(true), " : "", atlasType == ImageType::HARD_MASK ? "nearest" : "linear"); fprintf(file, "const vec2 txRange = vec2(%.9g, %.9g);\n\n", pxRange*texelWidth, pxRange*texelHeight); { msdfgen::FontMetrics fontMetrics; diff --git a/msdf-atlas-gen/shadron-preview-generator.h b/msdf-atlas-gen/shadron-preview-generator.h index 240fe72..61db5e9 100644 --- a/msdf-atlas-gen/shadron-preview-generator.h +++ b/msdf-atlas-gen/shadron-preview-generator.h @@ -9,6 +9,6 @@ namespace msdf_atlas { /// Generates a Shadron script that displays a string using the generated atlas -bool generateShadronPreview(msdfgen::FontHandle *font, const GlyphGeometry *glyphs, int glyphCount, ImageType atlasType, int atlasWidth, int atlasHeight, double pxRange, const unicode_t *text, const char *imageFilename, const char *outputFilename); +bool generateShadronPreview(msdfgen::FontHandle *font, const GlyphGeometry *glyphs, int glyphCount, ImageType atlasType, int atlasWidth, int atlasHeight, double pxRange, const unicode_t *text, const char *imageFilename, bool fullRange, const char *outputFilename); } diff --git a/msdfgen b/msdfgen index 9d22335..ae7fc5e 160000 --- a/msdfgen +++ b/msdfgen @@ -1 +1 @@ -Subproject commit 9d22335ea093422d7bf212d31bfaa6adcb9b89f0 +Subproject commit ae7fc5e7a53828949f3bd15006c96ef1a97b5105