diff --git a/gfx/thebes/Makefile.in b/gfx/thebes/Makefile.in index ce41ee516e6e..8f431b37ce28 100644 --- a/gfx/thebes/Makefile.in +++ b/gfx/thebes/Makefile.in @@ -75,8 +75,6 @@ EXPORTS = \ gfxSkipChars.h \ gfxTeeSurface.h \ gfxTypes.h \ - gfxUnicodeProperties.h \ - gfxUnicodeScriptCodes.h \ gfxUtils.h \ gfxUserFontSet.h \ nsCoreAnimationSupport.h \ @@ -204,7 +202,6 @@ CPPSRCS = \ gfxTeeSurface.cpp \ gfxUserFontSet.cpp \ gfxUtils.cpp \ - gfxUnicodeProperties.cpp \ gfxScriptItemizer.cpp \ gfxHarfBuzzShaper.cpp \ gfxSharedImageSurface.cpp \ diff --git a/gfx/thebes/gfxFT2Fonts.cpp b/gfx/thebes/gfxFT2Fonts.cpp index d3ebd6bcb0b0..a243e3aa8e96 100644 --- a/gfx/thebes/gfxFT2Fonts.cpp +++ b/gfx/thebes/gfxFT2Fonts.cpp @@ -59,7 +59,6 @@ #ifdef MOZ_GRAPHITE #include "gfxGraphiteShaper.h" #endif -#include "gfxUnicodeProperties.h" #include "gfxAtoms.h" #include "nsTArray.h" #include "nsUnicodeRange.h" diff --git a/gfx/thebes/gfxFont.cpp b/gfx/thebes/gfxFont.cpp index fd024cca6bf9..7870aa67cac2 100644 --- a/gfx/thebes/gfxFont.cpp +++ b/gfx/thebes/gfxFont.cpp @@ -62,7 +62,7 @@ #include "gfxUserFontSet.h" #include "gfxPlatformFontList.h" #include "gfxScriptItemizer.h" -#include "gfxUnicodeProperties.h" +#include "nsUnicodeProperties.h" #include "nsMathUtils.h" #include "nsBidiUtils.h" #include "nsUnicodeRange.h" @@ -83,6 +83,7 @@ using namespace mozilla; using namespace mozilla::gfx; +using namespace mozilla::unicode; using mozilla::services::GetObserverService; gfxFontCache *gfxFontCache::gGlobalCache = nsnull; @@ -723,7 +724,7 @@ gfxFontFamily::FindFontForChar(FontSearch *aMatchData) if (NS_UNLIKELY(log)) { PRUint32 charRange = gfxFontUtils::CharRangeBit(aMatchData->mCh); PRUint32 unicodeRange = FindCharUnicodeRange(aMatchData->mCh); - PRUint32 script = gfxUnicodeProperties::GetScriptCode(aMatchData->mCh); + PRUint32 script = GetScriptCode(aMatchData->mCh); PR_LOG(log, PR_LOG_DEBUG,\ ("(textrun-systemfallback-fonts) char: u+%6.6x " "char-range: %d unicode-range: %d script: %d match: [%s]\n", @@ -1878,7 +1879,7 @@ gfxFont::Measure(gfxTextRun *aTextRun, static bool IsClusterExtender(PRUint32 aUSV) { - PRUint8 category = gfxUnicodeProperties::GetGeneralCategory(aUSV); + PRUint8 category = GetGeneralCategory(aUSV); return ((category >= HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK && category <= HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) || (aUSV >= 0x200c && aUSV <= 0x200d) || // ZWJ, ZWNJ @@ -3332,7 +3333,7 @@ gfxFontGroup::FindFontForChar(PRUint32 aCh, PRUint32 aPrevCh, // Don't switch fonts for control characters, regardless of // whether they are present in the current font, as they won't // actually be rendered (see bug 716229) - PRUint8 category = gfxUnicodeProperties::GetGeneralCategory(aCh); + PRUint8 category = GetGeneralCategory(aCh); if (category == HB_UNICODE_GENERAL_CATEGORY_CONTROL) { selectedFont = aPrevMatchedFont; return selectedFont.forget(); @@ -3406,7 +3407,7 @@ gfxFontGroup::FindFontForChar(PRUint32 aCh, PRUint32 aPrevCh, // for known "space" characters, don't do a full system-fallback search; // we'll synthesize appropriate-width spaces instead of missing-glyph boxes - if (gfxUnicodeProperties::GetGeneralCategory(aCh) == + if (GetGeneralCategory(aCh) == HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR && GetFontAt(0)->SynthesizeSpaceWidth(aCh) >= 0.0) { @@ -3796,7 +3797,7 @@ gfxShapedWord::SetupClusterBoundaries(CompressedGlyph *aGlyphs, gfxTextRun::CompressedGlyph extendCluster; extendCluster.SetComplex(false, true, 0); - gfxUnicodeProperties::HSType hangulState = gfxUnicodeProperties::HST_NONE; + HSType hangulState = HST_NONE; for (PRUint32 i = 0; i < aLength; ++i) { bool surrogatePair = false; @@ -3808,8 +3809,8 @@ gfxShapedWord::SetupClusterBoundaries(CompressedGlyph *aGlyphs, surrogatePair = true; } - PRUint8 category = gfxUnicodeProperties::GetGeneralCategory(ch); - gfxUnicodeProperties::HSType hangulType = gfxUnicodeProperties::HST_NONE; + PRUint8 category = GetGeneralCategory(ch); + HSType hangulType = HST_NONE; // combining marks extend the cluster if (IsClusterExtender(ch)) { @@ -3850,25 +3851,25 @@ gfxShapedWord::SetupClusterBoundaries(CompressedGlyph *aGlyphs, (ch >= 0xac00 && ch <= 0xd7ff)) { // no break within Hangul syllables - hangulType = gfxUnicodeProperties::GetHangulSyllableType(ch); + hangulType = GetHangulSyllableType(ch); switch (hangulType) { - case gfxUnicodeProperties::HST_L: - case gfxUnicodeProperties::HST_LV: - case gfxUnicodeProperties::HST_LVT: - if (hangulState == gfxUnicodeProperties::HST_L) { + case HST_L: + case HST_LV: + case HST_LVT: + if (hangulState == HST_L) { aGlyphs[i] = extendCluster; } break; - case gfxUnicodeProperties::HST_V: - if ( (hangulState != gfxUnicodeProperties::HST_NONE) && - !(hangulState & gfxUnicodeProperties::HST_T)) + case HST_V: + if ( (hangulState != HST_NONE) && + !(hangulState & HST_T)) { aGlyphs[i] = extendCluster; } break; - case gfxUnicodeProperties::HST_T: - if (hangulState & (gfxUnicodeProperties::HST_V | - gfxUnicodeProperties::HST_T)) + case HST_T: + if (hangulState & (HST_V | + HST_T)) { aGlyphs[i] = extendCluster; } @@ -5021,7 +5022,7 @@ gfxTextRun::SetGlyphs(PRUint32 aIndex, CompressedGlyph aGlyph, void gfxTextRun::SetMissingGlyph(PRUint32 aIndex, PRUint32 aChar) { - PRUint8 category = gfxUnicodeProperties::GetGeneralCategory(aChar); + PRUint8 category = GetGeneralCategory(aChar); if (category >= HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK && category <= HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) { diff --git a/gfx/thebes/gfxGDIFont.cpp b/gfx/thebes/gfxGDIFont.cpp index 7dc33776cdf6..4dd10b993fbb 100644 --- a/gfx/thebes/gfxGDIFont.cpp +++ b/gfx/thebes/gfxGDIFont.cpp @@ -48,7 +48,6 @@ #endif #include "gfxWindowsPlatform.h" #include "gfxContext.h" -#include "gfxUnicodeProperties.h" #include "cairo-win32.h" diff --git a/gfx/thebes/gfxGraphiteShaper.cpp b/gfx/thebes/gfxGraphiteShaper.cpp index 0ae5949c0c6c..a97fc54ccfba 100644 --- a/gfx/thebes/gfxGraphiteShaper.cpp +++ b/gfx/thebes/gfxGraphiteShaper.cpp @@ -48,7 +48,6 @@ #include "gfxPlatform.h" #include "gfxGraphiteShaper.h" #include "gfxFontUtils.h" -#include "gfxUnicodeProperties.h" #include "graphite2/Font.h" #include "graphite2/Segment.h" diff --git a/gfx/thebes/gfxHarfBuzzShaper.cpp b/gfx/thebes/gfxHarfBuzzShaper.cpp index 19ac29e454fc..6415af33b7e1 100644 --- a/gfx/thebes/gfxHarfBuzzShaper.cpp +++ b/gfx/thebes/gfxHarfBuzzShaper.cpp @@ -49,7 +49,8 @@ #include "gfxPlatform.h" #include "gfxHarfBuzzShaper.h" #include "gfxFontUtils.h" -#include "gfxUnicodeProperties.h" +#include "nsUnicodeProperties.h" +#include "nsUnicodeScriptCodes.h" #include "nsUnicodeNormalizer.h" #include "harfbuzz/hb-unicode.h" @@ -72,6 +73,7 @@ : -((32767 - (f)) >> 16)) using namespace mozilla; // for AutoSwap_* types +using namespace mozilla::unicode; // for Unicode property lookup /* * Creation and destruction; on deletion, release any font tables we're holding @@ -672,32 +674,32 @@ HBGetHKerning(hb_font_t *font, void *font_data, static hb_codepoint_t HBGetMirroring(hb_unicode_funcs_t *ufuncs, hb_codepoint_t aCh, void *user_data) { - return gfxUnicodeProperties::GetMirroredChar(aCh); + return GetMirroredChar(aCh); } static hb_unicode_general_category_t HBGetGeneralCategory(hb_unicode_funcs_t *ufuncs, hb_codepoint_t aCh, void *user_data) { - return hb_unicode_general_category_t(gfxUnicodeProperties::GetGeneralCategory(aCh)); + return hb_unicode_general_category_t(GetGeneralCategory(aCh)); } static hb_script_t HBGetScript(hb_unicode_funcs_t *ufuncs, hb_codepoint_t aCh, void *user_data) { - return hb_script_t(gfxUnicodeProperties::GetScriptTagForCode - (gfxUnicodeProperties::GetScriptCode(aCh))); + return hb_script_t(GetScriptTagForCode + (GetScriptCode(aCh))); } static unsigned int HBGetCombiningClass(hb_unicode_funcs_t *ufuncs, hb_codepoint_t aCh, void *user_data) { - return gfxUnicodeProperties::GetCombiningClass(aCh); + return GetCombiningClass(aCh); } static unsigned int HBGetEastAsianWidth(hb_unicode_funcs_t *ufuncs, hb_codepoint_t aCh, void *user_data) { - return gfxUnicodeProperties::GetEastAsianWidth(aCh); + return GetEastAsianWidth(aCh); } // Hebrew presentation forms with dagesh, for characters 0x05D0..0x05EA; @@ -1005,7 +1007,7 @@ gfxHarfBuzzShaper::ShapeWord(gfxContext *aContext, PRInt32 scriptCode = aShapedWord->Script(); hb_script_t scriptTag = (scriptCode <= MOZ_SCRIPT_INHERITED) ? HB_SCRIPT_LATIN : - hb_script_t(gfxUnicodeProperties::GetScriptTagForCode(scriptCode)); + hb_script_t(GetScriptTagForCode(scriptCode)); hb_buffer_set_script(buffer, scriptTag); hb_language_t language; diff --git a/gfx/thebes/gfxMacFont.cpp b/gfx/thebes/gfxMacFont.cpp index d9eb8bcce946..03395ad16ca7 100644 --- a/gfx/thebes/gfxMacFont.cpp +++ b/gfx/thebes/gfxMacFont.cpp @@ -46,7 +46,6 @@ #endif #include "gfxPlatformMac.h" #include "gfxContext.h" -#include "gfxUnicodeProperties.h" #include "gfxFontUtils.h" #include "cairo-quartz.h" diff --git a/gfx/thebes/gfxPangoFonts.cpp b/gfx/thebes/gfxPangoFonts.cpp index d4c2307d0307..0e322afbbf06 100644 --- a/gfx/thebes/gfxPangoFonts.cpp +++ b/gfx/thebes/gfxPangoFonts.cpp @@ -69,7 +69,8 @@ #ifdef MOZ_GRAPHITE #include "gfxGraphiteShaper.h" #endif -#include "gfxUnicodeProperties.h" +#include "nsUnicodeProperties.h" +#include "nsUnicodeScriptCodes.h" #include "gfxFontconfigUtils.h" #include "gfxUserFontSet.h" #include "gfxAtoms.h" @@ -90,6 +91,7 @@ #include using namespace mozilla; +using namespace mozilla::unicode; #define FLOAT_PANGO_SCALE ((gfxFloat)PANGO_SCALE) @@ -329,7 +331,7 @@ gfxFcFontEntry::ShouldUseHarfBuzz(PRInt32 aRunScript) { // Mimicing gfxHarfBuzzShaper::ShapeWord hb_script_t script = (aRunScript <= MOZ_SCRIPT_INHERITED) ? HB_SCRIPT_LATIN : - hb_script_t(gfxUnicodeProperties::GetScriptTagForCode(aRunScript)); + hb_script_t(GetScriptTagForCode(aRunScript)); // Prefer HarfBuzz if the font also has support for OpenType shaping of // this script. @@ -2053,7 +2055,7 @@ gfxPangoFontGroup::FindFontForChar(PRUint32 aCh, PRUint32 aPrevCh, // Don't switch fonts for control characters, regardless of // whether they are present in the current font, as they won't // actually be rendered (see bug 716229) - PRUint8 category = gfxUnicodeProperties::GetGeneralCategory(aCh); + PRUint8 category = GetGeneralCategory(aCh); if (category == HB_UNICODE_GENERAL_CATEGORY_CONTROL) { return nsRefPtr(aPrevMatchedFont).forget(); } diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp index b87d239b8aa2..d1a90d1c9c45 100644 --- a/gfx/thebes/gfxPlatform.cpp +++ b/gfx/thebes/gfxPlatform.cpp @@ -62,7 +62,7 @@ #include "gfxContext.h" #include "gfxImageSurface.h" #include "gfxUserFontSet.h" -#include "gfxUnicodeProperties.h" +#include "nsUnicodeProperties.h" #include "harfbuzz/hb-unicode.h" #ifdef MOZ_GRAPHITE #include "gfxGraphiteShaper.h" @@ -149,7 +149,7 @@ SRGBOverrideObserver::Observe(nsISupports *aSubject, #define GFX_DOWNLOADABLE_FONTS_SANITIZE "gfx.downloadable_fonts.sanitize" #define GFX_PREF_HARFBUZZ_SCRIPTS "gfx.font_rendering.harfbuzz.scripts" -#define HARFBUZZ_SCRIPTS_DEFAULT gfxUnicodeProperties::SHAPING_DEFAULT +#define HARFBUZZ_SCRIPTS_DEFAULT mozilla::unicode::SHAPING_DEFAULT #ifdef MOZ_GRAPHITE #define GFX_PREF_GRAPHITE_SHAPING "gfx.font_rendering.graphite.enabled" @@ -697,7 +697,7 @@ gfxPlatform::UseHarfBuzzForScript(PRInt32 aScriptCode) mUseHarfBuzzScripts = Preferences::GetInt(GFX_PREF_HARFBUZZ_SCRIPTS, HARFBUZZ_SCRIPTS_DEFAULT); } - PRInt32 shapingType = gfxUnicodeProperties::ScriptShapingType(aScriptCode); + PRInt32 shapingType = mozilla::unicode::ScriptShapingType(aScriptCode); return (mUseHarfBuzzScripts & shapingType) != 0; } diff --git a/gfx/thebes/gfxPlatformFontList.cpp b/gfx/thebes/gfxPlatformFontList.cpp index 85e9b2d8ddc2..a463210537d4 100644 --- a/gfx/thebes/gfxPlatformFontList.cpp +++ b/gfx/thebes/gfxPlatformFontList.cpp @@ -73,7 +73,7 @@ #include "nsUnicharUtils.h" #include "nsUnicodeRange.h" -#include "gfxUnicodeProperties.h" +#include "nsUnicodeProperties.h" #include "mozilla/Preferences.h" #include "mozilla/Telemetry.h" @@ -422,7 +422,7 @@ gfxPlatformFontList::FindFontForChar(const PRUint32 aCh, gfxFont *aPrevFont) if (NS_UNLIKELY(log)) { PRUint32 charRange = gfxFontUtils::CharRangeBit(aCh); PRUint32 unicodeRange = FindCharUnicodeRange(aCh); - PRInt32 script = gfxUnicodeProperties::GetScriptCode(aCh); + PRInt32 script = mozilla::unicode::GetScriptCode(aCh); PR_LOG(log, PR_LOG_DEBUG,\ ("(textrun-systemfallback) char: u+%6.6x " "char-range: %d unicode-range: %d script: %d match: [%s]" diff --git a/gfx/thebes/gfxScriptItemizer.cpp b/gfx/thebes/gfxScriptItemizer.cpp index f576e125fe4e..a4d56e57838a 100644 --- a/gfx/thebes/gfxScriptItemizer.cpp +++ b/gfx/thebes/gfxScriptItemizer.cpp @@ -78,8 +78,8 @@ */ #include "gfxScriptItemizer.h" -#include "gfxUnicodeProperties.h" #include "gfxFontUtils.h" // for the FindHighestBit function +#include "nsUnicodeProperties.h" #include "nsCharTraits.h" @@ -281,7 +281,7 @@ gfxScriptItemizer::Next(PRUint32& aRunStart, PRUint32& aRunLimit, } } - sc = gfxUnicodeProperties::GetScriptCode(ch); + sc = mozilla::unicode::GetScriptCode(ch); pairIndex = getPairIndex(ch); diff --git a/gfx/thebes/gfxScriptItemizer.h b/gfx/thebes/gfxScriptItemizer.h index 1f0caaadca59..6ce5460060c5 100644 --- a/gfx/thebes/gfxScriptItemizer.h +++ b/gfx/thebes/gfxScriptItemizer.h @@ -83,7 +83,7 @@ #include "mozilla/StdInt.h" #include "prtypes.h" #include "harfbuzz/hb.h" -#include "gfxUnicodeScriptCodes.h" +#include "nsUnicodeScriptCodes.h" #define PAREN_STACK_DEPTH 32 diff --git a/intl/unicharutil/public/Makefile.in b/intl/unicharutil/public/Makefile.in index 6ebd062b3952..5fc93d37018b 100644 --- a/intl/unicharutil/public/Makefile.in +++ b/intl/unicharutil/public/Makefile.in @@ -49,6 +49,8 @@ EXPORTS = \ nsIUGenCategory.h \ nsUnicharUtilCIID.h \ nsUnicodeNormalizer.h \ + nsUnicodeProperties.h \ + nsUnicodeScriptCodes.h \ $(NULL) include $(topsrcdir)/config/rules.mk diff --git a/gfx/thebes/gfxUnicodeProperties.h b/intl/unicharutil/public/nsUnicodeProperties.h similarity index 62% rename from gfx/thebes/gfxUnicodeProperties.h rename to intl/unicharutil/public/nsUnicodeProperties.h index cee768e37594..1250ea94fb64 100644 --- a/gfx/thebes/gfxUnicodeProperties.h +++ b/intl/unicharutil/public/nsUnicodeProperties.h @@ -35,50 +35,52 @@ * * ***** END LICENSE BLOCK ***** */ -#ifndef GFX_UNICODEPROPERTIES_H -#define GFX_UNICODEPROPERTIES_H +#ifndef NS_UNICODEPROPERTIES_H +#define NS_UNICODEPROPERTIES_H #include "prtypes.h" -#include "gfxTypes.h" -#include "gfxUnicodeScriptCodes.h" -class THEBES_API gfxUnicodeProperties -{ -public: - static PRUint32 GetMirroredChar(PRUint32 aCh); +namespace mozilla { - static PRUint8 GetCombiningClass(PRUint32 aCh); +namespace unicode { - static PRUint8 GetGeneralCategory(PRUint32 aCh); +PRUint32 GetMirroredChar(PRUint32 aCh); - static PRUint8 GetEastAsianWidth(PRUint32 aCh); +PRUint8 GetCombiningClass(PRUint32 aCh); - static PRInt32 GetScriptCode(PRUint32 aCh); +PRUint8 GetGeneralCategory(PRUint32 aCh); - static PRUint32 GetScriptTagForCode(PRInt32 aScriptCode); +PRUint8 GetEastAsianWidth(PRUint32 aCh); - enum HSType { - HST_NONE = 0x00, - HST_L = 0x01, - HST_V = 0x02, - HST_T = 0x04, - HST_LV = 0x03, - HST_LVT = 0x07 - }; +PRInt32 GetScriptCode(PRUint32 aCh); - static HSType GetHangulSyllableType(PRUint32 aCh); +PRUint32 GetScriptTagForCode(PRInt32 aScriptCode); - enum ShapingType { - SHAPING_DEFAULT = 0x0001, - SHAPING_ARABIC = 0x0002, - SHAPING_HEBREW = 0x0004, - SHAPING_HANGUL = 0x0008, - SHAPING_MONGOLIAN = 0x0010, - SHAPING_INDIC = 0x0020, - SHAPING_THAI = 0x0040 - }; - - static PRInt32 ScriptShapingType(PRInt32 aScriptCode); +enum HSType { + HST_NONE = 0x00, + HST_L = 0x01, + HST_V = 0x02, + HST_T = 0x04, + HST_LV = 0x03, + HST_LVT = 0x07 }; -#endif /* GFX_UNICODEPROPERTIES_H */ +HSType GetHangulSyllableType(PRUint32 aCh); + +enum ShapingType { + SHAPING_DEFAULT = 0x0001, + SHAPING_ARABIC = 0x0002, + SHAPING_HEBREW = 0x0004, + SHAPING_HANGUL = 0x0008, + SHAPING_MONGOLIAN = 0x0010, + SHAPING_INDIC = 0x0020, + SHAPING_THAI = 0x0040 +}; + +PRInt32 ScriptShapingType(PRInt32 aScriptCode); + +} // end namespace unicode + +} // end namespace mozilla + +#endif /* NS_UNICODEPROPERTIES_H */ diff --git a/gfx/thebes/gfxUnicodeScriptCodes.h b/intl/unicharutil/public/nsUnicodeScriptCodes.h similarity index 96% rename from gfx/thebes/gfxUnicodeScriptCodes.h rename to intl/unicharutil/public/nsUnicodeScriptCodes.h index 3d1d062ae176..71f00ed7be43 100644 --- a/gfx/thebes/gfxUnicodeScriptCodes.h +++ b/intl/unicharutil/public/nsUnicodeScriptCodes.h @@ -34,14 +34,14 @@ * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * - * Derived from the Unicode Character Database by genUnicodeScriptData.pl + * Derived from the Unicode Character Database by genUnicodePropertyData.pl * * For Unicode terms of use, see http://www.unicode.org/terms_of_use.html * * ***** END LICENSE BLOCK ***** */ /* - * Created on Mon Feb 13 09:25:50 2012 from UCD data files with version info: + * Created on Thu Feb 23 13:15:51 2012 from UCD data files with version info: * # Date: 2012-01-26, 22:03:00 GMT [KW] @@ -74,8 +74,8 @@ for the Unicode Character Database (UCD) for Unicode 6.1.0. * * * * * This file contains MACHINE-GENERATED DATA, do not edit! * * * * * */ -#ifndef GFX_UNICODE_SCRIPT_CODES -#define GFX_UNICODE_SCRIPT_CODES +#ifndef NS_UNICODE_SCRIPT_CODES +#define NS_UNICODE_SCRIPT_CODES enum { MOZ_SCRIPT_COMMON = 0, MOZ_SCRIPT_INHERITED = 1, diff --git a/intl/unicharutil/src/Makefile.in b/intl/unicharutil/src/Makefile.in index bd963ffe0e94..4c39c998647b 100644 --- a/intl/unicharutil/src/Makefile.in +++ b/intl/unicharutil/src/Makefile.in @@ -47,6 +47,7 @@ LIBRARY_NAME = ucharucomp_s FORCE_STATIC_LIB = 1 LIBXUL_LIBRARY = 1 +DEFINES += -DHB_DONT_DEFINE_STDINT CPPSRCS = \ nsCaseConversionImp2.cpp \ @@ -54,6 +55,7 @@ CPPSRCS = \ nsEntityConverter.cpp \ nsSaveAsCharset.cpp \ nsUnicodeNormalizer.cpp \ + nsUnicodeProperties.cpp \ $(NULL) include $(topsrcdir)/config/rules.mk diff --git a/gfx/thebes/gfxUnicodeProperties.cpp b/intl/unicharutil/src/nsUnicodeProperties.cpp similarity index 93% rename from gfx/thebes/gfxUnicodeProperties.cpp rename to intl/unicharutil/src/nsUnicodeProperties.cpp index c3341b17caeb..41e72f52b42b 100644 --- a/gfx/thebes/gfxUnicodeProperties.cpp +++ b/intl/unicharutil/src/nsUnicodeProperties.cpp @@ -35,19 +35,22 @@ * * ***** END LICENSE BLOCK ***** */ -#include "gfxUnicodeProperties.h" -#include "gfxUnicodePropertyData.cpp" +#include "nsUnicodeProperties.h" +#include "nsUnicodeScriptCodes.h" +#include "nsUnicodePropertyData.cpp" #include "mozilla/Util.h" #include "nsMemory.h" #include "harfbuzz/hb-unicode.h" -using namespace mozilla; - #define UNICODE_BMP_LIMIT 0x10000 #define UNICODE_LIMIT 0x110000 +namespace mozilla { + +namespace unicode { + /* To store properties for a million Unicode codepoints compactly, we use a three-level array structure, with the Unicode values considered as @@ -70,7 +73,7 @@ of values. */ PRUint32 -gfxUnicodeProperties::GetMirroredChar(PRUint32 aCh) +GetMirroredChar(PRUint32 aCh) { // all mirrored chars are in plane 0 if (aCh < UNICODE_BMP_LIMIT) { @@ -90,7 +93,7 @@ gfxUnicodeProperties::GetMirroredChar(PRUint32 aCh) } PRUint8 -gfxUnicodeProperties::GetCombiningClass(PRUint32 aCh) +GetCombiningClass(PRUint32 aCh) { if (aCh < UNICODE_BMP_LIMIT) { return sCClassValues[sCClassPages[0][aCh >> kCClassCharBits]] @@ -106,7 +109,7 @@ gfxUnicodeProperties::GetCombiningClass(PRUint32 aCh) } PRUint8 -gfxUnicodeProperties::GetGeneralCategory(PRUint32 aCh) +GetGeneralCategory(PRUint32 aCh) { if (aCh < UNICODE_BMP_LIMIT) { return sCatEAWValues[sCatEAWPages[0][aCh >> kCatEAWCharBits]] @@ -122,7 +125,7 @@ gfxUnicodeProperties::GetGeneralCategory(PRUint32 aCh) } PRUint8 -gfxUnicodeProperties::GetEastAsianWidth(PRUint32 aCh) +GetEastAsianWidth(PRUint32 aCh) { if (aCh < UNICODE_BMP_LIMIT) { return sCatEAWValues[sCatEAWPages[0][aCh >> kCatEAWCharBits]] @@ -138,7 +141,7 @@ gfxUnicodeProperties::GetEastAsianWidth(PRUint32 aCh) } PRInt32 -gfxUnicodeProperties::GetScriptCode(PRUint32 aCh) +GetScriptCode(PRUint32 aCh) { if (aCh < UNICODE_BMP_LIMIT) { return sScriptValues[sScriptPages[0][aCh >> kScriptCharBits]] @@ -154,7 +157,7 @@ gfxUnicodeProperties::GetScriptCode(PRUint32 aCh) } PRUint32 -gfxUnicodeProperties::GetScriptTagForCode(PRInt32 aScriptCode) +GetScriptTagForCode(PRInt32 aScriptCode) { // this will safely return 0 for negative script codes, too :) if (PRUint32(aScriptCode) > ArrayLength(sScriptCodeToTag)) { @@ -163,8 +166,8 @@ gfxUnicodeProperties::GetScriptTagForCode(PRInt32 aScriptCode) return sScriptCodeToTag[aScriptCode]; } -gfxUnicodeProperties::HSType -gfxUnicodeProperties::GetHangulSyllableType(PRUint32 aCh) +HSType +GetHangulSyllableType(PRUint32 aCh) { // all Hangul chars are in plane 0 if (aCh < UNICODE_BMP_LIMIT) { @@ -183,7 +186,7 @@ gfxUnicodeProperties::GetHangulSyllableType(PRUint32 aCh) // preference to decide whether to use the harfbuzz shaper. // PRInt32 -gfxUnicodeProperties::ScriptShapingType(PRInt32 aScriptCode) +ScriptShapingType(PRInt32 aScriptCode) { switch (aScriptCode) { default: @@ -231,3 +234,7 @@ gfxUnicodeProperties::ScriptShapingType(PRInt32 aScriptCode) return SHAPING_INDIC; // scripts that require Indic or other "special" shaping } } + +} // end namespace unicode + +} // end namespace mozilla diff --git a/gfx/thebes/gfxUnicodePropertyData.cpp b/intl/unicharutil/src/nsUnicodePropertyData.cpp similarity index 99% rename from gfx/thebes/gfxUnicodePropertyData.cpp rename to intl/unicharutil/src/nsUnicodePropertyData.cpp index c10e2e71f110..20588cba33c0 100644 --- a/gfx/thebes/gfxUnicodePropertyData.cpp +++ b/intl/unicharutil/src/nsUnicodePropertyData.cpp @@ -34,14 +34,14 @@ * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * - * Derived from the Unicode Character Database by genUnicodeScriptData.pl + * Derived from the Unicode Character Database by genUnicodePropertyData.pl * * For Unicode terms of use, see http://www.unicode.org/terms_of_use.html * * ***** END LICENSE BLOCK ***** */ /* - * Created on Mon Feb 13 09:25:50 2012 from UCD data files with version info: + * Created on Thu Feb 23 13:15:51 2012 from UCD data files with version info: * # Date: 2012-01-26, 22:03:00 GMT [KW] diff --git a/gfx/thebes/genUnicodeScriptData.pl b/intl/unicharutil/tools/genUnicodePropertyData.pl similarity index 92% rename from gfx/thebes/genUnicodeScriptData.pl rename to intl/unicharutil/tools/genUnicodePropertyData.pl index 2469ede499f6..1a9c0e155e31 100644 --- a/gfx/thebes/genUnicodeScriptData.pl +++ b/intl/unicharutil/tools/genUnicodePropertyData.pl @@ -41,7 +41,7 @@ # read from the Unicode Character Database and compiled into multi-level arrays # for efficient lookup. # -# To regenerate the tables in gfxUnicodePropertyData.cpp: +# To regenerate the tables in nsUnicodePropertyData.cpp: # # (1) Download the current Unicode data files from # @@ -60,21 +60,44 @@ # # (2) Run this tool using a command line of the form # -# perl genUnicodeScriptData.pl \ -# /path/to/hb-common.h \ +# perl genUnicodePropertyData.pl \ +# /path/to/hb-common.h \ # /path/to/UCD-directory # # (where hb-common.h is found in the gfx/harfbuzz/src directory). # # This will generate (or overwrite!) the files # -# gfxUnicodePropertyData.cpp -# gfxUnicodeScriptCodes.h +# nsUnicodePropertyData.cpp +# nsUnicodeScriptCodes.h # # in the current directory. use strict; +if ($#ARGV != 1) { + print <<__EOT; +# Run this tool using a command line of the form +# +# perl genUnicodePropertyData.pl \ +# /path/to/hb-common.h \ +# /path/to/UCD-directory +# +# where hb-common.h is currently found in the gfx/harfbuzz/src directory, +# and UCD-directory is a directory containing the current Unicode Character +# Database files (UnicodeData.txt, etc), available from +# http://www.unicode.org/Public/UNIDATA/ +# +# This will generate (or overwrite!) the files +# +# nsUnicodePropertyData.cpp +# nsUnicodeScriptCodes.h +# +# in the current directory. +__EOT + exit 0; +} + # load HB_Script and HB_Category constants # NOTE that HB_SCRIPT_* constants are now "tag" values, NOT sequentially-allocated @@ -89,7 +112,7 @@ my %catCode; my @scriptCodeToTag; my @scriptCodeToName; -open FH, "< $ARGV[0]" or die "can't open $ARGV[0] (header file hb-unicode.h)\n"; +open FH, "< $ARGV[0]" or die "can't open $ARGV[0] (should be header file hb-common.h)\n"; while () { if (m/HB_SCRIPT_([A-Z_]+)\s*=\s*HB_TAG\s*\(('.','.','.','.')\)\s*,/) { $scriptCodeToTag[++$sc] = $2; @@ -294,7 +317,7 @@ close FH; my $timestamp = gmtime(); -open DATA_TABLES, "> gfxUnicodePropertyData.cpp" or die "unable to open gfxUnicodePropertyData.cpp for output"; +open DATA_TABLES, "> nsUnicodePropertyData.cpp" or die "unable to open nsUnicodePropertyData.cpp for output"; my $licenseBlock = q[ /* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*- @@ -332,7 +355,7 @@ my $licenseBlock = q[ * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * - * Derived from the Unicode Character Database by genUnicodeScriptData.pl + * Derived from the Unicode Character Database by genUnicodePropertyData.pl * * For Unicode terms of use, see http://www.unicode.org/terms_of_use.html * @@ -486,7 +509,7 @@ __END close DATA_TABLES; -open HEADER, "> gfxUnicodeScriptCodes.h" or die "unable to open gfxUnicodeScriptCodes.h for output"; +open HEADER, "> nsUnicodeScriptCodes.h" or die "unable to open nsUnicodeScriptCodes.h for output"; print HEADER <<__END; $licenseBlock @@ -500,8 +523,8 @@ $versionInfo * * * * * This file contains MACHINE-GENERATED DATA, do not edit! * * * * * */ -#ifndef GFX_UNICODE_SCRIPT_CODES -#define GFX_UNICODE_SCRIPT_CODES +#ifndef NS_UNICODE_SCRIPT_CODES +#define NS_UNICODE_SCRIPT_CODES __END print HEADER "enum {\n"; diff --git a/layout/base/nsBidiPresUtils.cpp b/layout/base/nsBidiPresUtils.cpp index dda186551f0b..1f4edaa2309e 100644 --- a/layout/base/nsBidiPresUtils.cpp +++ b/layout/base/nsBidiPresUtils.cpp @@ -54,7 +54,7 @@ #include "nsPlaceholderFrame.h" #include "nsContainerFrame.h" #include "nsFirstLetterFrame.h" -#include "gfxUnicodeProperties.h" +#include "nsUnicodeProperties.h" #include "nsTextFrame.h" #undef NOISY_BIDI @@ -2020,7 +2020,7 @@ void nsBidiPresUtils::WriteReverse(const PRUnichar* aSrc, UTF32Char = *src; } - UTF32Char = gfxUnicodeProperties::GetMirroredChar(UTF32Char); + UTF32Char = mozilla::unicode::GetMirroredChar(UTF32Char); if (IS_IN_BMP(UTF32Char)) { *(dest++) = UTF32Char;