Comments (5)
I fixed it, I'll push the change eventually
from fontdue.
tl;dr fontdue accepts out of spec fonts, but your font is more out of spec than the usual out of spec font.
Most font rasterizers, like Fontdue, raster a glyph in scanline order. It knows when it enters or leaves a contour by the direction of the line it encounters. Specifically, this is the winding order. TTF fonts use the glyf table while OTF fonts generally use the CFF/CFF2 tables. The glyf table specifies that contours are defined clockwise, while CFF/CFF2 is counter-clockwise.
Fontdue accept malformed fonts to some degree. It will re-compute glyph metrics and winding order per glyph (that commit cb2e9b2), which fixes a number of issues with some moderately wrong fonts. If a font has a clockwise winding order for some glyphs, but a counter clockwise order for other, Fontdue will render them all correct.
The issue here is that this spec is not enforced, and fonts that don't follow the spec produce undefined behavior. Your font, https://nickmass.com/files/evesansneue-regular.otf, is out of spec. It's a malformed font. Your 'i' and 'j' use two different winding orders for each of its contours. I colored the subtractive and additive sections of the glyph in red and green.
I'm open to fixing this, I'd love to support more out of spec fonts, but this issue is definitely on the font.
from fontdue.
Thank you for the detailed response, I was able to open the font in an editor and quickly fix the directions of those contours and now fontdue renders everything perfectly.
from fontdue.
No worries, I'll work on thinking of a way to handle this new edge case automatically so you won't need to hand fix the font in the future.
from fontdue.
Fixed here: 6f0cea6#diff-7c2ff0572abc69580f0e70fc67a1cbe0d6d5e94bdb96a787ed350e108ef7f3b0
from fontdue.
Related Issues (20)
- C interface HOT 6
- Fonts with variable weight? HOT 2
- Adding an example for calculating the bounding box HOT 8
- can fontdue rasterize with fractional pixel offsets? HOT 5
- SDF texture generation HOT 1
- Ligature support- pairing with other libraries
- Rasterize a whole string HOT 3
- Glyph metrics are incorrect HOT 1
- Font line metrics don't match character metrics
- Png Support HOT 1
- How to rasterize colored emojis HOT 1
- Can you add an example of how to create a simple letter and save as a font? HOT 1
- Option to drop the rest of a line instead of wrapping HOT 2
- Bounding box of laid out text for easy shiftnig of the origin?
- Misaligned pointer dereference in `get_bitmap` HOT 4
- Custom font colors HOT 1
- Live demo error when a glagolitic character ( Ⱆ ) is used HOT 3
- 0.7.4 is a semver break HOT 3
- Slight layout performance regression
- No ability to query font for its name
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 fontdue.