Resolves: rhbz#654200 revert icu#5431
This commit is contained in:
		
							parent
							
								
									b35314b5bd
								
							
						
					
					
						commit
						e000c20502
					
				
							
								
								
									
										129
									
								
								icu.8198.revert.icu5431.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								icu.8198.revert.icu5431.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,129 @@ | ||||
| Index: icu/trunk/source/layout/IndicReordering.cpp
 | ||||
| ===================================================================
 | ||||
| --- icu/trunk/source/layout/IndicReordering.cpp	(revision 25772)
 | ||||
| +++ icu/trunk/source/layout/IndicReordering.cpp	(revision 26090)
 | ||||
| @@ -126,4 +126,8 @@
 | ||||
|      FeatureMask fSMFeatures; | ||||
|   | ||||
| +    LEUnicode   fPreBaseConsonant;
 | ||||
| +    LEUnicode   fPreBaseVirama;
 | ||||
| +    le_int32    fPBCIndex;
 | ||||
| +    FeatureMask fPBCFeatures;
 | ||||
|   | ||||
|      void saveMatra(LEUnicode matra, le_int32 matraIndex, IndicClassTable::CharClass matraClass) | ||||
| @@ -172,5 +176,6 @@
 | ||||
|            fMatraFeatures(0), fMPreOutIndex(-1), fMPreFixups(mpreFixups), | ||||
|            fVMabove(0), fVMpost(0), fVMIndex(0), fVMFeatures(0), | ||||
| -          fSMabove(0), fSMbelow(0), fSMIndex(0), fSMFeatures(0)
 | ||||
| +          fSMabove(0), fSMbelow(0), fSMIndex(0), fSMFeatures(0),
 | ||||
| +          fPreBaseConsonant(0), fPreBaseVirama(0), fPBCIndex(0), fPBCFeatures(0)
 | ||||
|      { | ||||
|          // nothing else to do... | ||||
| @@ -191,4 +196,6 @@
 | ||||
|          fVMabove = fVMpost  = 0; | ||||
|          fSMabove = fSMbelow = 0; | ||||
| +
 | ||||
| +        fPreBaseConsonant = fPreBaseVirama = 0;
 | ||||
|      } | ||||
|   | ||||
| @@ -386,4 +393,12 @@
 | ||||
|      } | ||||
|   | ||||
| +    void notePreBaseConsonant(le_uint32 index,LEUnicode PBConsonant, LEUnicode PBVirama, FeatureMask features)
 | ||||
| +    {
 | ||||
| +        fPBCIndex = index;
 | ||||
| +        fPreBaseConsonant = PBConsonant;
 | ||||
| +        fPreBaseVirama = PBVirama;
 | ||||
| +        fPBCFeatures = features;
 | ||||
| +    }
 | ||||
| +
 | ||||
|      void noteBaseConsonant() | ||||
|      { | ||||
| @@ -465,4 +480,20 @@
 | ||||
|      } | ||||
|       | ||||
| +    void writePreBaseConsonant()
 | ||||
| +    {
 | ||||
| +        // The TDIL spec says that consonant + virama + RRA should produce a rakar in Malayalam.  However,
 | ||||
| +        // it seems that almost none of the fonts for Malayalam are set up to handle this.
 | ||||
| +        // So, we're going to force the issue here by using the rakar as defined with RA in most fonts.
 | ||||
| +
 | ||||
| +        if (fPreBaseConsonant == 0x0d31) { // RRA
 | ||||
| +            fPreBaseConsonant = 0x0d30; // RA
 | ||||
| +        }
 | ||||
| +        
 | ||||
| +        if (fPreBaseConsonant != 0) {
 | ||||
| +            writeChar(fPreBaseConsonant, fPBCIndex, fPBCFeatures);
 | ||||
| +            writeChar(fPreBaseVirama,fPBCIndex-1,fPBCFeatures);
 | ||||
| +        }
 | ||||
| +    }
 | ||||
| +
 | ||||
|      le_int32 getOutputIndex() | ||||
|      { | ||||
| @@ -723,4 +754,5 @@
 | ||||
|              } | ||||
|   | ||||
| +            
 | ||||
|              IndicClassTable::CharClass charClass = CC_RESERVED; | ||||
|              IndicClassTable::CharClass nextClass = CC_RESERVED; | ||||
| @@ -730,7 +762,9 @@
 | ||||
|              le_bool  seenVattu = FALSE; | ||||
|              le_bool  seenBelowBaseForm = FALSE; | ||||
| +            le_bool  seenPreBaseForm = FALSE;
 | ||||
|              le_bool  hasNukta = FALSE; | ||||
|              le_bool  hasBelowBaseForm = FALSE; | ||||
|              le_bool  hasPostBaseForm = FALSE; | ||||
| +            le_bool  hasPreBaseForm = FALSE;
 | ||||
