Merge to XFA: Cleanup: Get rid of CRLF line endings.
authorLei Zhang <thestig@chromium.org>
Sat, 28 Feb 2015 03:49:57 +0000 (19:49 -0800)
committerLei Zhang <thestig@chromium.org>
Sat, 28 Feb 2015 03:49:57 +0000 (19:49 -0800)
Original URL: https://codereview.chromium.org/837533003

(cherry picked from commit 256ef88a26cff56fc7c23119d2d9e1b41468bd1a)

Review URL: https://codereview.chromium.org/963403002

AUTHORS
core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp
core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp
core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp
core/src/fxcodec/codec/fx_codec_jpx_opj.cpp
core/src/fxge/freetype/fx_freetype.c
fpdfsdk/src/javascript/global.cpp
third_party/freetype/src/psaux/psaux.c

diff --git a/AUTHORS b/AUTHORS
index 332b853..78aad77 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,32 +1,32 @@
-# Names should be added to this file with this pattern:\r
-#\r
-# For individuals:\r
-#   Name <email address>\r
-#\r
-# For organizations:\r
-#   Organization <fnmatch pattern>\r
-#\r
-# See python fnmatch module documentation for more information.\r
-\r
-Andrey Khalyavin <halyavin@chromium.org>\r
-Brett Wilson <brettw@chromium.org>\r
-Chris Palmer <palmer@chromium.org>\r
-Finnur Thorarinsson <finnur@chromium.org>\r
-Jochen Eisinger <jochen@chromium.org>\r
-John Abd-El-Malek <jam@chromium.org>\r
-Julien Tinnes <jln@chromium.org>\r
-Kostya Serebryany <kcc@chromium.org>\r
-Lei Zhang <thestig@chromium.org>\r
-Lucas Nihlen <luken@chromium.org>\r
-Matt Giuca <mgiuca@chromium.org>\r
-Michael Doppler <m.doppler@gmail.com>\r
-Nico Weber <thakis@chromium.org>\r
-Peter Kasting <pkasting@chromium.org>\r
-Raymes Khoury <raymes@chromium.org>\r
-Reid Kleckner <rnk@chromium.org>\r
-Robert Sesek <rsesek@chromium.org>\r
-Thomas Sepez <tsepez@chromium.org>\r
-Jiang Jiang <jiangj@opera.com>\r
-\r
-Foxit Software Inc <*@foxitsoftware.com>\r
-Google Inc. <*@google.com>\r
+# Names should be added to this file with this pattern:
+#
+# For individuals:
+#   Name <email address>
+#
+# For organizations:
+#   Organization <fnmatch pattern>
+#
+# See python fnmatch module documentation for more information.
+
+Andrey Khalyavin <halyavin@chromium.org>
+Brett Wilson <brettw@chromium.org>
+Chris Palmer <palmer@chromium.org>
+Finnur Thorarinsson <finnur@chromium.org>
+Jochen Eisinger <jochen@chromium.org>
+John Abd-El-Malek <jam@chromium.org>
+Julien Tinnes <jln@chromium.org>
+Kostya Serebryany <kcc@chromium.org>
+Lei Zhang <thestig@chromium.org>
+Lucas Nihlen <luken@chromium.org>
+Matt Giuca <mgiuca@chromium.org>
+Michael Doppler <m.doppler@gmail.com>
+Nico Weber <thakis@chromium.org>
+Peter Kasting <pkasting@chromium.org>
+Raymes Khoury <raymes@chromium.org>
+Reid Kleckner <rnk@chromium.org>
+Robert Sesek <rsesek@chromium.org>
+Thomas Sepez <tsepez@chromium.org>
+Jiang Jiang <jiangj@opera.com>
+
+Foxit Software Inc <*@foxitsoftware.com>
+Google Inc. <*@google.com>
index 6704656..86db177 100644 (file)
@@ -519,8 +519,8 @@ void CPDF_LabCS::TranslateImageLine(FX_LPBYTE pDestBuf, FX_LPCBYTE pSrcBuf, int
     }
 }
 CPDF_IccProfile::CPDF_IccProfile(FX_LPCBYTE pData, FX_DWORD dwSize):
