diff --git a/README.md b/README.md index 8e8cede..63b4a88 100644 --- a/README.md +++ b/README.md @@ -113,25 +113,23 @@ in order to generate a distance field. Please note that all classes and function Example: ```c++ -#include "msdfgen.h" -#include "msdfgen-ext.h" +#include +#include using namespace msdfgen; int main() { - FreetypeHandle *ft = initializeFreetype(); - if (ft) { - FontHandle *font = loadFont(ft, "C:\\Windows\\Fonts\\arialbd.ttf"); - if (font) { + if (FreetypeHandle *ft = initializeFreetype()) { + if (FontHandle *font = loadFont(ft, "C:\\Windows\\Fonts\\arialbd.ttf")) { Shape shape; - if (loadGlyph(shape, font, 'A')) { + if (loadGlyph(shape, font, 'A', FONT_SCALING_EM_NORMALIZED)) { shape.normalize(); // max. angle edgeColoringSimple(shape, 3.0); // output width, height Bitmap msdf(32, 32); - // scale, translation - SDFTransformation t(Projection(1.0, Vector2(4.0, 4.0)), Range(4.0)); + // scale, translation (in em's) + SDFTransformation t(Projection(32.0, Vector2(0.125, 0.125)), Range(0.125)); generateMSDF(msdf, shape, t); savePng(msdf, "output.png"); } @@ -141,7 +139,6 @@ int main() { } return 0; } - ``` ## Using a multi-channel distance field diff --git a/core/MSDFErrorCorrection.cpp b/core/MSDFErrorCorrection.cpp index e4ceb39..d1b10ef 100644 --- a/core/MSDFErrorCorrection.cpp +++ b/core/MSDFErrorCorrection.cpp @@ -129,10 +129,10 @@ void MSDFErrorCorrection::protectCorners(const Shape &shape) { if (!(commonColor&(commonColor-1))) { // Find the four texels that envelop the corner and mark them as protected. Point2 p = transformation.project((*edge)->point(0)); - if (shape.inverseYAxis) - p.y = stencil.height-p.y; int l = (int) floor(p.x-.5); int b = (int) floor(p.y-.5); + if (shape.inverseYAxis) + b = stencil.height-b-2; int r = l+1; int t = b+1; // Check that the positions are within bounds.