LaoFormatter.java 1.73 KB
/*
 * Decompiled with CFR 0_118.
 */
package com.adobe.fontengine.inlineformatting.infontformatting;

import com.adobe.fontengine.inlineformatting.AttributedRun;
import com.adobe.fontengine.inlineformatting.ElementAttribute;
import com.adobe.fontengine.inlineformatting.infontformatting.GenericFormatter;

final class LaoFormatter
extends GenericFormatter {
    LaoFormatter() {
    }

    protected int removeSignAm(AttributedRun run, int start, int limit) {
        for (int cur = start; cur < limit; ++cur) {
            int usv = run.elementAt(cur);
            if (usv != 3763) continue;
            int prev = cur;
            while (start <= prev - 1 && run.getElementStyle(prev - 1, ElementAttribute.isGlyph) != Boolean.TRUE && 3784 <= run.elementAt(prev - 1) && run.elementAt(prev - 1) <= 3787) {
                --prev;
            }
            if (prev == cur) {
                run.replace(cur, new int[]{3789, 3762});
            } else {
                int[] positions = new int[cur - prev + 1];
                for (int i = 0; i < positions.length; ++i) {
                    positions[i] = prev + i;
                }
                int[] elementIds = new int[cur - prev + 2];
                elementIds[0] = 3789;
                for (int i2 = 1; i2 < elementIds.length - 1; ++i2) {
                    elementIds[i2] = run.elementAt(prev + i2 - 1);
                }
                elementIds[elementIds.length - 1] = 3762;
                run.replace(positions, elementIds);
            }
            ++cur;
            ++limit;
        }
        return limit;
    }

    public int firstPass(AttributedRun run, int start, int limit) {
        limit = this.removeSignAm(run, start, limit);
        return super.firstPass(run, start, limit);
    }
}