-    m_bsRGB(FALSE),\r
-    m_pTransform(NULL),\r
+    m_bsRGB(FALSE),
+    m_pTransform(NULL),
     m_nSrcComponents(0)
 {
     if (dwSize == 3144 && FXSYS_memcmp32(pData + 0x190, "sRGB IEC61966-2.1", 17) == 0) {
@@ -1376,13 +1376,13 @@ void CPDF_Color::SetValue(CPDF_Pattern* pPattern, FX_FLOAT* comps, int ncomps)
     if (ncomps) {
         FXSYS_memcpy32(pvalue->m_Comps, comps, ncomps * sizeof(FX_FLOAT));
     }
-    pvalue->m_pCountedPattern = NULL;\r
-    if (pPattern && pPattern->m_pDocument)\r
-    {\r
-        if (!pDocPageData) {\r
-            pDocPageData = pPattern->m_pDocument->GetPageData();\r
-        }\r
-        pvalue->m_pCountedPattern = pDocPageData->FindPatternPtr(pPattern->m_pPatternObj);\r
+    pvalue->m_pCountedPattern = NULL;
+    if (pPattern && pPattern->m_pDocument)
+    {
+        if (!pDocPageData) {
+            pDocPageData = pPattern->m_pDocument->GetPageData();
+        }
+        pvalue->m_pCountedPattern = pDocPageData->FindPatternPtr(pPattern->m_pPatternObj);
     }
 }
 void CPDF_Color::Copy(const CPDF_Color* pSrc)
index fe5665d..5df6643 100644 (file)
@@ -147,32 +147,32 @@ CPDF_DocPageData::~CPDF_DocPageData()
 {
     Clear(FALSE);
     Clear(TRUE);
-    FX_POSITION pos = m_PatternMap.GetStartPosition();\r
-    while (pos)\r
-    {\r
-        CPDF_Object* ptObj;\r
-        CPDF_CountedObject<CPDF_Pattern*>* ptData;\r
-        m_PatternMap.GetNextAssoc(pos, ptObj, ptData);\r
-        delete ptData;\r
-    }\r
-    m_PatternMap.RemoveAll();\r
-    pos = m_FontMap.GetStartPosition();\r
-    while (pos)\r
-    {\r
-        CPDF_Dictionary* fontDict;\r
-        CPDF_CountedObject<CPDF_Font*>* fontData;\r
-        m_FontMap.GetNextAssoc(pos, fontDict, fontData);\r
-        delete fontData;\r
-    }\r
-    m_FontMap.RemoveAll();\r
-    pos = m_ColorSpaceMap.GetStartPosition();\r
-    while (pos)\r
-    {\r
-        CPDF_Object* csKey;\r
-        CPDF_CountedObject<CPDF_ColorSpace*>* csData;\r
-        m_ColorSpaceMap.GetNextAssoc(pos, csKey, csData);\r
-        delete csData;\r
-    }\r
+    FX_POSITION pos = m_PatternMap.GetStartPosition();
+    while (pos)
+    {
+        CPDF_Object* ptObj;
+        CPDF_CountedObject<CPDF_Pattern*>* ptData;
+        m_PatternMap.GetNextAssoc(pos, ptObj, ptData);
+        delete ptData;
+    }
+    m_PatternMap.RemoveAll();
+    pos = m_FontMap.GetStartPosition();
+    while (pos)
+    {
+        CPDF_Dictionary* fontDict;
+        CPDF_CountedObject<CPDF_Font*>* fontData;
+        m_FontMap.GetNextAssoc(pos, fontDict, fontData);
+        delete fontData;
+    }
+    m_FontMap.RemoveAll();
+    pos = m_ColorSpaceMap.GetStartPosition();
+    while (pos)
+    {
+        CPDF_Object* csKey;
+        CPDF_CountedObject<CPDF_ColorSpace*>* csData;
+        m_ColorSpaceMap.GetNextAssoc(pos, csKey, csData);
+        delete csData;
+    }
     m_ColorSpaceMap.RemoveAll();
 }
 void CPDF_DocPageData::Clear(FX_BOOL bForceRelease)
@@ -673,24 +673,24 @@ void CPDF_DocPageData::ReleaseFontFileStreamAcc(CPDF_Stream* pFontStream, FX_BOO
         return;
     }
     PDF_DocPageData_Release<CPDF_Stream*, CPDF_StreamAcc*>(m_FontFileMap, pFontStream, NULL, bForce);
-}\r
-CPDF_CountedColorSpace* CPDF_DocPageData::FindColorSpacePtr(CPDF_Object* pCSObj) const\r
-{\r
-    if (!pCSObj) return NULL;\r
-    CPDF_CountedObject<CPDF_ColorSpace*>* csData;\r
-    if (m_ColorSpaceMap.Lookup(pCSObj, csData))\r
-    {\r
-        return csData;\r
-    }\r
-    return NULL;\r
-}
-CPDF_CountedPattern* CPDF_DocPageData::FindPatternPtr(CPDF_Object* pPatternObj) const\r
-{\r
-    if (!pPatternObj) return NULL;\r
-    CPDF_CountedObject<CPDF_Pattern*>* ptData;\r
-    if (m_PatternMap.Lookup(pPatternObj, ptData))\r
-    {\r
-        return ptData;\r
-    }\r
-    return NULL;\r
-}\r
+}
+CPDF_CountedColorSpace* CPDF_DocPageData::FindColorSpacePtr(CPDF_Object* pCSObj) const
+{
+    if (!pCSObj) return NULL;
+    CPDF_CountedObject<CPDF_ColorSpace*>* csData;
+    if (m_ColorSpaceMap.Lookup(pCSObj, csData))
+    {
+        return csData;
+    }
+    return NULL;
+}
+CPDF_CountedPattern* CPDF_DocPageData::FindPatternPtr(CPDF_Object* pPatternObj) const
+{
+    if (!pPatternObj) return NULL;
+    CPDF_CountedObject<CPDF_Pattern*>* ptData;
+    if (m_PatternMap.Lookup(pPatternObj, ptData))
+    {
+        return ptData;
+    }
+    return NULL;
+}
index 4644302..9e61ce2 100644 (file)
@@ -143,7 +143,7 @@ FX_BOOL CPDF_ShadingPattern::Load()
     }
     CPDF_DocPageData* pDocPageData = m_pDocument->GetPageData();
     m_pCS = pDocPageData->GetColorSpace(pCSObj, NULL);
