edrlab / bd-comics-manga Goto Github PK
View Code? Open in Web Editor NEWStudy of the requirements and solutions for expressing digital bd, comics, manga, graphics novels ... using Web Publications and EPUB 4.
Study of the requirements and solutions for expressing digital bd, comics, manga, graphics novels ... using Web Publications and EPUB 4.
Some formats (webtoons...) are laid out as a single vertically scrolling page. Therefore we need to support image strips with a large dimension.
The JPEG file format limits the image size to 64k pixels in each dimension. Furthermore, unless encoded specifically (progressive JPEG...), the whole file is required in order to start decoding the image.
HEIF provides a way to circumvent the image size limitation (virtually unlimited image size), and the format is intrinsically tiled (default tile size = 512x512 pixels). This approach has a few drawbacks:
[
{
"type": "image/heic",
"width": 1200,
"height": 25426,
"href": "page1.heic"
}
]
Another way to support large images is with explicit tiling.
[
{
"type": "multipart/related",
"rel": "tiles",
"width": 1200,
"height": 25426,
"children": [
{
"href": "page1_1.jpg",
"type": "image/jpeg",
"top": 0,
"left": 0,
"width": 1200,
"height": 600
},
{
"href": "page1_2.jpg",
"type": "image/jpeg",
"top": 600,
"left": 0,
"width": 1200,
"height": 600
},
...
]
}
]
Could be useful even with explicit tiling, to help generate thumbnails.
"poster": {
"href": "page1_poster.jpg",
"type": "image/jpeg",
"width": 120,
"height": 2543
}
In order to meet the requirements, we need to define these building blocks (or to make sure they are already part of the proposed ePub format):
To have a starting point for our work we need to define what is the most basic model of a bd/comics/manga.
The answer may be part of the introduction of a future spec.
Within a page and between pages.
Animated to either time (automatic, with duration or unlimited) or position (interactive).
Triggers:
Forward, reverse, bidirectional.
Define animations as resources for reuse within a document.
"transformations": [
{ "attribute": "x",
"tracker": "x",
"curve": "linear",
"start": 0,
"end": 15000
}
],
"object": {
"type": "multipart/related",
"rel": "sequence",
"children": [...],
"width": 15000,
"height": 1200
}
Is diagonal scroll (as demonstrated by this page) in the scope?
Parallax effets can be achieved in 2D by moving layers at different speeds. Each layer's position on one axis is a linear function of the scroll position of a reference layer on the same axis, with varying coefficients to simulate distance.
--> trigger + (position-based, time-based) animation
If we consider each layer as an independent object, it is possible to define interactive animations and parallax effects with similar parameters.
{ "type": "multipart/related",
"rel": "stack",
"children": [
{
"z": -1,
"transformations": [
{ "attribute": "x",
"tracker": "x",
"curve": "linear",
"start": 0,
"end": 15000
}
],
"object": {
"type": "multipart/related",
"rel": "tiles",
"children": [...],
"width": 15000,
"height": 1200
}
}, ...
]
}
Multiple layers, opacity -> PNG or HEIF. Each layer has a z-attribute, used only for ordering (no notion of distance). Positive values in front of reference layer, negative values behind reference layer.
Can be merged with animations by considering scroll position as an alternative timeline. Then animation key becomes a function of time and position.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.