OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 return false; | 302 return false; |
303 } | 303 } |
304 return true; | 304 return true; |
305 } | 305 } |
306 | 306 |
307 bool FontFace::setFamilyValue(const CSSValue& familyValue) { | 307 bool FontFace::setFamilyValue(const CSSValue& familyValue) { |
308 AtomicString family; | 308 AtomicString family; |
309 if (familyValue.isFontFamilyValue()) { | 309 if (familyValue.isFontFamilyValue()) { |
310 family = AtomicString(toCSSFontFamilyValue(familyValue).value()); | 310 family = AtomicString(toCSSFontFamilyValue(familyValue).value()); |
311 } else if (familyValue.isIdentifierValue()) { | 311 } else if (familyValue.isIdentifierValue()) { |
312 // We need to use the raw text for all the generic family types, since @font
-face is a way of actually | 312 // We need to use the raw text for all the generic family types, since |
313 // defining what font to use for those types. | 313 // @font-face is a way of actually defining what font to use for those |
| 314 // types. |
314 switch (toCSSIdentifierValue(familyValue).getValueID()) { | 315 switch (toCSSIdentifierValue(familyValue).getValueID()) { |
315 case CSSValueSerif: | 316 case CSSValueSerif: |
316 family = FontFamilyNames::webkit_serif; | 317 family = FontFamilyNames::webkit_serif; |
317 break; | 318 break; |
318 case CSSValueSansSerif: | 319 case CSSValueSansSerif: |
319 family = FontFamilyNames::webkit_sans_serif; | 320 family = FontFamilyNames::webkit_sans_serif; |
320 break; | 321 break; |
321 case CSSValueCursive: | 322 case CSSValueCursive: |
322 family = FontFamilyNames::webkit_cursive; | 323 family = FontFamilyNames::webkit_cursive; |
323 break; | 324 break; |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
506 break; | 507 break; |
507 case CSSValue300: | 508 case CSSValue300: |
508 weight = FontWeight300; | 509 weight = FontWeight300; |
509 break; | 510 break; |
510 case CSSValue200: | 511 case CSSValue200: |
511 weight = FontWeight200; | 512 weight = FontWeight200; |
512 break; | 513 break; |
513 case CSSValue100: | 514 case CSSValue100: |
514 weight = FontWeight100; | 515 weight = FontWeight100; |
515 break; | 516 break; |
516 // Although 'lighter' and 'bolder' are valid keywords for font-weights, th
ey are invalid | 517 // Although 'lighter' and 'bolder' are valid keywords for font-weights, |
517 // inside font-face rules so they are ignored. Reference: http://www.w3.or
g/TR/css3-fonts/#descdef-font-weight. | 518 // they are invalid inside font-face rules so they are ignored. Reference: |
| 519 // http://www.w3.org/TR/css3-fonts/#descdef-font-weight. |
518 case CSSValueLighter: | 520 case CSSValueLighter: |
519 case CSSValueBolder: | 521 case CSSValueBolder: |
520 break; | 522 break; |
521 default: | 523 default: |
522 ASSERT_NOT_REACHED(); | 524 ASSERT_NOT_REACHED(); |
523 break; | 525 break; |
524 } | 526 } |
525 } | 527 } |
526 | 528 |
527 return FontTraits(style, weight, stretch); | 529 return FontTraits(style, weight, stretch); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
566 } | 568 } |
567 | 569 |
568 return new CSSFontFace(fontFace, ranges); | 570 return new CSSFontFace(fontFace, ranges); |
569 } | 571 } |
570 | 572 |
571 void FontFace::initCSSFontFace(Document* document, const CSSValue* src) { | 573 void FontFace::initCSSFontFace(Document* document, const CSSValue* src) { |
572 m_cssFontFace = createCSSFontFace(this, m_unicodeRange.get()); | 574 m_cssFontFace = createCSSFontFace(this, m_unicodeRange.get()); |
573 if (m_error) | 575 if (m_error) |
574 return; | 576 return; |
575 | 577 |
576 // Each item in the src property's list is a single CSSFontFaceSource. Put the
m all into a CSSFontFace. | 578 // Each item in the src property's list is a single CSSFontFaceSource. Put |
| 579 // them all into a CSSFontFace. |
577 ASSERT(src); | 580 ASSERT(src); |
578 ASSERT(src->isValueList()); | 581 ASSERT(src->isValueList()); |
579 const CSSValueList* srcList = toCSSValueList(src); | 582 const CSSValueList* srcList = toCSSValueList(src); |
580 int srcLength = srcList->length(); | 583 int srcLength = srcList->length(); |
581 | 584 |
582 for (int i = 0; i < srcLength; i++) { | 585 for (int i = 0; i < srcLength; i++) { |
583 // An item in the list either specifies a string (local font name) or a URL
(remote font to download). | 586 // An item in the list either specifies a string (local font name) or a URL |
| 587 // (remote font to download). |
584 const CSSFontFaceSrcValue& item = toCSSFontFaceSrcValue(srcList->item(i)); | 588 const CSSFontFaceSrcValue& item = toCSSFontFaceSrcValue(srcList->item(i)); |
585 CSSFontFaceSource* source = nullptr; | 589 CSSFontFaceSource* source = nullptr; |
586 | 590 |
587 if (!item.isLocal()) { | 591 if (!item.isLocal()) { |
588 const Settings* settings = document ? document->settings() : nullptr; | 592 const Settings* settings = document ? document->settings() : nullptr; |
589 bool allowDownloading = | 593 bool allowDownloading = |
590 settings && settings->downloadableBinaryFontsEnabled(); | 594 settings && settings->downloadableBinaryFontsEnabled(); |
591 if (allowDownloading && item.isSupportedFormat() && document) { | 595 if (allowDownloading && item.isSupportedFormat() && document) { |
592 FontResource* fetched = item.fetch(document); | 596 FontResource* fetched = item.fetch(document); |
593 if (fetched) { | 597 if (fetched) { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
646 bool FontFace::hadBlankText() const { | 650 bool FontFace::hadBlankText() const { |
647 return m_cssFontFace->hadBlankText(); | 651 return m_cssFontFace->hadBlankText(); |
648 } | 652 } |
649 | 653 |
650 bool FontFace::hasPendingActivity() const { | 654 bool FontFace::hasPendingActivity() const { |
651 return m_status == Loading && getExecutionContext() && | 655 return m_status == Loading && getExecutionContext() && |
652 !getExecutionContext()->activeDOMObjectsAreStopped(); | 656 !getExecutionContext()->activeDOMObjectsAreStopped(); |
653 } | 657 } |
654 | 658 |
655 } // namespace blink | 659 } // namespace blink |
OLD | NEW |