-    if (m_pCS) {\r
+    if (m_pCS) {
         m_pCountedCS = pDocPageData->FindColorSpacePtr(m_pCS->GetArray());
     }
     m_ShadingType = pShadingDict->GetInteger(FX_BSTRC("ShadingType"));
index 8dcecf9..c4a0f88 100644 (file)
@@ -168,17 +168,17 @@ static void sycc422_to_rgb(opj_image_t *img)
     d2 = b = FX_Alloc(int, (size_t)max);
     for(i = 0; i < maxh; ++i)
     {
-        for (j = 0; (OPJ_UINT32)j < (maxw & ~(OPJ_UINT32)1); j += 2)\r
-        {\r
-            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);\r
-            ++y; ++r; ++g; ++b;\r
-            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);\r
-            ++y; ++r; ++g; ++b; ++cb; ++cr;\r
-        }\r
-        if (j < maxw)\r
-        {\r
-            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);\r
-            ++y; ++r; ++g; ++b; ++cb; ++cr;\r
+        for (j = 0; (OPJ_UINT32)j < (maxw & ~(OPJ_UINT32)1); j += 2)
+        {
+            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
+            ++y; ++r; ++g; ++b;
+            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
+            ++y; ++r; ++g; ++b; ++cb; ++cr;
+        }
+        if (j < maxw)
+        {
+            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
+            ++y; ++r; ++g; ++b; ++cb; ++cr;
         }
     }
     FX_Free(img->comps[0].data);
@@ -218,46 +218,46 @@ static void sycc420_to_rgb(opj_image_t *img)
     d0 = r = FX_Alloc(int, (size_t)max);
     d1 = g = FX_Alloc(int, (size_t)max);
     d2 = b = FX_Alloc(int, (size_t)max);
