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

import com.adobe.fontengine.inlineformatting.AttributedRun;
import com.adobe.fontengine.inlineformatting.infontformatting.IndicFormatter;

final class OriyaFormatter
extends IndicFormatter {
    OriyaFormatter() {
    }

    protected int splitVowelsAndNormalize(AttributedRun run, int start, int limit) {
        block5 : while (start < limit) {
            int usv = run.elementAt(start);
            switch (usv) {
                case 2888: {
                    run.replace(start, new int[]{2887, 2902});
                    ++limit;
                    start += 2;
                    continue block5;
                }
                case 2891: {
                    run.replace(start, new int[]{2887, 2878});
                    ++limit;
                    start += 2;
                    continue block5;
                }
                case 2892: {
                    run.replace(start, new int[]{2887, 2903});
                    ++limit;
                    start += 2;
                    continue block5;
                }
            }
            ++start;
        }
        return limit;
    }

    protected int nukta() {
        return 2876;
    }

    protected int virama() {
        return 2893;
    }

    protected boolean isConsonant(int usv) {
        return 2837 <= usv && usv <= 2873 || 2908 <= usv && usv <= 2913 || 2929 == usv || 9676 == usv;
    }

    protected boolean hasNukta(int usv) {
        return 2908 == usv || 2909 == usv;
    }

    protected int removeNukta(int usv) {
        switch (usv) {
            case 2908: {
                return 2849;
            }
            case 2909: {
                return 2850;
            }
        }
        return usv;
    }

    protected boolean isMark(int usv) {
        return 2878 <= usv && usv <= 2892 || 2902 <= usv && usv <= 2903 || 2817 <= usv && usv <= 2819;
    }

    protected boolean isIndependentVowel(int usv) {
        return 2821 <= usv && usv <= 2836 || 2912 <= usv && usv <= 2913 || 9676 == usv;
    }

    protected IndicFormatter.Position getPosition(int usv) {
        switch (usv) {
            case 2887: {
                return IndicFormatter.Position.left;
            }
            case 2817: {
                return IndicFormatter.Position.topOther;
            }
            case 2881: 
            case 2882: 
            case 2883: {
                return IndicFormatter.Position.bottom;
            }
            case 2878: 
            case 2880: 
            case 2903: {
                return IndicFormatter.Position.rightMatra;
            }
            case 2879: 
            case 2902: {
                return IndicFormatter.Position.topMatra;
            }
            case 2818: 
            case 2819: {
                return IndicFormatter.Position.rightOther;
            }
        }
        return IndicFormatter.Position.any;
    }

    protected IndicFormatter.Shape rephLike(int usv) {
        if (usv == 2864) {
            return IndicFormatter.Shape.rephCons;
        }
        return IndicFormatter.Shape.any;
    }

    protected boolean subjoins(int usv) {
        return usv == 2851 || usv == 2852 || usv == 2856 || usv == 2860 || usv == 2861 || usv == 2862 || usv == 2864 || usv == 2866 || usv == 2867 || usv == 2869;
    }

    protected boolean postjoins(int usv) {
        return usv == 2863 || usv == 2911;
    }

    protected boolean postjoinsIndependentVowels(int usv) {
        return false;
    }
}