public String getCopyrightString(BoundingBox screenBox, WFFont font, int screenWidth){
        if (m_copyrightHolder == null) {
            m_curCopyrightString = m_staticCopyrightString;          
            return m_curCopyrightString;
        }

        int size = m_copyrightHolder.getCopyrightStrings().length;
        CovByCopyrightId []covByCopyrightIds = caluclateCovByCopyrightId(screenBox);
        
        // The result should be in covByCopyrightIds.
        float totalArea = 0;
        for (int i = 0; i < size; ++i ) {
            totalArea += covByCopyrightIds[i].getCovArea();
        }

        if (totalArea < 0.000001) {
            // No copyright area found. Return to avoid divide by zero.
            return "";
        }

        m_curCopyrightString = m_copyrightHolder.getCopyrightHeader();      
        String str = "";
        int strWidth = font.getStringWidth(m_curCopyrightString);
        for (int i = size - 1; i >= 0; i--) {
            CovByCopyrightId covByCopyright = covByCopyrightIds[i];
            int percent = (int)(covByCopyright.getCovArea() / totalArea * 100);
            if (percent >= m_copyrightHolder.getMinCovPercent()){ 
                str = (String) m_copyrightHolder.getCopyrightStrings()[covByCopyright.getCopyrightId()];
                strWidth += font.getStringWidth("," + str);

                if (strWidth > screenWidth) {
                    break;
                }
                // Store this copyright string.
                m_curCopyrightString = m_curCopyrightString + "," + str;
            }
        }
        
        return m_curCopyrightString;
    }