What Is fop.jar in fop-2.7-bin.zip

What Is fop.jar? I got it from the fop-2.7-bin.zip.

✍: FYIcenter.com

fop.jar in fop-2.7-bin.zip is the JAR file for FOP 2.7, which is a print formatter driven by XSL formatting objects (XSL-FO). You can obtain fop.jar from the build folder of the fop-2.7-bin.zip file.

Below is the information about the fop.jar (2.2) file:

JAR File Size and Download Location:

JAR name: fop.jar, fop-2.7.jar
Target JDK version: 1.7
File name: fop.jar
File size: 4442817 bytes
Release date: 20-Jan-2022
Download: Apache FOP Website

Java source code files for fop.jar:


 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *      http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * See the License for the specific language governing permissions and
 * limitations under the License.

/* $Id$ */

package org.apache.fop.complexscripts.scripts;

import java.util.List;

import org.apache.fop.complexscripts.fonts.GlyphDefinitionTable;
import org.apache.fop.complexscripts.fonts.GlyphTable;
import org.apache.fop.complexscripts.util.CharAssociation;
import org.apache.fop.complexscripts.util.GlyphContextTester;
import org.apache.fop.complexscripts.util.GlyphSequence;
import org.apache.fop.complexscripts.util.ScriptContextTester;
import org.apache.fop.fonts.MultiByteFont;

 * <p>The <code>KhmerScriptProcessor</code> class implements a script processor for
 * performing glyph substitution and positioning operations on content associated with the Khmer script.</p>
public class KhmerScriptProcessor extends IndicScriptProcessor {
    private GlyphSequence unprocessedGS;
    private List associations;
    private int[] chars;

    KhmerScriptProcessor(String script) {

    protected Class<? extends IndicScriptProcessor.DefaultSyllabizer> getSyllabizerClass() {
        return KhmerSyllabizer.class;

    private static class KhmerSyllabizer extends DefaultSyllabizer {
        KhmerSyllabizer(String script, String language) {
            super(script, language);

    public GlyphSequence reorderCombiningMarks(GlyphDefinitionTable gdef, GlyphSequence glyphSequence,
                                               int[] unscaledWidths, int[][] glyphPositionAdjustments, String script,
                                               String language) {
        return glyphSequence;

    public CharSequence preProcess(CharSequence charSequence, MultiByteFont font, List associations) {
        unprocessedGS = font.charSequenceToGlyphSequence(charSequence, associations);
        return new KhmerRenderer().render(charSequence.toString());

    public boolean position(GlyphSequence glyphSequence, String script, String language, int fontSize,
                            GlyphTable.UseSpec[] useSpecs, int[] widths, int[][] adjustments,
                            ScriptContextTester scriptContextTester) {
        return super.position(glyphSequence, script, language, fontSize, useSpecs, widths, adjustments,

    public GlyphSequence substitute(GlyphSequence glyphSequence, String script, String language,
                                    GlyphTable.UseSpec[] useSpecs, ScriptContextTester scriptContextTester) {
        glyphSequence = super.substitute(glyphSequence, script, language, useSpecs, scriptContextTester);
        associations = glyphSequence.getAssociations();
        chars = glyphSequence.getCharacters().array();
        return glyphSequence;

    private ScriptContextTester scriptContextTester = new ScriptContextTester() {
        private GlyphContextTester tester = new GlyphContextTester() {
            public boolean test(String script, String language, String feature, GlyphSequence glyphSequence, int index,
                                int flags) {
                CharAssociation charAssociation = (CharAssociation) associations.get(index);
                char vowelSignU = '\u17BB';
                for (int i = charAssociation.getStart(); i < charAssociation.getEnd(); i++) {
                    if (chars[i] == vowelSignU) {
                        return false;
                return true;
        public GlyphContextTester getTester(String feature) {
            return tester;

    public ScriptContextTester getPositioningContextTester() {
        return scriptContextTester;



Or download all of them as a single archive file:

File name: fop-2.7-src.zip
File size: 3401312 bytes
Release date: 2022-01-20


"fop" Command in fop-2.7-bin.zip

What Is fop-2.7-bin.zip

Download and Installing of FOP 2.x

⇑⇑ FAQ for FOP (Formatting Object Processor)

2016-07-07, 10444👍, 0💬