Forum Replies Created

Page 1 of 5
  • Othman Ahmed

    November 13, 2025 at 7:30 am in reply to: Dynamic Letter Multiplier Issue

    I solved it with this expression:

    // Kashida (Tatweel) Removal Expression

    var originalText = “text here”;

    var kashidaChar = String.fromCharCode(0x0640); // Arabic Tatweel ـ

    // Get removal percentage from control layer

    var removePercent = 0;

    try {

    removePercent = thisComp.layer(“Kashida Control Layer”).effect(“Remove Kashida %”)(“Slider”);

    } catch (e) {

    removePercent = 0;

    }

    // Find all Kashida positions

    var kashidaPositions = [];

    for (var i = 0; i < originalText.length; i++) {

    if (originalText.charAt(i) === kashidaChar) {

    kashidaPositions.push(i);

    }

    }

    // Calculate how many Kashidas to remove

    var totalKashidas = kashidaPositions.length;

    var kashidasToRemove = Math.floor((removePercent / 100) * totalKashidas);

    // Build new text by removing Kashidas proportionally

    if (kashidasToRemove === 0) {

    originalText;

    } else if (kashidasToRemove >= totalKashidas) {

    originalText.split(kashidaChar).join(“”);

    } else {

    var newText = originalText;

    var removedCount = 0;

    for (var i = kashidaPositions.length – 1; i >= 0 && removedCount < kashidasToRemove; i–) {

    kashidaPositions[i] = -1;

    removedCount++;

    }

    var result = “”;

    var kashidaIndex = 0;

    for (var i = 0; i < originalText.length; i++) {

    if (originalText.charAt(i) === kashidaChar) {

    if (kashidaPositions[kashidaIndex] !== -1) {

    result += kashidaChar;

    }

    kashidaIndex++;

    } else {

    result += originalText.charAt(i);

    }

    }

    result;

    }

    It’s working good, But I’m wondering if there is a better simpler mechanism?!

  • Watch this tutorial:
    https://www.youtube.com/watch?v=7NRLZHqzAEw&t=1s

    Some contents or functionalities here are not available due to your cookie preferences!

    This happens because the functionality/content marked as “Google Youtube” uses cookies that you choosed to keep disabled. In order to view this content or use this functionality, please enable cookies: click here to open your cookie preferences.

  • Othman Ahmed

    April 10, 2025 at 10:26 am in reply to: Extendscript issue – Almost impossible

    Thnaks Dan,
    Please check your email

  • Othman Ahmed

    November 24, 2022 at 11:32 am in reply to: Expression to make texts grow in size
    Try Something like this might help

    endSize = effect("Slider Control")("Slider");

    endTime = effect("Slider Control 2")("Slider");
    t = linear(time,0,endTime,1,endSize);
    x = text.sourceText.style.setFontSize(t);
  • This script may help you https://aescripts.com/loopflow/

  • Simple modification.

    <pre data-placeholder=””>

    if (time <= inPoint+0.5) { output = linear(time,inPoint, inPoint+.5, 0, 100);

    } else {

    output = linear(time,outPoint-.5, outPoint, 100, 0); // just replace + with –

    }

    output;

  • Othman Ahmed

    January 22, 2021 at 2:19 pm in reply to: Slider (Decimal) to Binary

    You’re welcome.

  • Othman Ahmed

    January 22, 2021 at 1:09 pm in reply to: Slider (Decimal) to Binary

    Yup, it’s pretty easy. just add this code to the source text of the text layer :

    decimal = thisComp.layer("slider controller").effect("Slider Control")("Slider");

    Number(decimal).toString(2)

    // done by VFXING

  • Othman Ahmed

    January 19, 2021 at 9:32 am in reply to: Code not working anymore

    Hello Dan, Hope you doing great!

    Please, Where can I find the original “Building the World’s Greatest Cameraman” thread?

  • Othman Ahmed

    January 14, 2021 at 5:34 pm in reply to: Loopout offset does not exist?

    You must add a double quotation :

    loopOut(“offset”)

Page 1 of 5

We use anonymous cookies to give you the best experience we can.
Our Privacy policy | GDPR Policy