|   | ||||
|              if (postBase < markStart && classTable->isNukta(chars[postBase])) { | ||||
| @@ -746,12 +780,20 @@
 | ||||
|                  hasBelowBaseForm = IndicClassTable::hasBelowBaseForm(charClass) && !hasNukta; | ||||
|                  hasPostBaseForm  = IndicClassTable::hasPostBaseForm(charClass)  && !hasNukta; | ||||
| +                hasPreBaseForm = IndicClassTable::hasPreBaseForm(charClass) && !hasNukta;
 | ||||
|   | ||||
|                  if (IndicClassTable::isConsonant(charClass)) { | ||||
|                      if (postBaseLimit == 0 || seenVattu || | ||||
|                          (baseConsonant > baseLimit && !classTable->isVirama(chars[baseConsonant - 1])) || | ||||
| -                        !(hasBelowBaseForm || hasPostBaseForm)) {
 | ||||
| +                        !(hasBelowBaseForm || hasPostBaseForm || hasPreBaseForm)) {
 | ||||
|                          break; | ||||
|                      } | ||||
|   | ||||
| +                    // Note any pre-base consonants
 | ||||
| +                    if ( baseConsonant == lastConsonant && lastConsonant > 0 && 
 | ||||
| +                         hasPreBaseForm && classTable->isVirama(chars[baseConsonant - 1])) {
 | ||||
| +                        output.notePreBaseConsonant(lastConsonant,chars[lastConsonant],chars[lastConsonant-1],tagArray2);
 | ||||
| +                        seenPreBaseForm = TRUE;
 | ||||
| +   
 | ||||
| +                    }
 | ||||
|                      // consonants with nuktas are never vattus | ||||
|                      seenVattu = IndicClassTable::isVattu(charClass) && !hasNukta; | ||||
| @@ -786,10 +828,12 @@
 | ||||
|   | ||||
|              // write any pre-base consonants | ||||
| +            output.writePreBaseConsonant();
 | ||||
| +
 | ||||
|              le_bool supressVattu = TRUE; | ||||
|   | ||||
|              for (i = baseLimit; i < baseConsonant; i += 1) { | ||||
|                  LEUnicode ch = chars[i]; | ||||
| -                // Don't put 'blwf' on first consonant.
 | ||||
| -                FeatureMask features = (i == baseLimit? tagArray2 : tagArray1);
 | ||||
| +                // Don't put 'pstf' or 'blwf' on anything before the base consonant.
 | ||||
| +                FeatureMask features = tagArray1 & ~( pstfFeatureMask | blwfFeatureMask );
 | ||||
|   | ||||
|                  charClass = classTable->getCharClass(ch); | ||||
| @@ -842,5 +886,5 @@
 | ||||
|   | ||||
|              // write below-base consonants | ||||
| -            if (baseConsonant != lastConsonant) {
 | ||||
| +            if (baseConsonant != lastConsonant && !seenPreBaseForm) {
 | ||||
|                  for (i = bcSpan + 1; i < postBase; i += 1) { | ||||
|                      output.writeChar(chars[i], i, tagArray1); | ||||
| @@ -872,5 +916,5 @@
 | ||||
|              // write post-base consonants | ||||
|              // FIXME: does this put the right tags on post-base consonants? | ||||
| -            if (baseConsonant != lastConsonant) {
 | ||||
| +            if (baseConsonant != lastConsonant && !seenPreBaseForm) {
 | ||||
|                  if (postBase <= lastConsonant) { | ||||
|                      for (i = postBase; i <= lastConsonant; i += 1) { | ||||
							
								
								
									
										19
									
								
								icu.spec
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								icu.spec
									
									
									
									
									
								
							| @ -1,6 +1,6 @@ | ||||
| Name:      icu | ||||
| Version:   4.4.2 | ||||
| Release:   1%{?dist} | ||||
| Release:   2%{?dist} | ||||
| Summary:   International Components for Unicode | ||||
| Group:     Development/Tools | ||||
| License:   MIT and UCD and Public Domain | ||||
| @ -11,12 +11,13 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) | ||||
| BuildRequires: doxygen, autoconf | ||||
| Requires: lib%{name} = %{version}-%{release} | ||||
| 
 | ||||
| Patch1:  icu-3.4-multiarchdevel.patch | ||||
| Patch2:  icu.6995.kannada.patch | ||||
| Patch3:  icu.7971.buildfix.patch | ||||
| Patch4:  icu.7972.buildfix.patch | ||||
| Patch5:  icu.7932.doublecompare.patch | ||||
| Patch6:  icu.8011.buildfix.patch | ||||
| Patch1: icu-3.4-multiarchdevel.patch | ||||
| Patch2: icu.6995.kannada.patch | ||||
| Patch3: icu.7971.buildfix.patch | ||||
| Patch4: icu.7972.buildfix.patch | ||||
| Patch5: icu.7932.doublecompare.patch | ||||
| Patch6: icu.8011.buildfix.patch | ||||
| Patch7: icu.8198.revert.icu5431.patch | ||||
| 
 | ||||
| %description | ||||
| Tools and utilities for developing with icu. | ||||
| @ -62,6 +63,7 @@ BuildArch: noarch | ||||
| %patch4 -p1 -b .icu7972.buildfix.patch | ||||
| %patch5 -p1 -b .icu7932.doublecompare.patch | ||||
| %patch6 -p1 -b .icu8011.buildfix.patch | ||||
| %patch7 -p2 -R -b .icu8198.revert.icu5431.patch | ||||
| 
 | ||||
| %build | ||||
| cd source | ||||
| @ -143,6 +145,9 @@ rm -rf $RPM_BUILD_ROOT | ||||
| %doc source/__docs/%{name}/html/* | ||||
| 
 | ||||
| %changelog | ||||
| * Thu Nov 25 2010 Caolán McNamara <caolanm@redhat.com> - 4.4.2-2 | ||||
| - Resolves: rhbz#654200 revert icu#5431 | ||||
| 
 | ||||
| * Mon Oct 04 2010 Caolán McNamara <caolanm@redhat.com> - 4.4.2-1 | ||||
| - latest version | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user