Class ArabicLigaturizer

java.lang.Object
com.itextpdf.text.pdf.languages.ArabicLigaturizer
All Implemented Interfaces:
LanguageProcessor

public class ArabicLigaturizer extends Object implements LanguageProcessor
Shape arabic characters. This code was inspired by an LGPL'ed C library: Pango ( see http://www.pango.com/ ). Note that the code of this class is the original work of Paulo Soares.
  • Field Details

    • maptable

      private static final HashMap<Character,char[]> maptable
    • reverseLigatureMapTable

      private static final HashMap<Character,Character> reverseLigatureMapTable
      Some fonts do not implement ligaturized variations on Arabic characters e.g. Simplified Arabic has got code point 0xFEED but not 0xFEEE
    • ALEF

      private static final char ALEF
      See Also:
    • ALEFHAMZA

      private static final char ALEFHAMZA
      See Also:
    • ALEFHAMZABELOW

      private static final char ALEFHAMZABELOW
      See Also:
    • ALEFMADDA

      private static final char ALEFMADDA
      See Also:
    • LAM

      private static final char LAM
      See Also:
    • HAMZA

      private static final char HAMZA
      See Also:
    • TATWEEL

      private static final char TATWEEL
      See Also:
    • ZWJ

      private static final char ZWJ
      See Also:
    • HAMZAABOVE

      private static final char HAMZAABOVE
      See Also:
    • HAMZABELOW

      private static final char HAMZABELOW
      See Also:
    • WAWHAMZA

      private static final char WAWHAMZA
      See Also:
    • YEHHAMZA

      private static final char YEHHAMZA
      See Also:
    • WAW

      private static final char WAW
      See Also:
    • ALEFMAKSURA

      private static final char ALEFMAKSURA
      See Also:
    • YEH

      private static final char YEH
      See Also:
    • FARSIYEH

      private static final char FARSIYEH
      See Also:
    • SHADDA

      private static final char SHADDA
      See Also:
    • KASRA

      private static final char KASRA
      See Also:
    • FATHA

      private static final char FATHA
      See Also:
    • DAMMA

      private static final char DAMMA
      See Also:
    • MADDA

      private static final char MADDA
      See Also:
    • LAM_ALEF

      private static final char LAM_ALEF
      See Also:
    • LAM_ALEFHAMZA

      private static final char LAM_ALEFHAMZA
      See Also:
    • LAM_ALEFHAMZABELOW

      private static final char LAM_ALEFHAMZABELOW
      See Also:
    • LAM_ALEFMADDA

      private static final char LAM_ALEFMADDA
      See Also:
    • chartable

      private static final char[][] chartable
    • ar_nothing

      public static final int ar_nothing
      See Also:
    • ar_novowel

      public static final int ar_novowel
      See Also:
    • ar_composedtashkeel

      public static final int ar_composedtashkeel
      See Also:
    • ar_lig

      public static final int ar_lig
      See Also:
    • DIGITS_EN2AN

      public static final int DIGITS_EN2AN
      Digit shaping option: Replace European digits (U+0030...U+0039) by Arabic-Indic digits.
      See Also:
    • DIGITS_AN2EN

      public static final int DIGITS_AN2EN
      Digit shaping option: Replace Arabic-Indic digits by European digits (U+0030...U+0039).
      See Also:
    • DIGITS_EN2AN_INIT_LR

      public static final int DIGITS_EN2AN_INIT_LR
      Digit shaping option: Replace European digits (U+0030...U+0039) by Arabic-Indic digits if the most recent strongly directional character is an Arabic letter (its Bidi direction value is RIGHT_TO_LEFT_ARABIC). The initial state at the start of the text is assumed to be not an Arabic, letter, so European digits at the start of the text will not change. Compare to DIGITS_ALEN2AN_INIT_AL.
      See Also:
    • DIGITS_EN2AN_INIT_AL

      public static final int DIGITS_EN2AN_INIT_AL
      Digit shaping option: Replace European digits (U+0030...U+0039) by Arabic-Indic digits if the most recent strongly directional character is an Arabic letter (its Bidi direction value is RIGHT_TO_LEFT_ARABIC). The initial state at the start of the text is assumed to be an Arabic, letter, so European digits at the start of the text will change. Compare to DIGITS_ALEN2AN_INT_LR.
      See Also:
    • DIGITS_RESERVED

      private static final int DIGITS_RESERVED
      Not a valid option value.
      See Also:
    • DIGITS_MASK

      public static final int DIGITS_MASK
      Bit mask for digit shaping options.
      See Also:
    • DIGIT_TYPE_AN

      public static final int DIGIT_TYPE_AN
      Digit type option: Use Arabic-Indic digits (U+0660...U+0669).
      See Also:
    • DIGIT_TYPE_AN_EXTENDED

      public static final int DIGIT_TYPE_AN_EXTENDED
      Digit type option: Use Eastern (Extended) Arabic-Indic digits (U+06f0...U+06f9).
      See Also:
    • DIGIT_TYPE_MASK

      public static final int DIGIT_TYPE_MASK
      Bit mask for digit type options.
      See Also:
    • options

      protected int options
    • runDirection

      protected int runDirection
  • Constructor Details

    • ArabicLigaturizer

      public ArabicLigaturizer()
    • ArabicLigaturizer

      public ArabicLigaturizer(int runDirection, int options)
  • Method Details

    • isVowel

      static boolean isVowel(char s)
    • charshape

      static char charshape(char s, int which)
    • shapecount

      static int shapecount(char s)
    • ligature

      static int ligature(char newchar, ArabicLigaturizer.charstruct oldchar)
    • copycstostring

      static void copycstostring(StringBuffer string, ArabicLigaturizer.charstruct s, int level)
    • doublelig

      static void doublelig(StringBuffer string, int level)
    • connects_to_left

      static boolean connects_to_left(ArabicLigaturizer.charstruct a)
    • shape

      static void shape(char[] text, StringBuffer string, int level)
    • arabic_shape

      public static int arabic_shape(char[] src, int srcoffset, int srclength, char[] dest, int destoffset, int destlength, int level)
    • processNumbers

      public static void processNumbers(char[] text, int offset, int length, int options)
    • shapeToArabicDigitsWithContext

      static void shapeToArabicDigitsWithContext(char[] dest, int start, int length, char digitBase, boolean lastStrongWasAL)
    • getReverseMapping

      public static Character getReverseMapping(char c)
    • process

      public String process(String s)
      Description copied from interface: LanguageProcessor
      Processes a String
      Specified by:
      process in interface LanguageProcessor
      Parameters:
      s - the original String
      Returns:
      the processed String
    • isRTL

      public boolean isRTL()
      Arabic is written from right to left.
      Specified by:
      isRTL in interface LanguageProcessor
      Returns:
      true
      See Also: