| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. | 3 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. |
| 4 * Copyright (C) 2013 Google Inc. All rights reserved. | 4 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 5 * | 5 * |
| 6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
| 7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
| 8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
| 9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
| 10 * | 10 * |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 { | 41 { |
| 42 ASSERT(document.frame()); | 42 ASSERT(document.frame()); |
| 43 } | 43 } |
| 44 | 44 |
| 45 void FontBuilder::setInitial(float effectiveZoom) | 45 void FontBuilder::setInitial(float effectiveZoom) |
| 46 { | 46 { |
| 47 ASSERT(m_document.settings()); | 47 ASSERT(m_document.settings()); |
| 48 if (!m_document.settings()) | 48 if (!m_document.settings()) |
| 49 return; | 49 return; |
| 50 | 50 |
| 51 setFamilyDescription(m_fontDescription, FontBuilder::initialFamilyDescriptio
n()); | 51 setFamilyDescription(FontBuilder::initialFamilyDescription()); |
| 52 setSize(m_fontDescription, FontBuilder::initialSize()); | 52 setSize(FontBuilder::initialSize()); |
| 53 } | 53 } |
| 54 | 54 |
| 55 void FontBuilder::didChangeEffectiveZoom() | 55 void FontBuilder::didChangeEffectiveZoom() |
| 56 { | 56 { |
| 57 set(PropertySetFlag::EffectiveZoom); | 57 set(PropertySetFlag::EffectiveZoom); |
| 58 } | 58 } |
| 59 | 59 |
| 60 void FontBuilder::didChangeTextOrientation() | 60 void FontBuilder::didChangeTextOrientation() |
| 61 { | 61 { |
| 62 set(PropertySetFlag::TextOrientation); | 62 set(PropertySetFlag::TextOrientation); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 return FontFamilyNames::webkit_cursive; | 101 return FontFamilyNames::webkit_cursive; |
| 102 case FontDescription::FantasyFamily: | 102 case FontDescription::FantasyFamily: |
| 103 return FontFamilyNames::webkit_fantasy; | 103 return FontFamilyNames::webkit_fantasy; |
| 104 case FontDescription::PictographFamily: | 104 case FontDescription::PictographFamily: |
| 105 return FontFamilyNames::webkit_pictograph; | 105 return FontFamilyNames::webkit_pictograph; |
| 106 } | 106 } |
| 107 } | 107 } |
| 108 | 108 |
| 109 void FontBuilder::setFamilyDescription(const FontDescription::FamilyDescription&
familyDescription) | 109 void FontBuilder::setFamilyDescription(const FontDescription::FamilyDescription&
familyDescription) |
| 110 { | 110 { |
| 111 setFamilyDescription(m_fontDescription, familyDescription); | 111 set(PropertySetFlag::Family); |
| 112 |
| 113 bool isInitial = familyDescription.genericFamily == FontDescription::Standar
dFamily && familyDescription.family.familyIsEmpty(); |
| 114 |
| 115 m_fontDescription.setGenericFamily(familyDescription.genericFamily); |
| 116 m_fontDescription.setFamily(isInitial ? standardFontFamily() : familyDescrip
tion.family); |
| 112 } | 117 } |
| 113 | 118 |
| 114 void FontBuilder::setWeight(FontWeight fontWeight) | 119 void FontBuilder::setWeight(FontWeight fontWeight) |
| 115 { | 120 { |
| 116 set(PropertySetFlag::Weight); | 121 set(PropertySetFlag::Weight); |
| 117 | 122 |
| 118 m_fontDescription.setWeight(fontWeight); | 123 m_fontDescription.setWeight(fontWeight); |
| 119 } | 124 } |
| 120 | 125 |
| 121 void FontBuilder::setSize(const FontDescription::Size& size) | 126 void FontBuilder::setSize(const FontDescription::Size& size) |
| 122 { | 127 { |
| 123 setSize(m_fontDescription, size); | 128 float specifiedSize = size.value; |
| 129 |
| 130 if (specifiedSize < 0) |
| 131 return; |
| 132 |
| 133 set(PropertySetFlag::Size); |
| 134 |
| 135 // Overly large font sizes will cause crashes on some platforms (such as Win
dows). |
| 136 // Cap font size here to make sure that doesn't happen. |
| 137 specifiedSize = std::min(maximumAllowedFontSize, specifiedSize); |
| 138 |
| 139 m_fontDescription.setKeywordSize(size.keyword); |
| 140 m_fontDescription.setSpecifiedSize(specifiedSize); |
| 141 m_fontDescription.setIsAbsoluteSize(size.isAbsolute); |
| 124 } | 142 } |
| 125 | 143 |
| 126 void FontBuilder::setStretch(FontStretch fontStretch) | 144 void FontBuilder::setStretch(FontStretch fontStretch) |
| 127 { | 145 { |
| 128 set(PropertySetFlag::Stretch); | 146 set(PropertySetFlag::Stretch); |
| 129 | 147 |
| 130 m_fontDescription.setStretch(fontStretch); | 148 m_fontDescription.setStretch(fontStretch); |
| 131 } | 149 } |
| 132 | 150 |
| 133 void FontBuilder::setScript(const String& locale) | 151 void FontBuilder::setScript(const String& locale) |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 m_fontDescription.setFontSmoothing(foontSmoothingMode); | 198 m_fontDescription.setFontSmoothing(foontSmoothingMode); |
| 181 } | 199 } |
| 182 | 200 |
| 183 void FontBuilder::setFeatureSettings(PassRefPtr<FontFeatureSettings> settings) | 201 void FontBuilder::setFeatureSettings(PassRefPtr<FontFeatureSettings> settings) |
| 184 { | 202 { |
| 185 set(PropertySetFlag::FeatureSettings); | 203 set(PropertySetFlag::FeatureSettings); |
| 186 | 204 |
| 187 m_fontDescription.setFeatureSettings(settings); | 205 m_fontDescription.setFeatureSettings(settings); |
| 188 } | 206 } |
| 189 | 207 |
| 190 void FontBuilder::setFamilyDescription(FontDescription& fontDescription, const F
ontDescription::FamilyDescription& familyDescription) | |
| 191 { | |
| 192 set(PropertySetFlag::Family); | |
| 193 | |
| 194 bool isInitial = familyDescription.genericFamily == FontDescription::Standar
dFamily && familyDescription.family.familyIsEmpty(); | |
| 195 | |
| 196 fontDescription.setGenericFamily(familyDescription.genericFamily); | |
| 197 fontDescription.setFamily(isInitial ? standardFontFamily() : familyDescripti
on.family); | |
| 198 } | |
| 199 | |
| 200 void FontBuilder::setSize(FontDescription& fontDescription, const FontDescriptio
n::Size& size) | |
| 201 { | |
| 202 float specifiedSize = size.value; | |
| 203 | |
| 204 if (specifiedSize < 0) | |
| 205 return; | |
| 206 | |
| 207 set(PropertySetFlag::Size); | |
| 208 | |
| 209 // Overly large font sizes will cause crashes on some platforms (such as Win
dows). | |
| 210 // Cap font size here to make sure that doesn't happen. | |
| 211 specifiedSize = std::min(maximumAllowedFontSize, specifiedSize); | |
| 212 | |
| 213 fontDescription.setKeywordSize(size.keyword); | |
| 214 fontDescription.setSpecifiedSize(specifiedSize); | |
| 215 fontDescription.setIsAbsoluteSize(size.isAbsolute); | |
| 216 } | |
| 217 | |
| 218 float FontBuilder::getComputedSizeFromSpecifiedSize(FontDescription& fontDescrip
tion, float effectiveZoom, float specifiedSize) | 208 float FontBuilder::getComputedSizeFromSpecifiedSize(FontDescription& fontDescrip
tion, float effectiveZoom, float specifiedSize) |
| 219 { | 209 { |
| 220 float zoomFactor = effectiveZoom; | 210 float zoomFactor = effectiveZoom; |
| 221 // FIXME: Why is this here!!!!?! | 211 // FIXME: Why is this here!!!!?! |
| 222 if (LocalFrame* frame = m_document.frame()) | 212 if (LocalFrame* frame = m_document.frame()) |
| 223 zoomFactor *= frame->textZoomFactor(); | 213 zoomFactor *= frame->textZoomFactor(); |
| 224 | 214 |
| 225 return FontSize::getComputedSizeFromSpecifiedSize(&m_document, zoomFactor, f
ontDescription.isAbsoluteSize(), specifiedSize); | 215 return FontSize::getComputedSizeFromSpecifiedSize(&m_document, zoomFactor, f
ontDescription.isAbsoluteSize(), specifiedSize); |
| 226 } | 216 } |
| 227 | 217 |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 370 updateOrientation(description, style); | 360 updateOrientation(description, style); |
| 371 | 361 |
| 372 updateSpecifiedSize(description, style); | 362 updateSpecifiedSize(description, style); |
| 373 updateComputedSize(description, style); | 363 updateComputedSize(description, style); |
| 374 | 364 |
| 375 style->setFontDescription(description); | 365 style->setFontDescription(description); |
| 376 style->font().update(fontSelector); | 366 style->font().update(fontSelector); |
| 377 m_flags = 0; | 367 m_flags = 0; |
| 378 } | 368 } |
| 379 | 369 |
| 380 void FontBuilder::createFontForDocument(PassRefPtrWillBeRawPtr<FontSelector> fon
tSelector, RenderStyle* documentStyle) | |
| 381 { | |
| 382 FontDescription fontDescription = FontDescription(); | |
| 383 fontDescription.setLocale(documentStyle->locale()); | |
| 384 fontDescription.setScript(localeToScriptCodeForFontSelection(documentStyle->
locale())); | |
| 385 | |
| 386 setFamilyDescription(fontDescription, FontBuilder::initialFamilyDescription(
)); | |
| 387 setSize(fontDescription, FontDescription::Size(FontSize::initialKeywordSize(
), 0.0f, false)); | |
| 388 updateSpecifiedSize(fontDescription, documentStyle); | |
| 389 updateComputedSize(fontDescription, documentStyle); | |
| 390 | |
| 391 FontOrientation fontOrientation; | |
| 392 NonCJKGlyphOrientation glyphOrientation; | |
| 393 getFontAndGlyphOrientation(documentStyle, fontOrientation, glyphOrientation)
; | |
| 394 fontDescription.setOrientation(fontOrientation); | |
| 395 fontDescription.setNonCJKGlyphOrientation(glyphOrientation); | |
| 396 documentStyle->setFontDescription(fontDescription); | |
| 397 documentStyle->font().update(fontSelector); | |
| 398 } | 370 } |
| 399 | |
| 400 } | |
| OLD | NEW |