-    for (i = 0; (OPJ_UINT32)i < (maxh & ~(OPJ_UINT32)1); i += 2)\r
-    {\r
-        ny = y + maxw;\r
-        nr = r + maxw;\r
-        ng = g + maxw;\r
-        nb = b + maxw;\r
-        for (j = 0; (OPJ_UINT32)j < (maxw & ~(OPJ_UINT32)1); j += 2)\r
-        {\r
-            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);\r
-            ++y; ++r; ++g; ++b;\r
-            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);\r
-            ++y; ++r; ++g; ++b;\r
-            sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb);\r
-            ++ny; ++nr; ++ng; ++nb;\r
-            sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb);\r
-            ++ny; ++nr; ++ng; ++nb; ++cb; ++cr;\r
-        }\r
-        if (j < maxw)\r
-        {\r
-            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);\r
-            ++y; ++r; ++g; ++b;\r
-            sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb);\r
-            ++ny; ++nr; ++ng; ++nb; ++cb; ++cr;\r
-        }\r
-        y += maxw; r += maxw; g += maxw; b += maxw;\r
-    }\r
-    if (i < maxh)\r
-    {\r
-        for (j = 0; (OPJ_UINT32)j < (maxw & ~(OPJ_UINT32)1); j += 2)\r
-        {\r
-            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);\r
-            ++y; ++r; ++g; ++b;\r
-            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);\r
-            ++y; ++r; ++g; ++b; ++cb; ++cr;\r
-        }\r
-        if (j < maxw)\r
-        {\r
-            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);\r
-        }\r
-    }\r
+    for (i = 0; (OPJ_UINT32)i < (maxh & ~(OPJ_UINT32)1); i += 2)
+    {
+        ny = y + maxw;
+        nr = r + maxw;
+        ng = g + maxw;
+        nb = b + maxw;
+        for (j = 0; (OPJ_UINT32)j < (maxw & ~(OPJ_UINT32)1); j += 2)
+        {
+            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
+            ++y; ++r; ++g; ++b;
+            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
+            ++y; ++r; ++g; ++b;
+            sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb);
+            ++ny; ++nr; ++ng; ++nb;
+            sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb);
+            ++ny; ++nr; ++ng; ++nb; ++cb; ++cr;
+        }
+        if (j < maxw)
+        {
+            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
+            ++y; ++r; ++g; ++b;
+            sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb);
+            ++ny; ++nr; ++ng; ++nb; ++cb; ++cr;
+        }
+        y += maxw; r += maxw; g += maxw; b += maxw;
+    }
+    if (i < maxh)
+    {
+        for (j = 0; (OPJ_UINT32)j < (maxw & ~(OPJ_UINT32)1); j += 2)
+        {
+            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
+            ++y; ++r; ++g; ++b;
+            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
+            ++y; ++r; ++g; ++b; ++cb; ++cr;
+        }
+        if (j < maxw)
+        {
+            sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b);
+        }
+    }
 
     FX_Free(img->comps[0].data);
     img->comps[0].data = d0;
index fe144d6..78dec9a 100644 (file)
 #include "../../../include/fxge/fx_freetype.h"
 #include "../../../../third_party/freetype/src/psnames/pstables.h"
 
-static int xyq_search_node(char* glyph_name, int name_offset, int table_offset, wchar_t unicode)\r
-{\r
-    int i, count;\r
-\r
-    // copy letters\r
-    while (1) {\r
-        glyph_name[name_offset] = ft_adobe_glyph_list[table_offset] & 0x7f;\r
-        name_offset++;\r
-        table_offset++;\r
-        if (!(ft_adobe_glyph_list[table_offset - 1] & 0x80)) break;\r
-    }\r
-    glyph_name[name_offset] = 0;\r
-\r
-    // get child count\r
-    count = ft_adobe_glyph_list[table_offset] & 0x7f;\r
-\r
-    // check if we have value for this node\r
-    if (ft_adobe_glyph_list[table_offset] & 0x80) {\r
-        unsigned short thiscode = ft_adobe_glyph_list[table_offset + 1] * 256 + ft_adobe_glyph_list[table_offset + 2];\r
-        if (thiscode == (unsigned short)unicode)       // found it!\r
-            return 1;\r
-        table_offset += 3;\r
-    }\r
-    else\r
-        table_offset++;\r
-\r
-    // now search in sub-nodes\r
-    if (count == 0) return 0;\r
-    for (i = 0; i < count; i++) {\r
-        int child_offset = ft_adobe_glyph_list[table_offset + i * 2] * 256 + ft_adobe_glyph_list[table_offset + i * 2 + 1];\r
-        if (xyq_search_node(glyph_name, name_offset, child_offset, unicode))\r
-            // found in child\r
-            return 1;\r
-    }\r
-    return 0;\r
+static int xyq_search_node(char* glyph_name, int name_offset, int table_offset, wchar_t unicode)
+{
+    int i, count;
+
+    // copy letters
+    while (1) {
+        glyph_name[name_offset] = ft_adobe_glyph_list[table_offset] & 0x7f;
+        name_offset++;
+        table_offset++;
+        if (!(ft_adobe_glyph_list[table_offset - 1] & 0x80)) break;
+    }
+    glyph_name[name_offset] = 0;
+
+    // get child count
+    count = ft_adobe_glyph_list[table_offset] & 0x7f;
+
+    // check if we have value for this node
+    if (ft_adobe_glyph_list[table_offset] & 0x80) {
+        unsigned short thiscode = ft_adobe_glyph_list[table_offset + 1] * 256 + ft_adobe_glyph_list[table_offset + 2];
+        if (thiscode == (unsigned short)unicode)       // found it!
+            return 1;
+        table_offset += 3;
+    }
+    else
+        table_offset++;
+
+    // now search in sub-nodes
+    if (count == 0) return 0;
+    for (i = 0; i < count; i++) {
+        int child_offset = ft_adobe_glyph_list[table_offset + i * 2] * 256 + ft_adobe_glyph_list[table_offset + i * 2 + 1];
+        if (xyq_search_node(glyph_name, name_offset, child_offset, unicode))
+            // found in child
+            return 1;
+    }
+    return 0;
 }
 
 #define VARIANT_BIT         0x80000000UL
 
-int FXFT_unicode_from_adobe_name(const char*  glyph_name)\r
-{\r
-    /* If the name begins with `uni', then the glyph name may be a */\r
-    /* hard-coded unicode character code.                          */\r
-    if (glyph_name[0] == 'u' &&\r
-        glyph_name[1] == 'n' &&\r
-        glyph_name[2] == 'i')\r
-    {\r
-        /* determine whether the next four characters following are */\r
-        /* hexadecimal.                                             */\r
-\r
-        /* XXX: Add code to deal with ligatures, i.e. glyph names like */\r
-        /*      `uniXXXXYYYYZZZZ'...                                   */\r
-\r
-        FT_Int       count;\r
-        FT_UInt32    value = 0;\r
-        const char*  p = glyph_name + 3;\r
-\r
-\r
-        for (count = 4; count > 0; count--, p++)\r
-        {\r
-            char          c = *p;\r
-            unsigned int  d;\r
-\r
-\r
-            d = (unsigned char)c - '0';\r
-            if (d >= 10)\r
-            {\r
-                d = (unsigned char)c - 'A';\r
-                if (d >= 6)\r
-                    d = 16;\r
-                else\r
-                    d += 10;\r
-            }\r
-\r
-            /* Exit if a non-uppercase hexadecimal character was found   */\r
-            /* -- this also catches character codes below `0' since such */\r
-            /* negative numbers cast to `unsigned int' are far too big.  */\r
-            if (d >= 16)\r
-                break;\r
-\r
-            value = (value << 4) + d;\r
-        }\r
-\r
-        /* there must be exactly four hex digits */\r
-        if (count == 0)\r
-        {\r
-            if (*p == '\0')\r
-                return value;\r
-            if (*p == '.')\r
-                return (FT_UInt32)(value | VARIANT_BIT);\r
-        }\r
-    }\r
-\r
-    /* If the name begins with `u', followed by four to six uppercase */\r
-    /* hexadecimal digits, it is a hard-coded unicode character code. */\r
-    if (glyph_name[0] == 'u')\r
-    {\r
-        FT_Int       count;\r
-        FT_UInt32    value = 0;\r
-        const char*  p = glyph_name + 1;\r
-\r
-\r
-        for (count = 6; count > 0; count--, p++)\r
-        {\r
-            char          c = *p;\r
-            unsigned int  d;\r
-\r
-\r
-            d = (unsigned char)c - '0';\r
-            if (d >= 10)\r
-            {\r
-                d = (unsigned char)c - 'A';\r
-                if (d >= 6)\r
-                    d = 16;\r
-                else\r
-                    d += 10;\r
-            }\r
-\r
-            if (d >= 16)\r
-                break;\r
-\r
-            value = (value << 4) + d;\r
-        }\r
-\r
-        if (count <= 2)\r
-        {\r
-            if (*p == '\0')\r
-                return value;\r
-            if (*p == '.')\r
-                return (FT_UInt32)(value | VARIANT_BIT);\r
-        }\r
-    }\r
-\r
-    /* Look for a non-initial dot in the glyph name in order to */\r
-    /* find variants like `A.swash', `e.final', etc.            */\r
-    {\r
-        const char*  p = glyph_name;\r
-        const char*  dot = NULL;\r
-\r
-\r
-        for (; *p; p++)\r
-        {\r
-            if (*p == '.' && p > glyph_name)\r
-            {\r
-                dot = p;\r
-                break;\r
-            }\r
-        }\r
-\r
-        /* now look up the glyph in the Adobe Glyph List */\r
-        if (!dot)\r
-            return (FT_UInt32)ft_get_adobe_glyph_index(glyph_name, p);\r
-        else\r
-            return (FT_UInt32)(ft_get_adobe_glyph_index(glyph_name, dot) |\r
-            VARIANT_BIT);\r
-    }\r
-}\r
-\r
-void FXFT_adobe_name_from_unicode(char* glyph_name, wchar_t unicode)\r
-{\r
-    int i, count;\r
-\r
-    // start from top level node\r
-    count = ft_adobe_glyph_list[1];\r
-    for (i = 0; i < count; i++) {\r
-        int child_offset = ft_adobe_glyph_list[i * 2 + 2] * 256 + ft_adobe_glyph_list[i * 2 + 3];\r
-        if (xyq_search_node(glyph_name, 0, child_offset, unicode))\r
-            return;\r
-    }\r
-\r
-    // failed, clear the buffer\r
-    glyph_name[0] = 0;\r
-}\r
+int FXFT_unicode_from_adobe_name(const char*  glyph_name)
+{
+    /* If the name begins with `uni', then the glyph name may be a */
+    /* hard-coded unicode character code.                          */
+    if (glyph_name[0] == 'u' &&
+        glyph_name[1] == 'n' &&
+        glyph_name[2] == 'i')
+    {
+        /* determine whether the next four characters following are */
+        /* hexadecimal.                                             */
+
+        /* XXX: Add code to deal with ligatures, i.e. glyph names like */
+        /*      `uniXXXXYYYYZZZZ'...                                   */
+
+        FT_Int       count;
+        FT_UInt32    value = 0;
+        const char*  p = glyph_name + 3;
+
+
+        for (count = 4; count > 0; count--, p++)
+        {
+            char          c = *p;
+            unsigned int  d;
+
+
+            d = (unsigned char)c - '0';
+            if (d >= 10)
+            {
+                d = (unsigned char)c - 'A';
+                if (d >= 6)
+                    d = 16;
+                else
+                    d += 10;
+            }
+
+            /* Exit if a non-uppercase hexadecimal character was found   */
+            /* -- this also catches character codes below `0' since such */
+            /* negative numbers cast to `unsigned int' are far too big.  */
+            if (d >= 16)
+                break;
+
+            value = (value << 4) + d;
+        }
+
+        /* there must be exactly four hex digits */
+        if (count == 0)
+        {
+            if (*p == '\0')
+                return value;
+            if (*p == '.')
+                return (FT_UInt32)(value | VARIANT_BIT);
+        }
+    }
+
+    /* If the name begins with `u', followed by four to six uppercase */
+    /* hexadecimal digits, it is a hard-coded unicode character code. */
+    if (glyph_name[0] == 'u')
+    {
+        FT_Int       count;
+        FT_UInt32    value = 0;
+        const char*  p = glyph_name + 1;
+
+
+        for (count = 6; count > 0; count--, p++)
+        {
+            char          c = *p;
+            unsigned int  d;
+
+
+            d = (unsigned char)c - '0';
+            if (d >= 10)
+            {
+                d = (unsigned char)c - 'A';
+                if (d >= 6)
+                    d = 16;
+                else
+                    d += 10;
+            }
+
+            if (d >= 16)
+                break;
+
+            value = (value << 4) + d;
+        }
+
+        if (count <= 2)
+        {
+            if (*p == '\0')
+                return value;
+            if (*p == '.')
+                return (FT_UInt32)(value | VARIANT_BIT);
+        }
+    }
+
+    /* Look for a non-initial dot in the glyph name in order to */
+    /* find variants like `A.swash', `e.final', etc.            */
+    {
+        const char*  p = glyph_name;
+        const char*  dot = NULL;
+
+
+        for (; *p; p++)
+        {
+            if (*p == '.' && p > glyph_name)
+            {
+                dot = p;
+                break;
+            }
+        }
+
+        /* now look up the glyph in the Adobe Glyph List */
+        if (!dot)
+            return (FT_UInt32)ft_get_adobe_glyph_index(glyph_name, p);
+        else
+            return (FT_UInt32)(ft_get_adobe_glyph_index(glyph_name, dot) |
+            VARIANT_BIT);
+    }
+}
+
+void FXFT_adobe_name_from_unicode(char* glyph_name, wchar_t unicode)
+{
+    int i, count;
+
+    // start from top level node
+    count = ft_adobe_glyph_list[1];
+    for (i = 0; i < count; i++) {
+        int child_offset = ft_adobe_glyph_list[i * 2 + 2] * 256 + ft_adobe_glyph_list[i * 2 + 3];
+        if (xyq_search_node(glyph_name, 0, child_offset, unicode))
+            return;
+    }
+
+    // failed, clear the buffer
+    glyph_name[0] = 0;
+}
index 906c737..39e6dc0 100644 (file)
 
 // Helper class for compile-time calculation of hash values in order to
 // avoid having global object initializers.
-template <unsigned ACC, wchar_t... Ns>\r
-struct CHash;\r
-\r
-// Only needed to hash single-character strings.\r
-template <wchar_t N>\r
-struct CHash<N> {\r
-  static const unsigned value = N;\r
-};\r
-\r
-template <unsigned ACC, wchar_t N>\r
-struct CHash<ACC, N> {\r
-  static const unsigned value = (ACC * 1313LLU + N) & 0xFFFFFFFF;\r
-};\r
-\r
-template <unsigned ACC, wchar_t N, wchar_t... Ns>\r
-struct CHash<ACC, N, Ns...> {\r
-  static const unsigned value = CHash<CHash<ACC, N>::value, Ns...>::value;\r
-};\r
+template <unsigned ACC, wchar_t... Ns>
+struct CHash;
+
+// Only needed to hash single-character strings.
+template <wchar_t N>
+struct CHash<N> {
+  static const unsigned value = N;
+};
+
+template <unsigned ACC, wchar_t N>
+struct CHash<ACC, N> {
+  static const unsigned value = (ACC * 1313LLU + N) & 0xFFFFFFFF;
+};
+
+template <unsigned ACC, wchar_t N, wchar_t... Ns>
+struct CHash<ACC, N, Ns...> {
+  static const unsigned value = CHash<CHash<ACC, N>::value, Ns...>::value;
+};
 
 extern const unsigned int JSCONST_nStringHash =
   CHash<'s','t','r','i','n','g'>::value;
index ec9ba7a..a4b9c5c 100644 (file)
@@ -1,34 +1,34 @@
-/***************************************************************************/\r
-/*                                                                         */\r
-/*  psaux.c                                                                */\r
-/*                                                                         */\r
-/*    FreeType auxiliary PostScript driver component (body only).          */\r
-/*                                                                         */\r
-/*  Copyright 1996-2001, 2002, 2006 by                                     */\r
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */\r
-/*                                                                         */\r
-/*  This file is part of the FreeType project, and may only be used,       */\r
-/*  modified, and distributed under the terms of the FreeType project      */\r
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */\r
-/*  this file you indicate that you have read the license and              */\r
-/*  understand and accept it fully.                                        */\r
-/*                                                                         */\r
-/***************************************************************************/\r
-\r
-\r
-#define FT_MAKE_OPTION_SINGLE_OBJECT\r
-\r
-#include <ft2build.h>\r
-#include "psobjs.c"\r
-#include "psauxmod.c"\r
-#include "t1decode.c"\r
-#include "t1cmap.c"\r
-\r
-#ifndef T1_CONFIG_OPTION_NO_AFM\r
-#include "afmparse.c"\r
-#endif\r
-\r
-#include "psconv.c"\r
-\r
-\r
-/* END */\r
+/***************************************************************************/
+/*                                                                         */
+/*  psaux.c                                                                */
+/*                                                                         */
+/*    FreeType auxiliary PostScript driver component (body only).          */
+/*                                                                         */
+/*  Copyright 1996-2001, 2002, 2006 by                                     */
+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
+/*                                                                         */
+/*  This file is part of the FreeType project, and may only be used,       */
+/*  modified, and distributed under the terms of the FreeType project      */
+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
+/*  this file you indicate that you have read the license and              */
+/*  understand and accept it fully.                                        */
+/*                                                                         */
+/***************************************************************************/
+
+
+#define FT_MAKE_OPTION_SINGLE_OBJECT
+
+#include <ft2build.h>
+#include "psobjs.c"
+#include "psauxmod.c"
+#include "t1decode.c"
+#include "t1cmap.c"
+
+#ifndef T1_CONFIG_OPTION_NO_AFM
+#include "afmparse.c"
+#endif
+
+#include "psconv.c"
+
+
+/* END */