// NOTE: this can be used to know when to load saved sessions
}],
print: (function() {
var element = document.getElementById('output');
if (element) element.value = ''; // clear browser cache
return function(text) {
if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' ');
// These replacements are necessary if you render to raw HTML
//text = text.replace(/&/g, "&");
//text = text.replace(/</g, "<");
//text = text.replace(/>/g, ">");
//text = text.replace('\n', '<br>', 'g');
console.log(text);
if (element) {
element.value += text + "\n";
element.scrollTop = element.scrollHeight; // focus on bottom
}
};
})(),
printErr: function(text) {
if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' ');
if (0) { // XXX disabled for safety typeof dump == 'function') {
dump(text + '\n'); // fast, straight to the real console
} else {
console.error(text);
}
},
canvas: (function() {
var canvas = document.getElementById('canvas');
// As a default initial behavior, pop up an alert when webgl context is lost. To make your
// application robust, you may want to override this behavior before shipping!
// See http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15.2
canvas.addEventListener("webglcontextlost", function(e) { alert('WebGL context lost. You will need to reload the page.'); e.preventDefault(); }, false);
return canvas;
})(),
setStatus: function(text) {
if (!Module.setStatus.last) Module.setStatus.last = { time: Date.now(), text: '' };
if (text === Module.setStatus.text) return;
var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/);
var now = Date.now();
if (m && now - Module.setStatus.last.time <30)return;//ifthisisaprogressupdate,skipitiftoosoon
The artboard is too large to render as mp4.* You can still render into a zipfile with still frames. You can convert these into a video with ffmpeg, <ahref="https://support.apple.com/guide/quicktime-player/create-a-movie-with-an-image-sequence-qtp315cce984/mac">QuickTime</a> or a Video Editor of your choice.<br><br>* To render as mp4, please scale the artboard dimensions until the render dimensions do not exceed a total of 2.073.600 (1920 * 1080) pixels.
<!-- <p>Variable Time is a tool for working with variable text in motion and states of transition.</p>
<p>It is developed by artist duo and creative coders studio Pointer*<aclass="button-overlay link-in-text first-link"href="https://pointer.click"target="_blank">web↗</a><aclass="button-overlay link-in-text"href="https://instagram.com/pointer_studio"target="_blank">ig↗</a> in collaboration with type designer Céline Hurka<aclass="button-overlay link-in-text first-link"href="https://celine-hurka.com"target="_blank">web↗</a><aclass="button-overlay link-in-text"href="https://www.instagram.com/celinehurka"target="_blank">ig↗</a>. Variable Time is a personal project, which is a part of Variable Lab<aclass="button-overlay link-in-text first-link"href="https://variablelab.pointer.click"target="_blank">web↗</a><aclass="button-overlay link-in-text"href="https://www.instagram.com/variablelab"target="_blank">ig↗</a> - a series of technical, typographic, visual and theoretical exchanges between studio Pointer*, Celine Hurka and their various collaborators. The toolset of Variable Time will be growing with new experimental features alongside their ongoing research.</p> -->
<divclass="textParent aboutParent">
<p>Variable Time is an open-source tool for working with typography in motion and states of transition.</p>
<p>It is developed by artist duo and creative coders studio Pointer<aclass="button-overlay link-in-text first-link"href="https://pointer.click"target="_blank">WEB↗</a><aclass="button-overlay link-in-text"href="https://instagram.com/pointer_studio"target="_blank">IG↗</a>in collaboration with type designer Céline Hurka<aclass="button-overlay link-in-text first-link"href="https://celine-hurka.com"target="_blank">WEB↗</a><aclass="button-overlay link-in-text"href="https://www.instagram.com/celinehurka"target="_blank">IG↗</a>. Variable Time is an ongoing personal exploration, driven by their fascination with variable font formats and their potential impact on the future of verbal and non-verbal communication. This tool is one of the first and foundational projects of Variable Lab<aclass="button-overlay link-in-text first-link"href="https://variablelab.pointer.click"target="_blank">WEB↗</a><aclass="button-overlay link-in-text"href="https://www.instagram.com/variablelab"target="_blank">IG↗</a>– a series of technical, typographic, visual and theoretical exchanges between studio Pointer and Céline Hurka. The Variable Time toolkit is designed to evolve in parallel with their ongoing research, continuously expanding with new experimental controls and features.</p>
</div>
<divclass="textParent toExtend">
<h4>Current Version <buttonclass="expandText">+</button></h4>
<divclass="expanded">
<p>This is the first released version of Variable Time. It is an ongoing project for which we have many future plans and improvements.</p>
<p>Due to the way we approached font rendering, a lot of seemingly standard functionalities had to be rebuild from scratch. This gives us a lot of freedom and offers new ways in which we can approach working with typography, however it also means that some things might take longer to develop.</p>
<p>The current version of the tool only supports a basic Latin character set - so A-Z, 1-9 and punctuation. Extending it with other languages and alternates is on our priority list as well and will hopefully be possible in the upcoming versions.</p>
<p>Kerning. There are multiple ways of storing and reading Kerning tables, and we currently only support one of them. Supporting more sophisticated kerning is also on our priority list.</p>
<p>Apart from that we have exciting plans for the toolkit of Variable Time. Among other things, we are already working on addons that would allow controlling parameters with sound, recording changes live and linking sequences to more types of automated inputs.</p>
</div>
</div>
<divclass="instructions">
<!-- <h4>How to use - (extremely) brief intro: </h4> -->
<p>Variable Time allows to design and export time-based typography with an unlimited amount of layers. You can create, remove, duplicate and select layers through the overview panel in the left top corner. </p>
<p>The panel of Variable Time consists of a number of modifiable parameters. You can adjust these parameters per layer. You can also change the settings of an artboard through the panel if artboard is selected.</p>
<p>You can create a new sequence per each modifiable parameter in the panel by clicking on the keyframe (diamond) button on its left. This will create an empty sequence. For adding a keyframe, drag the time indicator to the right place and click on the same keyframe button again.</p>
<p>This is fallback content to display for user agents that do not support the video tag.</p>
</video>
<p>The easing style can be seen by clicking on the curves button next to the name of sequenced parameter. You can select different easing functions by selecting keyframes and clicking on the timeline in-between them.</p>
<p>When a parameter is sequenced, a new feature appears in the panel - letter delays. This feature applies animations to each letter with a given delay time. The delay time can differ per each animated parameter.</p>
<p>Variable Time allows exporting video in mp4 format and static frames. At this step it is also possible to scale the output file resolution and apply time stretch - so make your output speed slower or faster proportionally.*</p>
<pclass="note">* Please keep in mind that rendering in mp4 has limits in resolution, however there is (almost) no limit in rendering frames (which you can easily convert to video with the help of various external tools).</p>
<p>Variable Time features experimental variable fonts designed by Céline Hurka<aclass="button-overlay link-in-text first-link"href="https://celine-hurka.com"target="_blank">WEB↗</a><aclass="button-overlay link-in-text"href="https://www.instagram.com/celinehurka"target="_blank">IG↗</a> and Jacob Wise<aclass="button-overlay link-in-text first-link"href="https://wisetype.nl"target="_blank">WEB↗</a><aclass="button-overlay link-in-text first-link"href="https://www.instagram.com/wise_type"target="_blank">IG↗</a>. These typefaces can be used freely to explore the tool or to be used for personal non-commercial projects made with the tool. If you want to use them for commercial or client work, or if you are not sure if your case applies, please reach out to Céline Hurka and/or Jacob Wise to discuss the possibilities. </p>
<p>Currently, Tonka, the Version collection and Zaft2 are included. Tonka is available on celine-hurka.com<aclass="button-overlay link-in-text first-link"href="https://celine-hurka.com/tonka/"target="_blank">WEB↗</a>. Version is Céline Hurka’s Type and Media graduation project and has not been published anywhere else yet. Zaft2 is a collaborative project by Céline Hurka and Jacob Wise and is available on wisetype.nl<aclass="button-overlay link-in-text first-link"href="https://wisetype.nl/collections/wt-zaft-2"target="_blank">WEB↗</a> since 2021.</p>
<p>Variable Time is built up on other open source libraries, such as openFrameworks<aclass="button-overlay link-in-text first-link"href="https://www.openframeworks.cc/"target="_blank">WEB↗</a>, FreeType<aclass="button-overlay link-in-text first-link"href="https://www.freetype.org/"target="_blank">WEB↗</a>, Theatre.js<aclass="button-overlay link-in-text first-link"href="https://www.theatrejs.com/"target="_blank">WEB↗</a>, FFmpeg<aclass="button-overlay link-in-text first-link"href="https://www.ffmpeg.org/"target="_blank">WEB↗</a> and more. For a detailed list, please visit the Variable Time source code.</p>
<p>Variable Time is completely free of charge and brings us no commercial profit. A donation of any size would help us to dedicate more time and effort to expanding its toolkit and fixing bugs. ❤️ </p>
We would be excited to see what you make with Variable Time! Feel free to share your visuals with us via <aclass="button-overlay link-in-text first-link"href="mailto:variabletime@pointer.click"target="_blank">EMAIL↗</a><br>
</p>
<p>This project is made possible thanks to support from Stimuleringsfonds</p>