Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Distance field flips depending on TTF/OTF file. #15

Closed
hak opened this issue Jun 12, 2016 · 11 comments
Closed

Distance field flips depending on TTF/OTF file. #15

hak opened this issue Jun 12, 2016 · 11 comments

Comments

@hak
Copy link

hak commented Jun 12, 2016

Generated SDF flips depending on TTF/OTF file.
For example, in 'Times New Roman.ttf' (coming with OSX), SDF is generated for outer direction
while in 'NotoSansCJKjp-Bold.otf' (https://www.google.com/get/noto/), it's generated to inner direction.

Need to check a winding direction for a robust SDF generation?

@daredevildave
Copy link

I've found some other fonts that appear to be inversed, either completely or partially.

This one seems to be completely inverse: http://www.dafont.com/sports-world.font

@Chlumsky
Copy link
Owner

So does the font file specify which direction it uses or am I supposed to guess it from the geometry somehow? Unless it does, I'm thinking of just adding a switch that will invert it. Anyway, for now, you should be able to fix the distance field if you just invert the colors.

@behdad
Copy link

behdad commented Jun 14, 2016

TrueType-flavored OpenType fonts (aka TTF) conventionally have clockwise outer contours, while CFF-flavored ones (aka OTF) have the reverse. That said, these are conventions, and both work perfectly fine in most apps if they do not follow the convention. I have some code in GLyphy for fixing up contour directions if you care to check.

@boulabiar
Copy link

boulabiar commented Jun 16, 2016

I had the same problem with svg downloaded from thenounproject.com
I've made some tests in the shader and I have
float sigDist = 0.5- median(sample.r, sample.g, sample.b);
or
float sigDist = median(sample.r, sample.g, sample.b) - 0.5;
depending on the case. (it's just a temporary solution..)

@Chlumsky
Copy link
Owner

I have added an option (-reverseorder) that will fix the output for shapes defined in reverse order.

@chaoticbob
Copy link

@Chlumsky - I borrowed the logic from invertColor for OTF fonts and the result looks in correct. I changed the 0.5 to 1.0 and it seems to produce correct results. Wondering if I'm missing something on this? Font is Chalet Comprime Cologne 1980. It also lives in various places on the internet.

Also wondering if anyone has seen this on TTF font as well?

@daredevildave
Copy link

The -reverseorder flag doesn't seem to be working correctly as noted above.

Compare the two results below. First is generated using no -reverseorder flag and then the image is inverted in graphics magic. Second is generated using -reverseorder flag.

I believe the error is as noted above. If you change the value in invertColor from 0.5 to 1.0. The results come out the same.

sports world-correct
sports world-wrong

@Chlumsky
Copy link
Owner

Chlumsky commented Dec 7, 2016

You are absolutely right, sorry, I have no idea how I overlooked this.

EDIT: Fixed.

@Chlumsky
Copy link
Owner

Chlumsky commented Dec 8, 2016

I'm not getting the same behavior. Actually, what you're claiming is the output with reverse order looks a lot like what would happen before the fix.

@vkalpias
Copy link

vkalpias commented Dec 9, 2016

Looks like you're right. I had a weird local merge on my fork of your repo which seemed to use the old version! Thanks and sorry I'll delete my posts.

@Chlumsky
Copy link
Owner

Chlumsky commented Feb 9, 2017

Since 0e68504, the standalone version will automatically guess the orientation of the input by sampling a distance outside the shape's bounds. This can be disabled by -keeporder or -reverseorder.

@Chlumsky Chlumsky closed this as completed Feb 9, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants