Comments (11)
@LautrecOfCarim This turned out to be a way more complex problem than it seemed inititally, since the contours are supplied in a completely randomized order, but I believe I solved it, so it should work now. It took me two or three afternoons, but it was a very interesting problem. See #6.
from msdfgen.
I also have seen this problem with Helvetica neue lt std on the lower-case and upper-case letter 'o'. It looks like it pulls out of the inner for loop and resets the state
variable to NONE and when it resamples face->glyph->outline.tags[index]
, it comes back with QUADRATIC_POINT and on state==NONE
it's REQUIRED(pointType == PATH_POINT)
. I'm looking deeper into it now.
from msdfgen.
I was able to get the 'o' to work after taking out the REQUIRED(pointType == PATH_POINT)
. Here's the result...
...I wonder if there's a case that isn't being accounted for, as in a glyph that has a different structure. I will continue researching it. Let me know if that makes sense. Here's a link to the font I'm using.
from msdfgen.
Are you using the latest version? There is no line containing REQUIRE(pointType == PATH_POINT)
anymore.
from msdfgen.
@Chlumsky - Did some digging on this with the latest version of the code. Looks like the letter 'o' in some fonts (e.g. Neue Helvetica Pro 55 Roman has no PATH_POINT in the first contour in TTF format. So eventually the REQUIRE macro forces it out of the loop with a failure. But if one comments out the REQUIRED macro, an infinite loop occurs due to no exit of the loop.
from msdfgen.
@Chlumsky, I updated and have gotten the 'o' in Helvetica Neue Bold to work, thanks for that. I'm also seeing the same thing as @chaoticbob.
from msdfgen.
Here's my fix for loadGlyph
wrt the issue I mentioned above:
switch (state) {
case NONE:
if (pointType == PATH_POINT) {
firstPathPoint = index;
startPoint = point;
state = PATH_POINT;
} else if((face->glyph->outline.tags[first] == FT_Curve_Tag_Conic) && (face->glyph->outline.tags[last] == FT_Curve_Tag_Conic)) {
firstPathPoint = index;
Point2 firstPoint( face->glyph->outline.points[first].x/64., face->glyph->outline.points[first].y/64.);
Point2 lastPoint( face->glyph->outline.points[last].x/64., face->glyph->outline.points[last].y/64.);
startPoint = .5*(firstPoint + lastPoint);
controlPoint[0] = point;
state = QUADRATIC_POINT;
}
break;
I found this discussion to be helpful for contours that are all quadratic points, aka uses the all quadratic shorthand.
from msdfgen.
You should be using FT_Outline_Decompose()
instead of manually decoding the outline.
from msdfgen.
This font also throws that Failed to load glyph from font file
error https://fonts.google.com/specimen/Londrina+Solid on some characters for example character a
(0x61)
from msdfgen.
Alright, I changed it to FT_Outline_Decompose()
as per @behdad's comment. Everything should be fine now.
from msdfgen.
I'm getting similar problems with some characters. The '$' glyph from Crimson-Italic has overlapping contours and doesn't render properly.
from msdfgen.
Related Issues (20)
- Msdf generation fails on symbol with several nested holes HOT 4
- Alpha as input ? HOT 1
- Allow FT_LOAD_DEFAULT in import-font extension HOT 5
- Confusing SignedDistance calculation in QuadraticSegment::signedDistance
- Inverting Y Axis makes uneven baseline HOT 2
- Segfault on Empty Shape
- Chinese character rendering issues HOT 5
- The effect of render small character is not good HOT 2
- Outline effect is not good on some glphys HOT 4
- Failure to import SVG file with empty initial <g> element HOT 4
- Using vcpkg leads to compiler error in VS2022 HOT 4
- Incorrect rendering of SVG with internal path HOT 1
- New release soon? HOT 1
- Call project() after cmake_minimum_required() HOT 6
- Artifact on a certain glyph HOT 4
- SVG with Quadradic path commands generates an SDF instead of MSDF HOT 3
- Multiple character output HOT 1
- Render HOT 2
- SDF from glyph curves? HOT 2
- Cyrillic
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from msdfgen.