Exemplo n.º 1
0
bool parseGlyphName(const String& input, HashSet<String>& values)
{
    // FIXME: Parsing error detection is missing.
    values.clear();
    if (input.isEmpty())
        return true;
    if (input.is8Bit()) {
        const LChar* ptr = input.characters8();
        const LChar* end = ptr + input.length();
        return parseGlyphName(ptr, end, values);
    }
    const UChar* ptr = input.characters16();
    const UChar* end = ptr + input.length();
    return parseGlyphName(ptr, end, values);
}
Exemplo n.º 2
0
void SVGHKernElement::buildHorizontalKerningPair(SVGKerningMap& kerningMap)
{
    String u1 = fastGetAttribute(SVGNames::u1Attr);
    String g1 = fastGetAttribute(SVGNames::g1Attr);
    String u2 = fastGetAttribute(SVGNames::u2Attr);
    String g2 = fastGetAttribute(SVGNames::g2Attr);
    if ((u1.isEmpty() && g1.isEmpty()) || (u2.isEmpty() && g2.isEmpty()))
        return;

    SVGKerningPair kerningPair;
    if (parseGlyphName(g1, kerningPair.glyphName1)
        && parseGlyphName(g2, kerningPair.glyphName2)
        && parseKerningUnicodeString(u1, kerningPair.unicodeRange1, kerningPair.unicodeName1)
        && parseKerningUnicodeString(u2, kerningPair.unicodeRange2, kerningPair.unicodeName2)) {
        kerningPair.kerning = fastGetAttribute(SVGNames::kAttr).string().toFloat();
        kerningMap.insert(kerningPair);
    }
}
Exemplo n.º 3
0
void SVGVKernElement::buildVerticalKerningPair(KerningPairVector& kerningPairs)
{
    String u1 = fastGetAttribute(SVGNames::u1Attr);
    String g1 = fastGetAttribute(SVGNames::g1Attr);
    String u2 = fastGetAttribute(SVGNames::u2Attr);
    String g2 = fastGetAttribute(SVGNames::g2Attr);
    if ((u1.isEmpty() && g1.isEmpty()) || (u2.isEmpty() && g2.isEmpty()))
        return;

    SVGKerningPair kerningPair;
    if (parseGlyphName(g1, kerningPair.glyphName1)
        && parseGlyphName(g2, kerningPair.glyphName2)
        && parseKerningUnicodeString(u1, kerningPair.unicodeRange1, kerningPair.unicodeName1)
        && parseKerningUnicodeString(u2, kerningPair.unicodeRange2, kerningPair.unicodeName2)) {
        kerningPair.kerning = fastGetAttribute(SVGNames::kAttr).string().toFloat();
        kerningPairs.append(kerningPair);
    }
}
Exemplo n.º 4
0
bool SVGVKernElement::buildVerticalKerningPair(SVGKerningPair& kerningPair) const
{
    String u1 = fastGetAttribute(SVGNames::u1Attr);
    String g1 = fastGetAttribute(SVGNames::g1Attr);
    String u2 = fastGetAttribute(SVGNames::u2Attr);
    String g2 = fastGetAttribute(SVGNames::g2Attr);
    if ((u1.isEmpty() && g1.isEmpty()) || (u2.isEmpty() && g2.isEmpty()))
        return false;

    if (parseGlyphName(g1, kerningPair.glyphName1)
        && parseGlyphName(g2, kerningPair.glyphName2)
        && parseKerningUnicodeString(u1, kerningPair.unicodeRange1, kerningPair.unicodeName1)
        && parseKerningUnicodeString(u2, kerningPair.unicodeRange2, kerningPair.unicodeName2)) {
        bool ok = false;
        kerningPair.kerning = fastGetAttribute(SVGNames::kAttr).string().toFloat(&ok);
        return ok;
    }
    return false;
}