Comments (7)
text-stroke cannot have different dimensions for width and height, and cannot be blurred.
from libjass.
Which sucks, but it's not as bad as this:
from libjass.
Yeah, it's spelled "Whoa".
from libjass.
Can you not just set RendererSettings.enableSvg to false then?
from libjass.
4 text-shadows simulating 1px text stroke (as in libjass):
-webkit-text-stroke: 1px red;
The 4-shadow approach gives more flexibility, but -webkit-text-stroke
looks much better in the simple dialogue case. Maybe use it when SVG is disabled, the stroke is the same in both directions, and the stroke is 1px or close to it? (it starts overlapping the fill above 1px, though text-shadow doesn't look much better, having visible holes and squaring off curves)
from libjass.
ASS outlines are outside the shape. text-stroke is the width of the pen used to write the shape, so half of it is outside the shape and half inside. So a 1px outline would require a 2px text-stroke, of which 1px will be outside and 1px will be inside. But let's ignore that because it was also the intention of the author to have a 1px border around the shape, not 2px.
http://plnkr.co/edit/qVBgvGPmo5LjtN0LZY8T?p=preview
text-stroke looks worse for both 1px and 3px. Rather than outlining the text it results in shapes appearing thinner (after all, its purpose is to set the pen width, not to create outlines).
text-shadow looks nearly identical to filter for both. In particular, they both have jagged outlines at the extremeties of the shapes, although they're softer with the filter (*).
The above is without blur on the outlines. Authors will usually blur large outlines, which will make the text-shadow lose the jaggedness somewhat and the filter one completely. text-stroke will continue to look terrible.
(Note that libjass did used to use text-stroke. I moved away from it for the above reasons.)
(*) The presence of both softness and jaggedness in the filter outline is because of how it's generated. The SVG dilate operation can take both a horizontal and vertical length to dilate the original shape to, but the dilation is rectangular, not elliptical as ASS outlines are. So instead of using a single dilate to generate the whole outline, libjass stacks multiple dilated rectangles of decreasing width and increasing height to approximate an ellipse. The step of each rectangle is 1px along the shorter dimension, which leads to jaggedness, but the other dimension will have fractional pixel lengths, leading to softness from subpixel rendering.
from libjass.
Alrighty, thanks for the explanation. Buggy browsers are happy funtimes.
from libjass.
Related Issues (20)
- "PlayResX" is not treated as optional! -> breaking HOT 15
- When PlayResX or PlayResY are defined as zero, tab crashes. HOT 1
- Unexpected style margin collisions HOT 1
- \n being rendered in plain text, wrapping style 2 HOT 2
- Request for new release HOT 2
- How to crate subtitle from JSON Object ? HOT 2
- libjass.deserialize dialogue style changes not work HOT 2
- When playing preroll ads, sometimes the text appears very small HOT 1
- Why the npm package doesn't contains a type definition file. HOT 1
- Line-specific styles do not override style definitions HOT 2
- \fad with a fadeout of 0 is treated as fading out for the duration of the line HOT 1
- Opt-in support for command execution HOT 3
- [Feature Request]Can you convert a .ass subtitle to VobSub format? HOT 2
- dialogues ID will be created next to the last dialogues ID from previous object HOT 3
- when I create new dialogue can I get a dialogue class tag? HOT 1
- Update Typescript version HOT 6
- Serialize back to .ass HOT 1
- implement smart line wrapping
- Lines can be "pushed away" by other lines on the same layer HOT 2
- Lines are moved down when lines underneath it are removed HOT 1
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 libjass.