CosineDistanceComputer.java 997 Bytes
/*
 * Decompiled with CFR 0_118.
 */
package com.adobe.internal.pdftoolkit.pdf.content.processor;

import com.adobe.internal.pdftoolkit.pdf.content.processor.DistanceComputer;
import com.adobe.internal.pdftoolkit.pdf.content.processor.FontWidthStore;
import java.util.Set;

class CosineDistanceComputer
implements DistanceComputer {
    CosineDistanceComputer() {
    }

    public double getDistance(FontWidthStore baseFont, FontWidthStore reference) {
        double distance = 0.0;
        double d1 = 0.0;
        double d2 = 0.0;
        for (Integer unicode : baseFont.getUnicodes()) {
            double baseWidth = baseFont.getWidth(unicode) / 1000.0;
            double refWidth = reference.getWidth(unicode) / 1000.0;
            if (baseWidth == -1.0 || refWidth == -1.0) continue;
            distance += baseWidth * refWidth;
            d1 += baseWidth * baseWidth;
            d2 += refWidth * refWidth;
        }
        return distance / (Math.sqrt(d1) * Math.sqrt(d2));
    }
}